关于 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协商。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值