车联网安全之TLS1.3比TLS1.2更安全在哪里
概述:
车联网中,云与端通信时信息安全大多是通过TLS(Transport Layer Security)协议来保证的。
TLS中文意思为传输层安全性协议,其前身为安全套接层(Secure Sockets Layer,缩写SSL)安全协议。
使用TLS的目的是为车联网通信提供安全及数据完整性保障。
该协议由两部分组成: TLS记录协议(TLS Record)和 TLS握手协议(TLS Handshake)。
较低的层为TLS记录协议,位于某个可靠TLS 记录协议的传输协议 (例如 TCP) 上面。
现在普遍采用的方案都是TLS1.2,由于技术和成本的限制,据了解目前还没有车厂采用TLS1.3协议,是否在未来车联网信息安全技术的选择上会有所改变呢,我们不妨从技术角度对TLS1.2与TLS1.3进行一下分析。
TLS作用:
•所有信息都是加密传播,第三方无法窃听。
•具有校验机制,一旦被篡改,通信双方会立刻发现。
•配备身份证书,防止身份被冒充。
•注:TLS 记录协议负责消息的压缩、加密以及数据的认证。
TLS的位置:
图1:TLS在通信链路中的位置
从图中可以看到,SSL/TSL层的加入,建立了一个安全连接(对传输的数据提供加密保护,可防止被中间人嗅探到可见的明文;通过对数据完整性的校验,防止传输数据被中间人修改)和一个可信的连接(对连接双方的实体提供身份认证)。
TLS1.2的握手(云与端数据通信协议)
下面介绍一下,TLS 1.2协议的密钥交换流程,以及其缺点。
RSA密钥交换步骤如下:
1:client发起请求 (Client Hello) 。
2:server回复certificate。
3:client使用证书中的公钥,加密预主密钥,发给 server (Client Key Exchange) 。
4:server 提取出预主密钥,计算主密钥,然后发送对称密钥加密的finished。
5:client计算主密钥,验证finished,验证成功后,发送ApplicationData了。
缺点:RSA密钥交换不是前向安全算法(私钥泄漏后,之前抓包的报文都能被解密)。
图2:TLS1.2的握手图解
注:图2是单向认证,TLS1.2是支持双向认证的。
TLS1.3的握手(云与端数据通信协议)
相比TLS1.2,TLS 1.3 是这样优化握手的:
1: client发送请求 (ClientHello), extension携带支持的椭圆曲线类型。
且对每个自己支持的椭圆曲线类型计算公钥(POINT)。
公钥放在extension中的keyshare中。
2: server回复Server Hello和certificate等; server选择的椭圆曲线参数, 然后乘以椭圆曲线的base point得到公钥 (POINT) 。
然后提取Client Hello中的key_share拓展中对应的公钥,计算主密钥。
公钥(POINT) 不再和之前的以协议一样放在Server Key Exchange中, 而是放在Server Hello的key_share拓展中。
Client收到server的公钥 (POINT) 后计算主密钥。
图3:TLS1.3的握手图解
TLS 1.3 优点:
•支持 0-RTT 数据传输,在建立连接时节省了往返时间。
•废弃了 3DES、RC4、AES-CBC 等加密组件,废弃了 SHA1、MD5 等哈希算法。
•Server Hello 之后的所有握手消息采取了加密操作, 可见明文大大减少。
•不再允许对加密报文进行压缩、不再允许双方发起重协商。
•DSA证书不再允许在TLS1.3中使用, 导致与TLS1.2不兼容。
•TLS1.3有更快的访问速度
▪TLS 1.2 需要两次往返 (2-RTT) 才能完成握手。
▪TLS 1.3 协议只需要一次往返 (1-RTT) 就可以完成握手。
(注:使用 TLS 1.3 协议,可能会减少将近 100ms 的时间)。