APP下载

DTLS 1.3协议简介及其在物联网通信中的应用

2018-10-21孙晓鹏

大科技·C版 2018年4期
关键词:密钥字节头部

孙晓鹏

摘 要:SSL/TLS是应用非常广泛的网络安全协议,其目的是为通信双方建立一个安全的信道,提供认证、机密性和完整性保护。DTLS基于TLS实现,为运行在数据报(UDP)之上的应用提供安全保护。TLS和DTLS目前的版本是1.2,已经使用了很长时间,在目前的应用环境尤其是物联网通信中出现了一些弊端,因此新的TLS1.3和DTLS1.3协议草案提出了很多改进,本文简要介绍了DTLS1.3协议及其给物联网通信带来的优化。

关键词:TLS;DTLS;DTLS1.3;0-RTT;IoT;物联网

中图分类号:TP391.44 文献标识码:A 文章编号:1004-7344(2018)11-0264-02

引 言

SSL/TLS协议是应用非常广泛的网络安全协议,它的主要目的是在不可信的通信环境中为通信的双方建立起一个安全的通道,能够防止通信过程中被偷听、避免消息被篡改和伪造。

SSL协议最初由网景公司设计实现,于1996年SSL3.0成为RFC标准,并在之后改称为TLS(Transport Layer Security),版本号1.0(实际对应SSL3.1)。经过几年的发展,2008年的RFC5246定义了TLS1.2版本,成为目前最广泛使用的网络安全协议。然而TLS1.2距现在也已过去了近十年,在此期间出现的针对TLS协议的攻击与日俱增,网络应用对于传输性能的要求也越来越高,TLS迫切需要一次更新,于是TLS1.3的制定也就备受关注。

1 DTLS介绍

SSL/TLS被设计运行在可靠连接(例如TCP)之上。但是在实际使用中,有部分应用对于时延或者带宽比较敏感,例如VoIP和物联网传感器等,这些应用希望运行在数据报协议(例如UDP)之上。于是DTLS应运而生,它将TLS进行了一些改造,使得能够运行在不可靠的数据报协议上。DTLS为这些基于数据报协议的应用提供了与TLS相当的机密性、完整性和认证保护。

DTLS的第一个版本是1.0,基于TLS1.1协议,于2006年发布。目前的版本是1.2,基于TLS1.2协议,2012年发布。DTLS没有1.1版本,因为人们希望DTLS和TLS的版本号之后能够同步,由此也可见DTLS和TLS两者的紧密关1.1TLS1.2协议。

TLS1.2协议由四个子协议组成,分别是握手协议、密码状态变更协议、告警协议和记录层协议,它们之间以及和传输层、应用层协议的关系如图1。

TLS连接由客户端发起,双方通过握手协议协商协议版本、协商密码算法和参数、并(可选的)认证对方身份。握手协议成功后双方计算会话密钥,通过密码状态变更协议通知对方开始加密。协商过程中产生的错误会通过告警协议通知对端。握手协议、密码状态变更协议、告警协议,以及对应用层协议的传输,都封装在记录层协议里。

1.1 握手协议

TLS1.2完整的握手流程如下:

其中,带有*的消息是可选的,ChangeCipherSpec属于密码状态变更协议。

握手协议通过ClientHello和ServerHello消息交换协议版本、密码算法和相关参数,通过Certificate和CertificateVerify来验证身份。如果握手成功完成,双方会计算出通信所使用的会话密钥,发送用会话密钥加密的Finished消息来确认握手过程的完整性。

TLS1.2支持会话重用机制,如果双方之前进行过完整的握手,那么通过在ClientHello和ServerHello中使用之前的会话ID来重用会话。会话重用的握手流程如下:

1.2 记录层协议

记录层协议用来承载上层协议,这里的上层协议除了包括TLS的握手和告警等协议外,还包括应用层协议。TLS记录层会对上层协议做分段、加密等处理后发送,然后在接收方做解密和重组。记录层协议的格式和处理方式如图2。

其中类型、协议版本、负载长度这三个字段属于记录层协议的头部,总共占用5个字节。

1.3 DTLS协议

为了适用于数据报协议,DTLS对TLS进行了一些改造,主要有以下几点:

(1)握手协议头部增加了序列号、分片偏移、分片长度三个字段,用于解决丢包和乱序问题,保证握手协议的可靠性。

(2)记录层协议头部在协议版本和负载长度之间增加了epoch和序列号两个字段。epoch用于区分同一UDP“连接”中的多个DTLS会话,系列号用于解决丢包引起的HMAC计算错误以及防止重放攻击。这两个字段的添加使得DTLS记录层头部长度增长到了10个字节。

(3)为了一定程度上防御DoS攻击,添加了HelloVerifyRequest消息来要求客户端记录状态。

2 DTLS1.3的主要变化

DTLS1.3是基于TLS1.3制定的,因此DTLS1.3的主要变化在很大程度上包含了TLS1.3所作的修改。

2.1 TLS1.3的变化

相对于1.2版本,TLS1.3做了相当大的修改,主要有以下几点:

(1)僅保留了AEAD(Authenticated Encryption with Associated Data)算法,去掉了所有其他的对称加密和HMAC算法。

