|
你应该看到类似下面这样的输出:
OpenSSL 0.9.7d 17 Mar 2004
准确的版本号,日期和其他可能不同的细节,写本文的时候,目前的版本是OpenSSL0.98a,我们正在使用的例子能工作在大部分OpenSSL版本下。
如果你只输入了openssl,没有附加任何的参数,你将得到下面这样的提示符:
OpenSSL>
如果是这样,只需要输入quit或按Ctrl-C即可安全地退出,它OpenSSL内部命令行提示符,它没有命令行编辑功能,也没有明确的帮助功能,但是,如果你输入一个它不认识的命令,它会列出一个可用的命令列表。
快速整洁的加密
尽管这不是OpenSSL的强项,但它也能加密文件,灵活的OpenSSL做这件事要比GnuPG复杂一些。
OpenSSL默认选项比较少,因此要使用更多的选项,也有许多算法可供选择,一些算法如DES和RC4-40,只是为了向后兼容,现在不应该再拿来使用了,你应该使用强壮的算法如bf(它是Blowfilsh算法的简称)和-aes-128-cbc(它是美国NIST高级加密标准—AES,运行在CBS模式下使用128位密钥)。
这里有一个例子:
$ openssl enc -aes-128-cbc < filename > filename.aes-128-cbc
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:
与GnuPG一样,OpenSSL要求提供2次密语,并且不会回显到屏幕上。
解密也比GnuPG更复杂一点:
$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
enter aes-128-cbc decryption password:
注意例子中的-d参数,它意味着解密。
OpenSSL与GnuPG不一样,不能自动检查文件的类型或者使用了什么算法也不知道、也不清楚加密文件使用的密钥的长度和模式。你需要自己保存一个跟踪记录,在我的例子中,我将这些信息放在文件扩展名里了,OpenSSL不能为你管理文件和文件扩展名,你不得不指出输出数据写入的位置。
如果你没有指定正确的算法,OpenSSL可能输出一堆垃圾信息也可能产生一个看不懂的数字,无论怎样,没有正确的给出选项,你的数据就不能正确地解密。
密语
在我们更进一步之前,我们应该先讨论一下密语的重要性,在大多数加密系统中,密语是保存了其他机密的秘密,它通常是最薄弱的点,因此,创建一个强壮的密语是很重要的,但是这也很困难,除非你有好用的工具,使用OpenSSL你就能快速地创建一个强壮的密语。
一个对密语简单的指导就是长度与优势的比较表,8个字符不够长(表1),目标是创建一个保密性强的而且你又能记住的其他人又不知道的密语,不能靠猜或最后偶尔发现。
表1 密码和密语被破解的估计时间强度比较,注意:破解时间是比较粗糙的。
产生一个密语
OpenSSL能创建非常强壮的随机密语:
$ openssl rand 15 -base64
wGcwstkb8Er0g6w1+Dm+
如果你运行了这个例子,你的输出将与这里的输出不同,因为密语是随机产生的。
第一个参数15是产生的二进制字节数,第二个参数-base64指出那些二进制字节应该用基于64位字符编码,对于15字节而言,输出总是20个字符,加上一个新行字符。
基于64位字符设定了只由大写和小写的字母A-Z,数字1-9和3个标点字符:加号、斜线号和等号。这是一个有意的字符限制设置,更复杂的字符设置不是必需的,仅仅增加一个额外的字符使得安全变得不同,例如:一个8位字符完全可打印的ASCII密码大约与一个9位字符基于64位字符编码的密码强度相当。
尽管可以使用openssl rand快速生成密语,但是专业的密语生成器生成强壮的并容易记忆的密语,我强烈推荐使用它。
加密密码
还有一些事情是GnuPg不能做的,OpenSSL内置了一个命令用来创建加密的linux密码,就象/bin/passwd一样。 |
|
【收藏】【打印】【进入论坛】 |
|
|
|
|
|
|
|