ECDHE椭圆曲线DH密钥交换算法的原理理解简单版

时间:2025-02-17 09:43:10

理解准备

首先我们给自己一个概念就是,设有一个式子Q=kP,给定kPQ很容易,给定QPk很困难,但是这个式子不是简单的乘法,我们理解为一种复杂的算法。

原理流程


1、确定使用哪个椭圆曲线,ECDHE是以椭圆曲线上的数学问题为基础。
2、确定曲线基点G,曲线基点我们将其理解为一个公共的算法材料
(其中使用的椭圆曲线和曲线基点都是公开的)
3、通信A端生成随机数A,通信B端生成随机数B
4、Qa=AG    Qb=BG  //将随机数a或b与G进行运算,还是理解为一种特殊运算
5、于是A的私钥为(A,Qa),B的私钥为(B,Qb)
6、双方交换各自生成的Qa、QbA端得到Qb,B端得到Qa

7、我们将A端的随机数B端生成的Qb,以及B端的随机数A端生成的Qa进行相乘得AQb和BQa(不是简单的相乘,是特殊算法)
8、因为Qb=BG ,A端已知AQb,将Qb=BG带入AQb得:AQb=ABG

9、因为Qa=AG,B端已知BQa,将Qa=AG带入BQa得:BQa=BAG

于是A和B双方都获得到了公共密钥ABG

ECDHE的保密性

在整个密钥的协商过程中仅仅公布了基点G,以及公共使用的椭圆曲线,还有QaQb,我们现在使用文章开篇的材料:Q=kP,知道kP简单求出Q,但知道QP难求出k,其中k在这个公式扮演的就是A端和B端上生成的随机数的角色Q就是各端上随机数与G相乘的结果P就是G基点。因为知道Q和G基点很难求出A端和B端上生成的随机数,所以中间人就不可能知道最后的密钥ABG的值。而且我们根据公式可以知道最终对称密钥的公式是ABG,即两个随机数加上一个公知数G,如果中间人要破解对称密钥,那么就必须获得A和B,但是如果要破解A和B那么它就需要根据Qa和G去推出A,根据Qb和G去推出B,但是我们已经知道了这两个推导是十分困难的,而且他还要破解两个。

总结:

由于ECDHE的背后使用的数学原理是椭圆曲线,所以在安全性和速度上都较传统的使用离散对数的DH算法有了不少的提高,ECDHCE能够使用较少的密钥位数实现传统DH算法高密钥位数的安全,在ECC椭圆曲线数学问题衍生出来的多个安全算法,如ECC非对称加密,ECDSA签名算法,都在加密位数、速度和安全上有了很大的提升,但是因为随机生成器可能留有后门以及一些其他的因素,使得ECC相关的衍生算法没有完全盖过RSA的风头。