一、作者
這個密鑰交換方法,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)、馬丁·赫爾曼(Martin Edward Hellman)於1976年發表。
二、說明
它是一種安全協議,讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道建立起一個密鑰,這個密鑰一般作為“對稱加密”的密鑰而被雙方在后續數據傳輸中使用。DH數學原理是base離散對數問題。做類似事情的還有非對稱加密類算法,如:RSA。
三、應用場景
其應用非常廣泛,在SSH、VPN、Https...都有應用,勘稱現代密碼基石。
四、DH算法描述
DH算法是相當簡單、直觀的,我直接把wikipedia的描述拿過來了:
上圖中,Alice和Bob通過DH算法生成秘鑰K,
其中:
- g、p是2個非私密數據;
- a、b是私密數據;
- A是根據:g、p、a算出來的非私密數據;B是根據:g、p、b算出來的非私密數據;
- 把A從a傳到b,根據求K公式,b得到秘鑰k;a同理;
注:
- p是一個大素數。p的位數決定了攻擊者破解的難度。
- g則不需要很大,並且在一般的實踐中通常是2或者5。
再來個直觀的圖說明下:
五、安全與風險
- 爆破成本:
How enormous a computation, you ask? Possibly a technical feat on a scale (relative to the state of computing at the time) not seen since the Enigma cryptanalysis during World War II. Even estimating the difficulty is tricky, due to the complexity of the algorithm involved, but our paper gives some conservative estimates. For the most common strength of Diffie-Hellman (1024 bits), it would cost a few hundred million dollars to build a machine, based on special purpose hardware, that would be able to crack one Diffie-Hellman prime every year.
美國NSA幾億美元的破譯機,每年可以破一個1024bit的Diffie-Hellman素數。不過呢,一個1024bit素數的破解也是很致命的......而512bit,現在被認為是非常容易破解的。
```
- 泄密風險:私密數據a,b在生成K后將被丟棄,因此不存在a,b過長時間存在導致增加泄密風險。
- 中間人攻擊:由於DH在傳輸p,g時並無身份驗證,所以有機會被實施中間人攻擊,替換雙方傳輸時的數據。