返回列表 回復 發帖

PGP軟體的應用

PGP軟體的應用
1電子郵件在人們的工作中佔據著重要作用。據統計,中國平均每用戶每週收到4.4封郵件,發送3.6封郵件。但是電子郵件的主要協議如SMTP等是明文傳送的。這些資訊在經過不可信的因特網時,有可能會被第三方獲得。在重視資訊安全的現代社會,顯然這並符合要求。如何能將這些資訊保密,同時不篡改、不偽造等?本文所介紹的PGP(Pretty Good Privacy)就是一種這樣的軟體,它主要應用於電子郵件和文件的加密解密。

目前PGP獲得了廣泛的應用。但它本身並不是一種加密演算法,相反只是將一些加密演算法(如RSA、IDEA、AES等)綜合在一起,實現了一個完整的安全軟體包。

PGP主要是由Philip R. Zimmermann開發的,於1991年在Internet上免費發佈。他主要做了如下工作:選擇比較好的演算法,例如RSA、IDEA等作為加密演算法的基礎構件;將這些演算法集成在一個便於用戶使用的應用程式中;製作了軟體包及其文檔,且源代碼免費公開,以避隱藏後門之嫌;和公司合作,提供商業版本等。現在用戶可以從www.pgp.com下載PGP。目前最新版本是9.0。

2 原理

PGP結合了一些大部分人認為很安全的演算法,包括傳統的對稱密鑰加密演算法和公開密鑰演算法,充分利用這兩類加密演算法的特性,實現了以下幾種服務:鑒別、加密、壓縮等。

當發送者PGP加密一段明文時, PGP首先壓縮明文,然後PGP建立一個一次性會話密鑰,採用傳統的對稱加密演算法(例如AES等)加密剛才壓縮後的明文,產生密文。然後用接收者的公開密鑰加密剛才的一次性會話密鑰,隨同密文一同傳輸給接收方。接收方首先用私有密鑰解密,獲得一次性會話密鑰,最後用這個密鑰解密密文。

2.1 數字簽名

數字簽名能夠保證接收者接收的資訊沒有經過未授權的第三方篡改,並確信報文來自發信者。PGP使用如下步驟實現數字簽名:

2.1.1發送者創建報文,然後使用SHA-2等散列演算法生成散列代碼,然後使用自己的私有密鑰採用RSA對散列代碼加密,並將結果串接在報文前面。

2.1.2接收者使用發送者的公開密鑰,採用RSA解密得到散列代碼,然後和根據接收到的報文重新計算的散列代碼比較,如果匹配,則接受報文。

目前,PGP使用的散列函數包括:SHA-2(256bit)、SHA-2(384bit)、SHA-2(512bit)、SHA-1(160bit)、RIPEMD(128bit)、MD-5(128bit)等。

2.2 壓  縮

壓縮是為了減少網路傳輸時間和磁片空間,提高安全性:壓縮減少了明文中上下文相關資訊。(當然如果檔太短或者壓縮性能不好,則不壓縮。)

PGP在簽名之後加密之前對報文進行壓縮。它使用了有Jean-lup Gailly,Mark Adler,Richard Wales等編寫的ZIP壓縮演算法。

2.3 加  密

PGP對每次會話的報文進行加密後傳輸,它採用的加密演算法包括:AES-256、AES-192、AES-128、CAST、3DES、IDEA、Twofish等。例如使用AES密鑰最長可達256bit,這已經足夠安全了。

這裏需要指出,PGP結合了常規密鑰加密和公開密鑰加密演算法,一是時間上的考慮,對稱加密演算法比公開密鑰加密速度快大約10000倍;二是公開密鑰解決了會話密鑰分配問題,因為只有接收者才能用私有密鑰解密一次性會話密鑰。PGP巧妙的將常規密鑰加密和公開密鑰加密結合起來,從而使會話安全得到保證。

2.4 密鑰管理

在PGP裏面,最有特色的或許就是它的密鑰管理。PGP包含四種密鑰:一次性會話密鑰、公開密鑰、私有密鑰和基於口令短語的常規密鑰。

用戶使用PGP時,應該首先生成一個公開密鑰/私有密鑰對。其中公開密鑰可以公開,而私有密鑰絕對不能公開。PGP將公開密鑰和私有密鑰用兩個檔存儲,一個用來存儲該用戶的公開/私有密鑰,稱為私有密鑰環;另一個用來存儲其他用戶的公開密鑰,稱為公開密鑰環。

    為了確保只有該用戶可以訪問私有密鑰環,PGP採用了比較簡潔和有效的演算法。當用戶使用RSA生成一個新的公開/私有密鑰對時,輸入一個口令短語,然後使用散列演算法(例如SHA-1)生成該口令的散列編碼,將其作為密鑰,採用CAST-128等常規加密演算法對私有密鑰加密,存儲在私有密鑰環中。當用戶訪問私有密鑰時,必須提供相應的口令短語,然後PGP根據口令短語獲得散列編碼,將其作為密鑰,對加密的私有密鑰解密。通過這種方式,就保證了系統的安全性依賴於口令的安全性。

    下麵介紹PGP的公開密鑰管理。假設A想要獲得B的公開密鑰,可以採取幾種方法,包括拷貝給A、通過電話驗證公開密鑰是否正確、從雙方都信任的人C那裏獲得、從認證中心獲得等。PGP並沒有建立認證中心這樣的概念,它採用信任機制。公開密鑰環上的每個實體都有一個密鑰合法性字段,用來標識信任程度。信任級別包括完全信任、少量信任、不可信任和不認識的信任等。當新來一個公開密鑰時,根據上面附加的簽名來計算信任值的權重和,確定信任程度。

雙方使用一次性會話密鑰對每次會話內容進行加解密。這個密鑰本身是基於用戶滑鼠和鍵盤擊鍵時間而產生的亂數。注意,每次會話的密鑰均不同。這個密鑰經過RSA或Diffie-Hellman加密後和報文一起傳送到對方。

2.5 電子郵件

用PGP軟體加密後密文由任意的8bit位元組流組成,但很多電子郵件系統只允許使用可列印ASCII字元,因此PGP利用radix-64將任意8bit位元組流轉換為可列印ASCII字元來滿足這一限制。另外, PGP可以自動將太長的報文劃分成合適的大小來滿足網路設施的最大報文長度要求。

報文由三個部分組成:報文部分、可選的數字簽名和可選的會話密鑰部分組成。

下麵給出發送者發送一封電子郵件的流程圖,其中A是發送者,B是接收者,M是郵件內容。接收者的流程圖類似,但操作步驟相反,篇幅所限,在此不再給出。


PGP中發送者發送電子郵件流程圖

3 應  用

    PGP提供了大部分各種操作系統平臺的應用。現在電子郵件使用場合越來越多,我們就可以借助於PGP來滿足工作的安全需要。例如,對於Windows系統來說,電子郵件客戶端一般為Outlook,PGP可以無縫的集成在Outlook裏面,自動根據用戶的配置和文件資訊,對接收和發送的郵件實現加密、解密、簽名、認證等。用戶可以使用它來傳遞一些保密信件,例如商業合同、工資資訊、技術文檔等。用戶可以將公開密鑰上傳到PGP提供的密鑰伺服器上,也可在自己的單位內建立一個密鑰伺服器供員工使用。

    PGP也提供了對即時資訊(IM)軟體(例如ICQ)、磁片檔的加密解密等,在此不再贅述。
返回列表