密碼學專題 - 密鑰管理
11. 密鑰管理
11.1 PKI
公鑰密碼使密鑰管理變得簡單篷角,但是 Alice 仍要獲得 Bob 的公鑰卑吭,她如何才能相信那是 Bob 的公鑰僚焦,而不是其他人的公鑰呢逼侦?也許 Eve 創(chuàng)建了一個密鑰對宇弛,并且冒充 Bob 公開密鑰鸡典。一般的解決辦法是利用 PKI,或者稱為公鑰基礎設施 (Public Key Infrastructure)枪芒。
PKI 的主要思想是設立一個中心機構彻况,稱為證書機構或者 CA。每個用戶都把他的公鑰報給 CA 并向 CA 證明自己舅踪,然后 CA 使用數(shù)字簽名簽署用戶的公鑰纽甘,簽署的消息或證書聲明:“我,CA硫朦,已經(jīng)驗證公鑰 屬于 Bob贷腕。” 證書通常包括有效期及其他有用信息咬展。
利用證書泽裳,Alice 更容易找到 Bob 的公鑰。我們假定 Alice 擁有 CA 的公鑰并且已經(jīng)驗證是正確的公鑰破婆,現(xiàn)在 Alice 可以從數(shù)據(jù)庫中檢索 Bob 的公鑰涮总,Bob 也可以通過電子郵件將公鑰發(fā)送給 Alice,然后 Alice 利用已得到的 CA 公鑰驗證 Bob 公鑰的證書祷舀,該證書保證她使用正確的公鑰與 Bob 進行通信瀑梗。Bob 可同樣地獲得 Alice 的公鑰烹笔,并且確信他在與正確的人進行通信。
在 PKI 中抛丽,每一個參與方只需要讓 CA 給他的公鑰頒發(fā)證書谤职,并知道 CA 的公鑰以驗證其他參與方的證書。這樣的工作量遠比與每一個通信方交換密鑰小得多亿鲜,這正是 PKI 的巨大優(yōu)勢:一次注冊允蜈,隨處使用。
由于實際原因蒿柳,PKI 通常設置多層次的 CA饶套。其中有一個最高層的 CA,稱為根垒探,它為低層 CA 的公鑰頒發(fā)證書妓蛮,而低層 CA 則給用戶的公鑰頒發(fā)證書。這個系統(tǒng)以同樣的方式工作圾叼,但是現(xiàn)在 Alice 需要檢驗兩個證書以驗證 Bob 的公鑰蛤克。
PKI 并不是最終的解決方案,其中還有很多問題褐奥。首先咖耘,CA 必須被每一個人信任。在有些情況下撬码,這是容易做到的儿倒。一個公司的人力資源部門知道所有的員工,可以擔任 CA 的角色呜笑。但是世界上沒有一個實體能夠被所有人信任夫否,僅憑一個 PKI 來管理整個世界的想法顯然是不行的。
第二個問題是責任問題叫胁。如果 CA 頒發(fā)了一個錯誤的證書凰慈,或者 CA 的私鑰被竊取了,那么該怎么辦呢驼鹅?Alice 將信任一個錯誤的證書微谓,并且因此可能損失很多錢,那么該由誰來負責输钩?CA 愿意以某種保險的形式來提供支持嗎豺型?這就需要 Alice 和 CA 之間建立非常全面的商業(yè)關系。
目前有很多公司都試圖成為世界性的 CA买乃,VeriSign 大概是其中最有名的一個姻氨。然而,對于未能履行職責的情況剪验,VeriSign 明確地限制了自己的賠償責任肴焊,大多數(shù)情況下賠償不超過 100 美元前联,這可以比我們利用 VeriSign 簽署的證書安全地購買書籍所支付的金額都少。不過這并不是一個問題娶眷,因為使用信用卡支持對消費者來說是安全的似嗤。然而在購買下一輛汽車時,我們就不會相信只有 100 美元保證金的 VeriSign 證書了届宠。
項目源代碼
項目源代碼會逐步上傳到 Github双谆,地址為 https://github.com/windstamp。
Contributor
- Windstamp, https://github.com/windstamp