1. ECDHE加密算法的简单数学原理:
ECDHE = ephemeral Elliptic Cure Diffie-Hellman,“短暂-椭圆曲线-迪菲-赫尔曼” 算法。
对于公式:
A = G ^ a % P
B = G ^ b % P
其中,G为底数,P为模数,a为对数,A为真数。
当已知a时,可以推算出A;反之,当已知A时,却几乎无法推算出a。
这就形成了一个“单向函数”。
映射到加密算法中,a为私钥,A为公钥。
并且由于幂运算的交换性,两个表达式的计算结果相等:
B ^ a % P = A ^ b % P
2. ECDHE为什么比RSA更适合做密钥交换?
TLS握手的核心目的在于密钥交换,服务器与客户端“协商”得出主密钥(所谓“协商”就是互相交换几个随机数,你说一个数,我说一个数,最后根据大家的数计算出一个结果)。
不论RSA还是ECDHE,最终计算主密钥的公式都是相同的:
client random + server random + pre-master = master secret
前两个随机数完全明文,保密的关键在于 pre-master。
在RSA中,pre-master 是单纯的由客户端生成,通过服务器的公钥加密后发给服务器,服务器使用私钥解密拿到 pre-master。
一旦服务器的私钥被破解,主密钥就会被攻击者算出,并且会导致过往的主密钥泄漏(RSA不具备“向前安全性”)。
在ECDHE中,服务器生成一个 “椭圆曲线的公钥” Server Params,对应公式中的A,使用私钥加密后将其发送给客户端;
客户端也生成一个“椭圆曲线的公钥” Client Params,对应公式中的B,使用服务器的公钥加密后发给服务器;
而私钥 a 和 b 由服务器和客户端分别保管。
随后客户端与服务器分别在本地计算 pre-master:
在客户端上: A ^ b % P = Server Params ^ b % P = pre-master
在服务器上: B ^ a % P = Client Params ^ a % P = pre-master
由此可见,在ECDHE中,即使破解了服务器的私钥,拿到的也只是客户端发送的 Client Params,没有椭圆曲线的私钥a和b,就无法计算出 pre-master。
就算攻击者的算力强大,能够进一

本文对比了ECDHE与RSA两种加密算法在密钥交换中的应用,详细介绍了ECDHE算法的数学原理及其在TLS握手过程中的实现方式,强调了ECDHE相比RSA在安全性上的优势。
最低0.47元/天 解锁文章
1299





