1. 程式人生 > >Diffie-Hellman金鑰交換演算法

Diffie-Hellman金鑰交換演算法

這裡寫圖片描述
選取兩個大數p和g並公開,其中p是一個素數,g是p的一個模p本原單位根(primitive root module p),所謂本原單位根就是指在模p乘法運算下,g的1次方,2次方……(p-1)次方這p-1個數互不相同,並且取遍1到p-1;

對於Alice(其中的一個通訊者),隨機產生一個整數a,a對外保密,計算Ka = g^a mod p,將Ka傳送給Bob;
對於Bob(另一個通訊者),隨機產生一個整數b,b對外保密,計算Kb = g^b mod p,將Kb傳送給Alice;

在Alice方面,收到Bob送來的Kb後,計算出金鑰為:key = Kb^a mod p = g^(b*a) mod p mod p;
對於Bob,收到Alice送來的Ka後,計算出金鑰為:key = Ka ^ b mod p = g^(a*b) mod p mod p。

攻擊者知道p和g,並且截獲了Ka和Kb,但是當它們都是非常大的數的時候,依靠這四個數來計算a和b非常困難,這就是離散對數數學難題。