一、为了弄清楚TLS1.3的内部结构,以为有必要将TLS的整个结构重新整理一遍,方便后续在作握手协议的形式化分析的时候可以不遗漏每一个加密和认证的的环节。git
TLS1.3不论文在协议内容上仍是性能上都较以前的TLS1.2版本有较大的改变,这里首先归纳性的表征一下存在的差别:github
更换了新的密码套件,旧的密码套件不在支持TLS1.3,不提供乡下兼容的特性。新的密码套件一共五个以下:算法
同时新的密码组定义不一样,并未指定证书类型,秘钥交换机制,客户端在ClientHello中提供了key_Share,在主握手完成以后才能创建会话,在握手结束和会话创建之间存在间隙,在后续的会话恢复机制中能够产生影响。TLS1.3链接中不能从新协商。秘钥改变以后再也不像对方发送change_cipher_spec报文信息。更多的握手信息会被加密。更多类型的消息能够实现扩展 ,安全
TLS1.3完全废弃了RSA秘钥交换算法,以前的1.2的版本先计算MAC再加密的方法存在不少安全隐患,再也不容许对加密报文进行压缩处理,TLS1.3弃用的加密算法以下:服务器
LTS1.3 仅采用AEAD类对称加密算法做为惟一的加密选项,同时引入了新的秘钥协商机制 PSK(PreSharedKEy)less
图 TLS在传输层保障信息传输的安全示意图性能
二、对TLS1.3 握手协议的过程分析加密
从效率性能上讲,TLS1.2的版本 握手须要协商多个参数,握手过程须要往返两个(RTT),相比较1.3的版本在参数,秘钥,秘钥套件和往返次数上都减小。因此TLS1.3放弃了向后兼容的方法,转而向更加安全的措施。.net
三、恢复会话过程orm
TLS1.3恢复会话能够直接发送加密后的应用数据,不须要额外的TLS握手,所以 “0-RTT” 握手就是指恢复加密传输层不须要二外的RTT,可是在第一次进行彻底握手的时候,是须要 1-RTT的。可是存在的一个缺点是,TLS1.3 0-RTT如今没法保证向前安全(ForwardSecrecy),若是当攻击者经过某种手段能够获取到 Secession Ticket key ,攻击者就能够解密以前的加密数据。(注意:环节该问题的办法: 能够经过设置 SeverConfiguration 和Expiration Date字段,使得与Session Ticket Key 相关的DH静态参数在短期内过时)
四、对TLS1.2 协议形式化分析的改进
TLS 1.2 握手示意图
五、TLS1.3 协议形式化描述
形式化描述以前对TLS协议的握手过程要抽象出信息交互过程
TLS降级
TLS1.3 握手协议过程
参考文献:
cn.bing.com TLS1.3/QUIC 是怎样作到 0-RTT 的
https://timtaubert.de/blog/2015/11/more-privacy-less-latency-improved-handshakes-in-tls-13/
https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/
https://www.wolfssl.com/tls-1-3-performance-part-2-full-handshake-2/
https://crypto.stackexchange.com/questions/47423/tls1-3-encrypted-handshake
https://tlseminar.github.io/tls-13/