在PGP 中,每個(gè)常規(guī)密鑰只使用一次,即對(duì)每個(gè)報(bào)文生成新的128bit的隨機(jī)數(shù)。為了保護(hù)密鑰,使用接收者的公開密鑰對(duì)它進(jìn)行加密。圖2 顯示了這一步驟,描述如下;
(1)發(fā)送者生成報(bào)文和用作該報(bào)文會(huì)話密鑰的128bit隨機(jī)數(shù);
(2)發(fā)送者采用CAST-128加密算法,使用會(huì)話密鑰對(duì)報(bào)文進(jìn)行加密。也可使用IDEA或3DES;
(3)發(fā)送者采用RSA算法,使用接收者的公開密鑰對(duì)會(huì)話密鑰進(jìn)行加密,并附加到報(bào)文前面;
(4)接收者采用RSA算法,使用自己的私有密鑰解密和恢復(fù)會(huì)話密鑰;
(5)接收者使用會(huì)話密鑰解密報(bào)文。
除了使用RSA算法加密外,PGP 還提供了Diffie-Hellman的變體ELGamal 算法。
1.3 常規(guī)加密和公開密鑰結(jié)合的好處
(1)常規(guī)加密和公開密鑰加密相結(jié)合使用比直接使用RSA或ELGamal 要快得多。
(2)使用公開密鑰算法解決了會(huì)話密鑰分配問題。
(3)由于電子郵件的存儲(chǔ)轉(zhuǎn)發(fā)特性,使用握手協(xié)議來保證雙方具有相同會(huì)話密鑰的方法是不現(xiàn)實(shí)的,而使用一次性的常規(guī)密鑰加強(qiáng)了已經(jīng)是很強(qiáng)的常規(guī)加密方法。
1.4 機(jī)密性與鑒別
如圖3所示,對(duì)報(bào)文可以同時(shí)使用兩個(gè)服務(wù)。首先為明文生成簽名并附加到報(bào)文首部;然后使用CAST-128(或IDEA、3DES)對(duì)明文報(bào)文和簽名進(jìn)行加密,再使用RSA(或ELGamal)對(duì)會(huì)話密鑰進(jìn)行加密。在這里要注意次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改簽名。
1.5 電子郵件的兼容性
當(dāng)使用PGP 時(shí),至少傳輸報(bào)文的一部分需要加密,因此部分或全部的結(jié)果報(bào)文由任意8bit 字節(jié)流組成。但由于很多的電子郵件系統(tǒng)只允許使用由ASCII 正文組成的塊,所以PGP 提供了radix-64(就是MIME的BASE64 格式)轉(zhuǎn)換方案,將原始二進(jìn)制流轉(zhuǎn)化為可打印的ASCII 字符。
1.6 壓縮
PGP 在加密前進(jìn)行預(yù)壓縮處理,PGP 內(nèi)核使用PKZIP算法壓縮加密前的明文。一方面對(duì)電子郵件而言,壓縮后再經(jīng)過radix-64 編碼有可能比明文更短,這就節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間和存儲(chǔ)空間&另一方面,明文經(jīng)過壓縮,實(shí)際上相當(dāng)于經(jīng)過一次變換,對(duì)明文攻擊的抵御能力更強(qiáng)。
1.7 分段和重裝
電子郵件設(shè)施經(jīng)常受限于最大報(bào)文長(zhǎng)度(50000個(gè))八位組的限制。超過這個(gè)值, 報(bào)文將分成更小的報(bào)文段,每個(gè)段單獨(dú)發(fā)送。分段是在所有其他的處理(包括radix-64 轉(zhuǎn)換)完成后才進(jìn)行的,因此,會(huì)話密鑰部分和簽名部分只在第一個(gè)報(bào)文段的開始位置出現(xiàn)一次。在接收端,PGP 必須剝掉所在的電子郵件首部,并且重新裝配成原來的完整的分組。
2 加密密鑰和密鑰環(huán)
2.1 會(huì)話密鑰的生成
PGP 的會(huì)話密鑰是個(gè)隨機(jī)數(shù),它是基于ANSI X9.17的算法由隨機(jī)數(shù)生成器產(chǎn)生的。隨機(jī)數(shù)生成器從用戶敲鍵盤的時(shí)間間隔上取得隨機(jī)數(shù)種子。對(duì)于磁盤上的randseed.bin文件是采用和郵件同樣強(qiáng)度的加密。這有效地防止了他人從randseed.bin文件中分析出實(shí)際加密密鑰的規(guī)律。
2.2 密鑰標(biāo)志符
允許用戶擁有多個(gè)公開/私有密鑰對(duì):(1)不時(shí)改變密鑰對(duì);(2)同一時(shí)刻,多個(gè)密鑰對(duì)在不同的通信組交互。所以用戶和他們的密鑰對(duì)之間不存在一一對(duì)應(yīng)關(guān)系。假設(shè)A 給B發(fā)信,B就不知道用哪個(gè)私鑰和哪個(gè)公鑰認(rèn)證。因此,PGP 給每個(gè)用戶公鑰指定一個(gè)密鑰ID,這在用戶ID中可能是唯一的。它由公鑰的最低64bit組成(KUa mod 264),這個(gè)長(zhǎng)度足以使密鑰ID重復(fù)概率非常小。
2.3 密鑰環(huán)
密鑰需要以一種系統(tǒng)化的方法來存儲(chǔ)和組織,以便有效和高效地使用。 PGP 在每個(gè)結(jié)點(diǎn)提供一對(duì)數(shù)據(jù)結(jié)構(gòu),一個(gè)是存儲(chǔ)該結(jié)點(diǎn)擁有的公開/私有密鑰對(duì)(私有密鑰環(huán));另一個(gè)是存儲(chǔ)該結(jié)點(diǎn)知道的其他所有用戶的公開密鑰。相應(yīng)地,這些數(shù)據(jù)結(jié)構(gòu)被稱為私有密鑰環(huán)和公開密鑰環(huán)。
3 公開密鑰管理
3.1 公開密鑰管理機(jī)制
一個(gè)成熟的加密體系必然要有一個(gè)成熟的密鑰管理機(jī)制配套。公鑰體制的提出就是為了解決傳統(tǒng)加密體系的密鑰分配過程不安全、不方便的缺點(diǎn)。例如網(wǎng)絡(luò)黑客們常用的手段之一就是“監(jiān)聽”,通過網(wǎng)絡(luò)傳送的密鑰很容易被截獲。對(duì)PGP 來說,公鑰本來就是要公開,就沒有防監(jiān)聽的問題。但公鑰的發(fā)布仍然可能存在安全性問題,例如公鑰被篡改(public key tampering),使得使用的公鑰與公鑰持有人的公鑰不一致。這在公鑰密碼體系中是很嚴(yán)重的安全問題。因些必須幫助用戶確信使用的公鑰是與他通信的對(duì)方的公鑰。
以用戶A 和用戶B通信為例,現(xiàn)假設(shè)用戶A 想給用戶B發(fā)信。首先用戶A 就必須獲取用戶B的公鑰,用戶A 從BBS 上下載或通過其它途經(jīng)得到B的公鑰,并用它加密信件發(fā)給B。不幸的是,用戶A 和B都不知道,攻擊者C 潛入BBS 或網(wǎng)絡(luò)中,偵聽或截取到用戶B的公鑰,然后在自己的PGP 系統(tǒng)中以用戶B的名字生成密鑰對(duì)中的公鑰,替換了用戶B的公鑰,并放在BBS上或直接以用戶B的身份把更換后的用戶B的“公鑰”發(fā)給用戶A。那A 用來發(fā)信的公鑰是已經(jīng)更改過的,實(shí)際上是C 偽裝B生成的另一個(gè)公鑰(A 得到的B的公鑰實(shí)際上是C 的公鑰/密鑰對(duì),用戶名為B) 。這樣一來B收到A 的來信后就不能用自己的私鑰解密了。更可惡的是,用戶C 還可偽造用戶B的簽名給A 或其他人發(fā)信,因?yàn)锳 手中的B的公鑰是仿造的,用戶A 會(huì)以為真是用戶B的來信。于是C 就可以用他手中的私鑰來解密A給B的信,還可以用B真正的公鑰來轉(zhuǎn)發(fā)A 給B的信,甚至還可以改動(dòng)A 給B的信。
3.2 防止篡改公鑰的方法
(1)直接從B手中得到其公鑰,這種方法有局限性。
(2)通過電話認(rèn)證密鑰:在電話上以radix-64 的形式口述密鑰或密鑰指紋。密鑰指紋(keys fingerprint)就是PGP 生成密鑰的160bit的SHA-1摘要(16個(gè)8位十六進(jìn)制)。
(3)從雙方信任的D 那里獲得B的公鑰。如果A 和B有一個(gè)共同的朋友D,而D知道他手中的B的公鑰是正確的。D簽名的B的公鑰上載到BBS上讓用戶去拿,A想要取得B的公鑰就必須先獲取D的公鑰來解密BBS或網(wǎng)上經(jīng)過D簽名的B的公鑰,這樣就等于加了雙重保險(xiǎn),一般沒有可能去篡改而不被用戶發(fā)現(xiàn),即使是BBS管理員。這就是從公共渠道傳遞公鑰的安全手段。有可能A拿到的D或其他簽名的朋友的公鑰也是假的!但這就要求攻擊者C必須對(duì)三人甚至很多人都很熟悉,這樣的可能性不大,而且必需經(jīng)過長(zhǎng)時(shí)間的策劃。
只通過一個(gè)簽名公證力度可能是小了一點(diǎn),于是PGP把用不同私鑰簽名的公鑰收集在一起,發(fā)送到公共場(chǎng)合,希望大部分人至少認(rèn)識(shí)其中一個(gè),從而間接認(rèn)證了用戶(A)的公鑰。同樣用戶(D) 簽了朋友(A) 的公鑰后應(yīng)該寄回給他(A)(朋友),這樣就可以讓他(A) 通過該用戶(D) 被該用戶(D) 的其他朋友所認(rèn)證。與現(xiàn)實(shí)中人的交往一樣,PGP會(huì)自動(dòng)根據(jù)用戶拿到的公鑰分析出哪些是朋友介紹來的簽名的公鑰,把它們賦以不同的信任級(jí)別,供用戶參考決定對(duì)它們的信任程度。也可指定某人有幾層轉(zhuǎn)介公鑰的能力,這種能力隨著認(rèn)證的傳遞而遞減的。
(4)由一個(gè)普遍信任的機(jī)構(gòu)擔(dān)當(dāng)?shù)谌?即“認(rèn)證機(jī)構(gòu)”。這樣的“認(rèn)證機(jī)構(gòu)”適合由非個(gè)人控制的組織或政府機(jī)構(gòu)充當(dāng),來注冊(cè)和管理用戶的密鑰對(duì)?,F(xiàn)在已經(jīng)有等級(jí)認(rèn)證制度的機(jī)構(gòu)存在,如廣東省電子商務(wù)電子認(rèn)證中心(www.cnca.net)就是一個(gè)這樣的認(rèn)證機(jī)構(gòu)。對(duì)于那些非常分散的用戶,PGP更贊成使用私人方式的密鑰轉(zhuǎn)介。
3.3 信任的使用
PGP確實(shí)為公開密鑰附加信任和開發(fā)信任作息提供了一種方便的方法使用信任。
公開密鑰環(huán)的每個(gè)實(shí)體都是一個(gè)公開的密鑰證書。與每個(gè)這樣的實(shí)體相聯(lián)系的是密鑰合法性字段,用來指示PGP信任“這是這個(gè)用戶合法的公開密鑰”的程度;信任程度越高,這個(gè)用戶ID與這個(gè)密鑰的綁定越緊密。這個(gè)字段由PGP計(jì)算。與每個(gè)實(shí)體相聯(lián)系的還有用戶收集的多個(gè)簽名。反過來,每個(gè)簽名都帶有簽名信任字段,用來指示該P(yáng)GP用戶信任簽名者對(duì)這個(gè)公開密鑰證明的程度。密鑰合法性字段是從這個(gè)實(shí)體的一組簽名信任字段中推導(dǎo)出來的。最后,每個(gè)實(shí)體定義了與特定的擁有者相聯(lián)系的公開密鑰,包括擁有者信任字段,用來指示這個(gè)公開密鑰對(duì)其他公開密鑰證書進(jìn)行簽名的信任程度(這個(gè)信任程度是由該用戶指定的)。可以把簽名信任字段看成是來自于其他實(shí)體的擁有者信任字段的副本。
例如正在處理用戶A的公開密鑰環(huán),操作描述如下:
(1)當(dāng)A在公開密鑰環(huán)中插入了新的公開密鑰時(shí),PGP為與這個(gè)公開密鑰擁有者相關(guān)聯(lián)的信任標(biāo)志賦值,插入KUa ,則賦值=1終極信任;否則,需說明這個(gè)擁有者是未知的、不可信任的、少量信任的和完全可信的等,賦以相應(yīng)的權(quán)重值1/x、1/y等。
(2)當(dāng)新的公開密鑰輸入后,可以在它上面附加一個(gè)或多個(gè)簽名,以后還可以增加更多的簽名。在實(shí)體中插入簽名時(shí),PGP在公開密鑰環(huán)中搜索,查看這個(gè)簽名的作者是否屬于已知的公開密鑰擁有者。如果是,為這個(gè)簽名的SIGTRUST字段賦以該擁有者的OWNERTRUST值。否則,賦以不認(rèn)識(shí)的用戶值。
(3)密鑰合法性字段的值是在這個(gè)實(shí)體的簽名信任字段的基礎(chǔ)上計(jì)算的。如果至少一個(gè)簽名具有終極信任的值,那么密鑰合法性字段的值設(shè)置為完全;否則,PGP計(jì)算信任值的權(quán)重和。對(duì)于總是可信任的簽名賦以1/x的權(quán)重,對(duì)于通??尚湃蔚暮灻x以權(quán)重1/y,其中x和y 都是用戶可配置的參數(shù)。當(dāng)介紹者的密鑰/用戶ID 綁定的權(quán)重總和達(dá)到1時(shí),綁定被認(rèn)為是值得信任的,密鑰合法性被設(shè)置為完全。因此,在沒有終極信任的情況下,需要至少x個(gè)簽名總是可信的,或者至少y個(gè)簽名是可信的,或者上述兩種情況的某種組合。如圖4 所示。
總之,PGP采用了RSA和傳統(tǒng)加密的雜合算法,用于數(shù)字簽名的郵件文摘算法、加密前壓縮等,可以用來加密文件,還可以代替UUencode 生成RADIX 64 格式(就是MIME的BASE 64格式)的編碼文件。 PGP創(chuàng)造性地把RSA公鑰體系的方便和傳統(tǒng)加密體系的高速度結(jié)合起來,并且在數(shù)字簽名和密鑰認(rèn)證管理機(jī)制上有巧妙的設(shè)計(jì)。這是目前最難破譯的密碼體系之一。
用戶通過PGP的軟件加密程序,可以在不安全的通信鏈路上創(chuàng)建安全的消息和通信。 PGP協(xié)議已經(jīng)成為公鑰加密技術(shù)和全球范圍內(nèi)消息安全性的事實(shí)標(biāo)準(zhǔn)。因?yàn)樗腥硕寄芸吹剿脑创a,從而查找出故障和安全性漏洞。
參考文獻(xiàn)
1 Stallings W,密碼編碼學(xué)與網(wǎng)絡(luò)安全:原理與實(shí)踐(第二版)[M].北京:電子工業(yè)出版社,2001
2 http://www.microsoft.com/secuity
3 http://www.pgp.com
聯(lián)系客服