打开主菜单

求真百科

公開金鑰加密

XND讨论 | 贡献2020年11月22日 (日) 00:31的版本 (创建页面,内容为“{| class="wikitable" style="float:right; margin: -10px 0px 10px 20px; text-align:left" |<center>'''公開金鑰加密'''<br><img src="https://miro.medium.com/max/100…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
公開金鑰加密
圖片來自medium

公开密钥密码学Public-key cryptography)也称非對稱式密碼學Asymmetric cryptography)是密碼學的一種演算法,它需要兩個密钥,一個是公開密鑰,另一個是私有密鑰;公鑰用作加密,私鑰則用作解密。使用公钥把明文加密后所得的密文,只能用相對應的私鑰才能解密並得到原本的明文,最初用來加密的公鑰不能用作解密。由於加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;不同於加密和解密都使用同一個密鑰的對稱加密[1] 。公鑰可以公开,可任意向外發佈;私钥不可以公開,必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供,也不會透露給被信任的要通訊的另一方。

基於公開密鑰加密的特性,它還能提供數位簽章的功能,使電子文件可以得到如同在紙本文件上親筆簽署的效果。

公開金鑰基礎建設透過信任数字证书认证机构根证书、及其使用公开密钥加密作數位簽章核發的公開金鑰認證,形成信任鏈架構,已在TLS實現並在万维网HTTPHTTPS、在电子邮件SMTP以SMTPS或STARTTLS引入。

另一方面,信任網絡則採用去中心化的概念,取代了依賴數字證書認證機構的公鑰基礎設施,因為每一張電子證書在信任鏈中最終只由一個根證書授權信任,信任網絡的公鑰則可以累積多個用戶的信任。PGP就是其中一個例子。

目录

歷史

该思想最早由瑞夫·墨克(Ralph C. Merkle)在1974年提出,之后在1976年。惠特菲爾德·迪菲(Whitfield Diffie)與馬丁·赫爾曼(Martin Hellman)兩位學者以單向函數與單向暗門函數為基礎,為發訊與收訊的兩方建立金鑰。

常见的公钥加密算法有:RSAElGamal、Rabin(RSA的特例)、DSAECDSA。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开秘钥加密算法。

公钥密码学

密码学中,公开钥匙密码学,简称公钥密码学,又称非对称密码学,是使用一对公钥和私钥的密码学,与只用一个钥匙的密钥密码学相对应。通常,我们所说的公钥密码学包括公钥加密算法数字签名算法。有些公钥加密算法可以很容易被改造成一个数字签名算法(如RSA),而有些则需要经过较大改动。

概述

加密

非对称加密往往需要密码学安全伪随机数生成器的協助來產生一對密钥,其中一個可以隨便公開,称为公钥;另一個不公开,稱为私钥,必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供。 如果任何人使用公鑰加密明文,得到的密文可以透過不安全的途徑(如網路)傳送,只有對應的私钥持有者才可以解密得到明文;其他人即使從網路上竊取到密文及加密公鑰,也無法(在數以年計的合理時間內)解密得出明文。典型例子是在网络银行或購物網站上,因為客户需要輸入敏感訊息,瀏覽器連接時使用網站伺服器提供的公鑰加密並上传数据,可保證只有信任的網站伺服器才能解密得知訊息,不必擔心敏感个人信息因為在網路上傳送而被竊取。

在現實世界上可作比擬的例子是,一個傳統保管箱,開門和關門都是使用同一條钥匙,這是对称加密;而一個公開的郵箱,投遞口是任何人都可以寄信進去的,這可視為公钥;而只有信箱主人擁有钥匙可以打開信箱,這就視為私钥。

加密过程

在非对称加密中,愛麗絲使用鮑伯的公钥加密明文,得到密文,而只有鮑伯因為持有私钥才可以解密,得到明文。 在數學上,<math>d(c(x))=x</math>,讓我們使用典型的愛麗絲與鮑伯假设來解釋:

  1. 愛麗絲與鮑伯事先互不認識,也沒有可靠安全的溝通渠道,但愛麗絲現在卻要透過不安全的互聯網向鮑伯发送信息
  2. 愛麗絲撰寫好原文,原文在未加密的狀態下稱之为明文 <math>x</math>
  3. 鮑伯使用密码学安全伪随机数生成器產生一對密鑰,其中一個作為公钥为 <math>c</math>,另一個作为私钥 <math>d</math>
  4. 鮑伯可以用任何方法傳送公钥 <math>c</math> 給愛麗絲,即使伊夫在中間竊聽到 <math>c</math> 也沒問題
  5. 愛麗絲用公钥 <math>c</math> 把明文 <math>x</math> 进行加密,得到密文 <math>c(x)</math>
  6. 愛麗絲可以用任何方法传输密文 <math>c(x)</math> 給鮑伯,即使伊夫在中間竊聽到密文 <math>c(x)</math> 也沒問題
  7. 鮑伯收到密文,用私钥 <math>d</math> 对密文进行解密 <math>d(c(x))</math>,得到愛麗絲撰寫的明文 <math>x</math>
  8. 由於伊夫沒有得到鮑伯的私钥 <math>d</math>,所以無法得知明文 <math>x</math>
  9. 如果愛麗絲遺失了她自己撰寫的原文 <math>x</math>,在沒有得到鮑伯的私钥 <math>d</math> 的情況下,她的處境將等同伊夫,即無法透過鮑伯的公钥 <math>c</math> 和密文 <math>c(x)</math>重新得到原文 <math>x</math>

數位簽章

相反,如果某一用戶使用他的私钥加密明文,任何人都可以用該用戶的公钥解密密文;由於私鑰只由該用戶自己持有,故可以肯定該文件必定出自於該用戶;公眾可以验证該用戶发布的数据或文件是否完整、中途有否曾被篡改,接收者可信賴這些數據、檔案确实来自于該用戶,这被称作數位簽章,大部份國家已經立法承認數位簽章擁有等同傳統親筆签名的法律效力。公钥可以透過数字证书认证机构簽授的電子證書形式公佈,接收者透過信任链形成一套完整的公開金鑰基礎建設。例如,从网上下载的安装程序,大部分都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。而現時的网上银行購物網站都會使用HTTPS,避免沟通过程中的信息泄露。

与对称密码学的比较

对称密码是指在加密和解密时使用同一个密钥的方式,公钥密码则是指在加密和解密时使用不同密钥的方式。

对称密钥加密牽涉到密钥管理的問題,尤其是密钥交换,它需要通訊雙方在通訊之前先透過另一個安全的渠道交換共用的密钥,才可以安全地把密文透過不安全的渠道傳送;對稱密钥一旦被竊,其所作的加密將即時失效;而在互联网,如果通訊雙方分隔異地而素未謀面,則对称加密事先所需要的「安全渠道」變得不可行;非對稱加密則容許加密公钥隨便散佈,解密的私钥不发往任何用户,只在單方保管;如此,即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,極為適合在互联网上使用。

另一方面,公钥解密的特性可以形成數位簽章,使數據和文件受到保護並可信賴;如果公鑰透過數位憑證認證機構簽授成為電子憑證,更可作為数字身份的認證,這都是对称密钥加密无法实现的。

不過,公钥加密在在計算上相當複雜,效能欠佳、遠遠不比对称加密;因此,在一般實際情況下,往往通过公钥加密来隨機建立臨時的對稱秘钥,亦即對話鍵,然后才通过对称加密來傳輸大量、主體的数据。

參考文獻

  1. 對稱加密,medium