公鑰

公鑰

與公鑰演演算法一起使用的密鑰對的非秘密一半。

公鑰歷史


1976年。當時在美國斯坦福大學的迪菲(Diffie)和赫爾曼(Hellman)兩人提出了公開密鑰密碼的新思想(論文"New Direction in Cryptography"),不僅加密演演算法本身可以公開,甚至加密用的密鑰也可以公開。但這並不意味著保密程度的降低。因為如果加密密鑰和解密密鑰不一樣。而將解密密鑰保密就可以。這就是著名的公鑰密碼體制。也稱作非對稱密碼體制。不同於對稱性的 密碼學,在於其加密鑰匙只適用於單一用戶。

鑰匙的兩部分


一把私有的鑰匙,僅有用戶才擁有。
一把公開的鑰匙,可公開發行配送,只要有要求即取得。
每支鑰匙產生一個被使用來改變屬性的功能。私有的鑰匙產生一個私有改變屬性的功能,而公開的鑰匙 產生一個 公開改變屬性的功能。這些功能是反向相關的,例如,如果一個功能是用來加密消息,另外一個功能則被用來解密消息。不論此改變屬性功能的次序為何皆不重要。公開的鑰匙系統的優勢是兩個用戶能夠安全的溝通而不需交換秘密鑰匙。例如,假設一個送信者需要傳送一個信息給一個收信者,而信息的秘密性是必要的,送信者以收信者的公開的鑰匙來加密,而僅有收信者的私有的鑰匙能夠對此信息解密。公開的鑰匙密碼學是非常適合於提供認證,完整和不能否認的服務,所有的這些服務既是我們所知的數字簽名。

RSA公鑰系統


RSA公鑰系統發明於新思想提出后一年在麻省理工學院,里維斯特(Ronald Rivest)、沙米爾(Adi Shamir)和阿德勒曼(Len Adleman)提出第一個較完善的公鑰密碼體制——RSA體制,由三位發明人的姓氏首字母命名。這是一種建立在大數因子分解基礎上的演演算法。它是第一個成熟的、迄今為止理論上最成功的公鑰密碼體制。它的安全性是基於數論中的大整數因子分解。該問題是數論中的一個困難問題,至今沒有有效的演演算法,(即大整數因子分解不能在多項式時間內完成)這使得該體制具有較高的保密性。並且得到了廣泛應用。不為人知的是,早在1970年的秘密研究中,英國情報機構GCHQ的數學家James H. Ellis便已發明非對稱鑰匙密碼學,而且Diffie-Hellman與RSA都曾被Malcolm J. Williamson與Clifford Cocks分別發明於前。這兩個最早的公鑰系統提供優良的加密法基礎,因而被大量使用。其他公鑰系統還有Cramer-Shoup、Elgamal、以及橢圓曲線密碼學等等。這些事件直到1997年歷史文件解密的時候才為大眾所知。

公鑰密碼學突出的貢獻


除了加密外,公開鑰匙密碼學最顯著的成就是實現了數字簽名。數字簽名,顧名思義,就是是普通簽章的數字化,他們的特性都是某人可以輕易製造簽章,但他人卻難以仿冒。數字簽名可以永久地與被簽署信息結合,無法自信息上移除。數字簽名大致包含兩個演演算法:一個是簽署,使用私密鑰匙處理信息或信息的哈希值而產生簽章;另一個是驗證,使用公開鑰匙驗證簽章的真實性。RSA和DSA是兩種最流行的數字簽名機制。數字簽名是公開鑰匙基礎建設(public key infranstructures, PKI)以及許多網路安全機制(SSL/TLS, VPNs等)的基礎。
公開鑰匙演演算法大多基於計算複雜度上的難題,通常來自於數論。例如,RSA源於整數因子分解問題;DSA源於離散對數問題。近年發展快速的橢圓曲線密碼學則基於和橢圓曲線相關的數學難題,與離散對數相當。由於這些底層的問題多涉及模數乘法或指數運算,相對於分組密碼需要更多計算資源。因此,公開鑰匙系統通常是複合式的,內含一個高效率的對稱鑰匙演演算法,用以加密信息,再以公開鑰匙加密對稱鑰匙系統所使用的鑰匙,以增進效率。