迪菲.赫尔曼(Diffie–Hellman)密钥交换算法

Posted wjq310

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迪菲.赫尔曼(Diffie–Hellman)密钥交换算法相关的知识,希望对你有一定的参考价值。

迪菲.赫尔曼算法是通信线路不安全情况下,交换密钥的一个算法,应用于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)密钥交换算法的主要内容,如果未能解决你的问题,请参考以下文章

DH 算法迪菲-赫尔曼算法QUIC协议和HTTP3.0

DH 算法迪菲-赫尔曼算法QUIC协议和HTTP3.0

DH 迪菲-赫尔曼密钥交换

Diffie-Hellman密钥交换算法

Diffie-Hellman密钥协商算法

Diffie-Hellman密钥交换