目录
一、TLS认证流程
1. TLS协议介绍
TLS(Transport Layer Security,传输层安全协议)是一种用于确保网络通信安全的标准安全协议,它通过使用加密算法和证书机制来保护数据的机密性、完整性以及验证通信双方的身份 。TLS 协议位于应用层和传输层之间,可以支持多种应用层协议,如HTTP、SMTP、XMPP等 。
2. TLS单向认证
单向认证时,Server发送服务器证书,请求Client认证,认证成功后根据协商好的加密套件加密数据,进行传输。
3. TLS双向认证
双向认证时,Server发送服务器证书,并请求Client发送证书,双方认证成功后根据协商好的加密套件加密数据,进行传输。
4. 会话恢复
(1)首次会话Server生成SessionID,客户端记录后,下次会话携带同一sessionid,可以恢复之前建立的会话;
(2)服务器发送New Session Ticket,这个票据包含了恢复会话所需的所有信息,并且是加密的;客户端记录后,携带session ticket,只有Server能解密,若验证通过,可直接沿用原有的会话数据,包括协商算法和密钥,这是一个更加安全的会话恢复机制
二、报文解析
发送TLS协议版本信息、会话ID、支持的加密套件、用于计算秘钥的随机数等
(2) Server Hello
服务器在能够找到一组可接受的算法后,将响应Client Hello消息并发送hello;
发送服务器版本、选择的加密算法、密钥交换算法、用于计算秘钥的随机数、MAC算法、根据客户端会话参数生成的会话ID(用于会话恢复)等。
(3)Certificate
发送服务器端证书,X.509证书包含公钥。
在wireshark抓包中,可以选中Certificate,右键选择导出分组字节流,保存为.crt文件,可以查看具体的证书内容。
(4)Server Key Exchange
server发送完成密钥协商算法EC D-H密钥交换的一系列参数:
server使用自己的私钥对EC D-H算法中所涉及的参数进行加密,加密数据发送给client;
client收到后,使用Pubkey解密。
(5)Certificate Request
server请求验证--单向/双向,消息包含服务器端所支持的证书类型和CA列表。
(6)Server Hello Done
(7)Certificate
发送客户端证书。
(8)Client Key Exchange
client根据server随机数,计算对称秘钥;
发送给Server ECDH算法公钥Pubkey
(9)Certificate verify
client发送签名(利用HMAC值/对称秘钥进行签名)
(10)ChangeCipherSpec
client告知服务端,客户端已经准备使用之前协商好的加密套件加密数据并传输。
(11)ChangeCipherSpec
server已经准备使用之前协商好的加密套件加密数据并传输。
总结
介绍了TLS单向认证、双向认证、会话恢复流程,根据报文解析深入理解上述流程。