標籤:strong 通訊 tls協議 ali log display 一個 其他 play
迪菲.赫爾曼演算法是通訊線路不安全情況下,交換密鑰的一個演算法,應用於TLS協議中
首先說一下產生密鑰的流程,我們有這樣一種計算叫做求摸運算 mod,
比如:27 mod 17 = 10,也就是求餘數的運算。
現在有兩個通訊者A和B,我們使用一種計算 假如我們這裡選用
3 ^ x mod 17,A和B分別產生一個隨機的整數,這個整數即為x,比如A是2,B是3,那麼A使用2計算:
3^2 mod 17 = 9 ①
B使用3計算:
3^3 mode 17 = 10 ②
然後A將9發送給B,B將10發送給A。當然這裡的9和10是可以被任何人看到。
A收到B的10之後做這樣的計算:
10^2 mod 17 = 15 ③
B收到A的9後做這樣的計算:
9^3 mod 17 = 15 ④
這樣15就可以作為兩人通訊加密的密鑰了。
突然一看還有點不明白,為什麼這樣的計算就能計算出相同的數字15?
mod運算的性質 性質如下:
就像普通運算一樣,他是可交換的、可結合的、可分配的,可以表示為
(a+b)mod n=((a mod n)+(b mod n))mod n
(a?b)mod n=((a mod n)?(b mod n))mod n
(a× b)mod n=((a mod n)×(b mod n))mod n
(a× (b+c))mod n=(((a× b)mod n)+((a× c)mod n)))mod n
A:在做③計算的時候使用的10是由②計算來的,也就是:
(3^3 mode 17)^2 mod 17 = 15 ⑤
B:做的④計算的時候使用的9是由①計算來的,也就是:
(3^2 mod 17)^3 mod 17 = 15 ⑥
那麼接下來就證明為什麼⑤和⑥會相等
(3^3 mode 17)^2 mod 17 == (3^2 mod 17)^3 mod 17
其實證明只是用到上面mod計算性質的第三條
計算⑤等於以下的分解
=((3 * 3 * 3) mod 17)^2 mod 17
=(((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17)^2 mod 17
= ((((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17) * (((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17)) mod 17
=((3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17
= (3 mod 17)^6 mod 17
同理分解⑥ 也可得這個結果
= (3 mod 17)^6 mod 17
⑤⑥是相等的得證。
在這個通訊過程中可以看到A和B分別產生了一個隨機數2和3,只要2和3不泄露,那麼其他人即使知道3 mod 17、9、10這些資訊也得不出15的這個結果。
本文轉自:49468187
迪菲.赫爾曼(Diffie–Hellman)金鑰交換演算法