Pretty Good Pryvacy(PGP),從其創(chuàng)始人Zimmermann在1991年發(fā)布它的第一個版本以來,到如今也算有相當長的歷史了。這其中,它的經(jīng)歷曲折而結局又皆大歡喜,與美國政府之間幾年馬拉松式的訴訟,贏得最終的勝利,推出其修訂版本,到最后于2002年從其老東家Network Associates公司中把所有的股份與資產都回購過來,所有的這一切,都發(fā)生在這個原本只是用來幫助用戶安全地在BBS系統(tǒng)上發(fā)表信息的毫不起眼的小軟件身上。
在經(jīng)歷了所有的這一切后,它自身的加密功能卻被完整地保留下來了――不管是那些狂熱的少年電腦黑客聲稱在某種程度上在對其進行破解,到美國政府強迫Zimmermannn植入一個后門在該軟件中。跟S/MIME一起,PGP作為美國標準技術研究院(NIST,National Institute of Standards and Technology)唯一認可使用的兩個電子郵件加密系統(tǒng)之一,它已得到了用戶的廣泛關注與認同。
然而,不管這一切的技術發(fā)展與終端用戶的好評如何,還是有許多的用戶和公司卻還是拒絕使用PGP或其他的加密方法來保證他們電子郵件的安全。
這又是為什么呢?多個不同因素的共同作用妨礙了大多數(shù)普通的因特網(wǎng)用戶和數(shù)量不少的公司用戶進入到電子郵件加密系統(tǒng)的世界。在這些影響的因素中,最主要的一個就是加密系統(tǒng)在使用上比較復雜,對一個家庭用戶特別是對那些操作計算機并不是很熟練的初級用戶來說,這樣的加密系統(tǒng)看上去在設置和使用方面都太復雜了。而且那些專業(yè)術語如“公鑰”、“私鑰”和“數(shù)字簽名”等對這樣的用戶來說他們根本就不知道是怎么一回事,這些晦澀的專業(yè)詞匯只適合于那些專家與高級用戶。
本文從內容上可以分成兩大部分,第一部分主要向大家介紹PGP Universal產品的背景,并全面地把這款產品和PGP詳細介紹給各位讀者。而第二部分的內容會介紹PGP Universal詳細的技術資料,并來檢驗一下這款產品在商業(yè)環(huán)境下是表現(xiàn)得怎樣的。由于文章很長,實際的發(fā)表將分為多篇,下面先讓我們了解一下PGP的含義和由來。
一、PGP軟件及加密算法
PGP是目前最流行的一種加密軟件,它是一個基于RSA公鑰加密體系的郵件加密軟件。我們可以用它對郵件保密以防止非授權者閱讀,它還能對用戶的郵件加上數(shù)字簽名,從而使收信人可以確信發(fā)信人的身份。它讓用戶可以安全地和從未見過的人們通信,事先并不需要任何保密措施的來傳遞密鑰,因為它采用了非對稱的“公鑰”和“私鑰”加密體系。
但PGP不是一種完全的非對稱加密體系,它是個混合加密算法,它是由一個對稱加密算法(IDEA)、一個非對稱加密算法(RSA)、一個單向散列算法(MD5)以及一個隨機數(shù)產生器(從用戶擊鍵頻率產生偽隨機數(shù)序列的種子)組成的,每種算法都是PGP不可分割的組成部分,PGP之所以得到流行,得到大家的認可,最主要的一半是它集中的幾種加密算法的優(yōu)點,使它們彼此得到互補。
我們知道采用“公鑰”和“私鑰”加密體系最大的安全性問題就是公開的“公鑰”可能被人篡改,影響文件的解密,雖然PGP也采用這一加密體系,并且所有“公鑰”和“私鑰”都可以由用戶自己產生,不需要專門的認證機構,但它卻有一個比較完善的密鑰管理體制,所以它的另一半優(yōu)點就體現(xiàn)在PGP獨特的密鑰管理體制上。
在現(xiàn)代社會里,電子郵件和網(wǎng)絡上的文件傳輸已經(jīng)成為生活的一部分。郵件的安全問題也就突出了,大家都知道在互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)是不加密的。如果用戶不保護自己的信息,第三者就會輕易獲得用戶的隱私。還有一個問題就是信息認證,如何讓收信人確信郵件沒有被第三者篡改,就需要使用數(shù)字簽名技術。
RSA公鑰體系的特點使它非常適合用來滿足上述兩個要求:保密性(privacy)和公證性(authentication)。PGP的創(chuàng)始人是美國的Phil Zimmermann,他的創(chuàng)造性在于他把RSA公鑰體系的方便和傳統(tǒng)加密體系高度結合起來,并且在數(shù)字簽名和密鑰認證管理機制上有巧妙的設計。
RSA(Rivest-Shamir-Adleman)算法是基于大數(shù)不可能被質因數(shù)分解假設的公鑰體系。簡單地說就是找兩個很大的質數(shù)。一個對外公開,一個不告訴任何人。公開的一個稱為“公鑰”,另一個叫“私鑰”(Prblic key & Secret key or Private key)。這兩個密鑰是互補的,也就是說用公鑰加密的密文只可以用私鑰解密,反過來也一樣。
假設Alice要寄信給Bob,他們互相知道對方的公鑰。Alice就用Bob的公鑰加密郵件寄出,Bob收到后就可以用自己的私鑰解密出Alice的原文。由于別人不知道Bob的私鑰,所以即使是Alice本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道Bob的公鑰,他們都可以給Bob發(fā)信,那么Bob怎么確信來信是不是Alice的,這就是數(shù)字簽名的必要性,用數(shù)字簽名來確認發(fā)信的身份。
PGP的數(shù)字簽名是利用一個叫“郵件文摘”的功能,“郵件文摘”(message digest),簡單地講就是對一封郵件用某種算法算出一個最能體現(xiàn)這封郵件特征的數(shù)來,一旦郵件有任何改變這個數(shù)都會發(fā)生變化,那么這個數(shù)加上用戶的名字(實際上在用戶的密鑰里)和日期等等,就可以作為一個簽名了,確切地說PGP是用一個128位的二進制數(shù)作為"郵件文摘"的,用來產生它的算法就是MD5(Message Digest 5。MD5的提出者是Ron Rirest,PGP中使用的代碼是由Colin Plumb 編寫的MD5,MD5是一種單向散列算法,它不像校驗碼,是一份替代的郵件并且與原件具有同樣的MD5特征值。
PGP給郵件加密和簽名的過程是這樣的:首先Alice用自己的私鑰將上述的128位值加密,附加在郵件后,再用Bob的公鑰將整個郵件加密(要注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文被Bob收到以后,Bob用自己的私鑰將郵件解密,得到Alice的原文和簽名,Bob的PGP也從原文計算出一個128位的特征值來和用Alice的公鑰解密簽名所得到的數(shù)進行比較,如果符合就說明這份郵件確實是Alice寄來的。這樣兩個安全性要求都得到了滿足。
PGP還可以只簽名而不加密,這適用于公開發(fā)表聲明時,聲明人為了證實自己的身份(在網(wǎng)絡上只能如此了),可以用自己的私匙簽名,這樣就可以讓收件人能確認發(fā)信人的身份,也可以防止發(fā)信人抵賴自己的聲明。這一點在商業(yè)領域有很大的應用前途,它可以防止發(fā)信人抵賴和信件被途中篡改。
為什么說PGP用的是RSA和傳統(tǒng)加密的雜合算法呢?因為RSA算法計算量很大而且在速度上也不適合加密大量數(shù)據(jù),所以PGP實際上用來加密的不是RSA本身,而是采用了一種叫IDEA的傳統(tǒng)加密算法,又稱為“對稱加密法”。
傳統(tǒng)加密方法就是用一個密鑰加密明文,然后用同樣的密鑰解密。這種方法的代表是DES(US Federal Data Encryption Standard),也就是乘法加密,這的主要缺點就是密碼長度較短,而且傳遞渠道解決不了安全性問題,不適合網(wǎng)絡環(huán)境郵件加密需要。
IDEA是一個有專利的算法,專利持有者是ETH和一個瑞士公司:Ascom-Tech AG。IDEA的加(解)密速度比RSA快得多,所以實際上PGP是以一個隨機生成的密鑰(每次加密不一樣),用IDEA算法對明文加密,然后用RSA算法對該密鑰加密。這樣收件人同樣是用RSA解出這個隨機密鑰,再用IDEA解密郵件本身。這樣的鏈式加密就做到了既有RSA體系的保密性,又有IDEA算法的快捷性。PGP的創(chuàng)意有一半就在這一點上了,為什么RSA體系70年代就提出來,卻一直沒有推廣應用呢?推廣速度真是太慢!那PGP創(chuàng)意的另一半在哪兒呢?就是下面我要談的密鑰管理。
二、PGP公司
PGP公司擁有和發(fā)布PGP加密產品,并已把這一方面作為公司的主導業(yè)務,全力作好加密產品方面的開發(fā)與研究,通過其潛心鉆研,為用戶推出了一個比較完善的解決方案,用來幫助用戶對他們每天的email進行加密保護,不論是大公司還小的商業(yè)用戶都可適用。使用PGP的解決方案,就不用非得每天為其他的加密產品所產生的“公鑰”和“私鑰”勞神費力甚至引起爭論了,還可避免在發(fā)送一封電子郵件之前非得親自動手按下諸如“加密”按鈕等操作。他們所提出的解決方案就是PGP Universal,它是一整套加密工具集,用來幫助公司用戶加密他們每天所處理的電子內容,從email到即時信息,甚至是整個的內容都可以,而不用非得去購買大量的不同產品來完成同樣的工作。
現(xiàn)在讓我們從PGP的誕生開始,簡要地回顧一下它的歷史到底有多長,以及為什么它會得到BBS、cypherpunk(密碼朋克)以及政府法案的喜愛的。
小知識:cypherpunk(密碼朋克)
密碼朋克,1993年在Eric Hughes’的《A Cypherpunk’s Manifesto》中出現(xiàn)的一個術語,它會合了電腦朋克的思想,在電腦化空間下的個體精神,使用強加密(密文)保護個人隱私。密碼提倡信仰使用強加密算法將能夠使個體保持安全的私人性,他們反對任何政府規(guī)則的密碼系統(tǒng)。他們可能容許罪犯和恐怖分子來開發(fā)和使用強加密系統(tǒng),但接受為個人隱私付出風險。
三、輝煌的歷史
1991年,美國人Philip Zimmermann編寫了PGP的第一個版本,精明且具有商業(yè)頭腦的Zimmermann先生想開發(fā)一種加密方面的產品,提供一整套的解決方案,允許用戶安全地存儲文件和在BBS上發(fā)表信息,而這些電子文檔不會被遭到竊聽與篡改。出于這一目的,他找到了公鑰和對稱密鑰加密方法之間的均衡點,這就是如今大家所了解的PGP(Pretty Good Orivacy),到目前為止,眾所周知,這一加密方法是還沒被破解過的。
PGP的工作原理大體如下:假如Alice想發(fā)送一些加密的信息給Bob,則Alice要找到Bob的公鑰(這是Bob密鑰對的一半,這個公鑰所有的信息不論是誰都可從某個密鑰服務器看到并下載,、Bob的web站點或使用其他的任何方法得到,然后Alice再使用這個公鑰加密他所要傳送的信息。這個已加密的信息通過正常的信息傳輸途徑傳送給Bob,Bob再使用他的私鑰(Bob密鑰對的另一半,僅僅只有他才可看到并使用)來解密信息。由于除了Bob外再沒有另的人知道這個私鑰,所以除了Bob以外其他的人都不能夠解密這個信息,因此在整個的傳輸過程中,如果有竊聽者即使竊取了這段信息他也得不到其中的明文,故信息的安全就得到了保證。
這種方法雖保證用戶的敏感信息在那些不懷好意的面前得到了安全保障,但它卻逃不過美國政府的注意,在1993年,美國政府對Zimmermann和PGP開展了一項司法調查,原因是與加密有關的出口條例。在美國的出口法律中,密碼長度超過40位的加密算法被視為軍需產品并禁止出口,接著,在Zimmermann和他的法律團隊與美國政府之間,進行了長達三年的法律訴訟,Zimmermann的法律團隊中的許多人都是在這個案子中免費工作的。最后,在1993年二月,這一切是在政府撤訴后,以Zimmermann的法律團隊勝利結束的。
在這場勝利之后,Zimmermann創(chuàng)建了PGP公司,以銷售它的加密產品,這個公司得到了很快的發(fā)展,不久,在1997年,它就被Network Associates International(NAI)公司收購了,NAI公司開發(fā)了McAfee Anti-Virus反病毒軟件,之后許多新的功能被加入到PGP中。四年后,于2001年,NAI出售了PGP公司的所有股份。許多的投資者――包括現(xiàn)如今的管理團隊,很快就收購了這些股份,因此就形成了現(xiàn)豐的PGP公司。
PGP公司從NAI中獨立出來,馬上就開始了增強PGP產品功能的工作,并使其集成多種的安全解決方案以適合家庭和商業(yè)用戶。這就使得我又重新使用這款產品,PGP Universal 2.0――PGP公司的一個集成解決方案,允許公司從網(wǎng)絡級別來滿足他們的用戶的安全和加密方面的需求。