logo

SSLVPN-Diffie-Hellman算法

作者:马鹏程2021.12.22 16:49浏览量:98

简介:混合云-VPN上云

1.前言

根据百度百科的解释: Diffie-Hellman密钥交换算法是一种确保共享KEY安全穿越不安全网络的方法, 它是OAKLEY的一个组成部分. Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议, 称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm). 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥. 然后可以用这个密钥进行加密和解密. 但是注意, 这个密钥交换协议/算法只能用于密钥的交换, 而不能进行消息的加密和解密, 双方确定要用的密钥后, 要使用其他对称密钥操作加密算法实际加密和解密消息.
该算法的基本原理是: 在有限域上计算离散对数非常困难.

2.单向函数

单向函数(one-way function)的概念是公开密钥密码的中心. 单向函数的基本思想就是单向函数计算起来相对容易, 但求逆却非常困难. 也就是说, 已知x, 我们很容易计算f(x), 但已知f(x), 却难于计算出x.
在Diffie-Hellman密钥交换算法中运用的单向函数就是模运算:

f = x mod p

例如, 设p = 7, 已知x = 9, 则f(x) = 2, 非常容易计算. 但是若已知f(x) = 2, 要逆向计算出x, 几乎是不可能的, 因为x的可能性非常多.

3.Diffie-Hellman密钥交换步骤

第一步: 张三和李四公开一个随机数a和素数模n, 假设分别为3和17(就是公钥), 这个信息是张三, 李四和王麻子(窃听者)都掌握的.

第二步:张三随机选择一个数, 记为s1, 假设为15(就是私钥), 计算单项函数 f(s1) = 3 ^ s1 mod 17的值, 记为ret1(此处为6), 然后发送给李四. 在这个过程中, 李四得到单项函数的值(6), 窃听者王麻子也能截获.

第三步:李四也选择一个数, 记为s2, 假设为13(就是私钥), 计算单项函数f(s2) = 3 ^ s2 mod 17的值, 记为ret2(此处为12), 然后发送给张三. 在这个过程中, Bob得到单项函数的值(12), 窃听者王麻子也能截获.

第四步:定义函数 g1(x) = ret2 ^ x mod n, 张三计算g1(s1)的值作为密钥, 此例中为10 (g1(15) = 12 ^ 15 mod 17 = 10).

第五步:定义函数 g2(x) = ret1 ^ x mod n, 李四计算g2(s2)的值作为密钥, 此例中为10(g2(13) = 6 ^ 13 mod 17 = 10).

在整个过程中, 张三和李四得出的密钥是一致的, 因此双方可以用共享的密钥来加密. 而窃听者王麻子由于没有私钥信息, 无法计算出密钥. 其中较为关键的一点是:张三和李四计算得出的密钥一定是一致的。

1640162889335.jpg

相关文章推荐

发表评论