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