公鑰(Public Key)與私鑰(Private Key)是通過一種算法得到的一個(gè)密鑰對(duì)(即一個(gè)公鑰和一個(gè)私鑰),公鑰是密鑰對(duì)中公開的部分,私鑰則是非公開的部分。公鑰通常用于加密會(huì)話密鑰、驗(yàn)證數(shù)字簽名,或加密可以用相應(yīng)的私鑰解密的數(shù)據(jù)。通過這種算法得到的密鑰對(duì)能保證在世界范圍內(nèi)是獨(dú)一的。使用這個(gè)密鑰對(duì)的時(shí)候,如果用其中一個(gè)密鑰加密一段數(shù)據(jù),必須用另一個(gè)密鑰解密。比如用公鑰加密數(shù)據(jù)就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會(huì)成功。1
歷史1976年。當(dāng)時(shí)在美國斯坦福大學(xué)的迪菲(Diffie)和赫爾曼(Hellman)兩人提出了公開密鑰密碼的新思想(論文"New Direction in Cryptography"),不僅加密算法本身可以公開,甚至加密用的密鑰也可以公開。但這并不意味著保密程度的降低。因?yàn)榧用苊荑€和解密密鑰不一樣。這就是著名的公鑰密碼體制。也稱作非對(duì)稱密碼體制。不同于對(duì)稱性的密碼學(xué), 在于其加密鑰匙只適用于單一用戶。1
兩部分一把私有的鑰匙,僅有用戶才擁有。3
一把公開的鑰匙,可公開發(fā)行配送,只要有要求即取得。3
每支鑰匙產(chǎn)生一個(gè)被使用來改變屬性的功能。私有的鑰匙產(chǎn)生一個(gè)私有改變屬性的功能,而公開的鑰匙 產(chǎn)生一個(gè) 公開改變屬性的功能。這些功能是反向相關(guān)的,例如,如果一個(gè)功能是用來加密消息,另外一個(gè)功能則被用來解密消息。不論此改變屬性功能的次序?yàn)楹谓圆恢匾?。公開鑰匙系統(tǒng)的優(yōu)勢是兩個(gè)用戶能夠安全溝通而不需交換秘密鑰匙。例如,假設(shè)一個(gè)送信者需要傳送一個(gè)信息給一個(gè)收信者,而信息的秘密性是必要的, 送信者以收信者的公開的鑰匙來加密,而僅有收信者的私有的鑰匙能夠?qū)Υ诵畔⒔饷?。公開的鑰匙密碼學(xué)是非常適合于提供認(rèn)證,完整和不能否認(rèn)的服務(wù), 所有這些服務(wù)即是我們所知的數(shù)字簽名。3
公鑰私鑰的原則一個(gè)公鑰對(duì)應(yīng)一個(gè)私鑰。3
密鑰對(duì)中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。1
如果用其中一個(gè)密鑰加密數(shù)據(jù),則只有對(duì)應(yīng)的那個(gè)密鑰才可以解密。1
如果用其中一個(gè)密鑰可以進(jìn)行解密數(shù)據(jù),則該數(shù)據(jù)必然是對(duì)應(yīng)的那個(gè)密鑰進(jìn)行的加密。1
RSARSA公鑰系統(tǒng)發(fā)明于新思想提出后一年在麻省理工學(xué)院,里維斯特(Ronald Rivest)、沙米爾(Adi Shamir)和阿德勒曼(Len Adleman)提出第一個(gè)較完善的公鑰密碼體制——RSA體制,由三位發(fā)明人的姓氏首字母命名。這是一種建立在大數(shù)因子分解基礎(chǔ)上的算法。它是第一個(gè)成熟的、迄今為止理論上最成功的公鑰密碼體制。它的安全性是基于數(shù)論中的大整數(shù)因子分解。該問題是數(shù)論中的一個(gè)困難問題,沒有有效的算法,(即大整數(shù)因子分解不能在多項(xiàng)式時(shí)間內(nèi)完成)這使得該體制具有較高的保密性。3并且得到了廣泛應(yīng)用。不為人知的是,早在1970年的秘密研究中,英國情報(bào)機(jī)構(gòu)GCHQ的數(shù)學(xué)家James H. Ellis便已發(fā)明非對(duì)稱鑰匙密碼學(xué),而且Diffie-Hellman與RSA都曾被Malcolm J. Williamson與Clifford Cocks分別發(fā)明于前。這兩個(gè)最早的公鑰系統(tǒng)提供優(yōu)良的加密法基礎(chǔ),因而被大量使用。其他公鑰系統(tǒng)還有Cramer-Shoup、Elgamal、以及橢圓曲線密碼學(xué)等等。這些事件直到1997年歷史文件解密的時(shí)候才為大眾所知。1
貢獻(xiàn)除了加密外,公開鑰匙密碼學(xué)最顯著的成就是實(shí)現(xiàn)了數(shù)字簽名。數(shù)字簽名,顧名思義,就是使普通簽章的數(shù)字化,他們的特性都是某人可以輕易制造簽章,但他人卻難以仿冒。數(shù)字簽名可以永久地與被簽署信息結(jié)合,無法自信息上移除。1數(shù)字簽名大致包含兩個(gè)算法:一個(gè)是簽署,使用私密鑰匙處理信息或信息的哈希值而產(chǎn)生簽章;另一個(gè)是驗(yàn)證,使用公開鑰匙驗(yàn)證簽章的真實(shí)性。RSA和DSA是兩種最流行的數(shù)字簽名機(jī)制。數(shù)字簽名是公開鑰匙基礎(chǔ)建設(shè)(public key infranstructures, PKI)以及許多網(wǎng)絡(luò)安全機(jī)制(SSL/TLS, VPNs等)的基礎(chǔ)。2
公開鑰匙算法大多基于計(jì)算復(fù)雜度上的難題,通常來自于數(shù)論。例如,RSA源于整數(shù)因子分解問題;DSA源于離散對(duì)數(shù)問題。發(fā)展快速的橢圓曲線密碼學(xué)則基于和橢圓曲線相關(guān)的數(shù)學(xué)難題,與離散對(duì)數(shù)相當(dāng)。由于這些底層的問題多涉及模數(shù)乘法或指數(shù)運(yùn)算,相對(duì)于分組密碼需要更多計(jì)算資源。因此,公開鑰匙系統(tǒng)通常是復(fù)合式的,內(nèi)含一個(gè)高效率的對(duì)稱鑰匙算法,用以加密信息,再以公開鑰匙加密對(duì)稱鑰匙系統(tǒng)所使用的鑰匙,以增進(jìn)效率。2
本詞條內(nèi)容貢獻(xiàn)者為:
尚軼倫 - 副教授 - 同濟(jì)大學(xué)數(shù)學(xué)科學(xué)學(xué)院