4.加密密鑰加密算法通常是公開的,比較常用的密碼體制有DES和IDEA等。一般把受保護(hù)的原始信息稱為明文,編碼后的數(shù)據(jù)就是密文。盡管大家都知道加密方法是公開的,但對密文進(jìn)行破譯是需要專一的密鑰的,密鑰是保密的不是任何人都可以輕易拿到的。一旦你獲得專一的密鑰秘密對于你就是公開的了。(一)保密密鑰和公開(私有)密鑰有兩類基本的加密算法可供對文件加密者選擇:保密密鑰和公開/私有密鑰。在保密密鑰中,加密者和解密者使用相同的密鑰,被稱為非對稱密鑰,這類算法有DES和IDEA。這種加密算法的問題是,用戶必須讓接收信息者知道自己所使用的密鑰,這個密鑰需要雙方共同保密,任何一方的失誤都會導(dǎo)致機(jī)密的泄露。而且在告訴收件人密鑰過程中,還需要的防止任何人發(fā)現(xiàn)或竊取密鑰,這個過程被稱為密鑰發(fā)布。有些認(rèn)證系統(tǒng)在會話初期用明文傳送密鑰,這就存在密鑰被截獲的可能性。需要使用保密密鑰對加密密鑰的信息再加密。另一類加密技術(shù)是公開/私有密鑰,與非對稱密鑰體制不同的是,它使用相互關(guān)聯(lián)的一對密鑰,一個是公開的密鑰,任何人都可以知道,另一個是私有密鑰(專一密鑰),只有擁有該對密鑰的人才有,其他人并沒有保管它。假如某甲發(fā)信給保存專一密鑰的乙方,乙接收到加密信息后,就用他自己保存的密鑰進(jìn)行解密,而且只有乙方持有的私有密鑰可以解密。這種加密方式的好處顯而易見。密鑰只有一個人持有,也就更加容易進(jìn)行保密,因?yàn)椴恍柙诰W(wǎng)絡(luò)上傳送私人密鑰,也就不用擔(dān)心別人在認(rèn)證會話初期劫持密鑰。下面把公開/私有密鑰技術(shù)總結(jié)為以下三個要點(diǎn):1、公開鑰/私有密鑰有兩個相互關(guān)聯(lián)的密鑰。2、公開密鑰加密的文件只有私有密鑰能解開。3、私有密鑰加密的文件只有公開密鑰能解開,這一特點(diǎn)被用于PGP(pretty good privacy)。(二)摘要函數(shù)(MD2、MD4和MD5)-----數(shù)字簽名摘要是一種防止數(shù)據(jù)被私自改動的方法,其中用到的函數(shù)叫摘要函數(shù)。這些函數(shù)的輸入可以是任意大小的消息,而輸出是一個固定長度的摘要。摘要有這樣一個性質(zhì),如果改變了輸入消息中的任何東西,甚至只有一位,輸出的摘要將會發(fā)生不可預(yù)測的改變,也就是說輸入消息的每一位數(shù)字對輸出摘要都會有影響??傊惴◤慕o定的文本塊中產(chǎn)生一個數(shù)字簽名(fingerprint或message digest),數(shù)字簽名可以用于防止有人從一個簽名上獲取文本信息或改變文本信息內(nèi)容。摘要算法的數(shù)字簽名原理在很多加密算法中都被使用,如S/KEY和PGP(pretty good privacy)。現(xiàn)在流行的摘要函數(shù)有MD4和MD5,下面就來討論一下它們。記住,客戶機(jī)和服務(wù)器必須使用相同的算法,無論是MD4還是MD5,MD4客戶機(jī)不能和MD5服務(wù)器交互。MD2摘要算法的設(shè)計(jì)是出于下面的考慮:利用32位RISC結(jié)構(gòu)來最大其吞吐量,而不需要大量的替換表(substitution table)。MD4算法是把消息的給予,對長度而言作為一個輸入,產(chǎn)生一個128位的"指紋"或"消息化"。要產(chǎn)生兩個具有相同消息化的文字塊或者產(chǎn)生任何具有預(yù)先給定"指紋"的消息,都被認(rèn)為在計(jì)算上是不可能的。MD5摘要算法是個數(shù)據(jù)認(rèn)證標(biāo)準(zhǔn)。MD5的設(shè)計(jì)思想是要找出速度更快但更不安全的MD4中潛在的不安全,MD5的設(shè)計(jì)者通過使MD5在計(jì)算上慢下來,以及對這些計(jì)算做了一些基礎(chǔ)性的改動來解決這個問題。MD5在RFC1321中給出文檔描述,是MD4算法的一個擴(kuò)展。5.密鑰的管理和分發(fā)一、使用同樣密鑰的時間范圍用戶可以一次又一次地使用同樣原密鑰與別人交換信息,但要考慮以下的情況:1.如果某人偶然地接觸到了用戶的密鑰,那么用戶曾經(jīng)和另一個人交換的每一條消息都不再是保密的了。2.使用一個特定密鑰加密的信息越多,提供給竊聽者的材料也就越多,這就增加了他們成功的機(jī)會。因此,一般強(qiáng)調(diào)僅將一個對話密鑰用于一條信息中或一次對話中,或者建立一種按時更換密鑰的機(jī)制,以減小密鑰暴露的可能性。二、保密密鑰的分發(fā)假設(shè)在某機(jī)構(gòu)中有100個人,如果他們?nèi)我鈨扇酥g可以進(jìn)行秘密對話,那么總共需要多少密鑰呢?每個人需要知道多少密鑰呢?很容易得出答案,十個連網(wǎng)用戶需要45個密鑰,如果是100人中的任意兩人之間要用不同的密鑰對話,則該群體總共需要4950對密鑰,而且每個人應(yīng)記住99個密鑰。如果機(jī)構(gòu)的人數(shù)是1000、10000人或更多呢,顯然這種方式過于愚蠢了,管理密鑰將是一件可怕的事情。Kerberos提供了一種較好的密鑰管理解決方案,它是由美國MTI (麻省理工學(xué)院)發(fā)明的,使密鑰的管理和分發(fā)變得十分方便,但該方法本身還存在一定的缺陷。為能在因特網(wǎng)上提供一個實(shí)用的解決方案 Kerberos建立了一個安全的、可信任的密鑰分發(fā)中心(Key Distribution Center, KDC),每個用戶只要知道一個和KDC進(jìn)行通訊的密鑰就可以了,而不需要知道成百上千個不同的密鑰。發(fā)放密鑰和生成密鑰由KDC負(fù)責(zé)。方式如下:假設(shè)A想要和B進(jìn)行秘密通信,則A先和KDC通信,使用只有A和KDC知道的密鑰進(jìn)行加密 ,A告訴KDC他想和B通信,KDC會為A和B之間的會話隨機(jī)選擇一對對話密鑰,比如“wa6lkj9ds5bc”,并生成一個標(biāo)簽,這個標(biāo)簽由KDC和B之間的密鑰進(jìn)行加密,并在A啟動與B對話時,A會把這個標(biāo)簽交給B。為什么會生成這樣一個標(biāo)簽?zāi)??這個標(biāo)簽的作用是讓A確信和他交談的人就是B,而不是冒充者。因?yàn)檫@個標(biāo)簽是由只有B和KDC知道的密鑰進(jìn)行加密的,所以即使冒充者得到A發(fā)出的標(biāo)簽也不可能進(jìn)行解密,只有B收到后才能夠進(jìn)行解密,從而確定了與A對話的人就是B。當(dāng)KDC生成標(biāo)簽和隨機(jī)發(fā)放,就會把它們用只有A和KDC知道的密鑰進(jìn)行加密,然后把標(biāo)簽和發(fā)放的密鑰傳給A,加密的結(jié)果可以確保只有A能得到這個信息,只有A能利用這個會話密鑰和B進(jìn)行通話(唯一性)。同理,KDC會把會話密碼用只有KDC和B知道的密鑰加密,并把會話密鑰傳給B。A會啟動一個和B的會話行為,并用得到的會話密鑰加密自己和B的會話,于此同時還要把KDC傳給A的標(biāo)簽再發(fā)給B,以確定B 的身份。然后A和B之間就可以用會話密鑰進(jìn)行安全會話了,而且為了保證安全,這個會話密鑰是一次性的,這樣黑客就更難進(jìn)行破解了。6.一次性密碼通常使用的計(jì)算機(jī)口令是靜態(tài)的,也就是說在一定時間內(nèi)是不變的,而且可重復(fù)使用。前面已經(jīng)提到過,口令極易被網(wǎng)上嗅探劫持,有鑒于此,人們發(fā)明的一次性密碼。難道在每次會話后修改一次密碼嗎?顯然這樣做是極其愚蠢的,那樣太累人了。事實(shí)上,人們已經(jīng)發(fā)明了一種產(chǎn)生一次性口令的技術(shù),稱之為挑戰(zhàn)/ 回答(challenge/response)。口令,不管是靜態(tài)口令還是一次性口令,都是基于"用戶知道什么"這一理論的。比如說,靜態(tài)密碼是用戶和機(jī)器之間共享的一種信息,而其他人不知道,這樣用戶若知道這個口令,就說明用戶是機(jī)器所確認(rèn)的那個人。一次性口令也一樣,用戶和機(jī)器之間必須共知一條通行短語,而這條通行短語對外界是完全保密的。和靜態(tài)口令不同的是,這個通行短語并不在網(wǎng)絡(luò)上進(jìn)行傳輸,所以黑客通過網(wǎng)絡(luò)竊聽是絕對截獲不了的。每次的口令是三個因數(shù)按一定算法計(jì)算得到的結(jié)果,這三個因子分別是種子、迭代值和通行短語。種子(seed):決定于用戶,一般在一臺機(jī)器上,一個種子對應(yīng)于一個用戶,也就是說,種子在一個系統(tǒng)中應(yīng)具有唯一性,這是秘密的而是公開的。迭代值(iteration):迭代值是不斷變化的,而種子和通行短語是相對不變的,所以迭代值的作用就是使口令發(fā)生變化。通行短語(phrase):通行短語是保密的,而迭代值是公開的,這樣就決定了口令的機(jī)密性。當(dāng)用戶登錄時,系統(tǒng)會向用戶提出挑戰(zhàn),包括種子和迭代值,然后用戶用得到的種子和迭代值再加上自己知道的通行短語計(jì)算出一個答復(fù),并傳送給系統(tǒng),因?yàn)橄到y(tǒng)也知道這個通行短語,所以系統(tǒng)可以驗(yàn)證答復(fù)正確與否。7.數(shù)據(jù)加密標(biāo)準(zhǔn)Data Encryption Standard最著名的保密密鑰(或?qū)ΨQ密鑰)加密算法DES (Data Encryption Standard ) 是由IBM公司在70年代發(fā)展起來的,并經(jīng)政府的加密標(biāo)準(zhǔn)篩選后,于1976年11月被美國政府采用,DES隨后被美國國家標(biāo)準(zhǔn)局和美國國家標(biāo)準(zhǔn)協(xié)會(American National Standard Institute,ANSI)承認(rèn)并給予公布。DES使用56位密鑰對64位的數(shù)據(jù)塊進(jìn)行加密,并對64位的數(shù)據(jù)塊進(jìn)行16輪編碼。與每輪編碼時,一個48位的"每輪"密鑰值由56位的完整密鑰得出來。DES用軟件進(jìn)行解碼需用很長時間,而用硬件解碼速度非???。幸運(yùn)的是,當(dāng)時大多數(shù)黑客并沒有足夠的設(shè)備制造出這種硬件設(shè)備。在1977年,人們估計(jì)要耗資兩千萬美元才能建成一個專門計(jì)算機(jī)用于DES的解密,而且需要12個小時的破解才能得到結(jié)果。當(dāng)時DES被認(rèn)為是一種十分強(qiáng)壯的加密方法。但是,當(dāng)今的計(jì)算機(jī)速度越來越快了,制造一臺這樣特殊的機(jī)器的花費(fèi)已經(jīng)降到了十萬美元左右,而用它來保護(hù)十億美元的銀行間線纜時,就要仔細(xì)斟酌了。另一方面,如果只用它來保護(hù)一臺服務(wù)器,那么DES確實(shí)是一種好的辦法,因?yàn)楹诳徒^不會僅僅為入侵一個服務(wù)器而花那么多的錢破解DES密文。由于現(xiàn)在已經(jīng)能用二十萬美元制造一臺破譯DES的特殊的計(jì)算機(jī),所以現(xiàn)在對要求"強(qiáng)壯"的加密場合已經(jīng)不再適用了。三重DES確定一種新的加密體制是否真正的安全是極為困難的事情,何況DES的密碼學(xué)缺點(diǎn)是密鑰長度相對比較短,現(xiàn)階段之所以人們并沒有完全放棄使用DES,是它的優(yōu)勢還很明顯。改進(jìn)其長度的方法,就是采用三重DES,。這種方法用兩個密鑰對明文進(jìn)行三次加密,假設(shè)兩個密鑰是K1和K2。加密方法是:1.用密鑰K1進(jìn)行DES解密。2.用K2對步驟1結(jié)果進(jìn)行DES解密。3.用步驟2的結(jié)果使用密鑰K1進(jìn)行DES加密。這種方法的缺點(diǎn),是要花費(fèi)原來三倍,但從另一方面來看,三重DES的112位密鑰長度是很"強(qiáng)壯"的加密方式了。8.電子商務(wù)與加密技術(shù)電子商務(wù)(E-business)的最大特點(diǎn)就是顧客可以在網(wǎng)上進(jìn)行交易,不必?fù)?dān)心自己的信用卡會被人盜用。但是,假如用戶的號碼和合同被竊賊獲到,盜竊者便可通過電話訂貨,而且冒用用戶的名義使用信用卡進(jìn)行結(jié)算。這種交易的高風(fēng)險(xiǎn)性長期阻礙著電子商務(wù)的發(fā)展,于是人們開始用RSA(一種公開/私有密鑰)提高信用卡交易的安全性,從而使電子商務(wù)走向?qū)嵱贸蔀榭赡堋?div style="height:15px;">
許多人認(rèn)為NETSCAPE公司是Internet商業(yè)中領(lǐng)先技術(shù)的提供者,該公司提供了一種基于RSA和保密密鑰的應(yīng)用于因特網(wǎng)的技術(shù),被稱為安全插座層(Secure Sockets Layer,SSL)。也許很多人知道Socket,它是一個編程界面,并不提供任何安全措施,而SSL不但提供編程界面,而且向上提供一種安全的服務(wù),SSL3.0現(xiàn)在已經(jīng)應(yīng)用到了服務(wù)器和瀏覽器上,SSL2.0則只能應(yīng)用于服務(wù)器端。SSL3.0用一種電子證書(electric certificate)的措施來實(shí)行身份認(rèn)證,之后,雙方就可以用保密密鑰進(jìn)行安全的會話了。基于SSL3.0提供的安全保障,用戶就可以自由的從商務(wù)網(wǎng)站訂購商品,并且輸入信用卡號,也可以在網(wǎng)上和合作伙伴交流商業(yè)信息并且讓供應(yīng)商把訂單和收貨單從網(wǎng)上發(fā)送過來,這樣可以節(jié)省大量的紙張,降低商品銷售成本,并為公司節(jié)省大量的電話、傳真費(fèi)用。在過去,電子信息交換(Electric Data Interchange,EDI)、信息交易(information transaction)和金融交易(financial transaction)都是在專用網(wǎng)絡(luò)上完成的,使用專用網(wǎng)的費(fèi)用大大高于因特網(wǎng)。正是由于Internet的巨大誘惑,才使人們開始發(fā)展因特網(wǎng)上的電子商務(wù),但不要忘記數(shù)據(jù)加密。9.虛擬專用網(wǎng)絡(luò)(VPN,Virtual Private Network)現(xiàn)在,越多越多的公司走向國際化,一個公司可能在多個國家都有辦事機(jī)構(gòu)或銷售中心,每一個機(jī)構(gòu)都有自己的LAN(Local Area Network局域網(wǎng)),但人們不會只滿足這此。用戶可能會要求將這些LAN連結(jié)在一起組成一個跨越地區(qū)和國界的公司廣域網(wǎng)。事實(shí)上,今天的IBM、微軟等國際知名企業(yè)公司都已經(jīng)這樣做了,但他們一般使用租用線路(leased line)來連結(jié)這些局域網(wǎng) ,因?yàn)樗麄兛紤]到網(wǎng)絡(luò)安全問題?,F(xiàn)在具有加密/解密功能的路由器使人們使用因特網(wǎng)作為連接這些局域網(wǎng)的通道成為可能,這就是虛擬專用網(wǎng)絡(luò)的概念(Virtual Private Network ,VPN)。當(dāng)數(shù)據(jù)離開發(fā)送者所在的局域網(wǎng)時,這些數(shù)據(jù)被連接到因特網(wǎng)路由器上進(jìn)行加密,數(shù)據(jù)在Internet上是以加密的形式傳送,當(dāng)加密數(shù)據(jù)到達(dá)目的LAN的路由器時,該路由器自動地對加密數(shù)據(jù)進(jìn)行解密,這樣目標(biāo)LAN中的用戶就可以看到真實(shí)的信息了。10.PGP加密軟件 具有非常好的隱秘性PGP(Pretty Good Privacy)是一個基于RSA公鑰加密體制的郵件加密軟件??捎盟鼘︵]件加密以防止非授權(quán)者閱讀,PGP還能對用戶的郵件加上數(shù)字簽名(fingerprint,指紋),從而使收信人可以確信該郵件是由該用戶發(fā)出的。它讓用戶可以安全地和從未見過面的人們通信,事先并不需要任何保密通道來傳遞密鑰。PGP采用以下技術(shù):審慎的密鑰管理、一種RSA和傳統(tǒng)加密的雜合算法,用于數(shù)字簽名的郵件摘要函數(shù)算法和加密的雜合算法、用于數(shù)字簽名的郵件往往不加密前壓縮等,還有一個良好的人機(jī)工程設(shè)計(jì)。它功能強(qiáng)大、速度很快,而且其源代碼是免費(fèi)的。實(shí)際上PGP的功能還不止上面說的,PGP可以用來加密文件,還可以用PGP代替UUencode生成RADIX64格式(就是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)代社會里,電子郵件和網(wǎng)絡(luò)上的文件傳輸已經(jīng)成為生活的一部分。郵件的安全問題也就突出了,大家都知道在因特網(wǎng)上傳輸?shù)臄?shù)據(jù)是不保密的。如果用戶不采取相應(yīng)措施,來保護(hù)自己的數(shù)據(jù),第三者(或黑客)就會輕易獲得用戶的隱私,進(jìn)一步達(dá)到要挾或恐嚇正常用戶的目的。還有一個問題就是信息認(rèn)證,如何讓收信人確信郵件沒有被第三者篡改,就需要使用數(shù)字簽名技術(shù)。RSA公鑰體制的特點(diǎn)使它非常適合用來滿足上述兩個要求:保密性(privacy)和認(rèn)證性(authentication)。RSA(Rivest-Shamir-Adleman)算法基于大數(shù)不可能被質(zhì)因數(shù)分解假設(shè)的公鑰體系。簡單地說就是找兩個很大的質(zhì)數(shù)。一個公開給世界,一個不告訴任何人。一個稱為"公鑰",另一個叫"私鑰"(Prblic key & Secret key or Private key)。這兩個密鑰是互補(bǔ)的,也就是說用公鑰加密的密文可以用私鑰解密。反之同理。假設(shè)甲要寄信給乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到后就可以用自己的私鑰解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道乙的公鑰,他們都可以給乙發(fā)信,那么乙確信是不是由甲發(fā)過來的信。認(rèn)證便出現(xiàn)了,這時就要使用數(shù)字簽名。郵件文摘message digest在說明數(shù)字簽名前,先要解釋一下什么是"郵件文摘"(message digest),簡單地講就是對一封郵件用某種算法找出一個最能體現(xiàn)這封郵件屬性特征的的數(shù)來,一旦郵件有任何改變這個數(shù)都會跟著起變化,那么這個數(shù)加上用戶的名字(實(shí)際上在用戶的密鑰里)和日期等等,就可以作為一個數(shù)字簽名。確切地說PGP是用一個128位的二進(jìn)制數(shù)進(jìn)行為"郵件文摘"的,用它來產(chǎn)生的算法叫MD5(Message Digest 5),MD5的提出者是Ron Rirest,PGP中使用的代碼是由Colin Plumb 編寫的,MD5本身是公用軟件,所以PGP的法律條款中沒有提到它。MD5是一種單向散列算法,(它不像校驗(yàn)碼),可獲得一份替代的郵件與原件具有同樣的MD5特征值。假如,甲用自己的私鑰將上述的128位值加密(數(shù)字簽名),附加在郵件后,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。當(dāng)這份密文被乙收到后,乙必須用自己的專一密鑰對該郵件解密,得到甲的原文和數(shù)字簽名,乙的PGP也從原文計(jì)算出一個128位的特征值來和用甲的公鑰解密簽名所得到的數(shù)進(jìn)行比對,如果符合特征值,說明這份郵件確實(shí)是由甲寄來的。這樣兩個安全性要求都得到滿足。數(shù)字簽名的不可抵賴性PGP還可以只簽名而不加密,這適用于公開發(fā)表聲明時,聲明人為了證實(shí)自己的身份(在網(wǎng)絡(luò)上只能如此了),可用自己的私鑰簽名,這樣就可以讓收件人能確認(rèn)發(fā)信人的身份,也可以防止發(fā)信人抵賴自己的聲明。這一點(diǎn)在商業(yè)領(lǐng)域有很大的應(yīng)用前途,可以防止發(fā)信人對諸如商業(yè)合同、信譽(yù)擔(dān)保等文件的抵賴和該文件被途中篡改等。IDEA(國際數(shù)據(jù)加密算法)為什么說PGP用的是RSA和傳統(tǒng)加密的雜合算法呢?因?yàn)镽SA算法計(jì)算量很大而且在速度上也不適合加密大量數(shù)據(jù),所以PGP實(shí)際上用來加密的不是RSA本身,而是采用了一種叫IDEA的傳統(tǒng)加密算法,首先解釋一下什么叫傳統(tǒng)加密,簡單地說就是用一個密鑰加密明文,然后用同樣的密鑰解密。這種方法的代表是DES(US Federal Data Encryption Standard),也就是乘法加密,它的主要缺點(diǎn)就是公共通訊傳輸網(wǎng)絡(luò)解決不了安全性問題,不適合網(wǎng)絡(luò)環(huán)境郵件加密需要。IDEA是一個有專利的算法,專利持有者是ETH和一個瑞士公司:Ascom-Tech AG。非商業(yè)用途的IDEA實(shí)現(xiàn)不用向他們交納費(fèi)用。IDEA的加(解)密速度比RSA快得多,(據(jù)文獻(xiàn)介紹測算出IDEA比DES快兩倍,比RSA算法快100倍)所以實(shí)際上PGP是以一個隨機(jī)生成的密鑰(每次加密)用IDEA算法對明文加密,然后再用RSA算法對該密鑰加密。這樣收件人同樣是用RSA解出這個隨機(jī)密鑰,再用IDEA解密郵件本身。這樣的鏈?zhǔn)郊用芫妥龅搅思扔蠷SA體系的保密性,又有IDEA算法的快捷性。PGP的鏈?zhǔn)郊用芫妥龅搅思扔蠷SA體系的保密性,又有IDEA算法的快捷性。PGP的創(chuàng)意有一半就在這一點(diǎn)上了,為什么RSA體系70年代就提出來,一直沒有推廣應(yīng)用呢?速度太慢!那PGP創(chuàng)意的另一半在哪兒呢?PGP的密鑰管理一個成熟的加密體系必然要有一個成熟的密鑰管理機(jī)制配套。公鑰體制的提出就是為了解決傳統(tǒng)加密體系的密鑰分配過程中保密的缺陷。比如網(wǎng)絡(luò)黑客們常用的手段之一就是"監(jiān)聽"(monitor),如果密鑰是通過網(wǎng)絡(luò)傳送就太危險(xiǎn)了。舉個例子:Novell Netware的老版本中,用戶的密碼是以明文在線路中傳輸?shù)模@樣監(jiān)聽者輕易就獲得了他人的密碼。當(dāng)然Netware4.1中數(shù)據(jù)包頭的用戶密碼現(xiàn)在是加密的。對PGP來說公鑰本來就要公開,就沒有防監(jiān)聽的問題。但公鑰的發(fā)布中仍然存在安全性問題,例如公鑰被篡改(public key tampering),這可能是公鑰密碼體系中最大漏洞 ,因?yàn)榇蠖鄶?shù)新手不能很快發(fā)現(xiàn)這一點(diǎn)。用戶必須確信用戶的公鑰屬于它看上去屬于的那個人。為了把這個問題說清楚,先舉個例子進(jìn)行說明,然后再說如何正確使用PGP堵塞這個漏洞。以用戶和Alice通信為例,假設(shè)用戶想給Alice的公鑰,用戶從BBS上下載了Alice的公鑰,并用它加密信件,用BBS的Email功能發(fā)給了Alice。不幸的是,用戶和Alice都不知道,另一個叫Charlie的用戶潛入BBS,把他自己使用Alice的名字生成密鑰對中的公鑰偷偷更換了Alice的公鑰。那用戶用來發(fā)信的公鑰的用戶名"Alice"。于是Charlie的公鑰來轉(zhuǎn)發(fā)用戶給Alice的信,這樣誰都不會起疑心他如果想找用戶發(fā)給Alice的信也是很容易的事,更有甚者,他還可偽造Alice的簽名給用戶或其他人發(fā)信,因?yàn)橛脩羰种械墓€是Charlie偽造的,用戶會以為真是Alice的來信。介紹人確認(rèn)公鑰——公共渠道傳遞公鑰的安全手段防止上述情況出現(xiàn)的最好辦法是避免讓任何其他人有機(jī)會篡改公鑰,比如直接從Alice手中得到她的公鑰。然而當(dāng)她在千里之外或無法見到時,這是很困難的。PGP發(fā)展了一種公鑰介紹機(jī)制來解決這個問題。舉例來說:如果用戶和Alice有一個共同的朋友David,而David知道他手中的Alice的公鑰是正確的(關(guān)于如何認(rèn)證公鑰,PGP還有一種方法,后面會談到,這里假設(shè)David已經(jīng)和Alice認(rèn)證過她的公鑰)。這樣David就成為用戶和Alice之間的"介紹人"。這樣Alice或David就可放心地把經(jīng)過David簽過字的Alice的公鑰上載到BBS上供用戶去拿,沒人可能去篡改它而不被用戶發(fā)現(xiàn),即使是BBS的管理員。這就是從公共渠道傳遞公鑰的安全手段。有人會問:如何安全地得到David的公鑰呢。這是個先有雞還是先有蛋的問題嗎?確實(shí)有可能用戶拿到的David的公鑰也是假的,但這就求這個搗蛋者參與整個過程,他必須對你們?nèi)硕己苁煜?,還要策劃很久,這一般不可能,當(dāng)然,PGP對這種可能也預(yù)防的建議,那就是由一個大家普遍信任的或機(jī)構(gòu)擔(dān)當(dāng)這個角色,他被稱為"密鑰待者"或"認(rèn)證權(quán)威",每個由他簽字的公鑰都被認(rèn)為是真的,這樣大家只要有他的公鑰就行了,證明此人的公鑰是方便的,因?yàn)樗麖V泛提供這種服務(wù),假冒他的公鑰是極困難的,而因?yàn)樗墓€流傳廣泛。這樣的"權(quán)威"適合由非個人控制的組織或政府機(jī)構(gòu)充當(dāng),現(xiàn)在已經(jīng)有等級認(rèn)證制度的機(jī)構(gòu)存在。(CA認(rèn)證機(jī)構(gòu))對于那些非常分散的用戶,PGP更贊成使用私人方式的密鑰轉(zhuǎn)介方式,因這樣有些非官方途徑更能反映出人們自然的社會交往,而且人們也能自由地選擇信任的人來介紹,總之和不認(rèn)識的人們之間的交往一樣,每個公鑰至少有一個"用戶名"(User ID),請盡量用自己的全名,再加上本人的E-mail地址,以免混淆。轉(zhuǎn)介認(rèn)證機(jī)制下面,介紹如何通過電話認(rèn)證密鑰。每個密鑰有它們自己的標(biāo)識(keyID),keyID是一個8位十六進(jìn)制數(shù),兩個密鑰具有同keyID的可能性十億分之一,而且PGP還提供了一種更可靠的標(biāo)識密鑰的方法:“密鑰指紋”( keys fingrprint ).每個密鑰對應(yīng)一串?dāng)?shù)字(16個2位十六進(jìn)制數(shù)),這個指紋重復(fù)的可能就更微乎其微了。而且任何人無法指定生成一個具有某個指紋的密鑰,密鑰是隨機(jī)生成的,從指紋也無法反推出密鑰來。用戶拿到某人密鑰后,就可和他在電話上核對這個指紋,從而確認(rèn)他的公鑰。這又引出一方法,就是把不同簽名自己的公鑰收集在一起,發(fā)送到公共場合,這樣可以希望大部分人至少認(rèn)識其中一個,從而間接認(rèn)證了用戶的公鑰。同樣用戶簽了朋友的公鑰后應(yīng)該寄回給他,這樣就可以讓他通過用戶,被用戶的其他朋友所認(rèn)證。有點(diǎn)意思吧,和現(xiàn)實(shí)社會中人們的交往一樣。PGP會自動為用戶拿到的公鑰中有哪些是朋友介紹來的,它會把它們分為不同的信任級別,供用戶參考決定對它們的信任程度。也可指定某人有幾層轉(zhuǎn)介公鑰的能力,這種能力是隨著認(rèn)證的傳遞而遞減的。轉(zhuǎn)介認(rèn)證機(jī)制具有傳遞性,是個有趣的問題。PGP的作者Phil Zimmermann說過一名話:“信賴不具:我有個我相信決不撒謊的朋友。可是他是個認(rèn)定不撒謊的傻瓜,很顯然我并不認(rèn)為總統(tǒng)決不撒謊?!?div style="height:15px;">