TLS1.2握手过程
- Published on
本文最近一次更新于 925 个天前,其中的内容很可能已经有所发展或是发生改变。
前言
最近再看tcp/ip的书籍,记录下https中的TLS1.2的握手过程
实践
用 wireshark
打开我自己的网站 owlnas.cc做测试,可以看到 tls 握手的完整问题。
过滤条件
ssl && (ip.dst == 180.97.34.94 || ip.src == 180.97.34.94)
TLS握手完整过程
【client】 | 【server】 | |
---|---|---|
client Hello | --> | |
<-- | Server Hello | |
<-- | Certificate | |
<-- | Server Key Exchange | |
<-- | Server Hello Done | |
Client Key Exchange | --> | |
Change Cipher Spec | --> | |
Encrypted Handshake Message | --> | |
---- | ||
<-- | New Session Ticket | |
<-- | Change Cipher Spec | |
<-- | Encrypted Handshake Message |
1.Client Hello
浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
2. Server Hello
服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
3.Certificate
服务器给出数字证书
多数电子商务应用都需要服务器 端身份验证。服务器如果需要验证客户端的身份,那么服务器会发一个“Certificate Request”给浏览器,而在很多实现中,服务器一般不需要验证客户端的身份)
4.Server Key Exchange
服务器给出公钥signature
,运行 Diffie-Hellman
算法生成的参数
5. Server Hello Done
服务器发起消息结束的信号
6.Client Key Exchange
浏览器获取服务器发来的pubkey,计算出Diffie-Hellman客户端需要的参数pubkey,发给服务器。
7.Change Cipher Spec
通信双方加密策略转换信息,主要是让另一方知道它已经生成了会话密钥,并将切换到加密通信。
8.Encrypted Handshake Message
加密握手的消息
9.New Session Ticket
完成上面的步骤,可以说TLS的握手阶段已经完成了,但是,服务器还会发送一个Session Ticket给浏览器。 sessionticket 包含了这个 ticket 的生命周期、id、长度。用于握手阶段用来建立 TLS 连接。
其他
TLS1.2与1.0、1.1的区别
TLS 1.0 TLS 1.1 在计算 finish 时,进行的是 MD5+ SHA1组合方式运算,而在 TLS 1.2下,摘要算法变成了单次 SHA256。
TLS 1.3中的握手有什么不同?
TLS 1.3 不支持 RSA,也不支持易受攻击的其他密码套件和参数。它还缩短了 TLS 握手,使 TLS 1.3 握手更快更安全。
Diffie -Hellman(迪菲-赫尔曼)算法
Diffie-Hellman(迪菲-赫尔曼)算法是一种用于密钥交换的加密算法,其目的是在不安全的通信渠道中,让两个或多个参与者可以协商出一个共享的密钥,以便进行加密通信。该算法由惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)于1976年提出,因此得名。Diffie-Hellman算法的基本原理是利用数论中的离散对数问题。它涉及到两个主要步骤:
- 密钥协商阶段:参与者之间通过公开的通信渠道交换信息,但不直接交换密钥。在这个阶段,每个参与者选择自己的私密信息,并使用公开的参数进行计算,生成一个公开的临时值。这些临时值会被发送给其他参与者。
- 密钥推导阶段:在密钥协商阶段完成后,参与者利用对方发送的公开临时值和自己的私密信息,以及一些公开的参数,计算出一个共享的密钥。这个共享的密钥只有参与者自己才能计算出来。 这样,通过Diffie-Hellman算法,即使在通信过程中,攻击者可以截获公开的通信信息,但由于无法解决离散对数问题,因此很难推导出实际的密钥,从而保证了通信的安全性。Diffie-Hellman算法被广泛用于安全通信协议中,比如SSL/TLS协议用于加密互联网通信。
参考资料
https://www.cloudflare.com/zh-cn/learning/ssl/what-happens-in-a-tls-handshake/