軟件水平考試網(wǎng)絡(luò)工程師復(fù)習(xí)指導(dǎo):PGP簡介(2)

字號:

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