Deffie-Hellman 密鑰交換算法學習小記

前言

Tor在建立虛電路以後,需要與路徑上的節點商量密鑰用於後續分組(packet)內容的多層加密。

使用對稱加密算法時,密鑰交換是個大難題,因此Tor採用的是Deffie-Hellman 密鑰交換算法

先對Deffie-Hellman 密鑰交換算法做了簡單介紹以及應用場景的介紹,然後介紹了該算法的原理,舉了一個例子進行說明。

1. 介紹

Deffie-Hellman 密鑰交換算法是一種安全協議。它可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道創建起一個密鑰。這個密鑰可以在後續的通訊中作爲對稱密鑰來加密通訊內容。
                                                                                                                         – wikipedia

Deffie-Hellman 密鑰交換算法是一種密鑰交換算法。也就是說兩個節點可以通過該算法交換密鑰,但是後續的消息加密要用其他的算法來進行。

2. 原理與示例

Deffie-Hellman 密鑰交換算法基於一個數學難題:離散對數問題。簡單的說:
A=ga mod pA=g^a \ mod \ p, 已知g,a,pg,a,p ,求AA的話容易,直接代入計算即可。但如果要從A,g,pA, g, p反向推導出aa的話則很難。Deffie-Hellman 密鑰交換算法中,密鑰就是這裏的aa

下面用一個例子來說明這個算法的原理和過程。
在這裏插入圖片描述

假設現在Alice和Bob在通信前需要交換密鑰,用於後續數據包的加密。

  1. 選取大素數,並公開

Alice: 選取大素數PaP_a,公開
Bob: 選取大素數Pb,Pb<PaP_b, P_b<P_a,公開

  1. 選取大隨機數,計算key

Alice:

  • 選擇大隨機數XaX_a, Xa<PaX_a<P_a,保密
  • 計算: Ya=PbXa mod PaY_a = P_b^{X_a} \ mod \ P_a,公開

Bob:

  • 選擇大隨機數 XbX_b, Xb<PaX_b<P_a,保密
  • 計算:Yb=PbXb mod PaY_b = P_b^{X_b} \ mod \ P_a,公開
  1. 計算密鑰

Alice的密鑰:Ka=YbXa mod PaKa = Y_b^{Xa} \ mod \ P_a

Bob的密鑰:Kb=YaXb mod PaKb = Y_a^{Xb} \ mod \ P_a

  1. Ka==Kb ?K_a==K_b \ ?

Ka=YbXa mod Pa=(PbXb mod Pa)aX mod Pa=Pb(XaXb) mod Pa=(PbXa mod Pa)Xb mod Pa=YaXb mod PaKa = Y_b^{Xa} \ mod \ P_a \\= (P_b^{Xb} \ mod \ P_a)^X_a \ mod \ P_a \\= P_b^{(X_a * X_b)} \ mod \ P_a \\= (P_b^{X_a} \ mod \ P_a)^{X_b} \ mod \ P_a \\= Y_a^{X_b} \ mod \ P_a

在這裏插入圖片描述

4. 安全性分析

公開的:Pa,Pb,Ya,YbP_a, P_b, Y_a, Y_b

保密的:Xa,Xb,KX_a, X_b, K

  • 優點:

    • 難以破解:Deffie-Hellman 密鑰交換算法的安全性依賴於計算離散對數的困難程度。對於攻擊者來說,知道 YaY_a的情況下,難以破解出XaX_a ;同理 XbX_b 的破解也很困難,所以攻擊者難以求出 KaK_aKbK_b。因此,該算法可以保證通信雙方在透明的信道中安全地交換密鑰。
  • 缺點:

    • 沒有身份驗證信息
    • 拒絕服務
    • 重放攻擊
    • 中間人攻擊

5. 總結

儘管有一些缺點,但是由於該算法能在透明的信道中安全地交換密鑰,因此Tor網絡中需要交換密鑰的時候採用的是該算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章