首页>网络安全资讯>TLS 1.3的到来将HTTPS性能提升到一个新台阶

TLS 1.3的到来将HTTPS性能提升到一个新台阶

几天前,OpenSSL官方宣布即将发布的新版本(OpenSSL 1.1.1)将会提供TLS 1.3的支持,而且还会和之前的1.1.0版本完全兼容,这当然是个好消息。如果说HTTP/2是当前互联网Web发展的讨论热点之一,那么下一个热点应该就是TLS 1.3了。

Google Trend上HTTPS的搜索热度

谈到TLS那么就不得不说回HTTPS,2016年应该算是国内站点使用HTTPS激增的一年,从Google Trend上也可以看出该关键词的搜索热度从2016年开始飙升。不光如此,所有从事互联网Web技术相关的开发人员,也应该能够明显感受到,身边使用HTTPS的网站越来越多了。

为什么近两年来HTTPS被大家更广泛的应用?

一方面得益于「中国特色」的网络安全环境,运营商层出不穷的各种劫持给用户和开发者都上了生动的一课。用户每天被来自各种广告联盟漫天的牛皮癣广告和运营商话费余额查询所包围。不仅如此,随着公司流量不断的被劫持导流到其他地方。搞得很多公司连苦心经营的市场蛋糕都没办法安心的吃,终于大部分公司坐不住了。当然声讨和口诛笔伐是没有用的,所以业务上拥有HTTPS和HTTP DNS解决方案,也就顺理成章的成了技术公司在伟大防火墙内生存的必备技能之一。

另一方面,从安全角度讲,互联网上通过明文传输数据本身就是一件高风险的事情,什么数据泄露、中间人攻击、用户被盗号、被竞争对手背后捅刀子、App下载被劫持…也是屡见不鲜。

既然HTTPS可以很好的解决上述问题,为什么大家之前不尽快的用起来?

问题在于:考虑到HTTPS要比HTTP更加消耗服务器资源,而且相比于HTTP建立连接握手时需要消耗的大量时间影响用户端的体验,使得很多人望而却步,尤其是在移动网络下。当然,还有SSL证书的成本也要算进去(SSL证书价格)。

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查询时间

那么TLS 1.3以及0-RTT是如何减少延迟的?

在此之前我们需要简单回顾一下TLS 1.2是如何工作的。

TLS 1.2建立新连接

TLS 1.2建立新连接

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

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

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

4.客户端建立 HTTP连接

TLS 1.2会话恢复

TLS 1.2会话恢复

会话恢复:

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

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

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

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

TLS 1.3建立新连接

TLS 1.3建立新连接

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

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

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

TLS 1.3 0-RTT会话恢复

TLS 1.3 0-RTT会话恢复

TLS 1.2中通过 1个 RTT即可完成会话恢复,那么 TLS 1.3是如何做到 0 RTT连接的?

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

至此完成了该 0-RTT会话恢复的过程。

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

当然 TLS 1.3还有非常非常多的细节以及安全特性,优点以及缺点(去除静态 RSA和 DH密钥协商、禁止 RC4、有副作用的 0-RTT握手存在重放攻击,不支持前向保密…),限于篇幅并没有更深入的去探讨。

总结

TLS 1.3将是Web性能以及安全的一个新的里程碑,随之TLS1.3带来的0-RTT握手,淡化了大家之前对使用HTTPS性能上的隐忧。于此同时,在未来随着HTTP/2的不断普及,强制性使用HTTPS成为了一种必然。

HTTPS的推广也离不开免费DV HTTPS证书的普及,让互联网上的中小站长和独立博客用户很容易的用上HTTPS。而对于企业来说,DV证书是不能满足要求的,需要信任等级更高、安全级别更强的企业型SSL证书(OV SSL)以及增强型SSL证书(EV SSL),相比于DV证书,后两者价格虽会更贵一些,而带来的安全性保证却是前者DV证书不能相比的。

关键词:TLS 1.3,TLS 1.3提升HTTPS性能

本文来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点,如侵犯了原作者权利,请联系站长(3143591980#qq.com)删除。

相关资讯:

HTTPS加密协议详解(二):TLS/SSL工作原理

什么是TLS/SSL协议,TLS/SSL协议与HTTPS有什么关系,TLS/SSL协议工作原理介绍。... HTTPS协议的主要功能基本都依赖于TLS/SSL协议,本节分析TLS/SSL协议工作原理。TLS...

HTTPS加密协议详解(四):TLS/SSL握手过程

TLS/SSL握手过程是怎么样的?基于RSA握手和密钥交换的客户端验证服务器为示例详解握手过程。

HTTP2.0提速,让网站飞起来-HTTP2.0优势详解

HTTP/2.0(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTPS/2.0将比HTTP 1.1传输速度更快,由于强制使用https加密...

转载:HTTPS,SPDY,HTTP/2三者性能的简单对比

Firefox 35是第一个默认开启支持HTTP/2协议的浏览器。Google现在在其服务器上同时支持了HTTP/2第14版草案和SPDY协议,这就给了我们一个基于同一个...

HTTP 1.1即将退出历史舞台,HTTP/2携手HTTPS迎来发展春天

HTTP/2是十多年来HTTP协议的首次升级,它带来了许多改进:多路复用,服务器推送,头压缩,并且需要设置多个TCP连接。HTTP / 2将只与HTTPS工作, 所有主流...