古詩詞大全網 - 個性簽名 - 如何從技術上保障電子郵件的安全?

如何從技術上保障電子郵件的安全?

PGP(Pretty Good Privacy)是Zimmermann於1991年開發出來的,目的是提供電子郵件和文件存儲的保密與鑒別服務。PGP提供免費下載,並且包括了運行在不同平臺(Dos/Windows、Unix、Macintosh等)的多個版本;PGP采用的基礎算法是公眾認可安全的算法,如公鑰RSA算法、DSS算法、Diffie-Hellman密鑰交換算法,對稱密碼CAST-128、IDEA、AES-128、AES-192、AES-256等。PGP的應用範圍廣泛,經過修改和完善,已經逐漸成熟,形成了RFC4880和RFC3156。

PGP的安全服務

PGP采用公開密鑰與對稱密鑰相結合的方式提供電子郵件的安全性。由於用戶直接記憶很長且無規律的私鑰是困難的,PGP采用口令機制保護用戶的私鑰。

PGP主要提供五種服務:數字簽名、消息加密、數據壓縮、電子郵件兼容性和數據分段:

數字簽名

假定發送方用戶需要對報文消息M進行簽名。首先,用戶輸入正確口令,口令經過Hash函數作用後,輸出值作為對稱加密算法的密鑰,解密從私鑰環文件中取出的加密的用戶私鑰,恢復出用戶私鑰;然後,PGP使用Hash函數產生消息M的消息摘要H,再用發送方用戶私鑰對H簽名;最後,報文消息M連同簽名值壓縮處理後發送給接收者。PGP進行數字簽名的過程如圖所示。

接收方首先對受到的消息進行解壓縮處理,然後從公鑰環文件取出發送方用戶的公鑰,對簽名進行驗證。PGP數字簽名驗證過程如圖所示。

消息加密

假定發送方用戶需要對報文消息M進行加密。首先,對報文消息M進行壓縮處理;PGP隨機數發生器產生僅供壹次性使用的會話密鑰,用該會話密鑰對壓縮的報文進行對稱算法加密,生成密文;同時,PGP根據接收方的標識信息,從公鑰環文件取出接收方用戶的公鑰,用該公鑰對會話密鑰進行加密;最後,PGP把加密後的會話密鑰連同密文,壹起發送給接收方。PGP進行消息加密的過程如圖所示。

接收方收到加密的郵件後,把收到的消息分成兩部分,壹部分是公鑰算法加密的會話密鑰,另壹部分是用會話密鑰加密的報文消息。PGP要求用戶輸入口令,用戶輸入的口令經過Hash函數作用後得到解密密鑰,此密鑰用於解密從私鑰環文件中取出的加密的用戶私鑰。解密出用戶私鑰後,用此私鑰解密接收消息的第壹部分,得到會話密鑰;然後用會話密鑰解密接收消息的第二部分,並進行解壓縮的操作,最終得到原始報文消息。PGP接收密文郵件後的解密過程如圖所示。

在上述過程中,會話密鑰的分配是通過公鑰加密算法來完成的,只有接收方提供正確的口令後,才能恢復綁定到加密報文上的會話密鑰。由於電子郵件的存儲轉發特性,使用雙方協商的握手協議來分配會話密鑰是不現實的。而且,會話密鑰是壹次性使用的,換句話說,對同壹文件進行兩次加密得到的密文是不同的,這進壹步提高了PGP系統的安全強度。

當用戶希望把相同的郵件加密發送給多個收信人時,PGP隨機產生壹個會話密鑰,然後從公鑰環文件取出所有接收方用戶的公鑰,用他們對會話密鑰分別進行加密,得到多個加密的會話密鑰。每個收信人在收到加密郵件後,輸入自己的正確口令,得到自己的私有密鑰,然後解密得到會話密鑰,進而解密得到原始報文消息。

數據壓縮

默認情況下,PGP在數字簽名之後、消息加密之前對報文進行數據壓縮。數據壓縮壹方面有利於郵件傳輸和文件存儲時節省空間;另壹方面壓縮過的報文比原始明文冗余更少,對明文攻擊的抵禦能力更強。新版的PGP軟件支持的壓縮算法有:Bzip2,ZLIB,Zip。

電子郵件兼容性

使用PGP的時候,傳輸報文通常是部分被加密的,加密後的報文由任意的8比特字節流組成。然而,很多電子郵件系統只允許使用由ASCII碼字符組成的塊。為了適應這種限制,PGP提供了將原始8比特二進制流轉換成可打印的ASCII碼字符的功能。為此,PGP采用了Radix-64轉換方案。在該方案中,每3個二進制數據組被映射為4個ASCII字符,同時也使用了CRC(循環冗余校驗)來檢測傳輸錯誤。使用Radix-64將導致報文消息長度增加了33%,幸運的是壓縮可以補償Radix-64的擴展。

數據分段

電子郵件設施經常受限於最大報文長度(50000個)八位組的限制。超過這個值, 報文將分成更小的報文段,每個段單獨發送。分段是在所有其他的處理(包括radix-64 轉換)完成後才進行的,因此,會話密鑰和簽名只在第壹個報文段的開始位置出現壹次。在接收端,PGP 必須剝掉所有的電子郵件首部,並且重新裝配成原來的完整的分組。