PGP——Pretty Good Privacy, 是一個(gè)基于RSA公匙加密體系的郵件加密 軟件,它可以用來對(duì)你的郵件加密以防止非授權(quán)者閱讀,還能對(duì)你的郵件加上 數(shù)字簽名而使收信人可以確信郵件是你發(fā)來的。它讓你可以安全地和你從未見 過的人們通訊,事先并不需要任何保密的渠道用來傳遞密匙。它采用了審慎的 密匙管理, 一種RSA和傳統(tǒng)加密的雜合算法,用于數(shù)字簽名的郵件文摘算法, 加密前壓縮等,還有一個(gè)良好的人機(jī)工程設(shè)計(jì)。它的功能強(qiáng)大有很快的速度, 而且它的源代碼是免費(fèi)的。 實(shí)際上PGP的功能還不止上面說的:PGP可以用來加密文件,還可以用PGP代 替UUencode 生成 RADIX 64 格式(就是MIME 的 BASE 64格式)的編碼文件。
PGP 的創(chuàng)始人是美國的 Phil Zimmermann。他的創(chuàng)造性在于他把RSA公匙體 系的方便和傳統(tǒng)加密體系的高速度結(jié)合起來,并且在數(shù)字簽名和密匙認(rèn)證管理 機(jī)制上有巧妙的設(shè)計(jì)。因此PGP成為幾乎最流行的公匙加密軟件包。
PGP是一種供大眾使用的加密軟件。加密是為了安全,隱私權(quán)是一種基本人 權(quán)。在現(xiàn)代社會(huì)里,電子郵件和網(wǎng)絡(luò)上的文件傳輸已經(jīng)成為生活的一部分,郵 件的安全問題日益突出,大家都知道在Internet上傳輸?shù)臄?shù)據(jù)是不加密的,如 果你自己不保護(hù)自己的信息,第三者就會(huì)輕易獲得你的隱私。還有一個(gè)問題就 是信息認(rèn)證,要讓收信人確信郵件沒有被第三者篡改,就需要使用數(shù)字簽名技 術(shù)。RSA公匙體系的特點(diǎn)使它非常適合用來滿足上述要求:保密性(Privacy) 和認(rèn)證性(Authentication)。
RSA(Rivest-Shamir-Adleman)算法是一種基于大數(shù)不可能質(zhì)因數(shù)分解假 設(shè)的公匙體系。簡(jiǎn)單地說,其原理就是找兩個(gè)很大的質(zhì)數(shù),其中一個(gè)向外界公 開(公匙),另一個(gè)不告訴任何人(私匙)。這兩個(gè)密匙是互補(bǔ)的,用公匙加 密的密文可以用私匙解密,反過來也一樣。假設(shè)甲要寄信給乙,他們互相知道 對(duì)方的公匙。甲就用乙的公匙加密郵件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于沒別人知道乙的私匙所以即使是甲本人也無法解密那封信, 這就解決了信件保密的問題。另一方面由于每個(gè)人都知道乙的公匙,他們都可 以給乙發(fā)信,那么乙就無法確信是不是甲的來信。認(rèn)證的問題就出現(xiàn)了,這時(shí)候數(shù)字簽名就有用了。
在說明數(shù)字簽名前先要解釋一下什么是“郵件文摘”(message digest), 簡(jiǎn)單地說就是對(duì)一封郵件用某種算法算出一個(gè)能體現(xiàn)這封郵件“精華”的數(shù)來, 一旦郵件有任何改變這個(gè)數(shù)都會(huì)變化,那么這個(gè)數(shù)加上作者的名字(實(shí)際上在 作者的密匙里)還有日期等等,就可以作為一個(gè)簽名了。 確切地說,PGP是用 一個(gè)128位的二進(jìn)制數(shù)作為“郵件文摘”的,用來產(chǎn)生它的算法叫MD5(message digest 5),MD5的提出者是Ron Rivest,PGP中使用的代碼是由Colin Plumb 編寫的,MD5本身是公用軟件。所以PGP的法律條款中沒有提到它。
MD5是一種 單向散列算法, 它不像CRC校驗(yàn)碼,很難找到一份替代的郵件而與原件具有一 樣的“精華”。 回到數(shù)字簽名上來,甲用自己的私匙將上述的128位的“精華”加密, 附 加在郵件上,再用乙的公匙將整個(gè)郵件加密。這樣這份密文被乙收到以后,乙 用自己的私匙將郵件解密,得到甲的原文和簽名, 乙的PGP也從原文計(jì)算出一 個(gè)128位的“精華”來再用甲的公匙解密簽名得到的數(shù)比較, 如果符合就說明 這份郵件確實(shí)是甲寄來的。這樣兩個(gè)要求都得到了滿足。
[NextPage]
PGP還可以只簽名而不加密,這適用于公開發(fā)表聲明時(shí), 聲明人為了證實(shí) 自己的身份(在網(wǎng)絡(luò)上只能如此了),可以用自己的私匙簽名。這樣就可以讓 收件人能確認(rèn)發(fā)信人的身份,也可以防止發(fā)信人抵賴自己的聲明。這一點(diǎn)在商 業(yè)領(lǐng)域有很大的應(yīng)用前途,它可以防止發(fā)信人抵賴和信件被途中篡改。 那么為什么說PGP用的是RSA和傳統(tǒng)加密的雜合算法呢? 因?yàn)?/SPAN>RSA算法計(jì)算 量極大,在速度上不適合加密大量數(shù)據(jù),所以PGP實(shí)際上用來加密的不是RSA本 身,而是采用了一種叫IDEA的傳統(tǒng)加密算法。我先解釋一下什么叫傳統(tǒng)加密, 簡(jiǎn)單地說就是用一個(gè)密匙加密明文,然后用同樣的密匙解密。這種方法的代表 是DES(US Federal Data Encryption Standard),也就是乘法加密,它的主 要缺點(diǎn)就是密匙的傳遞渠道解決不了安全性問題,不適合網(wǎng)絡(luò)環(huán)境郵件加密需 要。IDEA是一個(gè)有專利的算法, 專利持有者是ETH和一個(gè)瑞士公司Ascom-Tech AG。非商業(yè)用途的IDEA實(shí)現(xiàn)不用向他們交納費(fèi)用。IDEA的加(解)密速度比RSA 快得多, 所以實(shí)際上PGP是用一個(gè)隨機(jī)生成密匙(每次加密不同)用IDEA算法 對(duì)明文加密,然后用RSA算法對(duì)該密匙加密。這樣收件人同樣是用RSA解密出這 個(gè)隨機(jī)密匙,再用IDEA解密郵件本身。 這樣的鏈?zhǔn)郊用芫妥龅搅思扔?/SPAN>RSA體系 的保密性,又有IDEA算法的快捷性。 RSA體系70年代就已提出,但由于速度問 題一直沒有推廣應(yīng)用,PGP的正好解決了這個(gè)問題,PGP的創(chuàng)意有一半就在這一點(diǎn)上了。那么PGP創(chuàng)意的另一半在哪兒呢?下面我再談PGP的密匙管理。
一個(gè)成熟的加密體系必然要有一個(gè)成熟的密匙管理機(jī)制配套。公匙體制的 提出就是為了解決傳統(tǒng)加密體系的密匙分配難保密的缺點(diǎn)。比如網(wǎng)絡(luò)hacker們 常用的手段之一就是“監(jiān)聽”,如果密匙是通過網(wǎng)絡(luò)傳送就太危險(xiǎn)了。舉個(gè)例 子:Novell Netware 的老版本中,用戶的密碼是以明文在線路中傳輸?shù)模?/SPAN> 這 樣監(jiān)聽者輕易就獲得了他人的密碼。當(dāng)然 Netware 4.1中數(shù)據(jù)包頭的用戶密碼 現(xiàn)在是加密的了。對(duì)PGP來說公匙本來就要公開,就沒有防監(jiān)聽的問題。 但公 匙的發(fā)布中仍然存在安全性問題,例如公匙的被篡改(Public Key Tampering), 這可能是公匙密碼體系中最大的漏洞,因?yàn)榇蠖鄶?shù)新手不能很快發(fā)現(xiàn)這一點(diǎn)。 你必須確信你拿到的公匙屬于它看上去屬于的那個(gè)人。為了把這個(gè)問題說清楚, 我舉個(gè)例子,然后再說如何正確地用PGP堵住這個(gè)漏洞。 以你和Alice的通信為例,假設(shè)你想給Alice發(fā)封信,那你必須有Alice的公 匙, 你從BBS上下載了Alice的公匙,并用它加密了信件用BBS的Email功能發(fā)給 了Alice。不幸地,你和Alice都不知道,另一個(gè)用戶叫Charlie的用戶潛入BBS, 把他自己用Alice的名字生成的密匙對(duì)中的公匙替換了Alice的公匙。 那你用來 發(fā)信的公匙就不是Alice的而是Charlie的, 一切看來都很正常,因?yàn)槟隳玫降?/SPAN> 公匙的用戶名是“Alice”。于是Charlie就可以用他手中的私匙來解密你給Alice 的信, 甚至他還可以用Alice真正的公匙來轉(zhuǎn)發(fā)你給Alice的信,這樣誰都不會(huì) 起疑心,他如果想改動(dòng)你給Alice的信也沒問題。更有甚者,他還可以偽造Alice 的簽名給你或其他人發(fā)信,因?yàn)槟銈兪种械墓资莻卧斓,你們?huì)以為真是Alice 的來信。 防止這種情況出現(xiàn)的最好辦法是避免讓任何其他人有機(jī)會(huì)篡改公匙,比如 直接從Alice手中得到她的公匙,然而當(dāng)她在千里之外或無法見到時(shí), 這是很 困難的。PGP發(fā)展了一種公匙介紹機(jī)制來解決這個(gè)問題。 舉例來說:如果你和 Alice有一個(gè)共同的朋友David,而David知道他手中Alice的公匙是正確的(關(guān) 于如何認(rèn)證公匙,PGP還有一種方法,后面會(huì)談到,這里假設(shè)David已經(jīng)和Alice 認(rèn)證過她的公匙)。這樣David可以用他自己的私匙在Alice的公匙上簽名(就 是用上面講的簽名方法),表示他擔(dān)保這個(gè)公匙屬于Alice。當(dāng)然你需要用David 的公匙來校驗(yàn)他給你的Alice的公匙,同樣David也可以向Alice認(rèn)證你的公匙, 這樣David就成為你和Alice之間的“介紹人”。這樣Alice或David就可以放心 地把David簽過字的Alice的公匙上載到BBS上讓你去拿, 沒人可能去篡改它而 不被你發(fā)現(xiàn),即使是BBS的管理員。這就是從公共渠道傳遞公匙的安全手段。
有人會(huì)問:那你怎么安全地得到David的公匙呢, 這不是個(gè)先有雞還是先 有蛋的問題嗎?確實(shí)有可能你拿到的David的公匙也是假的, 但這就要求這個(gè) 搗蛋者參與這整個(gè)過程,他必須對(duì)你們?nèi)硕己苁煜,還要策劃很久,這一般 不可能。 當(dāng)然,PGP對(duì)這種可能也有預(yù)防的建議,那就是由一個(gè)大家普遍信任 的人或機(jī)構(gòu)擔(dān)當(dāng)這個(gè)角色。他被稱為“密匙侍者”或“認(rèn)證權(quán)威”,每個(gè)由他 簽字的公匙都被認(rèn)為是真的,這樣大家只要有一份他的公匙就行了,認(rèn)證這個(gè) 人的公匙是方便的,因?yàn)樗麖V泛提供這個(gè)服務(wù),假冒他的公匙是很極困難的, 因?yàn)樗墓琢鱾鲝V泛。這樣的“權(quán)威”適合由非個(gè)人控制組織或政府機(jī)構(gòu)充 當(dāng),現(xiàn)在已經(jīng)有等級(jí)認(rèn)證制度的機(jī)構(gòu)存在。 對(duì)于那些非常分散的人們,PGP更贊成使用私人方式的密匙轉(zhuǎn)介方式, 因為這樣有機(jī)的非官方更能反映出人們自然的社會(huì)交往,而且人們也能自由地選 擇信任的人來介紹?傊筒徽J(rèn)識(shí)的人們見面一樣。每個(gè)公匙有至少一個(gè)“用 戶名”(User ID),請(qǐng)盡量用自己的全名,最好再加上本人的Email地址,以免 混淆。 注意!你所必須遵循的一條規(guī)則是:在你使用任何一個(gè)公匙之前,一定要 首先認(rèn)證它。!無論你受到什么誘惑,當(dāng)然會(huì)有這種誘惑,你都不要,絕對(duì) 不要,直接信任一個(gè)從公共渠道(由其是那些看起來保密的)得來的公匙,記 得要用熟人介紹的公匙,或者自己與對(duì)方親自認(rèn)證。同樣你也不要隨便為別人 簽字認(rèn)證他們的公匙,就和你在現(xiàn)實(shí)生活中一樣,家里的房門鑰匙你是只會(huì)交 給信任的人的。 下面,我講講如何通過電話認(rèn)證密匙。
當(dāng)然私匙文件本身失密也很危險(xiǎn),因?yàn)槠谱g者所需要的只是用窮舉法試探出你 的口令了,雖說很困難但畢竟是損失了一層安全性。在這里只用簡(jiǎn)單地記住一 點(diǎn),要像任何隱私一樣保藏你的私匙,不要讓任何人有機(jī)會(huì)接觸到它。 PGP在安全性問題上的精心考慮體現(xiàn)在PGP的各個(gè)環(huán)節(jié)。比如每次加密的實(shí) 際密匙是個(gè)隨機(jī)數(shù),大家都知道計(jì)算機(jī)是無法產(chǎn)生真正的隨機(jī)數(shù)的。 PGP程序 對(duì)隨機(jī)數(shù)的產(chǎn)生是很審慎的, 關(guān)鍵的隨機(jī)數(shù)像RSA密匙的產(chǎn)生是從用戶瞧鍵盤 的時(shí)間間隔上取得隨機(jī)數(shù)種子的。對(duì)于磁盤上的randseed.bin文件是采用和郵 件同樣強(qiáng)度的加密的。這有效地防止了他人從你的randseed.bin文件中分析出 你的加密實(shí)際密匙的規(guī)律來。 在這里我提一下PGP的加密前預(yù)壓縮處理, PGP內(nèi)核使用PKZIP算法來壓縮 加密前的明文。
一方面對(duì)電子郵件而言,壓縮后加密再經(jīng)過7bits編碼密文有 可能比明文更短,這就節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間。另一方面,明文經(jīng)過壓縮,實(shí) 際上相當(dāng)于經(jīng)過一次變換,信息更加雜亂無章,對(duì)明文攻擊的抵御能力更強(qiáng)。 PGP中使用的PKZIP算法是經(jīng)過原作者同意的。 PKZIP算法是一個(gè)公認(rèn)的壓縮率 和壓縮速度都相當(dāng)好的壓縮算法。在PGP中使用的是PKZIP 2.0版本兼容的算法。 在今天的Internet上隨處可見用PGP簽名的文章,PGP的版本也在飛快地更 新,據(jù)說PGP 3.0 再有幾個(gè)月就要推出了。世界上越來越多的人們?cè)谑褂?/SPAN>PGP, 我們中國人也應(yīng)該重視保護(hù)自己合法的隱私權(quán)。我翻譯整理這篇文章就是為了 在國內(nèi)宣傳推廣PGP的使用。 盡管它還是個(gè)新生事物,可是我們要看到在網(wǎng)際 空間(Cyber Space)中它肯定能迅速成長起來, 中國雖然起步晚,但比美國 也差不太多,我們應(yīng)該迎頭趕上。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |