安全金鑰交換——DH演算法
阿新 • • 發佈:2021-10-25
why:
對稱加密可以解決資料的安全,但是對稱加密的加密金鑰和解密金鑰是一樣的。那就需要有安全的金鑰交換方案。
what:
DH演算法(Diffie-Hellman演算法)可以保證在雙方不直接傳輸原始金鑰的情況下,完成雙方金鑰交換。
DH演算法交換金鑰的步驟。假設甲乙雙方需要傳遞金鑰,他們之間可以這麼做:
- 甲首選選擇一個素數
p
,例如509,底數g
,任選,例如5,隨機數a
,例如123,然後計算A=g^a mod p
,結果是215,然後,甲傳送p=509
,g=5
,A=215
給乙; - 乙方收到後,也選擇一個隨機數
b
,例如,456,然後計算B=g^b mod p
,結果是181,乙再同時計算s=A^b mod p
- 乙把計算的
B=181
發給甲,甲計算s=B^a mod p
的餘數,計算結果與乙算出的結果一樣,都是121。
所以最終雙方協商出的金鑰s
是121。注意到這個金鑰s
並沒有在網路上傳輸。而通過網路傳輸的p
,g
,A
和B
是無法推算出s
的,因為實際演算法選擇的素數是非常大的。所以,更確切地說,DH演算法是一個金鑰協商演算法,雙方最終協商出一個共同的金鑰,而這個金鑰不會通過網路傳輸。
如果我們把a
看成甲的私鑰,A
看成甲的公鑰,b
看成乙的私鑰,B
看成乙的公鑰,DH演算法的本質就是雙方各自生成自己的私鑰和公鑰,私鑰僅對自己可見,然後交換公鑰,並根據自己的私鑰和對方的公鑰,生成最終的金鑰secretKey
secretKey
是相同的。