close
原理
讓通信雙方在完全沒有對方任何預先資訊的條件下,透過不安全的通道進行密鑰協商以建立一個金鑰,此金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。
DH密鑰至少需要2048 bit (見參考資料3),才能保證有足够的安全。
發送方和接收方設置相同的大數n和g,這兩個數不是保密的,他们可以通過非安全通道来協商这兩個質數,以下為協商方法:
發送方選擇一個大隨機整數x,計算**X = g^x mod n**,發送X给接收者
x: 發送方的私鑰
X: 發送方的公鑰
接收方選擇一個大隨機整數y,計算**Y = g^y mod n**,發送Y给接收者
y: 接受方的私鑰
Y: 接受方的公鑰
雙方計算密鑰: 由"自己的私鑰"和"對方的公鑰"計算密鑰
- 發送方密鑰為k1=Y^x mod n = (g^y mod n)^x mod n = g^(x+y) mod n
- 接收方密鑰為k2=X^y mod n = (g^x mod n)^x mod n = g^(x+y) mod n
其他人可以知道n、g、X和Y,但是他們不能計算出密鑰,除非他们能恢復x和y。
DH算法不能抵擋中間人攻擊,中間人可以偽造假的X和Y分别發送给雙方来獲取他們的秘密密鑰,所以需要保證X和Y的来源合法性。
參考資料
文章標籤
全站熱搜
留言列表