TLS 1.3概述

http://www.inforsec.org/wp/?p=1960

作者:李新宇 中科院软件所

TLS 1.3是IETF正在制定的TLS 新标准。TLS 自标准化至今已有近20年的时间,自1999年TLS 1.0标准颁布,到后来的TLS 1.1(2006年)和目前得到广泛使用的TLS 1.2(2008年),TLS是保障网络传输安全最重要的安全标准之一。然而,广泛的应用也使得TLS成为了攻击的“众矢之的”,这些攻击或利用TLS设计本身存在的不足(如幸运十三攻击[1]、三次握手攻击[2]、跨协议攻击 [3]等),或利用TLS所用密码原语本身的缺陷(如RC4加密 [4]、RSA-PKCS#1 v1.5加密 [5]等),或利用TLS实现库中的漏洞(如心脏出血攻击[6]等)。面对这一系列的攻击,一直以来我们采取的措施是“打补丁”,即针对新的攻击做新的修补。然而,由于TLS的应用规模过于庞大,不断地打补丁在如此大规模的实际应用中并不容易全面实施。除此之外,交互双方必须运行复杂的TLS握手协议才能开始传输信息,很多情况下我们希望在握手轮数和握手延迟方面可以有更多的选择。出于以上以及其他种种因素的考虑,IETF从2014年开始着手制定一个“clean”的TLS1.3。

问题一:TLS 1.3的制定过程

TLS 1.3的制定过程是“透明”的,即IETF发布的草案中会留下若干问题,相关领域的专家学者可以就这些问题或者自己有疑问的其他问题通过邮件系统进行在线讨论[7],而讨论结果也会在更新后的草案版本中有所体现。目前最新发布的草案版本是TLS 1.3 draft 19 [8](2017年3月)。

除此之外,近两年也出现了一系列对TLS 1.3草案的分析工作,如[9-13],在标准正式颁布之前,这对于我们对TLS的全面理解以及TLS安全防护的设计是大有帮助的。

问题二:为什么是TLS 1.3

有一个比较有趣的细节,TLS新标准的名字并不是TLS 2.0或者其他名字,而是TLS 1.3,即延续了TLS 1.0、1.1和1.2的名称。这说明1.3是之前版本的升级,TLS 协议的大致框架并未发生本质改变。下面两图为TLS 1.2和TLS 1.3握手协议的对比(细节请参照标准文档)。然而,TLS 1.3是TLS标准更新过程中变动最大的一次,除了对于运行过程中的若干问题如密码套件的选择、密钥的计算方式、握手消息的发送方式等做了更改之外,TLS 1.3还增加了新的握手模式,以满足不同应用场景下的需求。

[转帖]TLS 1.3概述-LMLPHP

图一:TLS 1.2握手框架

 [转帖]TLS 1.3概述-LMLPHP

图二:TLS 1.3握手框架

问题三:TLS 1.3做出了哪些重大改动

与之前版本类似,TLS 1.3协议可分为握手协议和记录协议,前者负责密码组件的协商以及安全信道的建立,后者则是在已建立的安全信道中传输秘密信息。TLS 1.3设计的第一个重要目标就是避免之前版本存在的缺陷,为此,一部分相关的改动如下:

(1)禁止使用RSA密钥传输算法。

(2)禁止一些安全性较弱的密码原语如MD5的使用。

(3)不再支持重协商握手模式。

(4)握手消息采取了加密操作,如图二中标有{}的部分。

(5)实现了握手协议和记录协议的密钥分离。

(6)实现了会话密钥与整个握手消息的绑定。

(7)记录层只能使用AEAD(Authenticated Encryption with Additional Data)认证加密模式。

相应的改动还有很多,新发布的草案中也会明确说明相比之前版本所做的改动。这些改动不仅可以避免之前版本存在的问题,如(6)使得TLS可以避免三次握手攻击。同时,也使得TLS的可证明安全分析工作更加方便,如(5)使得TLS 1.3可以实现密钥不可区分性质的证明,而在TLS1.2中,由于握手协议和记录协议的重叠,无法实现这一目标的证明。

从目前发布的最新草案来看,TLS 1.3主要支持四种握手模式:(1)基于(EC)DHE密钥交换的握手模式;(2)基于PSK的会话重启,由预共享密钥PSK进行快速简短的握手;(3)会话重启与(EC)DHE结合的握手,可以提供前向安全性;(4)基于PSK的0-RTT(round-trip time)握手,客户端利用PSK导出密钥,在第一轮就发送秘密数据,降低了握手的延迟。在此之后还可以继续进行(EC)DHE的密钥交换完成完整的握手(该步为可选)。注意到,0-RTT握手第一轮中加密数据所使用的密钥并没有服务器的贡献,因此可能存在重放攻击。另外,握手模式(4)与(2)或者(3)的区别仅在于是否在第一轮就传输秘密数据。

另外,TLS 1.3还定义了一种特殊的认证方式:后握手认证(post-handshake authentication)。在TLS握手过程中,客户端的认证是可选的,所谓后握手认证指的是握手结束后,允许服务器在任何时刻向客户端发起身份认证的申请,作为回复,客户端会发送证书以及对本次连接握手内容的签名,除此之外,还会发送密钥确认消息以提供对整个握手消息和会话密钥的确认。该条认证消息是在记录层的安全信道中传输的。

总结:

TLS 1.3 draft 19发布之后,起草者Eric Rescorla在讨论列表中列出了仍待解决的问题供大家讨论 [14],由此可见TLS 新标准的制定工作仍然在进行中,而对于TLS 1.3的研究也会成为未来的热点方向。与此同时,TLS 1.2仍然是目前甚至未来相当一段时间内被普遍使用或者兼容的TLS 版本,这可能导致TLS 1.2对TLS 1.3的安全性带来影响,这也是未来研究的重要方向。

05-22 10:30