|
跳過這個(gè)段落避免陷入鉆牛角尖的密碼術(shù),盡管通常叫做加密,linux密碼實(shí)際上使用的是MD5或舊的UNIX密碼打亂機(jī)制(基于DES加密算法),這就允許linux不知道你的密碼,即使你提供了正確的密碼讓它知道了。當(dāng)你設(shè)置你的密碼時(shí),linux打亂你的密碼并保存在/etc/shadow中,當(dāng)你登陸時(shí),linux提取你輸入的密碼并再打亂一次,再與保存在/etc/shadow中的進(jìn)行比較,如果匹配你提供的就是正確的密碼,你就能登陸,如果不匹配,你也不清楚密碼是好多了,因?yàn)榇鎯?chǔ)的是打亂后的數(shù)據(jù),計(jì)算機(jī)也不會(huì)知道你的密碼是好多,反正你是不能登陸進(jìn)去的。
這就是為什么打亂你自己的密碼有用了,假設(shè)你在另一個(gè)計(jì)算機(jī)上需要一個(gè)新密碼,或許它是一個(gè)新賬號(hào)或你忘記了舊的密碼讓管理員給你重設(shè)密碼,如果你能親自告訴管理員,那么沒有問題,但是如果管理員不在怎么辦呢?或許你從來都沒有和管理員見過面,你怎么傳輸你的新密碼?電子郵件是不安全的,電話可能要好一點(diǎn),郵寄一封信可能要好幾天(可能會(huì)有其他安全問題),傳真機(jī),文本消息和大多數(shù)紙張上的東西是不安全的。
更糟糕的是,你可能不信任那個(gè)管理員,當(dāng)然,管理員通常就是root,但是其他人可能知道你的密碼,或許你象在其他機(jī)器上使用相同的密碼,并且你也不信任那些機(jī)器的管理員。
因此,使用下面的方法:
$ openssl passwd -1
Password:
Verifying - Password:
$1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
輸入2次密碼,它不會(huì)回顯的,如果你有多個(gè)帳戶,就運(yùn)行多次上面的命令,輸出的內(nèi)容就是密碼加密后的結(jié)果,由于采用的是隨機(jī)加密,每次運(yùn)行結(jié)果都是不一樣的,即使密碼是相同的。
在我的例子中,密碼打亂后是這樣的:
$1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
你的密碼打亂后可能與這里完全不同,除了開頭的$1$。
打亂后的密碼【譯者注:實(shí)際上通常我們叫做hash值】就能用于電子郵件、傳真、文本消息甚至通過電話交談傳輸給管理員了,管理員據(jù)此可以重新設(shè)置你的密碼hash值。
在管理員收到你的密碼hash值后,它可以手動(dòng)修改/etc/shadow或使用chpasswd命令,后面需要一個(gè)臨時(shí)的新文件,叫做newpassword,你的登陸Id和密碼hash值象這樣:
LoginidHere:$1$ywrU2ttf$yjm9OXTIBnoKJLQK2Fw5c/
這個(gè)文件可以包括多行,為其他帳戶提供類似的功能。
然后,管理員作為root登陸運(yùn)行:
chpasswd --encrypted < newpassword
現(xiàn)在,新密碼已經(jīng)設(shè)置好了,一旦你登陸后立即修改你的密碼是個(gè)好主意,除非你使用的是一個(gè)強(qiáng)壯的密語,這是因?yàn)槊艽ahash值,一旦暴露,就成為離線強(qiáng)制破解的對(duì)象,除非這個(gè)密碼是真的很長。
這個(gè)設(shè)置密碼的方法是相當(dāng)安全的,例如:使用這個(gè)技術(shù),某個(gè)人能獲取到密碼hash值,創(chuàng)建一個(gè)賬號(hào),并知道登陸id和主機(jī)名,但是只有原先創(chuàng)建這個(gè)用戶的人才知道密碼,即使這個(gè)賬號(hào)的密碼hash值發(fā)布在雜志上也不用擔(dān)心。
順便說一下,那個(gè)hash值對(duì)應(yīng)的密碼是完全隨機(jī)的基于64位字符編碼的28位長,因此要破解它是非常困難的,但是請(qǐng)注意,不要用那些密碼已經(jīng)公布出來的hash值創(chuàng)建賬號(hào),如:
HXzNnCTo8k44k8v7iz4ZkR/QWkM2
密碼和hash值象下面這樣創(chuàng)建:
$ openssl rand 21 -base64
HXzNnCTo8k44k8v7iz4ZkR/QWkM2
$ openssl passwd -1 HXzNnCTo8k44k8v7iz4ZkR/QWkM2
這些例子使用MD5密碼hash值,目前通用的linux系統(tǒng)都是這樣,如果你需要使用舊的UNIX系統(tǒng)hash值,只需要去掉-1參數(shù),例如:
$ openssl passwd
Password:
Verifying - Password:
xcx7DofWC0LpQ
最后這個(gè)密碼hash值的密碼是:TheLinux
密碼基準(zhǔn)測試
OpenSSL支持的許多算法使得它非常合適于密碼基準(zhǔn)測試,這對(duì)于比較相同硬件情況下不同算法的性能很有用,并且,它內(nèi)置了一個(gè)基準(zhǔn)測試命令。 本新聞共 4頁,當(dāng)前在第 3頁 1 2 3 4 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|