Deffie-Hellman(簡稱 DH) 密鑰交換是最早的密鑰交換算法之一,它使得通信的雙方能在非安全的信道中安全的交換密鑰,用於加密後續的通信消息。 Whitfield Diffie 和 Martin Hellman 於 1976 提出該算法,之後被應用於安全領域,比如 Https 協議的 TSL(Transport Layer Security) 和 IPsec 協議的 IKE(Internet Key Exchange) 均以 DH 算法作爲密鑰交換算法。
求模公式
(a^x mod p)^y mod p = a^(xy) mod p
證明如下:
令 a^x = mp + n, 其中 m, n 爲自然數, 0 <= n < p,則有
C = (a^x mod p)^y mod p
= ((mp + n) mod p)^y mod p
= n^y mod p
= (mp +n)^y mod p
= a^(xy) mod p
密鑰交換原理
設 A, B 兩方進行通信前需要交換密鑰,首先 A, B 共同選取 p 和 a 兩個素數,其中 p 和 a 均公開。之後 A 選擇一個自然數 Xa,計算出 Ya,Xa 保密,Ya 公開;同理,B 選擇 Xb 並計算出 Yb,其中 Xb 保密,Yb 公開。之後 A 用 Yb 和 Xa 計算出密鑰 K,而 B 用 Ya 和 Xb 計算密鑰 K
K = Yb^Xa mod p
= (a^Xb mod p)^Xa mod p
= a^(Xa * Xb) mod p 根據上述求模公式
= (a^Xa mod p)^Xb mod p
= Ya^Xb mod p