TLS 1.3 如何为HTTPS连接提速

OpenSSL官方宣布,即将发布的新版本(OpenSSL 1.1.1)将会提供TLS 1.3的支持,而且还会和之前的1.1.0版本完全兼容。TLS1.3是一种新的加密协议,它既能提高互联网用户的访问速度,又能增强安全性,同时大大提升HTTPS连接的速度性能。

与TLS1.2及更早版本的区别

在配置正常的情况下,TLS1.2会很安全。但TLS1.2具有很强的可配置性,因此一些有安全漏洞的站点,为兼容老版本的浏览器没有关闭一些旧的属性。TLS1.3信奉“少即是多”哲学,取消了对一些老旧而衰弱的加密方式的支持,TLS1.2中原有的大量特性都被删除了,这些特性包括:

�RSA密钥传输——不支持前向安全性

�CBC模式密码——易受BEAST和Lucky 13攻击

�RC4流密码——在HTTPS中使用并不安全

�SHA-1哈希函数——建议以SHA-2取而代之

�任意Diffie-Hellman组——CVE-2016-0701漏洞

�输出密码——易受FREAK和LogJam攻击

TLS 1.3版本是对规范的重大修改,一些工作方式也非常不同:

�有一些新的密码套件仅在TLS1.3下工作。一些旧的密码套件无法用于TLS 1.3连接。

�新的密码套件定义方式不同,且并未详细规定证书类型(如RSA、DSA、ECDSA)或密钥交换机制(如DHE或ECHDE)。这对密码套件的配置有暗示作用。

�客户端在客户问候消息(ClientHello)中提供一个“key_share”。这会对“组”配置产生影响。

�直到主握手完成以后,会话才会建立。在握手结束和会话建立之间可能会有一个间隙(理论上,会话可能根本不会建立),并可能对会话恢复代码产生影响。

�在TLS 1.3版本中,重新磋商是不可能的。

�现在大部分握手都会被加密。

�更多类型的消息现在可以有扩展(这对定制扩展API和证书透明系统有影响)。

�在TLS 1.3连接中不再允许使用DSA证书。

完整的HTTPS连接建立步骤

在Web领域,传输延迟(Transmission Latency)是Web性能的重要指标之一,低延迟意味着更流畅的页面加载以及更快的API响应速度。而一个完整的HTTPS链接的建立大概需要以下四步:

第一步:DNS查询

浏览器在建立链接之前,需要将域名转换为互联网IP地址。一般默认是由你的ISP DNS提供解析。ISP通常都会有缓存的,一般来说花费在这部分的时间很少。

第二步:TCP握手(1 RTT)

和服务器建立TCP连接,客户端向服务器发送SYN包,服务端返回确认的ACK包,这会花费一个往返(1 RTT)

第三步:TLS握手(2 RTT)

该部分客户端会和服务器交换密钥,同时设置加密链接,对于TLS 1.2或者更早的版本,这步需要2个RTT

第四步:建立HTTP连接(1 RTT)

一旦TLS连接建立,浏览器就会通过该连接发送加密过的HTTP请求。

我们假设DNS的查询时间忽略不计,那么从开始到建立一个完整的HTTPS连接大概一共需要4个RTT,如果是浏览刚刚已经访问过的站点的话,通过TLS的会话恢复机制,第三步TLS握手能够从2 RTT变为1 RTT。

总结:

建立新连接:4 RTT + DNS查询时间

访问刚浏览过的连接:3 RTT + DNS查询时间

TLS1.3如何减少延迟

那么TLS 1.3是如何减少延迟的?先简单回顾一下TLS 1.2是如何工作的。

TLS 1.2建立新连接


TLS 1.3 如何为HTTPS连接提速_第1张图片

1.在一次新的握手流程中,Client

Hello总是客户端发送的第一条消息,该消息包含客户端的功能和首选项,与此同时客户端也会将本身支持的所有密码套件(Cipher Suite)列表发送过去

2.Server Hello将服务器选择的连接参数传送回客户端,同时将证书链发送过去,进行服务器的密钥交换

3.进行客户端部分的密钥交换,此时握手已经完成,加密连接已经可以使用

4.客户端建立HTTP连接

TLS 1.2会话恢复


TLS 1.3 如何为HTTPS连接提速_第2张图片

会话恢复:

在一次完整协商的连接断开时,客户端和服务器都会将会话的安全参数保留一段时间。希望使用会话恢复的服务器会为会话指定唯一的标识,称为会话ID。

1.希望恢复会话的客户端将相应的会话ID放入ClientHello消息中,提交给服务器

2.服务器如果愿意恢复会话,将相同的会话ID放入Server Hello消息返回,使用之前协商的主密钥生成一套新密钥,切换到加密模式,发送完成信息

3.客户端收到会话已恢复的消息,也进行相同的操作。

TLS 1.3建立新连接


TLS 1.3 如何为HTTPS连接提速_第3张图片

1.在一次新的握手流程中,客户端不仅会发送Client Hello同时也会将支持的密码套件以及客户端密钥发送给服务端,相比于TLS1.2,该步骤节约了一个RTT

2.服务端发送Server Hello,服务端密钥和证书

3.客户端接收服务端发过来的信息,使用服务端密钥,同时检查证书完整性,此时加密连接已经建立可以发送HTTP请求,整个过程仅仅一个RTT

TLS 1.3 0-RTT会话恢复

TLS 1.3 如何为HTTPS连接提速_第4张图片

TLS 1.2中通过1个RTT即可完成会话恢复,那么TLS

1.3是如何做到0 RTT连接的?当一个支持TLS 1.3的客户端连接到同样支持TLS 1.3的服务器时,客户端会将收到服务器发送过来的Ticket通过相关计算,一起组成新的预共享密钥,PSK(PreSharedKey)。客户端会将该PSK缓存在本地,在会话恢复时在Client Hello上带上PSK扩展,同时通过之前客户端发送的完成(finished)计算出恢复密钥(Resumption Secret)通过该密钥加密数据发送给服务器。服务器会从会话Ticket中算出PSK,使用它来解密刚才发过来的加密数据。至此完成了该0-RTT会话恢复的过程。

以上简单描述了TLS 1.3建立连接的大致流程,也解释了为什么TLS 1.3相比于之前的TLS 1.2会有更出色的性能表现。

总结

TLS 1.3将是Web性能以及安全的一个新的里程碑,为HTTPS连接提速,淡化了大家之前对使用HTTPS性能上的隐忧。随着HTTP/2的不断普及,全网HTTPS将成为一种必然。

沃通SSL证书

沃通SSL证书帮助网站快速实施HTTPS加密。沃通SSL证书Pre系列产品支持所有浏览器和各种新老操作系统,支持各种新老移动终端,并提供细致的本地化客户服务和专业的一对一技术支持,十余年的证书行业服务经验,帮助用户应对各类复杂应用场景,更加快捷地完成证书部署。

你可能感兴趣的:(TLS 1.3 如何为HTTPS连接提速)