公開金鑰加密
公開金鑰密碼學(英語:Public-key cryptography)也稱非對稱式密碼學(英語:Asymmetric cryptography)是密碼學的一種演算法,它需要兩個金鑰,一個是公開金鑰,另一個是私有金鑰;公鑰用作加密,私鑰則用作解密。使用公鑰把明文加密後所得的密文,只能用相對應的私鑰才能解密並得到原本的明文,最初用來加密的公鑰不能用作解密。由於加密和解密需要兩個不同的金鑰,故被稱為非對稱加密;不同於加密和解密都使用同一個金鑰的對稱加密。公鑰可以公開,可任意向外發佈;私鑰不可以公開,必須由用戶自行嚴格秘密保管,絕不透過任何途徑向任何人提供,也不會透露給被信任的要通訊的另一方。
基於公開金鑰加密的特性,它還能提供數碼簽章的功能,使電子檔案可以得到如同在紙本檔案上親筆簽署的效果。
公開金鑰基礎建設透過信任數碼證書認證機構的根證書、及其使用公開金鑰加密作數碼簽章核發的公開金鑰認證,形成信任鏈架構,已在TLS實現並在萬維網的HTTP以HTTPS、在電子郵件的SMTP以SMTPS或STARTTLS引入。
另一方面,信任網絡則採用去中心化的概念,取代了依賴數碼證書認證機構的公鑰基礎設施,因為每一張電子證書在信任鏈中最終只由一個根證書授權信任,信任網絡的公鑰則可以累積多個用戶的信任。PGP就是其中一個例子。
概述
加密
如果任何人使用公鑰加密明文,得到的密文可以透過不安全的途徑(如網絡)傳送,只有對應的私鑰持有者才可以解密得到明文;其他人即使從網絡上竊取到密文及加密公鑰,也無法(在數以年計的合理時間內)解密得出明文。典型例子是在網絡銀行或購物網站上,因為客戶需要輸入敏感訊息,瀏覽器連接時使用網站伺服器提供的公鑰加密並上載數據,可保證只有信任的網站伺服器才能解密得知訊息,不必擔心敏感個人資訊因為在網絡上載送而被竊取。
在現實世界上可作比擬的例子是,一個傳統保管箱,開門和關門都是使用同一條鑰匙,這是對稱加密;而一個公開的郵箱,投遞口是任何人都可以寄信進去的,這可視為公鑰;而只有信箱主人擁有鑰匙可以打開信箱,這就視為私鑰。
加密過程
在數學上, ,使用典型的愛麗絲與鮑伯假設來解釋:
- 愛麗絲與鮑伯事先互不認識,也沒有可靠安全的溝通渠道,但愛麗絲現在卻要透過不安全的互聯網向鮑伯傳送資訊
- 愛麗絲撰寫好原文,原文在未加密的狀態下稱之為明文
- 鮑伯使用密碼學安全偽亂數生成器產生一對金鑰,其中一個作為公鑰為 ,另一個作為私鑰
- 鮑伯可以用任何方法傳送公鑰 給愛麗絲,即使伊夫(竊聽者)在中間竊聽到 也沒問題
- 愛麗絲用公鑰 把明文 進行加密,得到密文
- 愛麗絲可以用任何方法傳輸密文 給鮑伯,即使伊夫在中間竊聽到密文 也沒問題
- 鮑伯收到密文,用私鑰 對密文進行解密 ,得到愛麗絲撰寫的明文
- 由於伊夫沒有得到鮑伯的私鑰 ,所以無法得知明文
- 如果愛麗絲遺失了她自己撰寫的原文 ,在沒有得到鮑伯的私鑰 的情況下,她的處境將等同伊夫,即無法透過鮑伯的公鑰 和密文 重新得到原文
數碼簽章
相反,如果某一用戶使用他的私鑰加密明文,任何人都可以用該用戶的公鑰解密密文;由於私鑰只由該用戶自己持有,故可以肯定該檔案必定出自於該用戶;公眾可以驗證該用戶發佈的數據或檔案是否完整、中途有否曾被篡改,接收者可信賴這些數據、檔案確實來自於該用戶,這被稱作數碼簽章,大部份國家已經立法承認數碼簽章擁有等同傳統親筆簽章的法律效力。公鑰可以透過數碼證書認證機構簽授的電子證書形式公佈,接收者透過信任鏈形成一套完整的公開金鑰基礎建設。例如,從網上下載的安裝程式,大部分都帶有程式製作者的數碼簽章,可以證明該程式的確是該作者(公司)發佈的而不是第三方偽造的且未被篡改過(身份認證/驗證)。而現時的網上銀行或購物網站都會使用HTTPS,避免溝通過程中的資訊泄露。
與對稱密碼學的比較
對稱密碼是指在加密和解密時使用同一個金鑰的方式,公鑰密碼則是指在加密和解密時使用不同金鑰的方式。[1]
對稱金鑰加密牽涉到金鑰管理的問題,尤其是金鑰交換,它需要通訊雙方在通訊之前先透過另一個安全的渠道交換共用的金鑰,才可以安全地把密文透過不安全的渠道傳送;對稱金鑰一旦被竊,其所作的加密將即時失效;而在互聯網,如果通訊雙方分隔異地而素未謀面,則對稱加密事先所需要的「安全渠道」變得不可行;非對稱加密則容許加密公鑰隨便散佈,解密的私鑰不發往任何用戶,只在單方保管;如此,即使公鑰在網上被截獲,如果沒有與其匹配的私鑰,也無法解密,極為適合在互聯網上使用。
另一方面,公鑰解密的特性可以形成數碼簽章,使數據和檔案受到保護並可信賴;如果公鑰透過數碼證書認證機構簽授成為電子證書,更可作為數碼身份的認證,這都是對稱金鑰加密無法實現的。
不過,公鑰加密在在計算上相當複雜,效能欠佳、遠遠不比對稱加密;因此,在一般實際情況下,往往通過公鑰加密來隨機建立臨時的對稱秘鑰,亦即對話鍵,然後才通過對稱加密來傳輸大量、主體的數據。
歷史
該思想最早由瑞夫·墨克在1974年提出[2],之後在1976年。惠特菲爾德·迪菲與馬丁·赫爾曼兩位學者以單向函數與單向暗門函數為基礎,為發訊與收訊的兩方建立金鑰。
常見的公鑰加密演算法有:RSA、ElGamal、Rabin(RSA的特例)、DSA、ECDSA。使用最廣泛的是RSA演算法(由發明者Rivest、Shmir和Adleman姓氏首字母縮寫而來)是著名的公開秘鑰加密演算法。
參見
參考文獻
- ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 8–9頁. ISBN 978-7-115-42491-4.
- ^ Publishing a new idea. Merkle個人網站. [2010-12-08]. (原始內容存檔於2010-12-12).