关于SSL握手过程有几个随机数的疑惑(抓包的协议是TLSv1.2)

网上面的说法不一样,书本上面的也有所不同,自己抓包也和书本不一样。

出自:计算机网络 自顶向下
在这里插入图片描述

出自:计算机网络
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面的抓包是前三次握手👆(TLLSv1.2)

随机数到底有没有传呢?书本上面没有提及,但是从抓包来看是有的,在两次hello报文里面。
计算机网络里面的在第三次握手的时候用服务器端的公钥加密随机数,然后服务器端拿到之后生成相应的主密钥。
自顶向下里面的在第三次握手传递的是主密钥。
都没有提及两次hello的随机数,不知道是没提及还是他们认为没有。

最大的可能是版本不同,但是我也不知道怎么可以使用老版本的SSL协议。如果有的话欢迎评论区告诉我一下。
个人认为就像书本里面那样,有了服务器公钥,就可以协商主密钥了。


更新:
秘钥协商过程

涉及到几个参数,client random,server random,pre master key,master key,其中master key是最终协商出来的秘钥,后续对称加密通讯都是使用master key。

(1)master key是使用伪随机算法,结合client random,server random,pre master key三个随机因素生成的。

(2)client random和server random是客户端和服务端分别生成的随机数,这样增加了随机性。(也就是两次的hello报文里面的)

(3)pre master key也是通过一定规则计算出来的随机数。

第一步,客户端随机生成随机值Ra,计算Pa = Ra * Q(x, y),Q(x, y)为全世界公认的某个椭圆曲线算法的基点。将Pa发送至服务器。
第二步,服务器随机生成随机值Rb,计算Pb =Rb * Q(x, y)。将Pb发送至客户端。
由于算法的不可逆转性,外界无法通过Pa、Pb推算出Ra、Rb
第三步,因为算法保证了Ra * Pb= Rb *Pa,所以客户端计算S = Ra * Pb;服务器计算S = Rb *Pa,提取其中的S的x向量作为密钥(pre master key)

实际传递的随机数只有两个,第三个随机数是根据前两个生成的。

最下面更新部分出自下面:
https://blog.csdn.net/lblblblblzdx/article/details/88684788


再一次更新:
TLS
ECDHE加密算法

第一次握手:携带随机数,支持的加密算法,TLS版本号
第二次握手:携带证书(里面有服务器公钥,公钥的摘要,域名),随机数,选中的加密算法,确认支持客户端的版本,服务端椭圆曲线公钥 Server Params
第三次握手:①验证证书,利用服务器的 Server Params算出pre-master,然后pre-master和两个随机数生成主密钥。携带客户端椭圆曲线公钥 pubkey,以及主密钥,然后用服务端的公钥进行加密,然后发送,通知服务器使用对称加密进行通信。②再发送一个用主密钥将之前发送的消息加密发送给服务器,用来校验生成的主密钥是否正确,同时验证消息是否被篡改。
第四次握手:用私钥解密得到客户端的椭圆曲线公钥Client Params,算出pre-master,加上前面两个随机数,算出主密钥。然后解密后面用主密钥加密的消息,验证主密钥以及数据是否被纂改。

出自:
https://blog.csdn.net/ArtAndLife/article/details/114296094

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值