《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > PGP 簡介

PGP 簡介

2018-07-26
關(guān)鍵詞: PGP

  本文主要簡介PGP的歷史,PGP的工作流程,以及PGP用到的加密、解密算法,,最后簡要介紹PGP的密鑰管理機(jī)制,。

  PGP(Pretty Good Privacy),,是一個基于RSA公匙加密體系的郵件加密軟件,??梢杂盟鼘︵]件保密以防止非授權(quán)者閱讀,,它還能對郵件加上數(shù)字簽名從而使收信人可以確認(rèn)郵件的發(fā)送者,并能確信郵件沒有被篡改,。它可以可以提供一種安全的通訊方式,,而事先并不需要任何保密的渠道用來傳遞密匙。它采用了一種RSA和傳統(tǒng)加密的雜合算法,,用于數(shù)字簽名的郵件文摘算法,,加密前壓縮等,還有一個良好的人機(jī)工程設(shè)計,。它的功能強(qiáng)大,,有很快的速度。而且它的源代碼是免費的,。

  實際上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è)計。因此PGP成為幾乎最流行的公匙加密軟件包,。

  1.首先簡要介紹PGP加密系統(tǒng)的流程,。

  PGP加密系統(tǒng)是采用公開密鑰加密與傳統(tǒng)密鑰加密相結(jié)合的一種加密技術(shù)。它使用一對數(shù)學(xué)上相關(guān)的鑰匙,,其中一個(公鑰)用來加密信息,,另一個(私鑰)用來解密信息。

  PGP采用的傳統(tǒng)加密技術(shù)部分所使用的密鑰稱為“會話密鑰”(sek),。每次使用時,,PGP都隨機(jī)產(chǎn)生一個128位的IDEA會話密鑰,用來加密報文,。公開密鑰加密技術(shù)中的公鑰和私鑰則用來加密會話密鑰,,并通過它間接地保護(hù)報文內(nèi)容。

  PGP中的每個公鑰和私鑰都伴隨著一個密鑰證書,。它一般包含以下內(nèi)容:

  密鑰內(nèi)容(用長達(dá)百位的大數(shù)字表示的密鑰)

  密鑰類型(表示該密鑰為公鑰還是私鑰)

  密鑰長度(密鑰的長度,,以二進(jìn)制位表示)

  密鑰編號(用以唯一標(biāo)識該密鑰)

  創(chuàng)建時間

  用戶標(biāo)識 (密鑰創(chuàng)建人的信息,如姓名,、電子郵件等)

  密鑰指紋(為128位的數(shù)字,,是密鑰內(nèi)容的提要表示密鑰唯一的特征)

  中介人簽名(中介人的數(shù)字簽名,聲明該密鑰及其所有者的真實性,包括中介人的密鑰編號和標(biāo)識信息)

  PGP把公鑰和私鑰存放在密鑰環(huán)(KEYR)文件中,。PGP提供有效的算法查找用戶需要的密鑰,。

  PGP在多處需要用到口令,它主要起到保護(hù)私鑰的作用,。由于私鑰太長且無規(guī)律,,所以難以記憶。PGP把它用口令加密后存入密鑰環(huán),,這樣用戶可以用易記的口令間接使用私鑰,。

  PGP的每個私鑰都由一個相應(yīng)的口令加密。PGP主要在3處需要用戶輸入口令:

  需要解開受到的加密信息時,,PGP需要用戶輸入口令,,取出私鑰解密信息

  當(dāng)用戶需要為文件或信息簽字時,用戶輸入口令,,取出私鑰加密

  對磁盤上的文件進(jìn)行傳統(tǒng)加密時,,需要用戶輸入口令

  2.以上介紹了PGP的工作流程,下面將簡介與PGP相關(guān)的加密,、解密方法以及PGP的密鑰管理機(jī)制,。

  PGP是一種供大眾使用的加密軟件。電子郵件通過開放的網(wǎng)絡(luò)傳輸,,網(wǎng)絡(luò)上的其他人都可以監(jiān)聽或者截取郵件,,來獲得郵件的內(nèi)容,因而郵件的安全問題就比較突出了,。保護(hù)信息不被第三者獲得,,這就需要加密技術(shù)。還有一個問題就是信息認(rèn)證,,如何讓收信人確信郵件沒有被第三者篡改,,這就需要數(shù)字簽名技術(shù)。RSA公匙體系的特點使它非常適合用來滿足上述兩個要求:保密性(Privacy)和認(rèn)證性(Authentication),。

  RSA(Rivest-Shamir-Adleman)算法是一種基于大數(shù)不可能質(zhì)因數(shù)分解假設(shè)的公匙體系,。簡單地說就是找兩個很大的質(zhì)數(shù),一個公開即公鑰,,另一個不告訴任何人,即私鑰,。這兩個密匙是互補(bǔ)的,,就是說用公匙加密的密文可以用私匙解密,反過來也一樣,。

  假設(shè)甲要寄信給乙,,他們互相知道對方的公匙。甲就用乙的公匙加密郵件寄出,乙收到后就可以用自己的私匙解密出甲的原文,。由于沒別人知道乙的私匙,,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題,。另一方面由于每個人都知道乙的公匙,,他們都可以給乙發(fā)信,那么乙就無法確信是不是甲的來信,。這時候就需要用數(shù)字簽名來認(rèn)證,。

  在說明數(shù)字簽名前先要解釋一下什么是“郵件文摘”(message digest)。郵件文摘就是對一封郵件用某種算法算出一個最能體現(xiàn)這封郵件特征的數(shù)來,,一旦郵件有任何改變這個數(shù)都會變化,,那么這個數(shù)加上作者的名字(實際上在作者的密匙里)還有日期等等,就可以作為一個簽名了,。PGP是用一個128位的二進(jìn)制數(shù)作為“郵件文摘”的,,用來產(chǎn)生它的算法叫MD5(message digest 5)。 MD5是一種單向散列算法,,它不像CRC校驗碼,,很難找到一份替代的郵件與原件具有同樣的MD5特征值。

  回到數(shù)字簽名上來,,甲用自己的私匙將上述的128位的特征值加密,,附加在郵件后,再用乙的公匙將整個郵件加密,。這樣這份密文被乙收到以后,,乙用自己的私匙將郵件解密,得到甲的原文和簽名,,乙的PGP也從原文計算出一個128位的特征值來和用甲的公匙解密簽名所得到的數(shù)比較,,如果符合就說明這份郵件確實是甲寄來的。這樣兩個安全性要求都得到了滿足,。

  PGP還可以只簽名而不加密,,這適用于公開發(fā)表聲明時,聲明人為了證實自己的身份,,可以用自己的私匙簽名,。這樣就可以讓收件人能確認(rèn)發(fā)信人的身份,也可以防止發(fā)信人抵賴自己的聲明,。這一點在商業(yè)領(lǐng)域有很大的應(yīng)用前途,,它可以防止發(fā)信人抵賴和信件被途中篡改。

  PGP用的實際上是RSA和傳統(tǒng)加密的雜合算法,。因為RSA算法計算量極大在速度上不適合加密大量數(shù)據(jù),,PGP實際上用來加密的不是RSA本身,,而是采用了一種叫IDEA的傳統(tǒng)加密算法。傳統(tǒng)加密,,一般說來說就是用一個密匙加密明文,,然后用同樣的密匙解密。這種方法的代表是DES,,也就是乘法加密,,它的主要缺點就是密匙的傳遞渠道解決不了安全性問題,不適合網(wǎng)絡(luò)環(huán)境郵件加密需要,。IDEA的加(解)密速度比RSA快得多,,所以實際上PGP是以一個隨機(jī)生成密匙(每次加密不同)用IDEA算法對明文加密,然后用RSA算法對該密匙加密,。這樣收件人同樣是用RSA解密出這個隨機(jī)密匙,,再用IDEA解密郵件本身。這樣的鏈?zhǔn)郊用芫妥龅搅思扔蠷SA體系的保密性,,又有IDEA算法的快捷性,。PGP利用這種鏈?zhǔn)郊用埽缺WC了保密性,,又保證了加密的速度,。

  PGP最核心的功能是:文件加密、通信加密和數(shù)字簽名,。下面將簡介一些PGP輔助功能,,它們雖然不是整個加密系統(tǒng)的核心,但卻起到了協(xié)調(diào)各部分和方便用戶的作用,。這兒主要介紹PGP的密鑰管理機(jī)制,。

  一個成熟的加密體系必然要有一個成熟的密匙管理機(jī)制配套。公匙體制的提出就是為了解決傳統(tǒng)加密體系的密匙分配過程難以保密的缺點,。如果密匙是通過網(wǎng)絡(luò)傳送,,那么網(wǎng)絡(luò)上其他人就可以通過監(jiān)聽得到。舉個例子:Novell Netware 的老版本中,,用戶的密碼是以明文在線路中傳輸?shù)?,這樣監(jiān)聽者輕易就獲得了他人的密碼。當(dāng)然 Netware 4.1 中數(shù)據(jù)包頭的用戶密碼現(xiàn)在是加密的了,。對PGP來說公匙本來就要公開,,就沒有防監(jiān)聽的問題。但公匙的發(fā)布中仍然存在安全性問題,,例如公匙的被篡改(Public Key Tampering),,這可能是公匙密碼體系中最大的漏洞。必須有一種機(jī)制保證用戶所得到的公鑰是正確的,,而不是別人偽造的。下面舉一個例子來說明這個問題,以及如何正確地用PGP堵住這個漏洞,。

  假設(shè)Mike想給Alice發(fā)封信,,那他必須有Alice的公匙。該用戶從BBS上下載了Alice的公匙,,并用它加密了信件用BBS的Email功能發(fā)給了Alice,。但是,另一個用戶叫Charlie的用戶潛入BBS,,把他自己用Alice的名字生成的密匙對中的公匙替換了Alice的公匙,,而參與通信的這兩個人都不知道。那么Mike用來發(fā)信的公匙就不是Alice的而是Charlie的,,一切看來都很正常,。于是Charlie就可以用他手中的私匙來解密Mike給Alice的信,甚至他還可以用Alice真正的公匙來轉(zhuǎn)發(fā)Mike給Alice的信,,這樣誰都不會起疑心,,他如果想改動Mike給Alice的信也沒問題。甚至他還可以偽造Alice的簽名給Mike或其他人發(fā)信,,因為這些用戶手中的公匙是偽造的,,他們會以為真是Alice的來信。

  防止這種情況出現(xiàn)的最好辦法是避免讓任何其他人有機(jī)會篡改公匙,,比如直接從Alice手中得到她的公匙,,然而這在很多情況下是比較困難的。PGP發(fā)展了一種公匙介紹機(jī)制來解決這個問題,。舉例來說:如果Mike和Alice有一個共同的朋友David,,而David知道他手中的Alice的公匙是正確的(關(guān)于如何認(rèn)證公匙,PGP還有一種方法,,后面會談到,,這里假設(shè)David已經(jīng)和Alice認(rèn)證過她的公匙)。這樣David可以用他自己的私匙在Alice的公匙上簽名,,表示他擔(dān)保這個公匙屬于Alice,。當(dāng)然Mike需要用David的公匙來校驗他給出的Alice的公匙,同樣David也可以向Alice認(rèn)證Mike的公匙,,這樣David就成為Mike和Alice之間的“介紹人”,。這樣Alice或David就可以放心地把David簽過字的Alice的公匙上載到BBS上讓Mike去拿,沒人可能去篡改它而不被發(fā)現(xiàn),,即使是BBS的管理員,。這就是從公共渠道傳遞公匙的安全手段。

  那么怎么能安全地得到David的公匙呢,,確實有可能Mike拿到的David的公匙也是假的,,但這就要求這個偽造密鑰的人參與這整個過程,,他必須對這三個人都很熟悉,還要策劃很久,,這一般不可能,。當(dāng)然,PGP對這種可能也有預(yù)防的建議,,那就是由一個大家普遍信任的人或機(jī)構(gòu)擔(dān)當(dāng)這個角色,,即所謂的“密匙侍者”或“認(rèn)證權(quán)威”(認(rèn)證中心),每個由他簽字的公匙都被認(rèn)為是真的,,這樣大家只要有一份他的公匙就行了,,認(rèn)證這個人的公匙是方便的,因為他廣泛提供這個服務(wù),,假冒他的公匙是很極困難的,,因為他的公匙流傳廣泛。這樣的“權(quán)威”適合由非個人控制組織或政府機(jī)構(gòu)充當(dāng),,現(xiàn)在已經(jīng)有等級認(rèn)證制度的機(jī)構(gòu)存在,。

  對于那些非常分散的人們,PGP更贊成使用私人方式的密匙轉(zhuǎn)介方式,,因為這樣有機(jī)的非官方途徑更能反映出人們自然的社會交往,,而且人們也能自由地選擇信任的人來介紹??傊筒徽J(rèn)識的人們之間的交往一樣,。每個公匙有至少一個“用戶名”(User ID),最好再加上本人的Email地址,,以免混淆,。

  3.下面,再介紹如何通過電話認(rèn)證密匙,。

  每個密匙有它們自己的標(biāo)識(keyID),,keyID是一個八位十六進(jìn)制數(shù),兩個密匙具有相同keyID的可能性是幾十億分之一,,而且PGP還提供了一種更可靠的標(biāo)識密匙的方法:“密匙指紋”(key's fingerprint),。每個密匙對應(yīng)一串?dāng)?shù)字(十六個兩位十六進(jìn)制數(shù)),這個指紋重復(fù)的可能就更微乎其微了,。而且任何人無法指定生成一個具有某個指紋的密匙,,密匙是隨機(jī)生成的,從指紋也無法反推出密匙來,。這樣當(dāng)拿到某人的公匙后就可以和他在電話上核對這個指紋,,從而認(rèn)證他的公匙。如果無法直接和通信的另一方直接通電話,,可以和公鑰介紹機(jī)制中的中間介紹人通電話認(rèn)證該介紹人的公匙,,從而通過介紹人認(rèn)證了通信另一方的公匙,,這就是直接認(rèn)證和間接介紹的結(jié)合。

  這樣又引出一種方法,,就是把具有不同人簽名的自己的公匙收集在一起,,發(fā)送到公共場合,這樣可以希望大部分人至少認(rèn)識其中一個人,,從而間接認(rèn)證了你的公匙。同樣你簽了朋友的公匙后應(yīng)該寄回給他,,這樣就可以讓他可以通過你被你的其他朋友所認(rèn)證,。和現(xiàn)實社會中人們的交往一樣。PGP會自動為你找出你拿到的公匙中有哪些是你的朋友介紹來的,,那些是你朋友的朋友介紹來的,,哪些則是朋友的朋友的朋友介紹的……它會幫你把它們分為不同的信任級別,讓你參考決定對它們的信任程度,。你可以指定某人有幾層轉(zhuǎn)介公匙的能力,,這種能力是隨著認(rèn)證的傳遞而遞減的。

  轉(zhuǎn)介認(rèn)證機(jī)制具有傳遞性,,這是個有趣的問題,。PGP的作者Phil Zimmermann說過一句話:“ 信賴不具有傳遞性;我有個我相信決不撒謊的朋友,??墒撬莻€認(rèn)定總統(tǒng)決不撒謊的傻瓜,可很顯然我并不認(rèn)為總統(tǒng)決不撒謊,?!?/p>

  上面所說的是關(guān)于公匙的安全性問題,這是PGP安全的核心,。另外,,和傳統(tǒng)單密匙體系一樣,私匙的保密也是決定性的,。相對公匙而言,,私匙不存在被篡改的問題,但存在泄露的問題,。RSA的私匙是很長的一個數(shù)字,,用戶不可能將它記住,PGP的辦法是讓用戶為隨機(jī)生成的RSA私匙指定一個口令(pass phase),。只有通過給出口令才能將私匙釋放出來使用,,用口令加密私匙的方法保密程度和PGP本身是一樣的。所以私匙的安全性問題實際上首先是對用戶口令的保密,。當(dāng)然私匙文件本身失密也很危險,,因為破譯者所需要的只是用窮舉法(強(qiáng)力攻擊)試探出口令了,,雖說很困難但畢竟是損失了一層安全性。需要說明的是:最好不要把私鑰寫在紙上或者某一文件里,,因為這樣很容易被別人得到在這里,。

  PGP在安全性問題上的審慎考慮體現(xiàn)在PGP的各個環(huán)節(jié)。比如每次加密的實際密匙是個隨機(jī)數(shù),,大家都知道計算機(jī)是無法產(chǎn)生真正的隨機(jī)數(shù)的,。PGP程序?qū)﹄S機(jī)數(shù)的產(chǎn)生是很審慎的,關(guān)鍵的隨機(jī)數(shù)像RSA密匙的產(chǎn)生是從用戶敲鍵盤的時間間隔上取得隨機(jī)數(shù)種子的,。對于磁盤上的 randseed.bin 文件是采用和郵件同樣強(qiáng)度的加密的,。這有效地防止了他人從randseed.bin文件中分析出加密實際密匙的規(guī)律來。

  4.最后提一下PGP的加密前預(yù)壓縮處理,,PGP內(nèi)核使用PKZIP算法來壓縮加密前的明文,。

  一方面對電子郵件而言,壓縮后加密再經(jīng)過7bits編碼密文有可能比明文更短,,這就節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r間,。另一方面,明文經(jīng)過壓縮,,實際上相當(dāng)于經(jīng)過一次變換,,信息更加雜亂無章,對明文攻擊的抵御能力更強(qiáng),。PKZIP算法是一個公認(rèn)的壓縮率和壓縮速度都相當(dāng)好的壓縮算法,。在PGP中使用的是PKZIP 2.0版本兼容的算法。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。

相關(guān)內(nèi)容