35

TLS 1.0 & TLS 1.1 版本即将退出历史舞台

 5 years ago
source link: https://mp.weixin.qq.com/s/r-0Hjy2ycHZKALDBu0Pk1g?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

自从TLS 1.3协议标准规范定稿,各大浏览器厂商(Chrome、Firefox、Edge、Safari)不约而同在近日宣告即将废弃TLS 1.0和TLS 1.1协议了,今天我从多个视角给大家普及下相关知识,以便大家更好的部署自己的 HTTPS 服务。

为什么要废弃

从时间上看,TLS 1.0 协议已经有20年历史了,确实要退出历史舞台了。

目前TLS协议主流的版本是 v1.2,那么和 v1.0 和 v1.1 版本相比,它有那些优势呢?或者说 v1.0 和 v1.1 版本必然有一些缺陷,所以才要被各大浏览器厂商废弃。

主要原因有两方面, 首先就是性能 ,TLS 1.2协议有了更快的密码学算法,比如支持AEAD类的加密模式, 其次更重要的原因是安全性。

TLS 1.0是 SSL 3.0的一个简单升级,只是换了个叫法而已;TLS 1.1 在安全性方面有了很大的提升,并且引入了TLS 扩展,这是非常重要的改革;TLS 1.2 版本是比较大的一个改造,加强了密码套件的扩展性。

安全是相对的,理论上TLS 1.0和TLS 1.1 协议是安全的,即使历史上出现一些安全问题,也已经被TLS实现(比如OpenSSL)或客户端(比如浏览器)修复了,但在某种程度上这二个版本仍然有安全风险,主要原因在于某些密码算法已经被认为是不安全了(比如 SHA1、RC4算法)。

所以从安全的角度看v1.0 和 v1.1版本确实可以宣告死亡了,但为什么值得现在他们仍然还存活着? 兼容性 ,这是一种妥协,因为世界上还有很多设备(比如 XP/IE8)不支持现代化的密码算法(比如GCM),所以HTTPS服务部署者不能强制使用 V1.2版本,这是在用户体验和安全性上的一个折中。

有的同学说,大部分浏览器使用v1.2版本连接我的网站,那么为了兼容老设备,服务器同时也只支持v1.0和v1.1版本,有何不可?还是安全性,只要你的服务器存在v1.0和v1.1版本,攻击者就会强制让你从v1.2降级到老版本,从而带来安全风险。

另外一个原因是如果想支持HTTP/2协议,必须构建于 TLS 1.2协议,它不支持 TLS 1.0 和 TLS 1.2版本。

IETF 专门出了一个 RFC 文档,描述废弃 TLS 协议旧版本的原因,有兴趣可以了解下(https://datatracker.ietf.org/doc/draft-ietf-tls-oldversions-deprecate/)。

不管有多困难,我们总是要往前走,随着v1.3协议的到来,浏览器厂商觉得废弃这二个老版本的时机已经成熟了,接下来我们看看这二个版本的占有率。

TLS 1.0和TLS 1.1使用率

从使用率上看,这二个版本确实应该废弃了,从二个纬度的分析。

(1)服务器

一般情况下,从兼容性角度来看,服务器可能会同时支持v1.0、v1.1、v1.2 协议,SSL Pulse 对它检测的网站统计数据如下图(October 03, 2018的数据):

7RzyAv6.jpg!web

从中可以看出:

  • 只有6.5%的网站不支持 v1.2

  • 当然并行支持v1.1和v1.0版本的服务还很多,分别达到70%,80%。

(2)客户端

接下去看看浏览器的统计情况,它们最有发言权,看看这二个版本(使用了较旧版本的浏览器)的使用情况:

  • Firefox:2018年9月份统计,v1.1和v1.0版本使用率1.2%。

  • Chrome:v1.1和v1.0版本使用率0.5%。

  • Safari:v1.1和v1.0版本使用率0.6%。

从以上的数据来看,这二个版本确实可以废弃了,在推动web安全方面,各大浏览器确实功不可没。

浏览器厂商时间安排

大部分浏览器到2020年左右会废弃这两个版本,具体如下:

  • Firefox:没有具体的时间安排,大概会在2020年3月份全面废弃。

  • Chrome:Chrome 7版本会在 DevTools 控制台中显示旧版本警告,到 Chrome 81 版本会终止使用v1.0和v1.1版本,预计在2020一月份全面废弃。

  • Safari:预计2020年3月份,iOS和macOS平台上的Safari会废弃v1.0和v1.1版本。

我们应该做什么

如果服务器想废弃v1.0和v1.1版本,从技术角度看非常的简单,比如Nginx 可以进行以下配置:

ssl_protocols  TLSv1.2 TLSv1.3 ;

假设你的服务历史比较长,可以统计下v1.0和v1.1版本的使用率,如果比例很小,可以直接禁止使用这二个版本。

如果比例相对较大,可以在应用层面进行提示,技术实现也非常简单,比如服务器判断出某个连接使用v1.0或v1.1版本,弹出一个对话框提示用户升级系统或浏览器,逐步的引导用户。

当然,废弃v1.0和v1.1版本已经是既定事实,所以做太多的使用率分析意义并不大。

最近大半年我写了很多密码学&HTTPS协议的文章,如果对你有所帮助,还请贊赏鼓励下,过一段时间,我会对公众号的文章进行分类,以便大家更好的阅读。

IBJNNfe.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK