-
公鑰
鎖定
公鑰公鑰歷史
1976年,當時在美國斯坦福大學的迪菲(Whitfield Diffie)和赫爾曼(MartinHellman)兩人發表了論文《密碼編碼學新方向》(New Direction in Cryptogra-phy),指出在通信雙方之間不直接傳輸加密密鑰的保密通信是可能的,並提出了非對稱公鑰加密(公開密鑰密碼)的新思想,把密鑰分為加密的公鑰和解密的私鑰,它是第一個實用的在非保護信道中建立共享密鑰方法,這是密碼學的一場革命。這種思想最早由英國信號情報部門雷夫・莫寇(Ralph C. Merkle)在1974年提出來的,但是當時這被列為是機密。之後在1976年,迪菲和赫爾曼兩位學者以單向函數與單向暗門函數為基礎,為發訊與收訊的兩方創建密鑰,發明了“D-H密鑰交換算法”實現信息加密。該算法的有效性依賴於離散對數的難度。2002年,赫爾曼建議將該算法改名為“ Diffie-Hellman-Merkle密鑰交換”以表明 Ralph C. Merkle對於公鑰加密算法的貢獻
[2]
。
公鑰加密算法中使用兩個密鑰,而不是使用一個共享的密鑰。一個密鑰是公鑰(public key),一個密鑰是私鑰(private key)。用公鑰加密的密文只能用對應私鑰解密,反之,用私鑰加密的密文只能用對應公鑰解密。在操作過程中,公鑰是對外界公開的,所有人都可以知道,而私鑰是自己保存的,只有自己才能知道。但是一個人只能持有公鑰和私鑰的其中一個,而不能同時共享。如果A要發一份秘密信息給B,則A只需要得到B的公鑰,然後用B的公鑰加密秘密信息,此加密的信息只有B能用其保密的私鑰解密。反之,B也可以用A的公鑰加密保密信息給A。信息在傳送過程中,即使被第三方截取,也不可能解密其內容
[2]
。
1979年,Merkle和Hellman提出“MH揹包算法”。“MH揹包算法”源於揹包問題(NP完全問題),其工作原理是:假定甲想加密,則先產生一個較易求解的揹包問題,並用它的解作為專用密鑰;然後從這個問題出發,生成另一個難解的揹包問題,並作為公共密鑰。如果乙想向甲發送報文,乙就可以使用難解的揹包問題對報文進行加密,由於這個問題十分難解,所以一般沒有人能夠破譯密文;甲收到密文後,可以使用易解的專用密鑰解密。公鑰加密是一項重大的創新,從根本上改變了加密和解密的過程
[2]
。
公鑰基礎設施
公鑰基礎設施PKI(public key infrastructure)是由公開密鑰密碼技術、數字證書、證書認證中心和公鑰安全策略等共同組成,管理密鑰和證書的系統或平台,是建立安全網絡環境的基礎設施
[3]
。
PKI的組成
③具有高強度密碼算法的安全WWW服務器。使用SSL(secure sockets layer)協議來鑑別網站服務器和瀏覽器端用户的身份,以及在瀏覽器和服務器之間進行加密通信,保證客户端和服務器端數據的機密性、完整性、身份驗證
[3]
。
PKI在電子支付中的應用
Web(world wide web)頁面是電子支付通常採用的方式。為了解決Web的安全問題,採用SSL協議,在傳輸層和應用層之間建PKI在電子支付中的應用立一個安全通信層,在兩個實體間實現對應用層透明的安全通信。利用PKI技術,SSL協議允許在瀏覽器和服務器之間進行加密通信。此外還可以利用數字證書保證通信安全,服務器端和瀏覽器端分別由可信的第三方頒發數字證書,這樣在交易時,雙方可以通過數字證書確認對方的身份。需要注意的是,SSL協議本身並不能提供對不可否認性的支持,這部分的工作必須由數字證書完成。結合SSL協議和數字證書,PKI技術可以保證Web交易多方面的安全需求
[3]
。
公鑰公鑰分配
公鑰公鑰證書
從字面理解,公鑰加密的意思就是公鑰是公開的。所以,如果有某種廣泛接受的公鑰算法(如RSA),任何參與者都可以給其他參與者發送他的密鑰,或向羣體廣播自己的密鑰。雖然這種方法非常方便,但是它也有個很大的缺點:任何人都可以偽造公共通告,即某用户可以偽裝成用户A向其他參與者發送公鑰或廣播公鑰。直到一段時間後用户A發覺了偽造並且警告其他參與者,偽造者在此之前都可以讀到試圖發送給A的加密消息,並且使用假的公鑰進行認證
[4]
。
解決這個問題的方法就是使用公鑰證書。實際上,公鑰證書由公鑰加上公鑰所有者的用户ID以及可信的第三方簽名的整個數據塊組成。通常,第三方就是用户團體所信任的認證中心。用户可通過安全渠道把他的公鑰提交給這個CA,獲取證書。然後用户就可以發佈這個證書。任何需要該用户公鑰的人都可以獲取這個證書,並且通過所附的可信簽名驗證其有效性
[4]
。
公鑰密鑰分發
使用傳統加密時,雙方能夠安全通信的基本要求就是他們能共享密鑰。假設Bob想建立個消息申請,使他能夠與對方安全地交換電子郵件,這裏的“對方”是指能夠訪問Internet或者與Bob共享其他網絡的人。假定Bob要用傳統密碼來做這件事,Bob和他的通信者(Aice)必須構建一個通道來共享任何其他人都不知道的唯一密鑰。他們是如何實現的呢?如果Alice在Bob的隔壁房間裏,Bob可以生成密鑰,把它寫在紙上或存儲在磁盤上,然後交給Alice。但是如果Alice在歐洲或世界的另一邊,Bob該怎麼辦呢?他可以用傳統的加密方法加密密鑰並且將它以電子郵件方式發送給Alice。但是這意味着Bob和 Alice必須共享一個密鑰來加密這個新的密鑰。此外,Bob和任何其他使用這種新電子郵件包的人都與他們的潛在通信者之間面臨着相同的問題:任何一對通信者之間都必須共享一個唯一的密鑰
[4]
。
(4)把加密的會話密鑰附在消息上,並且把它發送給Aice,只有Aice能夠解密會話密鑰進而恢復原始消息。如果Bob通過Alice的公鑰證書獲得Alice的公鑰,則Bob能夠確定它是有效的密鑰
[4]
。
公鑰管理方案
從系統的可擴展性和算法的安全性角度進行考慮,空間網絡中的實體認證、會話密鑰協商等場合應使用公鑰密碼算法來實現。首先,如果採取基於對稱密碼體制的方案,當網絡中節點數量增加時,密鑰管理中心需要與每一個節點進行信息的交互,導致了大量額外的通信開銷,而基於公鑰密碼體制的方案則不存在這一問題,節點數量增減時的密鑰操作較少,可擴展性強;其次,公鑰密碼算法的安全性一般遠高於對稱密碼算法,從而能夠有效地提高安全方案本身的安全性;最後,採取以公鑰密碼體制為基礎的密鑰管理方案已經過多年實際應用的檢驗,也是未來的主要發展方向
[5]
。