searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

tls client hello报文解析

2024-06-25 09:46:52
219
0

完整的TLS流

先经过3次TCP握手,然后发tls client hello报文,开始tls握手。

client hello 包:client主动向server打招呼:这个是handshake握手包,版本是1.0,这个包的长度是2019字节;

核心的handshake protocol,字段较多

前面3个:handshake type类型、length长度、version版本。

random:client随机生成一个32字节的数发给server。作用有几个:1)防止重放攻击  2)后续用于完整性校验   3)生成encrypt-key,开始加密应用层数据。

session ID:服务器生成session id,存放本次session协商好的对称密钥。下次通信时,客户端带上session id,server就知道用哪个对称密钥继续加密数据。不过session id有些缺陷,已被session ticket替代。

cipher suites:client列举自己支持的加密套件。前面是非对称加密算法,协商对称算法密钥的;后面都是加密应用数据的对称算法。后续server会根据自己的情况选择合适的加密套件。

extension:有好多分项,都有不同的含义,先看server name,这里访问的是webide。

supported groups:由于安全性和效率问题,tls1.3已经不再使用RSA,而是椭圆曲线。不同的椭圆曲线对应不同的曲线形状,会产生不同的公钥;不同的基点也会导致产生不同的公钥,所以这里有5种不同的椭圆曲线参数供client选择。

session ticket:作用和session id类似,这里还是client hello阶段,这个字段暂时没有值;保留字段,带上空值,也可以向服务器标明client支持session ticket功能。

application layer protocol negotiation:协商tls上层的应用层协议,这里采用的是http1.1协议

key share:client列举出了自己支持的加密套件,并把所有的非对称加密算法的公钥都一并带上,server收到后可以直接根据接受的ECDHE和client的公钥生成自己的公钥和对称密钥。

psk key exchange models:psk_dhe_ke=1,这里双方约定用非对称加密方法ECDHE协商一个对称密钥

supported version:支持的tls版本,tls1.2、tls1.3

pre-shared key:psk本质也是一串ID,这里有113字节,最早是server和client通过tls成功握手后把key和其他一些信息通过HMAC转换后发给client;client后续访问可以直接带上这个PSK,就不用再做密钥协商,节约时间。

其中4个extension是必须的:psk_key_exchange_modes、pre_shared_key、key_share、supported_versions。

0条评论
作者已关闭评论
a****k
16文章数
0粉丝数
a****k
16 文章 | 0 粉丝
原创

tls client hello报文解析

2024-06-25 09:46:52
219
0

完整的TLS流

先经过3次TCP握手,然后发tls client hello报文,开始tls握手。

client hello 包:client主动向server打招呼:这个是handshake握手包,版本是1.0,这个包的长度是2019字节;

核心的handshake protocol,字段较多

前面3个:handshake type类型、length长度、version版本。

random:client随机生成一个32字节的数发给server。作用有几个:1)防止重放攻击  2)后续用于完整性校验   3)生成encrypt-key,开始加密应用层数据。

session ID:服务器生成session id,存放本次session协商好的对称密钥。下次通信时,客户端带上session id,server就知道用哪个对称密钥继续加密数据。不过session id有些缺陷,已被session ticket替代。

cipher suites:client列举自己支持的加密套件。前面是非对称加密算法,协商对称算法密钥的;后面都是加密应用数据的对称算法。后续server会根据自己的情况选择合适的加密套件。

extension:有好多分项,都有不同的含义,先看server name,这里访问的是webide。

supported groups:由于安全性和效率问题,tls1.3已经不再使用RSA,而是椭圆曲线。不同的椭圆曲线对应不同的曲线形状,会产生不同的公钥;不同的基点也会导致产生不同的公钥,所以这里有5种不同的椭圆曲线参数供client选择。

session ticket:作用和session id类似,这里还是client hello阶段,这个字段暂时没有值;保留字段,带上空值,也可以向服务器标明client支持session ticket功能。

application layer protocol negotiation:协商tls上层的应用层协议,这里采用的是http1.1协议

key share:client列举出了自己支持的加密套件,并把所有的非对称加密算法的公钥都一并带上,server收到后可以直接根据接受的ECDHE和client的公钥生成自己的公钥和对称密钥。

psk key exchange models:psk_dhe_ke=1,这里双方约定用非对称加密方法ECDHE协商一个对称密钥

supported version:支持的tls版本,tls1.2、tls1.3

pre-shared key:psk本质也是一串ID,这里有113字节,最早是server和client通过tls成功握手后把key和其他一些信息通过HMAC转换后发给client;client后续访问可以直接带上这个PSK,就不用再做密钥协商,节约时间。

其中4个extension是必须的:psk_key_exchange_modes、pre_shared_key、key_share、supported_versions。

文章来自个人专栏
云组件
16 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0