(2)增加了0-RTT模式,可以在握手协商的同时传输应用数据。

(3)去掉了RSA和DH相关的密码套件,保证前向安全性。

(4)从ServerHello之后的消息就开始进行加密。

(5)密钥生成算法有PRF变更为安全性更高的HKDF算法。

(6)不再使用握手消息中的协议版本协商机制,改为使用专门的协议版本选项。

TLS1.3完整的握手流程如下:

其中,+表示握手消息中附带的选项,*表示可选的消息,{ }表示该消息使用发送端的握手密钥加密,[ ]表示该消息使用发送端的业务密钥加密。

完整协商完成后,服务端可以给客户端发送若干会话票据(SessionTicket),每个会话票据代表了一个预共享密钥,之后的协商可以使用会话票据指示的预共享密钥来进行。在此基础上新添加了0-RTT模式,0-RTT模式的协商流程如下:

0-RTT模式下客户端在发起ClientHello消息的同时就可以发送应用层数据,这里的应用层数据会使用客户端早期业务密钥加密(用()包围的消息),而早期密钥会通过ClientHello中pre_shared_key选项的指示和之前完整协商产生的会话票据(SessionTicket)来计算。

2.2 DTLS1.3的改进

除了继承TLS1.3的变化,DTLS1.3还做了一些其他改进,主要是在记录层协议方面。

首先是修改了密文记录层头部的结构,去掉了协议版本字段,将epoch和序列号两者压缩合并为一个四字节的字段。

其次是定义了更短的DTLSShortCiphertext的密文记录层结构,去掉了类型字段,进一步压缩epoch和序列号字段为两个字节,甚至去掉了长度字段,改为由下面的传输层(UDP)来指示DTLS记录层消息的长度。

另外,DTLS1.2中的HelloVerifyRequest消息变更为TLS1.3中的HelloRetryRequest+cookie机制。对握手协议中的某些消息增加了ACK机制以保证可靠性。

3 DTLS协议和物联网通信

物联网尤其是窄带物联网(NB-IoT)对网络通信的要求比较苛刻,大都需要低时延、高并发、很多时候要求使用UDP协议因为有些设备甚至没有TCP协议栈。另外物联网的安全需求也是显而易见的,诸如智能门锁、远程控制等业务是必须要有安全性保护的。基于UDP的DTLS协议就非常适合物联网通信场景,实际上,RFC7925专门定义了TLS/DTLS在物联网环境下实施的规范。

目前的DTLS1.2协议完整握手需要2个RTT,会话重用需要1个RTT,但如果加上HelloVerifyRequest的话则分别都需要在加上一个RTT。在DTLS1.3中,完整握手只需要1个RTT,加HelloRetryRequest则需要2个RTT,而借助新增加了0-RTT模式,客户端和服务端只需要首次进行完整握手,之后都可以在握手的同时就发送应用数据。就握手协商来说,DTLS1.3大大减少了连接建立的时延,使得物联网应用可以在需要的时候更迅捷的進行联系。

应用层数据需要封装到DTLS记录层中传输。在DTLS1.2中,记录层头部需要10个字节;而在DTLS1.3中,记录层头部减少至7个字节,如果使用了DTLSShortCiphertext则记录层头部仅需2个字节。DTLS记录层头部的缩小对物联网应用影响巨大,因为物联网本身传输的数据量大都很小,有时甚至只传输几个字节,在这种情况下DTLS1.2记录层头部的10个字节就成为一定的流量负担,而DTLS1.3则很大程度上减轻了这种负担。

4 结 语

本文描述了TLS和DTLS协议的结构和握手流程,然后分析了DTLS1.3版本的变化,最后说明了这些变化对于物联网通信的影响。

随着物联网的发展,通信的安全始终伴随,而安全性保护如何尽量少的影响应用业务,是DTLS设计和实现人员的目标和努力方向。

参考文献

[1]Dierks, T. and E. Rescorla, “The Transport Layer Security(TLS) Protocol Version 1.2”, RFC 5246, DOI 10.17487/RFC5246, August 2008.

[2]Rescorla, E. and N. Modadugu, “Datagram Transport Layer Security Version 1.2”, RFC 6347, DOI 10.17487/RFC6347, January 2012.

[3]Eric Rescorla,“The Transport Layer Security(TLS) Protocol Version 1.3”, draft-ietf-tls-tls13-26, Mar 2018.

[4]E. Rescorla and H. Tschofenig and N. Modadugu,“The Datagram Transport Layer Security(DTLS) Protocol Version 1.3”, draft-ietf-tls-dtls13~26,Mar 2018.

[5]沈若愚,卢盛祺,赵运磊.TLS1.3协议更新发展及其攻击与防御研究[J].计算机应用与软件,2017,11:049.

收稿日期:2018-2-20

猜你喜欢

密钥字节头部
幻中邂逅之金色密钥
幻中邂逅之金色密钥
字节跳动瞄准教育等新业务
BitLocker密钥恢复二三事
旅行休憩小头枕
长颈鹿
蚝壳巧制作
人类进入“泽它时代”
一种新的动态批密钥更新算法
敲打孩子头部会引起癫痫吗?