迪菲 - 赫爾曼金鑰交換是一種可以再通訊雙方之間安全地交換金鑰的方法。
按步驟進行
通訊方a | 通訊方b
生成[金鑰p]
[金鑰p]
--->
生成[金鑰sa]
| 生成[金鑰sb]
[金鑰p]
+[金鑰sa]合成[金鑰p-sa]
|[金鑰p]
+[金鑰sb]合成[金鑰p-sb]
[金鑰p-sa]
--->
<---
[金鑰p-sb]
[金鑰p-sb]
+[金鑰sa]合成[金鑰p-sb-sa]
|[金鑰p-sa]
+[金鑰sb]合成[金鑰p-sa-sb]
合成:合成結果與順序無關,[a+b]+c 與[a+c]+b的結果一致。合成不可逆,也就是說由[a+b]和a無法得到b。
在上述過程中,ab雙方在金鑰傳遞階段傳遞的資訊有:p [p-sa] [p-sb] ,而二者之後通訊使用的秘鑰則是[p-sa-sb](或者是 [p-sb-sa],二者相同)。即使通訊的資訊竊取,也無法得到ab雙方之後將使用的加密金鑰。
以上這些是抽象的模型描述,這種方法的關鍵是有這麼一種合成方法滿足上述要求。
具體來說,金鑰p是兩個數字p和g,p是乙個非常大的素數,g則是素數p所對應的生成元中的乙個。
假設金鑰[sa]的值為x,金鑰[sb]的值為y,那麼這個合成操作就可以表示為:
#[金鑰p]+[金鑰sa]合成[金鑰p-sa]
g^x mod p
#[金鑰p]+[金鑰sb]合成[金鑰p-sb]
g^y mod p
相應的之後的合成操作可以表示為:
#[金鑰p-sb]+[金鑰sa]合成[金鑰p-sb-sa]
(g^y mod p)
^x mod p = g^
(xy) mod p
#[金鑰p-sa]+[金鑰sb]合成[金鑰p-sa-sb]
(g^x mod p)
^y mod p = g^
(xy) mod p
這個合成的逆操作,也就是:根據素數 p、生成元 g 和「g x mod p」求出 x 的問題就是「離散對數問題」,人們至今還未找到這個問題的解法,而迪菲 - 赫爾曼金鑰交換正是利用了這個數學難題。只要解不出這個x,呢麼這種演算法就可行。
公開金鑰加密演算法中的rsa演算法也是利用了素數的某些性質來實現的。
迪菲 赫爾曼金鑰交換
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。迪菲 赫爾曼通過公共通道交換乙個資訊,就可以建立乙個可以用於在...
迪菲 赫爾曼金鑰交換
迪菲 赫爾曼金鑰交換 英語 diffie hellman key exchange,縮寫為d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。對稱加密的問題就是雙方使用同一把鑰匙加密解密,此鑰匙容易...
最優二叉樹 赫爾曼樹(學習記錄)
注意vector儲存的記憶體位址可能會變,所以如果用vector來儲存所有節點的話,需要先resize好容器,保證期間不進行節點的增減。multiset是允許關鍵字重複的容器 include include include include using namespace std struct nod...