Diffie-Hellman密碼交換是如何運作的?

學校開了個public lecture, 不是很懂,但是感覺蠻有意思的。求大神來深入淺出

類似問題

如何在公開情況下進行私密通訊? - 密碼學


使用對稱加密演算法時,密鑰交換是個大難題,所以Diffie和Hellman提出了著名的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非常困難,這就是離散對數數學難題。

(1)Alice與Bob確定兩個大素數n和g,這兩個數不用保密

(2)Alice選擇另一個大隨機數x,並計算A如下:A=gxmod n

(3)Alice將A發給Bob

(4)Bob 選擇另一個大隨機數y,並計算B如下:B=gymod n

(5)Bob將B發給Alice

(6)計算秘密密鑰K1如下:K1=Bxmod n

(7)計算秘密密鑰K2如下:K2=Aymod n

K1=K2,因此Alice和Bob可以用其進行加解密


以前看到的,雖然不太正式,但是非常易於理解。圖片來源於網路,侵刪。


問題還沒有關閉啊,我來個更容易理解的。

1.Alice想給Bob傳信,為了防止快遞員中途偷看,於是她把信裝在了一個盒子里,並給盒子上了第一把鎖鎖A。

2.Bob收到來自Alice的箱子後,給箱子加了第二把鎖鎖B,然後讓快遞員把加了兩把鎖的箱子送回去。

3.Alice收到加了鎖A和鎖B的箱子後,用自己的鑰匙將鎖A打開,然後讓快遞員把只加了鎖B的箱子送還給Bob。

4.Bob得到箱子後,用自己的鑰匙打開了鎖B,得到了信件。

全劇終。


推薦閱讀:

RSA 1024和AES 256,這兩種加密演算法理論上哪種更安全?
能否設計出「可以杜絕主辦方作弊的」匿名投票系統?
誰能最簡單的詳解橢圓曲線演算法,secp256k1 是如何生成公鑰和私鑰的?
疑似被新浪微博官方盜號,如何收集證據起訴?
將大於2的正整數分解成2個因數(不是質因數),並求其各結果間兩因數最小非負數差,這樣的數有研究的意義嗎?

TAG:數學 | 編程 | 信息安全 | 密碼學 | Diffie-Hellman密鑰交換演算法 |