0


关于 TLS Client_Hello 版本的问题分析

关于 TLS Client_Hello 版本的问题分析
一、 报文结构
在这里插入图片描述

如上图,TLS 数据结构由Content Type 、Version、 Length、fragment四部分构成,Version在 Record Layer 和Handshake Protocol中均有出现。
RFC 5246 6.2.1 定义的数据结构
RFC 5246 6.2.1 定义的数据结构

Record Layer中的version定义如下:
RFC 5246 6.2.1 record layer Version的描述
RFC 5246 6.2.1 record layer Version的描述
Record Layer 中的Version为此报文所采用的TLS 协议版本:
在这里插入图片描述

Client Hello中的client_version定义如下:
RFC 5246 7.4.1.2 record layer Version的描述
RFC 5246 7.4.1.2 record layer Version的描述
Client_version为客户端所希望采用的通信协议。

二、 报文解析
原始报文原始报文
科来改变两处version的值

                         **科来改变两处version的值**

加工报文
加工报文

Client报文的封装和解析与Version协议版本无关,即使上下version均修改后,报文仍然可以得到正确的解析。
与之对应的,DTLS报文的封装与解析,与Version相关,修改为无法识别的Version后将无法正确解析,如下图:
原始报文
原始报文
科来改变record layer version的值
科来改变record layer version的值
加工报文
加工报文

对此,RFC 5246 E.1中解释如下:
RFC 5246 E.1
RFC 5246 E.1
SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2保持兼容的clienthello数据格式,只要保持兼容的数据格式,即使未来出现更高的tls 协议版本,服务器也能够进行处理。

三、 Version 版本问题
以上可知,因为client_hello的兼容性,无论Record Layer使用哪种TLS协议版本,client_hello数据报文均能够得到有效的解析,最终完成数据通信过程中的TLS协议版本协商。
对于Record Layer常使用TLS 1.0版本的协议,RFC 5246 E.1解释如下:
RFC 5246 E.1
RFC 5246 E.1
一些服务器没有正确的实现version协商,有一些有问题的TLS 1.0服务器,当客户提供比TLS 1.0更高的版本时,它们会简单地关闭连接。
结论:ClientHello报文的解析与tls版本无关,客户端与服务器进行TLS握手时,因需考虑服务器兼容问题,会先以TLS 1.0发送client hello完成version协商。


本文转载自: https://blog.csdn.net/weixin_44184325/article/details/129625807
版权归原作者 暮日晨光 所有, 如有侵权,请联系我们删除。

“关于 TLS Client_Hello 版本的问题分析”的评论:

还没有评论