- 相關(guān)推薦
PGP工作原理及其安全體制
摘要:介紹了PGP的工作原理和流程,同時(shí)對PGP獨(dú)特的密鑰管理體制的安全應(yīng)用進(jìn)行了詳細(xì)分析。關(guān)鍵詞:PGP(PrettyGoodPrivacy)證書密鑰環(huán)
現(xiàn)代信息社會(huì)里,當(dāng)電子郵件廣受歡迎的同時(shí),其安全性問題也很突出。實(shí)際上,電子郵件的傳遞過程是郵件在網(wǎng)絡(luò)上反復(fù)復(fù)制的過程,其網(wǎng)絡(luò)傳輸路徑不確定,很容易遭到不明身份者的竊取、篡改、冒用甚至惡意破壞,給收發(fā)雙方帶來麻煩。進(jìn)行信息加密,保障電子郵件的傳輸安全已經(jīng)成為廣大E-mail用戶的迫切要求。PGP的出現(xiàn)與應(yīng)用很好地解決了電子郵件的安全傳輸問題。將傳統(tǒng)的對稱性加密與公開密鑰方法結(jié)合起來,兼?zhèn)淞藘烧叩膬?yōu)點(diǎn)。PGP提供了一種機(jī)密性和鑒別的服務(wù),支持1024位的公開密鑰與128位的傳統(tǒng)加密算法,可以用于軍事目的,完全能夠滿足電子郵件對于安全性能的要求。
1操作描述
PGP的實(shí)際操作由五種服務(wù)組成:鑒別、機(jī)密性、電子郵件的兼容性、壓縮、分段和重裝。
1.1鑒別
如圖1。步驟如下:
。1)發(fā)送者創(chuàng)建報(bào)文;
。2)發(fā)送者使用SHA-1生成報(bào)文的160bit散列代碼(郵件文摘);
。3)發(fā)送者使用自己的私有密鑰,采用RSA算法對散列代碼進(jìn)行加密,串接在報(bào)文的前面;
。4)接收者使用發(fā)送者的公開密鑰,采用RSA解密和恢復(fù)散列代碼;
。5)接收者為報(bào)文生成新的散列代碼,并與被解密的散列代碼相比較。如果兩者匹配,則報(bào)文作為已鑒別的報(bào)文而接收。
另外,簽名是可以分離的。例如法律合同,需要多方簽名,每個(gè)人的簽名是獨(dú)立的,因而可以僅應(yīng)用到文檔上。否則,簽名將只能遞歸使用,第二個(gè)簽名對文檔的第一個(gè)簽名進(jìn)行簽名,依此類推。
圖1
1.2機(jī)密性
在PGP中,每個(gè)常規(guī)密鑰只使用一次,即對每個(gè)報(bào)文生成新的128bit的隨機(jī)數(shù)。為了保護(hù)密鑰,使用接收者的公開密鑰對它進(jìn)行加密。圖2顯示了這一步驟,描述如下:
(1)發(fā)送者生成報(bào)文和用作該報(bào)文會(huì)話密鑰的128bit隨機(jī)數(shù);
。2)發(fā)送者采用CAST-128加密算法,使用會(huì)話密鑰對報(bào)文進(jìn)行加密。也可使用IDEA或3DES;
。3)發(fā)送者采用RSA算法,使用接收者的公開密鑰對會(huì)話密鑰進(jìn)行加密,并附加到報(bào)文前面;
。4)接收者采用RSA算法,使用自己的私有密鑰解密和恢復(fù)會(huì)話密鑰;
。5)接收者使用會(huì)話密鑰解密報(bào)文。
除了使用RSA算法加密外,PGP還提供了DiffieHellman的變體EIGamal算法。
1.3常規(guī)加密和公開密鑰結(jié)合的好處
(1)常規(guī)加密和公開密鑰加密相結(jié)合使用比直接使用RSA或E1Gamal要快得多。
。2)使用公開密鑰算法解決了會(huì)話密鑰分配問題。
。3)由于電子郵件的存儲(chǔ)轉(zhuǎn)發(fā)特性,使用握手協(xié)議來保證雙方具有相同會(huì)話密鑰的方法是不現(xiàn)實(shí)的,而使用一次性的常規(guī)密鑰加強(qiáng)了已經(jīng)是很強(qiáng)的常規(guī)加密方法。
1.4機(jī)密性與鑒別
如圖3所示,對報(bào)文可以同時(shí)使用兩個(gè)服務(wù)。首先為明文生成簽名并附加到報(bào)文首部;然后使用CAST-128(或IDEA、3DES)對明文報(bào)文和簽名進(jìn)行加密,再使用RSA(或E1Gamal)對會(huì)話密鑰進(jìn)行加密。在這里要注意次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改簽名。
圖2
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算法壓縮加密前的明文。一方面對電子郵件而言,壓縮后再經(jīng)過radix-64編碼有可能比明文更短,這就節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間和存儲(chǔ)空間;另一方面,明文經(jīng)過壓縮,實(shí)際上相當(dāng)于經(jīng)過一次
變換,對明文攻擊的抵御能力更強(qiáng)。
1.7分段和重裝
電子郵件設(shè)施經(jīng)常受限于最大報(bào)文長度(50000個(gè))八位組的限制。分段是在所有其他的處理(包括radix-64轉(zhuǎn)換)完成后才進(jìn)行的,因此,會(huì)話密鑰部分和簽名部分只在第一個(gè)報(bào)文段的開始位置出現(xiàn)一次。在接收端,PGP必須剝掉所在的電子郵件首部,并且重新裝配成原來的完整的分組。
2加密密鑰和密鑰環(huán)
2.1會(huì)話密鑰的生成
PGP的會(huì)話密鑰是個(gè)隨機(jī)數(shù),它是基于ANSIX.917的算法由隨機(jī)數(shù)生成器產(chǎn)生的。隨機(jī)數(shù)生成器從用戶敲鍵盤的時(shí)間間隔上取得隨機(jī)數(shù)種子。對于磁盤上的randseed.bin文件是采用和郵件同樣強(qiáng)度的加密。這有效地防止了他人從randseed.bin文件中分析出實(shí)際加密密鑰的規(guī)律。
2.2密鑰標(biāo)志符
允許用戶擁有多個(gè)公開/私有密鑰對:(1)不時(shí)改變密鑰對;(2)同一時(shí)刻,多個(gè)密鑰對在不同的通信組交互。所以用戶和他們的密鑰對之間不存在一一對應(yīng)關(guān)系。假設(shè)A給B發(fā)信,B就不知道用哪個(gè)私鑰和哪個(gè)公鑰認(rèn)證。因此,PGP給每個(gè)用戶公鑰指定一個(gè)密鑰ID,這在用戶ID中可能是唯一的。它由公鑰的最低64bit組成(Kuamod264),這個(gè)長度足以使密鑰ID重復(fù)概率非常小。
2.3密鑰環(huán)
密鑰需要以一種系統(tǒng)化的方法來存儲(chǔ)和組織,以便有效和高效地使用。PGP在每個(gè)結(jié)點(diǎn)提供一對數(shù)據(jù)結(jié)構(gòu),一個(gè)是存儲(chǔ)該結(jié)點(diǎn)年月的公開/私有密鑰對(私有密鑰環(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ò)傳送的密鑰很容易被截獲。對PGP來說,公鑰本來就是要公開,就沒有防監(jiān)聽的問題。但公鑰的發(fā)布仍然可能存在安全性問題,例如公鑰被篡改(publickeytampering),使得使用公鑰與公鑰持有人的公鑰不一致。這在公鑰密碼體系中是很嚴(yán)重的安全問題。因此必須幫助用戶確信使用的公鑰是與他通信的對方的公鑰。
圖3
以用戶A和用戶B通信為例,現(xiàn)假設(shè)用戶A想給用戶B發(fā)信。首先用戶A就必須獲取用戶B的公鑰,用戶A從BBS上下載或通過其它途徑得到B的公鑰,并用它加密信件發(fā)給B。不幸的是,用戶A和B都不知道,攻擊者C潛入BBS或網(wǎng)絡(luò)中,偵聽或截取到用戶B的公鑰,然后在自己的PGP系統(tǒng)中以用戶B的名字生成密鑰對中的公鑰,替換了用戶B的公鑰,并放在BBS上或直接以用戶B的身份把更換后的用戶B的“公鑰”發(fā)給用戶A。那A用來發(fā)信的公鑰是已經(jīng)更改過的,實(shí)際上是C偽裝B生成的另一個(gè)公鑰(A得到的B的公鑰實(shí)際上是C的公鑰/密鑰對,用戶名為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的形式口述密鑰或密鑰指紋。密鑰指紋(keysfingerprint)就是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必須對三人甚至很多人都很熟悉,這樣的可能性不大,而且必需經(jīng)過長時(shí)間的策劃。
只通過一個(gè)簽名證力度可能是小了一點(diǎn),于是PGP把用不同私鑰簽名的公鑰收集在一起,發(fā)送到公共場合,希望大部分從至少認(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í)別,供用戶參考決定對它們的信任程度。也可指定某人有幾層轉(zhuǎn)介公鑰的能力,這種能力隨著認(rèn)證的傳遞而遞減的。
。4)由一個(gè)普通信任的機(jī)構(gòu)擔(dān)當(dāng)?shù)谌剑础罢J(rèn)證機(jī)構(gòu)”。這樣的“認(rèn)證機(jī)構(gòu)”適合由非個(gè)人控制的組織或政府機(jī)構(gòu)充當(dāng),來注冊和管理用戶的密鑰對,F(xiàn)在已經(jīng)有等級(jí)認(rèn)證制定的機(jī)構(gòu)存在,如廣東省電子商務(wù)電子認(rèn)證中心(WWW.cnca.net)就是一個(gè)這樣的認(rèn)證機(jī)構(gòu)。對于那些非常分散的用戶,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用戶信任簽名者對這個(gè)公開密鑰證明的程度。密鑰合法性字段是從這個(gè)實(shí)體的一組簽名信任字節(jié)中推導(dǎo)出來的。最后,每個(gè)實(shí)體定義了與特定的擁有者相聯(lián)系的公開密鑰,包括擁有者信任字段,用來指示這個(gè)公開密鑰對其他公開密鑰證書進(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)重和。對于總是可信任的簽名賦以1/x的權(quán)重,對于通常可信任的簽名賦以權(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生成RADIX64格式(就是MIME的BASE64格式)的編碼文件。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,從而查找出故障和安全性漏局。
【PGP工作原理及其安全體制】相關(guān)文章:
電解原理及其應(yīng)用08-17
原電池原理及其應(yīng)用08-17
淺論“內(nèi)化”原理及其德育意義08-17
淺論“內(nèi)化”原理及其德育意義08-08
TrueFFS原理及其在CF卡上的實(shí)現(xiàn)08-06
鍵盤事件的掛鉤監(jiān)控原理及其應(yīng)用08-19