基于Diffie-Hellman协议 的安全密钥交换的实现原理
來源:shiyanbar.com,僅作為筆記,侵刪?
用Diffie-Hellman協(xié)議進行密鑰交換的過程簡述如下:
? ? ? ? 選取兩個大數(shù)p和g并公開,其中p是一個素數(shù),g是p的一個模p本原單位根(primitive root module p),所謂本原單位根就是指在模p乘法運算下,g的1次方,2次方..…(p-1)次方這p-1個數(shù)互不相同,并且取遍1到p-1;
對于Alice(其中的一個通信者),隨機產生一個整數(shù)a,a對外保密,計算Ka=g個a modp,將Ka發(fā)送給Bob;
對于Bob(另一個通信者),隨機產生一個整數(shù)b,b對外保密,計算Kb=gb mod p,將Kb發(fā)送給Alice;
在Alice方面,收到Bob送來的Kb后,計算出密鑰為:key=Kb^a mod p=(g^b)^a=g^(b*a)mod p;
對于Bob,收到Alice送來的Ka后,計算出密鑰為:key=Ka ^b mod p=(g^a)^b=g^(a*b)mod p。
攻擊者知道p和g,并且截獲了Ka和Kb,但是當它們都是非常大的數(shù)的時候,依靠這四個數(shù)來計算a和b非常困難,這就是離散對數(shù)數(shù)學難題。
? ? ? ? 要實現(xiàn)Diffie-Hellman密鑰交換協(xié)議,需要能夠快速計算大數(shù)模冪,在模冪算法中,仍需計算大數(shù)的乘法和模運算,所以整個過程需要三個算法:高精度乘法,高精度除法(用來同時求出一個大數(shù)除以另一個大數(shù)的商和余數(shù)),快速模冪算法。
高精度的乘法和除法可以程序模擬手算。快速模冪算法也是從手算中總結出規(guī)律來,例如:
5/8=(5^2)^4=(25)^4=(25^2)^2=(625)^2,
這樣,原來計算58需要做8次乘法,而現(xiàn)在則只需要三次乘法,分別是:52,252,6252。這就是快速模冪算法的基礎。將算法描述出來,那就是:
算法M:輸入整數(shù)a,b,p,計算ab mod p:
M1.初始化c=1
M2.如果b為0,則c就是所要計算的結果。返回c的值。算法結束。
M3.如果b為奇數(shù),則令c=ca mod p,令b=b-1,轉到M2。
M4.如果b為偶數(shù),則令a=a a mod p,令b=b/2,轉到M2。
總結
以上是生活随笔為你收集整理的基于Diffie-Hellman协议 的安全密钥交换的实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android dialog editt
- 下一篇: (4)ArcGIS 10.2 去除要素的