最簡(jiǎn)單的失密方式就是你讓你的口令寫在某處,又無(wú)法保證除你之外沒(méi)有其他人能看到。如果別人得到你的口令和你的私匙文件,整個(gè)加密體系就無(wú)密可言了。
另一個(gè)古老的話題就是口令不要太簡(jiǎn)單,注意PGP用的是“口令”passphase,而不是“密碼”password就是說(shuō)可以在口令中包含多個(gè)詞和空格。一個(gè)老謀深算的攻擊者可能會(huì)用一本名言錄來(lái)尋找你的口令。因此為了得到好記又難猜的口令,你可以生造一些句子或者找些非常生僻的文學(xué)篇章中的句子。我個(gè)人推薦的辦法是采用一句話中的首字母的序列,然后在其中加入幾個(gè)符號(hào),如“.”,“-”,“;”等,長(zhǎng)度最好大于等于8個(gè)字符,同時(shí)也可夾雜大小寫。由于有被人在旁邊窺探你的擊鍵動(dòng)作的可能,最好不用空格鍵,因?yàn)榍盟穆曇艉芴厥?。同樣,需要手指伸得很遠(yuǎn)的數(shù)字鍵也可不用。例如:
從“Youcan'tgetitwithoutmypassphase”可以得到“yCgi.wyp”這個(gè)口令,用窮舉法試探出這個(gè)口令的可能性微乎其微,因?yàn)樗玫搅舜笮懽帜负头?hào)。平均要試探約50^8次才可能成功,以IDEA的速度,這在一般大型計(jì)算機(jī)上也不是輕而易舉的事。因此短的口令只要足夠隨機(jī),一樣很安全,而且輸入口令時(shí)間越短,被窺探的可能也越小。
公匙的篡改和冒充可說(shuō)是PGP的最大威脅,在《PGP簡(jiǎn)介中》我已經(jīng)講得比較詳細(xì)了,
要點(diǎn)就是:當(dāng)你用別人的公匙時(shí),確信它是直接從對(duì)方處得來(lái)或是由另一個(gè)可信的人簽
名認(rèn)證過(guò)的。確信沒(méi)有人可以篡改你自己的公匙環(huán)文件。保持你對(duì)自己密匙環(huán)文件的
物理控制權(quán),盡量存放在自己的個(gè)人電腦里而不是一個(gè)遠(yuǎn)程的分時(shí)系統(tǒng)里。備份自己
的密匙環(huán)文件。
◎沒(méi)有完全刪除的文件
一般的操作系統(tǒng)在刪除文件時(shí)都并沒(méi)有徹底刪除文件的數(shù)據(jù),當(dāng)你加密明文后將明
文刪除,可是沒(méi)有從物理上把明文的數(shù)據(jù)清除。一些有經(jīng)驗(yàn)的攻擊者可能從你的磁盤數(shù)
據(jù)塊中恢復(fù)明文。當(dāng)然象碎紙機(jī)一樣,也有從物理上銷毀文件的辦法,它們是一些工具
軟件,如果沒(méi)有,最簡(jiǎn)單的辦法是用無(wú)用的信息將明文文件覆蓋。在PGP后加上-w參
數(shù)也可以達(dá)到這一目的。不過(guò)即使你覆蓋了所有明文曾占用的磁盤空間,仍然會(huì)有微小
的剩磁留在磁盤上,專用的設(shè)備可以恢復(fù)這些數(shù)據(jù),只是一般人沒(méi)有這個(gè)條件。
對(duì)于你使用的密匙環(huán)文件同樣存在這個(gè)問(wèn)題,特別是私匙環(huán)文件,直接關(guān)系到你的
私匙的安全。因此除了你專用的個(gè)人電腦,最好不要將密匙環(huán)拷入其他機(jī)器,讓它們留
在軟盤上或許是個(gè)安全的辦法。
◎物理安全性
這是PGP所不能賦予你的。如果政府要調(diào)查你的話,它蠻可以直接去物理侵犯你的隱
私,就象在水門事件中一樣。而且這種攻擊比密碼學(xué)分析要便宜得多。PGP無(wú)法在一個(gè)不
保密的環(huán)境中保護(hù)你的未加密的明文。當(dāng)然物理安全性也包括對(duì)PGP數(shù)據(jù)的物理安全保護(hù)
象防火、防水、防雷等等,可是這都不如防人來(lái)得難辦。
◎多用戶系統(tǒng)下的泄密
PGP最初是為MS-DOS設(shè)計(jì)的,它假設(shè)本身在用戶的直接物理控制下??墒请S著PGP的
普及,多用戶系統(tǒng)上也出現(xiàn)了PGP,這樣暴露明文和密匙或口令的可能就增大了。例如:
如果你在Unix系統(tǒng)下在PGP的命令行中使用自己的口令,其他用戶將能用ps命令直接看
到它。同樣的問(wèn)題在連上局域網(wǎng)的MS-DOS機(jī)器上也有。我并不是說(shuō)在Unix上就不能用
PGP,有人將Unix系統(tǒng)裝在筆記本電腦上,你當(dāng)然可以用PGP而不用擔(dān)心其他用戶。多
用戶系統(tǒng)也有安全的,它們禁得起所有入侵者所能獲得的手段的攻擊,或者是它的用戶
都是可以信賴的,要不就是根本沒(méi)有感興趣的入侵者。正如下面將要談到的現(xiàn)實(shí)的PGP
攻擊中談到的,在多用戶系統(tǒng)中泄密的風(fēng)險(xiǎn)要大得多。對(duì)此PGP作者的建議是:盡量在
一個(gè)孤立的單用戶系統(tǒng)里使用PGP,而且保證系統(tǒng)處于你的直接物理控制之下。
◎PGP的時(shí)間標(biāo)戳可靠性
PGP簽名上的時(shí)間標(biāo)戳是不可信的,因?yàn)槿魏蜗雮卧煲粋€(gè)“錯(cuò)誤”的時(shí)戳的人都可以
通過(guò)修改系統(tǒng)時(shí)間達(dá)到目的。而在商業(yè)上又有這種利用PGP簽名的時(shí)間來(lái)確認(rèn)責(zé)任的需要,
這樣第三方的時(shí)間公證體系就被建立了。很明顯,只要公證方在郵件上簽上標(biāo)準(zhǔn)的時(shí)間,
就解決了這個(gè)問(wèn)題。實(shí)際上這個(gè)問(wèn)題對(duì)于手寫的簽名也存在,簽字時(shí)需要一個(gè)公證人,
用以證明簽名的時(shí)間,數(shù)字簽名也一樣。PGP作者設(shè)想的模式是讓第三方提供公證服務(wù),
服務(wù)器對(duì)每個(gè)送來(lái)的簽名自動(dòng)加上自己的簽名后發(fā)回,同時(shí)留下一份記錄,這份記錄是
公開(kāi)的,需要仲裁的人可以去查閱。
◎流量分析
雖然攻擊者無(wú)法閱讀密文的真實(shí)內(nèi)容,但他至少可以通過(guò)觀察郵件從哪兒來(lái)、到
哪兒去、郵件大小以及郵件發(fā)送的時(shí)間等等而獲得一些有用的信息,就象他可以查閱
你的長(zhǎng)途電話費(fèi)單,但是他不知道你談話的內(nèi)容一樣。這就叫流量分析。單獨(dú)靠PGP
是無(wú)法阻止流量分析的,借助一些網(wǎng)絡(luò)通訊協(xié)議可以防止這些信息的暴露,甚至可以
采用另一些加密通訊體系的協(xié)助。
◎現(xiàn)實(shí)的PGP攻擊
上面所說(shuō)的都是一些對(duì)一般攻擊者不可能或者太費(fèi)事的攻擊方法。實(shí)際上有一些
“可行的”PGP攻擊,它們不是攻擊PGP密碼體系本身(剛才的論述證明它是牢固的),
而是PGP的實(shí)現(xiàn)系統(tǒng)。
先看被動(dòng)攻擊:
●擊鍵窺探
一種非常有效的被動(dòng)攻擊方法;簡(jiǎn)單地說(shuō)就是記錄用戶的擊鍵從中獲得口令。攻擊
者通過(guò)鍵盤記錄器窺探用戶的擊鍵序列,具體方法因不同系統(tǒng)而異。在DOS下的PGP實(shí)現(xiàn)
在這方面是最脆弱的,而且它擁有最多的鍵盤記錄器程序。而且攻擊者甚至可以從網(wǎng)絡(luò)
上遠(yuǎn)程啟動(dòng)和停止記錄器,在DOS下有些引導(dǎo)區(qū)病毒也可以完成這一工作。目前已經(jīng)出現(xiàn)
了至少一種Windows下的記錄器,這就對(duì)基于Windows的PGP外殼產(chǎn)生了威脅。對(duì)UNIX環(huán)境
下的鍵盤記錄有點(diǎn)復(fù)雜,因?yàn)樾枰猺oot權(quán)限,除非被攻擊者是在X-Windows環(huán)境下輸入口
令的,X-Windows下的記錄器不用root權(quán)限。
防止這種攻擊,一句話,對(duì)工作環(huán)境要仔細(xì)檢查,同時(shí)作好私匙環(huán)文件的保存。
●電磁泄露窺探
這很好懂,任何計(jì)算機(jī)設(shè)備尤其是顯示器都有電磁泄露,通過(guò)合適的設(shè)備可以收到
目標(biāo)顯示器上的信息,那么你的明文顯示時(shí)就無(wú)密可言了。我這里有一個(gè)FBI通過(guò)類似
裝置監(jiān)聽(tīng)到一個(gè)間諜的顯示器和鍵盤信號(hào)的案例:他們通過(guò)偷偷設(shè)置在嫌疑犯計(jì)算機(jī)里
的發(fā)射器,遠(yuǎn)程接收信號(hào),然后通過(guò)NSA專用的FFT芯片去除噪音,完成了取證工作。射
頻信號(hào)大約22MHz,在接收端加上27KHz的水平同步信號(hào)和59.94Hz的垂直同步信號(hào)
就可以得到清晰的圖象。至于鍵盤用的是串行單片機(jī)通訊接口,信號(hào)更容易穩(wěn)定。
加裝一個(gè)射頻信號(hào)干擾器可以有效防止顯示器信號(hào)泄露。鍵盤信號(hào)傳不遠(yuǎn),只要
沒(méi)人在你計(jì)算機(jī)里安“耳朵”就不怕泄露。
●內(nèi)存空間窺探
在UNIX這樣的多用戶系統(tǒng)中,只要有合適的權(quán)限誰(shuí)都可以檢查機(jī)器的物理內(nèi)存。和
分解一個(gè)巨大的合數(shù)相比,打開(kāi)/dev/kmem這個(gè)系統(tǒng)虛存交換文件,找到用戶的頁(yè)面,直
接讀出e,d來(lái)不是省心得多嗎?
●磁盤緩存窺探
在Windows這樣的多任務(wù)操作系統(tǒng)中,系統(tǒng)有把內(nèi)存中的內(nèi)容交換到磁盤的習(xí)慣,而
且這些交換文件是對(duì)用戶透明的。更壞事的是,這些內(nèi)容并不會(huì)很快被清除,有可能在
磁盤上保留很久。如果在網(wǎng)絡(luò)環(huán)境中,可能連用戶自己都感覺(jué)不到,就被人偷走了這些
信息。
●報(bào)文嗅探
在網(wǎng)絡(luò)環(huán)境下,信息是以報(bào)文的形式在線路中傳輸?shù)?。如果你是通過(guò)網(wǎng)絡(luò)遠(yuǎn)程使用
PGP,那么就有可能被人從報(bào)文傳輸途中監(jiān)聽(tīng)到。如果信息是以明文的形式存放在報(bào)文中
你的口令也就被攻擊者知道了。
使用一些加密聯(lián)機(jī)的通訊程序,象SSH,DESlogin或者干脆使用有加密性能的網(wǎng)絡(luò)
協(xié)議棧(點(diǎn)到點(diǎn)或端到端),可以防止網(wǎng)絡(luò)嗅探的攻擊。因?yàn)樾崽秸咭幚泶罅康男畔ⅲ?/p>
如果不是明文,他們一般沒(méi)有興趣去研究。
再看看主動(dòng)攻擊:
●特洛伊木馬
木馬是個(gè)古老的計(jì)謀,關(guān)于特洛伊木馬應(yīng)該所有人都不陌生。我不想給它下個(gè)定義。
下面是一個(gè)虛擬的現(xiàn)代PGP木馬:
一些精英程序員開(kāi)發(fā)了一個(gè)嶄新的PGP的Windows外殼。所有新手都FTP到了
一份拷貝。它工作得太棒了,有各種按鈕和滾動(dòng)條,甚至它還提供了一堆WAV
文件,還支持SoundBlasterAWE32的音效,因此你可以一邊加密文件一邊
欣賞著16位CD音質(zhì)的音響。它占用很少的內(nèi)存,編程精練,功能強(qiáng)大,而且
它還能截獲操作系統(tǒng)的中斷,從而阻止它把重要信息交換到磁盤去而泄密。
了不起吧?可問(wèn)題在于,這個(gè)程序里有那么幾行惡意布置的代碼記錄了你的
口令,并且當(dāng)它發(fā)現(xiàn)機(jī)器上裝了一個(gè)Modem,它會(huì)向Modem發(fā)出一條atm0命令
(關(guān)閉Modem的蜂鳴器),然后向天知道什么地方撥號(hào)并且傳出了你的口令
和密匙......
有意思嗎?這就是特洛伊木馬。避開(kāi)它需要謹(jǐn)慎,謹(jǐn)慎,再謹(jǐn)慎。
●篡改PGP代碼
●篡改PGP代碼
●特洛伊木馬
●報(bào)文嗅探
●磁盤緩存窺探
●內(nèi)存空間窺探
●電磁泄露窺探
●擊鍵窺探
PGP代碼是公開(kāi)的,因此也會(huì)有被人篡改的可能。因此校驗(yàn)?zāi)愕玫降腜GP發(fā)行包的完
整性,是非常重要的,在上面的例子里我們可以看到,把計(jì)算機(jī)的控制權(quán)交給不可靠的
程序是一件可怕的事。當(dāng)然有人會(huì)把MD5程序crack了,讓對(duì)篡改過(guò)的文件它報(bào)告一個(gè)正
確的散列結(jié)果。這時(shí)找到一份已知完好的拷貝對(duì)照一下是最可靠的。
◎結(jié)語(yǔ)
我只是在這里提供了各種材料,結(jié)論得要你自己下。我們不能因?yàn)橹{言而放棄一種
加密方法,同樣我們也不能僅僅因?yàn)轱L(fēng)聞就信賴一種方法??傊?,在計(jì)算機(jī)安全領(lǐng)域,
小心謹(jǐn)慎總會(huì)有報(bào)償?shù)?,但是缺乏情?bào)和無(wú)必要的偏執(zhí)是沒(méi)有好結(jié)果的。