密碼學(xué)專(zhuān)題 - 密鑰交換算法
10. 密鑰交換算法
10.1 Diffie-Hellman 算法
Diffie-Hellman 算法是第一個(gè)公開(kāi)密鑰算法,早在 1976 年就發(fā)明了。其安全性源于在有限域上計(jì)算離散對(duì)數(shù)比計(jì)算指數(shù)更為困難贞岭。Diffie-Hellman 算法能夠用于密鑰分配 (Alice 和 Bob 能用它產(chǎn)生秘密密鑰)无埃,但是它不能用于加密或解密消息鹦付。
數(shù)學(xué)原理很簡(jiǎn)單屎即。首先贡翘,Alice 和 Bob 協(xié)商一個(gè)大的素?cái)?shù) 和 蚜厉, 是模 的本原元长已。這兩個(gè)整數(shù)不必是秘密的,故 Alice 和 Bob 可以通過(guò)即使是不安全的途徑協(xié)商它們。它們可在一組用戶(hù)中公用术瓮。
協(xié)議如下:
- Alice 選取一個(gè)大的隨機(jī)整數(shù) 康聂,并發(fā)送給 Bob:。
- Bob 選取一個(gè)大的隨機(jī)整數(shù) 胞四,并發(fā)送給 Alice:恬汁。
- Alice 計(jì)算 。
- Bob計(jì)算 辜伟。
和 都等于 氓侧。即使線(xiàn)路上的竊聽(tīng)者也不可能計(jì)算出這個(gè)值,他們只知道 导狡、约巷、、烘豌。除非他們計(jì)算離散對(duì)數(shù)载庭,恢復(fù) 、廊佩,否則無(wú)濟(jì)于事囚聚。因此 是 Alice 和 Bob 獨(dú)立計(jì)算的秘密密鑰。
和 的選取對(duì)系統(tǒng)的安全性有很大的影響标锄。 也應(yīng)該是一個(gè)素?cái)?shù)顽铸。最重要的是 應(yīng)該很大:因?yàn)橄到y(tǒng)的安全性取決于與 同樣長(zhǎng)度的數(shù)的因子分解的難度×匣剩可以選擇任何滿(mǎn)足模 的本原元 谓松,沒(méi)有理由不選擇所能選擇的最小 —— 通常只是個(gè) 1 位數(shù) (實(shí)際上 不必是素?cái)?shù),但它必須能產(chǎn)生一個(gè)大的模 的乘法組子群)践剂。
10.2 三方或多方 Diffie-Hellman
Diffie-Hellman 密鑰交換協(xié)議很容易擴(kuò)展到三人或更多的人鬼譬。在下例中,Alice逊脯、Bob 和 Carol 一起產(chǎn)生秘密密鑰优质。
- Alice 選取一個(gè)大的隨機(jī)整數(shù) ,并發(fā)送給 Bob:军洼。
- Bob 選取一個(gè)大的隨機(jī)整數(shù) 巩螃,并發(fā)送給 Carol:。
- Carol 選擇一個(gè)大的隨機(jī)整數(shù) 匕争,并發(fā)送給 Alice:避乏。
- Alice 發(fā)送給 Bob:。
- Bob 發(fā)送給 Carol:甘桑。
- Carol 發(fā)送給 Alice:''拍皮。
- Alice 計(jì)算 歹叮。
- Bob 計(jì)算 。
- Carol 計(jì)算 春缕。
秘密密鑰 盗胀,沒(méi)有其他人能計(jì)算出 值丧没,這個(gè)協(xié)議很容易擴(kuò)展到四人或更多的人中针炉,只是增加更多的人和增加計(jì)算的輪數(shù)。
項(xiàng)目源代碼
項(xiàng)目源代碼會(huì)逐步上傳到 Github契吉,地址為 https://github.com/windstamp宅荤。
Contributor
- Windstamp, https://github.com/windstamp