1. 程式人生 > 其它 >安全金鑰交換——DH演算法

安全金鑰交換——DH演算法

why:

  對稱加密可以解決資料的安全,但是對稱加密的加密金鑰和解密金鑰是一樣的。那就需要有安全的金鑰交換方案。

what:

  DH演算法(Diffie-Hellman演算法)可以保證在雙方不直接傳輸原始金鑰的情況下,完成雙方金鑰交換。

  

  DH演算法交換金鑰的步驟。假設甲乙雙方需要傳遞金鑰,他們之間可以這麼做:

  1. 甲首選選擇一個素數p,例如509,底數g,任選,例如5,隨機數a,例如123,然後計算A=g^a mod p,結果是215,然後,甲傳送p=509g=5A=215給乙;
  2. 乙方收到後,也選擇一個隨機數b,例如,456,然後計算B=g^b mod p,結果是181,乙再同時計算s=A^b mod p
    ,結果是121;
  3. 乙把計算的B=181發給甲,甲計算s=B^a mod p的餘數,計算結果與乙算出的結果一樣,都是121。

  所以最終雙方協商出的金鑰s是121。注意到這個金鑰s並沒有在網路上傳輸。而通過網路傳輸的pgAB是無法推算出s的,因為實際演算法選擇的素數是非常大的。所以,更確切地說,DH演算法是一個金鑰協商演算法,雙方最終協商出一個共同的金鑰,而這個金鑰不會通過網路傳輸。

  如果我們把a看成甲的私鑰,A看成甲的公鑰,b看成乙的私鑰,B看成乙的公鑰,DH演算法的本質就是雙方各自生成自己的私鑰和公鑰,私鑰僅對自己可見,然後交換公鑰,並根據自己的私鑰和對方的公鑰,生成最終的金鑰secretKey

,DH演算法通過數學定律保證了雙方各自計算出的secretKey是相同的。