HTTPS(三):使用ECDHE加密算法的TLS握手流程

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

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。

  就算攻击者的算力强大,能够进一

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值