HackPluto's Blog

Wireshark分析TLS1.2通信过程

字数统计: 1.1k阅读时长: 4 min
2020/07/27 Share

Wireshark分析TLS1.2通信过程

本文主要记录一次HTTPS通信过程中的数据包,使用wireshark抓包,着重分析TLS协议数据包

数据包地址

数据包比较小


先是TCP三次握手的过程,从目标端口是443可以看出这是一个HTTPS通信

TLS协议

TLS协议栈主要分为两层

  • 底层:TLS记录协议
  • 上层:TLS握手协议、TLS密码变化协议、TLS警告协议

TLS记录协议:建立在可靠的传输协议(如TCP)之上,对上层协议进行封装,提供保密性和完整性。上层协议实现客户和服务器之间会话的建立、认证和密钥协商。

TLS握手协议

位于SSL记录协议之上

用途:建立SSL会话和连接,协商协议版本、密码算法、认证、共享秘密,等等

协议格式

主要流程

  • Client Hello:客户端向服务端打招呼;携带支持的协议、支持的安全套件供服务端选择;

  • Server Hello:服务端回应客户客户端的招呼信息;结合客户端的信息,选择合适的加密套件;

  • Certificate:服务端向客户端发送自己的数字证书(此证书包含服务端的公钥),以实现验证身份;

  • Server Key Exchange:服务端向客户端发送基于选择的加密套件生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

  • Server Hello Done:服务端向客户端表示响应结束;

  • Client Key Exchange:客户端向服务端发送自己生成的公钥(此公钥为椭圆曲线的公钥,用于协商出对称加密的密钥);

  • Change Cipher Spec:变更密码规范;告知服务端/客户端,以后的通信都是基于AES加密的;

  • Encrypted Handshake Message:基于协商生成的密钥,用AES加密验证信息让服务端/客户端进行认证;如果对方可以解密,则双方认证无误开始通信;

  • New Session Ticket:是优化SSL连接的一种方法,此处不做特别说明

具体分析

下面根据wireshark的抓包具体分析

Client Hello

客户端向服务端发送建立连接请求,客户端会携带支持的版本号、支持的加密套件、客户端随机数(用于协商对称加密的密钥)、支持的HTTP协议

Server Hello


根据客户端所携带的内容,确定建立连接版本、加密套件,生成服务端随机数(用于协商对称加密的密钥),我们可以看到服务器用的版本也是TLS 1.2 ,协商的加密套件是:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TCP segment of a reassembled PDU


在分析的过程中,看到了几个含有TCP segment of a reassembled PDU字样的数据包,而且是在TLS握手协议中间的TCP包,我觉得很奇怪就查询了这个字段的含义。

TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段。比如由多个数据包组成的HTTP协议的应答包

总的来说:
此处PDU是指上层(HTTPS)的Protocol Data Unit,意指上层协议的一个协议段太长,无法放入单个TCP数据包。如果你在wireshark中禁用相关上层协议分析,就不会显示这个东西了。

Certificate, Server Key Exchange, Server Hello Done

Certificate:向客户端发送由权威ca签发的证书,以验证身份

Server Key Exchange:基于Server Hello阶段选择的ECDHE交换密钥算法,发送椭圆曲线生成的公钥

Server Hello Done:服务端结束打招呼阶段

Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

Client Key Exchange:基于协商选择的ECDHE交换密钥算法,发送它生成的椭圆曲线的公钥

Change Cipher Spec:变更密码规范协议,它非常简单,就是一条通知消息,告知对方以后的通信都是加密的;

Enctypted Handshare Message:生成对称加密密钥之后,发送一条加密的数据,让服务端解密验证;

New Session Ticket, Change Cipher Spec, Encrypted Handshake Message

New Session Ticket:TLS建立连接的优化方法

Change Cipher Spec:告诉客户端以后的通信是加密的

Enctypted Handshare Message:发送一条经过密钥加密的数据,让客户端验证;验证通过则开始进行加密通信;

Applicatiion Data:表示客户端/服务端已经开始基于TLS进行通信了;

CATALOG
  1. 1. Wireshark分析TLS1.2通信过程
    1. 1.1. TLS协议
      1. 1.1.1. TLS握手协议
    2. 1.2. 具体分析
      1. 1.2.1. Client Hello
      2. 1.2.2. Server Hello
      3. 1.2.3. TCP segment of a reassembled PDU
      4. 1.2.4. Certificate, Server Key Exchange, Server Hello Done
      5. 1.2.5. Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
      6. 1.2.6. New Session Ticket, Change Cipher Spec, Encrypted Handshake Message