|
你應(yīng)該看到類似下面這樣的輸出:
OpenSSL 0.9.7d 17 Mar 2004
準確的版本號,日期和其他可能不同的細節(jié),寫本文的時候,目前的版本是OpenSSL0.98a,我們正在使用的例子能工作在大部分OpenSSL版本下。
如果你只輸入了openssl,沒有附加任何的參數(shù),你將得到下面這樣的提示符:
OpenSSL>
如果是這樣,只需要輸入quit或按Ctrl-C即可安全地退出,它OpenSSL內(nèi)部命令行提示符,它沒有命令行編輯功能,也沒有明確的幫助功能,但是,如果你輸入一個它不認識的命令,它會列出一個可用的命令列表。
快速整潔的加密
盡管這不是OpenSSL的強項,但它也能加密文件,靈活的OpenSSL做這件事要比GnuPG復(fù)雜一些。
OpenSSL默認選項比較少,因此要使用更多的選項,也有許多算法可供選擇,一些算法如DES和RC4-40,只是為了向后兼容,現(xiàn)在不應(yīng)該再拿來使用了,你應(yīng)該使用強壯的算法如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更復(fù)雜一點:
$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
enter aes-128-cbc decryption password:
注意例子中的-d參數(shù),它意味著解密。
OpenSSL與GnuPG不一樣,不能自動檢查文件的類型或者使用了什么算法也不知道、也不清楚加密文件使用的密鑰的長度和模式。你需要自己保存一個跟蹤記錄,在我的例子中,我將這些信息放在文件擴展名里了,OpenSSL不能為你管理文件和文件擴展名,你不得不指出輸出數(shù)據(jù)寫入的位置。
如果你沒有指定正確的算法,OpenSSL可能輸出一堆垃圾信息也可能產(chǎn)生一個看不懂的數(shù)字,無論怎樣,沒有正確的給出選項,你的數(shù)據(jù)就不能正確地解密。
密語
在我們更進一步之前,我們應(yīng)該先討論一下密語的重要性,在大多數(shù)加密系統(tǒng)中,密語是保存了其他機密的秘密,它通常是最薄弱的點,因此,創(chuàng)建一個強壯的密語是很重要的,但是這也很困難,除非你有好用的工具,使用OpenSSL你就能快速地創(chuàng)建一個強壯的密語。
一個對密語簡單的指導(dǎo)就是長度與優(yōu)勢的比較表,8個字符不夠長(表1),目標是創(chuàng)建一個保密性強的而且你又能記住的其他人又不知道的密語,不能靠猜或最后偶爾發(fā)現(xiàn)。
表1 密碼和密語被破解的估計時間強度比較,注意:破解時間是比較粗糙的。

產(chǎn)生一個密語
OpenSSL能創(chuàng)建非常強壯的隨機密語:
$ openssl rand 15 -base64
wGcwstkb8Er0g6w1+Dm+
如果你運行了這個例子,你的輸出將與這里的輸出不同,因為密語是隨機產(chǎn)生的。
第一個參數(shù)15是產(chǎn)生的二進制字節(jié)數(shù),第二個參數(shù)-base64指出那些二進制字節(jié)應(yīng)該用基于64位字符編碼,對于15字節(jié)而言,輸出總是20個字符,加上一個新行字符。
基于64位字符設(shè)定了只由大寫和小寫的字母A-Z,數(shù)字1-9和3個標點字符:加號、斜線號和等號。這是一個有意的字符限制設(shè)置,更復(fù)雜的字符設(shè)置不是必需的,僅僅增加一個額外的字符使得安全變得不同,例如:一個8位字符完全可打印的ASCII密碼大約與一個9位字符基于64位字符編碼的密碼強度相當。
盡管可以使用openssl rand快速生成密語,但是專業(yè)的密語生成器生成強壯的并容易記憶的密語,我強烈推薦使用它。
加密密碼
還有一些事情是GnuPg不能做的,OpenSSL內(nèi)置了一個命令用來創(chuàng)建加密的linux密碼,就象/bin/passwd一樣。 |
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|