pgp還可以只簽名而不加密,這適用于公開發(fā)表聲明時(shí), 聲明人為了證實(shí) 自己的身份(在網(wǎng)絡(luò)上只能如此了),可以用自己的私匙簽名。這樣就可以讓 收件人能確認(rèn)發(fā)信人的身份,也可以防止發(fā)信人抵賴自己的聲明。這一點(diǎn)在商 業(yè)領(lǐng)域有很大的應(yīng)用前途,它可以防止發(fā)信人抵賴和信件被途中篡改。 那么為什么說pgp用的是rsa和傳統(tǒng)加密的雜合算法呢? 因?yàn)閞sa算法計(jì)算 量極大,在速度上不適合加密大量數(shù)據(jù),所以pgp實(shí)際上用來加密的不是rsa本 身,而是采用了一種叫idea的傳統(tǒng)加密算法。我先解釋一下什么叫傳統(tǒng)加密, 簡單地說就是用一個(gè)密匙加密明文,然后用同樣的密匙解密。這種方法的代表 是des (us federal data encryption standard),也就是乘法加密,它的主 要缺點(diǎn)就是密匙的傳遞渠道解決不了安全性問題,不適合網(wǎng)絡(luò)環(huán)境郵件加密需 要。idea是一個(gè)有專利的算法, 專利持有者是eth和一個(gè)瑞士公司ascom-tech ag。非商業(yè)用途的idea實(shí)現(xiàn)不用向他們交納費(fèi)用。idea的加(解)密速度比rsa 快得多, 所以實(shí)際上pgp是用一個(gè)隨機(jī)生成密匙(每次加密不同)用idea算法 對明文加密,然后用rsa算法對該密匙加密。這樣收件人同樣是用rsa解密出這 個(gè)隨機(jī)密匙,再用idea解密郵件本身。 這樣的鏈?zhǔn)郊用芫妥龅搅思扔衦sa體系 的保密性,又有idea算法的快捷性。 rsa體系70年代就已提出,但由于速度問 題一直沒有推廣應(yīng)用,pgp的正好解決了這個(gè)問題,pgp的創(chuàng)意有一半就在這一點(diǎn)上了。那么pgp創(chuàng)意的另一半在哪兒呢?下面我再談pgp的密匙管理。
一個(gè)成熟的加密體系必然要有一個(gè)成熟的密匙管理機(jī)制配套。公匙體制的 提出就是為了解決傳統(tǒng)加密體系的密匙分配難保密的缺點(diǎn)。比如網(wǎng)絡(luò) hacker們 常用的手段之一就是“監(jiān)聽”,如果密匙是通過網(wǎng)絡(luò)傳送就太危險(xiǎn)了。舉個(gè)例 子:novell netware 的老版本中,用戶的密碼是以明文在線路中傳輸?shù)模?這 樣監(jiān)聽者輕易就獲得了他人的密碼。當(dāng)然 netware 4.1中數(shù)據(jù)包頭的用戶密碼 現(xiàn)在是加密的了。對pgp來說公匙本來就要公開,就沒有防監(jiān)聽的問題。 但公 匙的發(fā)布中仍然存在安全性問題,例如公匙的被篡改(public key tampering), 這可能是公匙密碼體系中的漏洞,因?yàn)榇蠖鄶?shù)新手不能很快發(fā)現(xiàn)這一點(diǎn)。 你必須確信你拿到的公匙屬于它看上去屬于的那個(gè)人。為了把這個(gè)問題說清楚, 我舉個(gè)例子,然后再說如何正確地用pgp堵住這個(gè)漏洞。 以你和alice的通信為例,假設(shè)你想給alice發(fā)封信,那你必須有alice的公 匙, 你從bbs上下載了alice的公匙,并用它加密了信件用bbs的email功能發(fā)給 了alice。不幸地,你和alice都不知道,另一個(gè)用戶叫charlie的用戶潛入bbs, 把他自己用alice的名字生成的密匙對中的公匙替換了alice的公匙。 那你用來 發(fā)信的公匙就不是alice的而是charlie 的, 一切看來都很正常,因?yàn)槟隳玫降?公匙的用戶名是“alice”。于是charlie就可以用他手中的私匙來解密你給alice 的信, 甚至他還可以用alice真正的公匙來轉(zhuǎn)發(fā)你給alice的信,這樣誰都不會 起疑心,他如果想改動你給alice的信也沒問題。更有甚者,他還可以偽造 alice 的簽名給你或其他人發(fā)信,因?yàn)槟銈兪种械墓资莻卧斓?,你們會以為真是alice 的來信。 防止這種情況出現(xiàn)的辦法是避免讓任何其他人有機(jī)會篡改公匙,比如 直接從alice手中得到她的公匙,然而當(dāng)她在千里之外或無法見到時(shí), 這是很 困難的。pgp發(fā)展了一種公匙介紹機(jī)制來解決這個(gè)問題。 舉例來說:如果你和 alice有一個(gè)共同的朋友david,而david知道他手中alice的公匙是正確的(關(guān) 于如何認(rèn)證公匙,pgp還有一種方法,后面會談到,這里假設(shè)david已經(jīng)和alice 認(rèn)證過她的公匙)。這樣david可以用他自己的私匙在alice的公匙上簽名(就 是用上面講的簽名方法),表示他擔(dān)保這個(gè)公匙屬于alice。當(dāng)然你需要用david 的公匙來校驗(yàn)他給你的alice的公匙,同樣david也可以向alice認(rèn)證你的公匙, 這樣david就成為你和alice之間的“介紹人”。這樣alice或david就可以放心 地把david簽過字的alice的公匙上載到 bbs上讓你去拿, 沒人可能去篡改它而 不被你發(fā)現(xiàn),即使是bbs的管理員。這就是從公共渠道傳遞公匙的安全手段。
一個(gè)成熟的加密體系必然要有一個(gè)成熟的密匙管理機(jī)制配套。公匙體制的 提出就是為了解決傳統(tǒng)加密體系的密匙分配難保密的缺點(diǎn)。比如網(wǎng)絡(luò) hacker們 常用的手段之一就是“監(jiān)聽”,如果密匙是通過網(wǎng)絡(luò)傳送就太危險(xiǎn)了。舉個(gè)例 子:novell netware 的老版本中,用戶的密碼是以明文在線路中傳輸?shù)模?這 樣監(jiān)聽者輕易就獲得了他人的密碼。當(dāng)然 netware 4.1中數(shù)據(jù)包頭的用戶密碼 現(xiàn)在是加密的了。對pgp來說公匙本來就要公開,就沒有防監(jiān)聽的問題。 但公 匙的發(fā)布中仍然存在安全性問題,例如公匙的被篡改(public key tampering), 這可能是公匙密碼體系中的漏洞,因?yàn)榇蠖鄶?shù)新手不能很快發(fā)現(xiàn)這一點(diǎn)。 你必須確信你拿到的公匙屬于它看上去屬于的那個(gè)人。為了把這個(gè)問題說清楚, 我舉個(gè)例子,然后再說如何正確地用pgp堵住這個(gè)漏洞。 以你和alice的通信為例,假設(shè)你想給alice發(fā)封信,那你必須有alice的公 匙, 你從bbs上下載了alice的公匙,并用它加密了信件用bbs的email功能發(fā)給 了alice。不幸地,你和alice都不知道,另一個(gè)用戶叫charlie的用戶潛入bbs, 把他自己用alice的名字生成的密匙對中的公匙替換了alice的公匙。 那你用來 發(fā)信的公匙就不是alice的而是charlie 的, 一切看來都很正常,因?yàn)槟隳玫降?公匙的用戶名是“alice”。于是charlie就可以用他手中的私匙來解密你給alice 的信, 甚至他還可以用alice真正的公匙來轉(zhuǎn)發(fā)你給alice的信,這樣誰都不會 起疑心,他如果想改動你給alice的信也沒問題。更有甚者,他還可以偽造 alice 的簽名給你或其他人發(fā)信,因?yàn)槟銈兪种械墓资莻卧斓?,你們會以為真是alice 的來信。 防止這種情況出現(xiàn)的辦法是避免讓任何其他人有機(jī)會篡改公匙,比如 直接從alice手中得到她的公匙,然而當(dāng)她在千里之外或無法見到時(shí), 這是很 困難的。pgp發(fā)展了一種公匙介紹機(jī)制來解決這個(gè)問題。 舉例來說:如果你和 alice有一個(gè)共同的朋友david,而david知道他手中alice的公匙是正確的(關(guān) 于如何認(rèn)證公匙,pgp還有一種方法,后面會談到,這里假設(shè)david已經(jīng)和alice 認(rèn)證過她的公匙)。這樣david可以用他自己的私匙在alice的公匙上簽名(就 是用上面講的簽名方法),表示他擔(dān)保這個(gè)公匙屬于alice。當(dāng)然你需要用david 的公匙來校驗(yàn)他給你的alice的公匙,同樣david也可以向alice認(rèn)證你的公匙, 這樣david就成為你和alice之間的“介紹人”。這樣alice或david就可以放心 地把david簽過字的alice的公匙上載到 bbs上讓你去拿, 沒人可能去篡改它而 不被你發(fā)現(xiàn),即使是bbs的管理員。這就是從公共渠道傳遞公匙的安全手段。