https 问题记录

Client Params 和 Server Params 都可以被截获,为何中间人没法通过这两个信息计算 Pre-Master Secret 呢?

(1):客户端随机生成随机值Ra,计算Pa(x, y) = Ra * Q(x, y),Q(x, y)为全世界公认的某个椭圆曲线算法的基点。将Pa(x, y)发送至服务器。 (2):服务器随机生成随机值Rb,计算Pb(x,y) = Rb * Q(x, y)。将Pb(x, y)发送至客户端。 (3):客户端计算Sa(x, y) = Ra * Pb(x, y);服务器计算Sb(x, y) = Rb *Pa(x, y) (4):算法保证了Sa = Sb = S,提取其中的S的x向量作为密钥(预主密钥)。

补充:
Pa(x, y)就是Client Params里的pubkey,Pb(x,y)就是Server Params里的pubkey,最关键的地方就在于,计算Pa(x, y)所需的Ra并不是client random,而是内存里又产生的一个随机数,而这个随机数和Server Params里的pubkey一起生成master secret,服务端那边同理。所以呢,「客户端和服务器用Client Params、Server Params一通算,算出pre master」这句话本身就是错的,应该是「客户端用自己内存中的随机数Ra(不是发送出去的那个client random)和Server Params里的pubkey算出pre master,而服务器用自己内存中的随机数Rb和Client Params里的pubkey能也计算出pre master」。数学上能证明二者相等,有点类似乘法交换律。所以当会话结束之后,相关内存被释放,pre master被释放,Ra,Rb也被释放,就再也不能重复算出master secret。这也是ECDHE中E的由来,E的意思是ephemeral,短暂的。同时值得注意的是,Server Params里的pubkey和证书里的公钥没什么关系。在ECDHE里,证书里的公钥的功能退化为身份验证,只是用来证明这些请求确实来自服务器。这也是为什么ECDHE比RSA更安全的原因,因为服务器的公钥不参与master secret的过程,哪怕服务器的私钥在未来哪一天被泄漏了,也无法得知master secret。这就满足了「前向安全」

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值