簡介
PGP(Pretty Good Privacy),是一個基於RSA公匙加密體系的郵件加密軟體。可以用它對你的郵件保密以防止非授權者閱讀,它還能對你的郵件加上數字簽名從而使收信人可以確信郵件是你發來的。它讓你可以安全地和你從未見過的人們通訊,事先並不需要任何保密的渠道用來傳遞密匙。它採用了:審慎的密匙管理,一種RSA和傳統加密的雜合算法,用於數字簽名的郵件文摘算法,加密前壓縮等,還有一個良好的人機工程設計。它的功能強大,有很快的速度。而且它的原始碼是免費的。
內容
PGP中的每個公鑰和私鑰都伴隨著一個密鑰證書。它一般包含以下內容:
密鑰內容(用長達百位的大數字表示的密鑰)
密鑰類型(表示該密鑰為公鑰還是私鑰)
密鑰長度(密鑰的長度,以二進制位表示)
密鑰編號(用以唯一標識該密鑰)
創建時間
用戶標識 (密鑰創建人的信息,如姓名、電子郵件等)
密鑰指紋(為128位的數字,是密鑰內容的提要表示密鑰唯一的特徵)
中介人簽名(中介人的數字簽名,聲明該密鑰及其所有者的真實性,包括中介人的密鑰編號和標識信息)
PGP把公鑰和私鑰存放在密鑰環(KEYR)檔案中。PGP提供有效的算法查找用戶需要的密鑰。
PGP在多處需要用到口令,它主要起到保護私鑰的作用。由於私鑰太長且無規律,所以難以記憶。PGP把它用口令加密後存入密鑰環,這樣用戶可以用易記的口令間接使用私鑰。
PGP的每個私鑰都由一個相應的口令加密。PGP主要在3處需要用戶輸入口令:
需要解開收到的加密信息時,PGP需要用戶輸入口令,取出私鑰解密信息
當用戶需要為檔案或信息簽字時,用戶輸入口令,取出私鑰加密
對磁碟上的檔案進行傳統加密時,需要用戶輸入口令
2.以上介紹了PGP的工作流程,下面將簡介與PGP相關的加密、解密方法以及PGP的密鑰管理機制。
PGP是一種供大眾使用的加密軟體。電子信息通過開放的網路傳輸,網路上的其他人都可以監聽或者截取信息,來獲得信息的內容,因而信息的安全問題就比較突出了。保護信息不被第三者獲得,這就需要加密技術。還有一個問題就是信息認證,如何讓收信人確信信息沒有被第三者篡改,這就需要數字簽名技術。RSA公匙體系的特點使它非常適合用來滿足上述兩個要求:保密性(Privacy)和認證性(Authentication)。
RSA(Rivest-Shamir-Adleman)算法是一種基於大數不可能質因數分解假設的公匙體系。簡單地說就是找兩個很大的質數,一個公開即公鑰,另一個不告訴任何人,即私鑰。這兩個密匙是互補的,就是說用公匙加密的密文可以用私匙解密,反過來也一樣。
假設甲要寄信給乙,他們互相知道對方的公匙。甲就用乙的公匙加密信件寄出,乙收到後就可以用自己的私匙解密出甲的原文。由於沒別人知道乙的私匙,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面由於每個人都知道乙的公匙,他們都可以給乙發信,那么乙就無法確信是不是甲的來信。這時候就需要用數字簽名來認證。
在說明數字簽名前先要解釋一下什麼是“信息摘要”(message digest)。信息摘要就是對信息用某種算法算出一個最能體現該信息的特徵的數來,一旦信息有任何改變這個數都會變化,那么這個數加上作者的名字(實際上在作者的密匙里)還有日期等等,就可以作為一個簽名了。PGP是用一個128位的二進制數作為“信息摘要”的,用來產生它的算法叫MD5(message digest 5)。 MD5是一種單向散列算法,它不像CRC校驗碼,很難找到一份替代的信息與原件具有同樣的MD5特徵值。
回到數字簽名上來,甲用自己的私匙將上述的128位的特徵值加密,附加在信息後,再用乙的公匙將整個信息加密。這樣這份密文被乙收到以後,乙用自己的私匙將信息解密,得到甲的原文和簽名,乙的PGP也從原文計算出一個128位的特徵值來和用甲的公匙解密簽名所得到的數比較,如果符合就說明這份信息確實是甲寄來的。這樣兩個安全性要求都得到了滿足。
PGP還可以只簽名而不加密,這適用於公開發表聲明時,聲明人為了證實自己的身份,可以用自己的私匙簽名。這樣就可以讓收件人能確認發信人的身份,也可以防止發信人抵賴自己的聲明。這一點在商業領域有很大的套用前途,它可以防止發信人抵賴和信件被中途篡改。