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