TLS1.3和TLS1.2的区别
1、**协商机制改变,TLS1.3借助扩展进行**交换,TLS1.3只需要三次握手交互,TLS1.2则需要四次握手。
首先看TLS1.2,它通过KeyExchange
进行**协商,即ServerKeyExchange
和ClientKeyExchange
,那么**交换本身就需要一个交互来回,所以总共有四次握手交互。
再看TLS1.3,通过ClientHello
和ServerHello
的扩展进行**交换,那么就省去了1.2版本中KeyExchange
的过程,也就省去了一次握手。
2、添加0-RTT模式,以某些安全属性为代价。
当client
和server
共享一个预共享**PSK
(从外部获得或通过一个以前的握手获得)时,TLS 1.3允许client
在第一个发送出去的消息的early data
中携带数据,client
使用这个PSK
来认证server
并加密early data
。即在握手之前就有了PSK
时,在第一次发送ClientHello
时就可以发送加密数据,达到0-RTT数据传输的目的。
但是,0-RTT
数据的安全性会降低(缺少前向安全)。
3、ServerHello
之后的所有握手消息都被加密,引入了加密扩展EncryptedExtension
。
4、全面使用ECC
密码算法,删除不具有前向安全的密码套件。
5、其他还包括新的**派生函数,删除多余的报文消息(ChangeCipherSpec
,但我抓包测试时还是有),以及其他算法的改进。