迪菲-赫爾曼金鑰交換(diffie–hellman key exchange,簡稱「d–h」) 是一種安全協議。
它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。
(1)、演算法描述
離散對數的概念:
原根:如果a是素數p
的乙個原根,那麼數值:
amod p
,a^2 modp
,…,a^(
p-1) modp
是各不相同的整數,且以某種排列方式組成了從1
到p-1
的所有整數。
離散對數:如果對於乙個整數b
和素數p
的乙個原根a,可以找到乙個唯一的指數i
,使得:
b =(a的i次方)
modp
其中0≦i
≦p-1
那麼指數i
稱為b的以a為基數的模p的離散對數。
diffie-hellman 演算法的有效性依賴於計算離散對數的難度,其含義是:當已知大素數p
和它的乙個原根a後,對給定的b
,要計算i
,被認為是很困難的,而給定i
計算b
卻相對容易。
diffie-hellman演算法:
假如使用者a和使用者b希望交換乙個金鑰。
取素數p
和整數a,a是p
的乙個原根,公開a和p。
a選擇隨機數xa,並計算ya=
a^xa mod p。
b選擇隨機數xb,並計算yb=
a^xb mod p。
每一方都將x保密而將y公開讓另一方得到。
a計算金鑰的方式是:k=(yb) ^xa modp
b計算金鑰的方式是:k=(ya) ^xb modp
證明:
(yb)^ xa mod p = (
a^xb modp)^ xa mod p
= (a^
xb)^ xa mod p = (
a^xa) ^xb mod p (<-- 金鑰即為 a^(xa*xb) mod p) =(
a^xa modp)^ xb mod p = (ya) ^xb mod p
由於xa和xb是保密的,而第三方只有p
、a、yb、ya可以利用,只有通過取離散對數來確定金鑰,但對於大的素數p,計算離散對數是十分困難的。
例子:
假如使用者alice和使用者bob希望交換乙個金鑰。
取乙個素數p
=97和97的乙個原根a
=5。alice和bob分別選擇秘密金鑰xa=36和xb=58,並計算各自的公開金鑰:
ya=a^
xa mod p=5^36 mod 97=50
yb=a^xb mod p=5^58 mod 97=44
alice和bob交換了公開金鑰之後,計算共享金鑰如下:
alice:k=(yb) ^xa mod p=44^36 mod 97=75
bob:k=(ya) ^xb mod p=50^58 mod 97=75
(2)、安全性
當然,為了使這個例子變得安全,必須使用非常大的xa, xb 以及p, 否則可以實驗所有的可能取值。(總共有最多97個這樣的值, 就算xa和xb很大也無濟於事)。
如果 p 是乙個至少 300 位的質數,並且xa和xb至少有100位長, 那麼即使使用全人類所有的計算資源和當今最好的演算法也不可能從a, p和a^(xa*xb) mod p 中計算出 xa*xb。
這個問題就是著名的離散對數問題。注意g則不需要很大, 並且在一般的實踐中通常是2或者5。
在最初的描述中,迪菲-赫爾曼金鑰交換本身並沒有提供通訊雙方的身份驗證服務,因此它很容易受到中間人攻擊。
乙個中間人在通道的**進行兩次迪菲-赫爾曼金鑰交換,一次和alice另一次和bob,就能夠成功的向alice假裝自己是bob,反之亦然。
而攻擊者可以解密(讀取和儲存)任何乙個人的資訊並重新加密資訊,然後傳遞給另乙個人。因此通常都需要乙個能夠驗證通訊雙方身份的機制來防止這類攻擊。
有很多種安全身份驗證解決方案使用到了迪菲-赫爾曼金鑰交換。例如當alice和bob共有乙個公鑰基礎設施時,他們可以將他們的返回金鑰進行簽名。
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p的乙個原根...
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p的乙個原根...
DH金鑰交換演算法
whitfield diffie與martin hellman在1976年提出了乙個奇妙的金鑰交換協議,稱為diffie hellman金鑰交換協議 演算法 diffie hellman key exchange agreement algorithm 這個機制的巧妙在於需要安全通訊的雙方可以用這個...