该报文是对密钥交换算法ECDH参数的补充,但报文中的pubkey和signature是什么用途呢?
协商密钥交换算法是ECDH,使用的公钥是Certificate报文中的subjectPublicKeyInfo,解密应该是用服务器私钥。
签名是在Certificates报文中的algorithmIdentifier字段的encrypted,解密使用的内核中的公钥。
那server key exchange报文中携带的pubkey 和signature有什么作用呢,或者在哪个步骤起作用呢?
不知道你这个问题是否已经解决, 如果还没有解决的话:这种属于ECDHE(EC Diffie-Helloman Server Params)
HTTPS常用的密钥交换算法有两种,一种是RSA(过时),另一种是ECDHE(对称加密)
什么是密钥交换呢?就是通过传递一些参数,并且双方通过计算确定对称加密的密钥,同时如果黑客获取了这些参数,也无法破解出密钥。
而值得注意的是,使用RSA算法需要tls四次握手,ECDHE只需要三次,即本文使用的算法。
ECDHE算法是这样演变的DH->DHE->ECDHE
DHE是DH的实现,其中E(ephemeral:临时性的)代表客户端和服务器都生成临时的随机私钥,而不是只有客户端是随机的,而服务器是固定的
ECDHE是DHE算法的优化,减少了乘法运算,利用ECC椭圆曲线的特性减少计算量。
理解ECDHE才能明白server key exchange到底在干嘛,以及后续的client部分
原文:https://www.likecs.com/default/index/show?id=124371
回到数据:
椭圆曲线:
对椭圆曲线感兴趣的童鞋可以研究一下:https://zhuanlan.zhihu.com/p/40243602