1. 程式人生 > >迪菲.赫爾曼(Diffie–Hellman)密鑰交換算法

迪菲.赫爾曼(Diffie–Hellman)密鑰交換算法

n) 信息 這樣的 aud 情況下 兩個 成了 b+ 裏的

迪菲.赫爾曼算法是通信線路不安全情況下,交換密鑰的一個算法,應用於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的這個結果。

本文轉自:https://blog.csdn.net/wangbaolongaa/article/details/49468187

迪菲.赫爾曼(Diffie–Hellman)密鑰交換算法