阅读前提:具备密码学基础,并了解TLS1.2的工作细节
主要内容来源:RFC6347
DTLS设计的目标是为了构建TLS over UDP,但是TLS 依赖传输层提供有序可靠性保证,因此不能直接运行在UDP之上,需要对协议本身依赖传输层有序可靠的地方做一定修改。DTLS旨在以最小的改动做到最大程度上匹配TLS。
TLS依赖传输层有序的地方有:
这篇blog是关于QUIC协议如何使用TLS1.3来建立安全的QUIC连接,以及QUIC层如何对packet进行加密认证保护的内容,主要内容来自于rfc9001,结合自己的理解做了一些内容上的调整。原RFC文档个人认为写的非常全面易读了(至少比QUIC本身的RFC9000要易读多了。。),有兴趣的最还是要去读一读原文。
+--------------+--------------+ +-------------+
| TLS | TLS | | QUIC |
| Handshake | Alerts | | Applications|
| | | | (h3, etc.) |
+--------------+--------------+-+-------------+
| |
| QUIC Transport |
| (streams, reliability, congestion, etc.) |
| |
+---------------------------------------------+
| |
| QUIC Packet Protection |
| |
+---------------------------------------------+
和tls1.3 over tcp不一样,quic和tls1.3并非严格的上下层关系,而是quic连接的建立过程会复用tls1.3的handshake协议来进行密钥协商,tls1.3依赖quic transport提供的传输层可靠性保证。因此quic 和tls1.3的关系是同一个layer中的两个组件。
这篇blog是关于tls1.3协议handshake部分的介绍和分析,主要内容来自于rfc8446,这里主要侧重tls1.3区别于tls1.2的部分,并尝试搞清楚tls1.3这些变更的设计动机。
tls1.3将握手概括为三个阶段