DH算法、DHE算法、ECDHE算法演进

ECDHE 算法解决了 RSA 算法不具备前向安全的性质 和 DH 算法效率低下的问题。

ECDHE 算法具有前向安全。所以被广泛使用。

由什么演变而来

DH 算法 -- > DHE 算法 -- > ECDHE 算法

DH 算法是非对称加密算法,该算法的核心数学思想是离散对数。

核心数学思想

离散对数

离散对数 是【离散 + 对数】的两个数学概念的组合。

概念如图:

DH算法、DHE算法、ECDHE算法演进_第1张图片

上图中,底数 a 和模数 p 是离散对数的公共参数(公开的),b 是真数,i 是对数。

知道了对数,就可以用上面的公式计算出真数。

反过来,知道真数却很难推算出对数。

特别是当模数 p 是⼀个很⼤的质数,即使知道底数 a 和真数 b ,在现有的计算机的计算⽔平是⼏乎⽆法算出离散 对数的,这就是 DH 算法的数学基础。

DH 算法

前置背景:

小红(客户端) 和 小明(服务端)、DH 算法中的两个公开参数 P 和 G

第一步:

小红生成一个随机数:a(私钥);小明生成一个随机数:b(私钥);

第二步:

小红根据 a、P、G 计算出公钥:A(公钥);小明根据 b、P、G 计算出公钥:B(公钥);

A = G ^ a ( mod P ); B = G ^ b ( mod P );

第三步:

小红和小明交换公钥 A 和 B;

第四步:

小红根据 B、a、P 运算得到:K(对称加密密钥); 小明根据 A、b、P 运算得到 K(对称加密密钥);

K = B ^ a ( mod P ) = A ^ b ( mod P )


整个密钥协商过程中,小红和小明公开了 4 个信息:P、G、A、B。

根据离散对数的原理,如果 P 是一个大数,在现有的计算机的计算能力是和很难破解出私钥 a、b的。

DHE 算法

来源:

根据私钥的生成方式的分类,DH 算法可以分为两种实现:DHE 算法 和 static 算法(已废弃)

E:ephemeral(临时性的)

作用特性:

让双方的私钥在每次密钥交换通信时,都是随机生成的、临时的。

每个通信过程 的私钥都是没有任何关系的,都是独⽴的,这样就保证了「前向安全」。

ECDHE 算法

来源:

解决 DHE 算法的性能不佳问题。

技术核心:

在 DHE 算法的基础上利用了 ECC 椭圆曲线特性。

具体过程:(在 DH 算法过程的基础上)

  • 小红和小明确定好:使用哪种椭圆曲线 和 曲线上的基点 G (都公开);
  • 小红根据 a、G 得到: QA(公钥);小明根据 b、G 得到: QB(公钥);

QA = aG;QB = bG;

  • 小红和小明交换公钥:QA 和 QB;
  • 小红计算点(x1,y1) = aQB ; 小明计算点(x2,y2) = bQA ;

因为椭圆曲线满足乘法交换律和结合律,所以 aQB = abG = baG = bQA。

  • 根据此次计算的特性,双方的 x 坐标是一样的,所以 x 为会话密钥。

这个过程中,双⽅的私钥都是随机、临时⽣成的,都是不公开的,即使根据公开的信息(椭圆曲线、公钥、基点 G)也是很难计算出椭圆曲线上的离散对数(私钥) 。

 

你可能感兴趣的:(算法,人工智能,机器学习)