本文详细介绍了TLS 1.3的产生背景、命名原因、以及其重大改变等信息。

TLS 1.3产生背景

安全传输层协议(Transport Layer Security,简称 TLS )自标准化从1999年发布Secure Sockets Layer(SSL)的升级版TLS 1.0版,2006年升级TLS 1.1版,2008年升级为目前广泛使用的TLS 1.2版,到2011年发布的TLS 1.2修订版,至今已有近20年的时间。

TLS是保障网络传输安全及数据完整性的一种安全协议,在传输层上对网络连接进行加密。然而,由于TLS的广泛应用,使之成为众矢之的,并通过以下途径进行的攻击:

  • 利用TLS自身存在的不足(如:三次握手攻击、跨协议攻击等)
  • 利用TLS所用密码原语本身的缺陷(如:RC4加密、RSA-PKCS#1 v1.5加密等)
  • 利用TLS实现库中的漏洞(如:心脏出血攻击等)进行攻击。

面对这一系列的攻击,我们一贯的措施是“打补丁”,即针对新的攻击做新的修补。但TLS的应用规模过于庞大,这种措施在实际应用中并不容易全面实施。除此之外,交互双方还要必须经过复杂的TLS握手协议才能开始传输信息。出于种种因素的考虑,IETF 组2014年制定TLS 1.3版,目前最新版本是2017年3月发布的TLS 1.3 draft 19草案版。

TLS 1.3的命名

TLS 1.3是TLS标准更新过程中变动最大的一次,除了对于运行过程中的若干问题如密码套件的选择、密钥的计算方式、握手消息的发送方式等做了更改之外,TLS 1.3还增加了新的握手模式,以满足不同应用场景下的需求。

然而,TLS新标准的名称不是TLS 2.0或者其他,而是TLS 1.3,说明1.3是之前版本的升级,TLS协议的大致框架并未发生本质改变(参见下方TLS 1.2和TLS 1.3握手协议对比图)。
TLS 1.2和TLS 1.3握手协议图

TLS 1.3的重大改变

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

  1. 禁止使用RSA密钥传输算法。
  2. 禁止使用一些安全性较弱的密码原语,如:MD5。
  3. 不再支持重协商握手模式。
  4. 握手消息采取了加密操作。
  5. 实现握手协议和记录协议的密钥分离,使TLS 1.3实现密钥不可区分性质的证明。
  6. 实现会话密钥与整个握手消息的绑定,使TLS避免三次握手攻击。
  7. 记录层只能使用Authenticated Encryption with Additional Data(AEAD)认证加密模式。

相应的改动还有很多,这些改动不仅可以避免之前版本存在的问题,还使TLS的可证明安全分析工作更加方便,这点在TLS 1.2中,由于握手协议和记录协议的重叠,无法实现这一目标的证明。

从目前发布的最新草案来看,TLS 1.3主要支持四种握手模式:

  1. 基于(EC)DHE密钥交换的握手模式
  2. 基于PSK的会话重启,由预共享密钥PSK进行快速简短的握手
  3. 会话重启与(EC)DHE结合的握手,可以提供前向安全性
  4. 基于PSK的0-RTT(round-trip time)握手,客户端利用PSK导出密钥,在第一轮就发送秘密数据,降低了握手的延迟。在此之后还可以继续进行(EC)DHE的密钥交换完成完整的握手(该步为可选)。

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

更多信息

TLS 1.3 draft 19草案版本发布之后,起草者Eric Rescorla在讨论列表中列出了仍待解决的问题供大家讨论,可见对于TLS 1.3的研究也是未来的热点方向。同时,TLS 1.2仍然是目前甚至未来相当一段时间内被普遍使用或者兼容的TLS版本。