1月29日,谷歌在发布了Firefox 65的几个小时后,又发布了Google Chrome 72。尽管谷歌在过去的几个发布中主要关注的是UI/UX更改,但此次的更新更多的是聚焦于安全更新、对API的更改和对不同协议的支持。
显然,我们最感兴趣的是与SSL/TLS相关的东西,这是很好的,因为Windows、Mac、Linux和Android用户将面临几个重大的改变。
因此,今天我们将来讨论这些改变,以及通过这些更新,你可以如何加强自身的安全。
让我们开始吧。
再见了,HPKP
基于HTTP的公钥固定(HPKP)是一种将网站的一个或多个公钥固定在HTTP表头的安全机制。从理论上来说,它是一个很好的主意,因为它能够帮助防御错误颁发,但在实践中,它可能是极其危险的。好的,这可能有点夸张,但正确使用HPKP是十分具有挑战性的,因为构建一系列固定密钥是很困难的,而这些密钥又能确保反映出数字证书行业不断进化的本质和用户信任商店的不断变化。
因此,HPKP可能致使网站崩溃。它会造成大量错误,而且事实上它还可能被武器化,尽管尚未确认此类情况发生过。
谷歌已经宣布计划弃用HPKP,现在在Chrome 72中的支持也被完全移除了。
“通过为网站提供一个网络暴露式的机制(HPKP),以限制可以为其域名进行颁发的证书机构集,PKP提供了一种防止证书错误颁发的方法。然而,这暴露了作为开放Web平台考虑因素的一部分:具体来说,CA的选择是一个由浏览器或OS供应商做出的产品层次上的安全抉择,而PKI层次的子CA、跨签发和其他方面的选择和使用则是由CA独立做出的。因此,网站运营商在选择一组可靠的密钥来进行固定方面面临着诸多困难,因而PKP的使用率一直很低。当网站运营商的期望与现实世界客户端机器上的信任锚不匹配时,用户就会受到损害。意外或虚假的固定错误可能导致用户感到疲惫,而不是安全。”
我们之前写过有关HPKP是一个失败的概念的文章,而且苹果和微软都不再支持它了,这便能很好地佐证这一事实。现在,谷歌又在Chrome 72中完全移除对它支持了。
安息吧,HPKP。
禁用对TLS 1.0和TLS 1.1的支持
去年年底,在一项史无前例的联合声明中,主要浏览器制造商——谷歌、苹果和微软 & Mozilla——宣布了在2020年初禁用TLS 1.0和TLS 1.1支持的决定。这意味着TLS 1.2实际上将成为默认的设置,各大浏览器也会鼓励网站和公司尽快增加对TLS 1.3的支持。
这三家科技巨头和Mozilla联合发表了这份声明。这意味着所有主流的浏览器——苹果的Safari、谷歌的Chrome、Mozilla的Firefox和微软的Edge和Internet Explorer——都将在2020年初放弃对TLS 1.1和TLS 1.0的支持。
正如你所知道的,TLS是安全套接层的继承者。用通俗的话来说,我们仍然在使用SSL,因为这是大多数人所知道的名称,但是从1999年开始我们实际上使用的是传输层安全。SSL最后一点存在的痕迹,即对SSL 3.0的支持,在一段时间内一直是不合理的,甚至各企业也因为一些已知的漏洞而逐渐放弃了对它的支持。
1月19日是TLS 1.0诞生20周年的纪念日。IETF在今年8月正式发布了TLS 1.3。值得借鉴的是,今年早些时候,支付卡产业数据安全标准(PCI DSS)强制取消了支付卡行业对TLS 1.0的支持,同时强烈建议取消对TLS 1.1的支持。所以这不是凭空而来的,它已经存在很长一段时间了。
TLS 1.0和TLS 1.1被认为是不安全的原因是,它们使用的是过时的算法和加密系统,经发现,这些算法和系统是十分脆弱的,比如SHA-1和MD5。它们也缺乏像完美的前向保密性这样的现代特征,并且容易受到降级攻击的影响。
苹果、谷歌和微软都表示,这一决定产生的影响可能是微乎其微的,因为Safari、Chrome、Edge和Internet Explorer浏览器的连接只有很少一部分仍然在使用TLS 1.0或TLS 1.1。
以下是微软提供的一张表格:
以下是苹果对这一决定的看法:
“现在是时候进行这种转变了。TLS 1.2遵从了应用程序安全传输协议(ATS)的要求进行了恰当的配置,从而提供了适于现代web的安全性。它是苹果平台的标准,在所有Safari的TLS连接中,占据着99.6%的比例。TLS 1.0和1.1——可以追溯到1999年——在所有连接中所占的比例不到0.36%。随着IETF在2018年8月对TLS 1.3的最终确定,传统TLS连接的比例可能会进一步下降。TLS 1.2对HTTP/2也是需要的,因为它能够显著改善web的性能。”
微软对往事进行了一番感怀:
20年不修改安全技术,这是很长一段时间了。虽然我们没有意识到我们最新所部署的TLS 1.0和TLS 1.1存在重大漏洞,但是一些脆弱的第三方实现确实存在。迁移到最新的版本有助于确保每个人都有一个更安全的Web。此外,我们希望IETF在今年晚些时候能够正式弃用TLS 1.0和1.1,届时,它们就将不再处理这些版本中的协议漏洞。
谷歌的文章则颇具个性:
“按照这些行业标准,谷歌Chrome将在Chrome 72中弃用TLS 1.0和TLS 1.1。那些使用了这些版本的网站将开始在该发布的DevTools控制台中看到弃用警告。TLS 1.0和1.1将在Chrome 81中被完全禁用。这将从2020年1月开始在早期的发布渠道对用户产生影响。”
随着Chrome 72的发布,谷歌为这个最终的弃用奠定了基础。现在,访问仍仅支持TLS 1.0或TLS 1.1的网站将会在Dev Tools中显示一个警告。从Chrome 81发布开始,用户就将无法连接到没有升级到TLS 1.2的网站。
这并不奇怪,由于一个已知漏洞,TLS 1.0和TLS 1.1正在被广泛弃用。去年,PCI DSS规定,任何接受支付卡的网站都需要弃用TLS 1.0,并强烈建议它们也移除TLS 1.1。
以下是Alexa排名前10万的网站的最高支持协议的具体情况:
奇怪的是,最高支持协议为TLS 1.0的网站数量是TLS 1.1的40倍。不过,总的来说,如果Chrome 81尚未对它们进行升级,那么Alexa排名前10万的网站中,大约有2.3%将无法有效地进行访问。
如果你运行着一个网站,那么现在,关闭对这些旧有协议版本的服务器支持也是一个好时机。支持最新的、更安全的协议版本是很好的,但继续支持过时的版本可能会让你遭受降低攻击。
在谷歌Chrome中禁用对TLS 1.0和TLS 1.1的支持
对于常规的浏览器用户来说,现在也是时候从浏览器端摒弃对TLS 1.0和TLS 1.1的支持了。迫使掉队的人升级其支持的最好的方式之一是,停止访问不支持TLS 1.2或更高协议版本的网站。
更新:对微软用户来说,更改这些设置的正确的方法是在Windows的原生TLS堆栈中,而不是在Chrome中。Chrome只是从这里提取它的代理设置。
因此,为了做到这一点,打开你的控制面板并选择互联网选项。进入高级标签,然后向下滑动到安全设置,去除TLS 1.0和TLS 1.1复选框。
以下是通过Chrome禁用对TLS 1.0和TLS 1.1的支持的方法。
- 点击浏览器右上角的垂直省略号,并选择设置。
2. 向下滑动,然后点击“高级。”
3. 向下滑动到“系统”部分,然后点击“打开代理设置。”
4. 点击高级标签,然后向下滑动到安全,去除TLS 1.0和TLS 1.1(你应当也禁用TLS 3.0和TLS 2.0)。注意,你现在在更改的事实上是Windows互联网特性菜单。
5. 点击好的
我承认,这样做可能使得你所访问的某些网站经常不能进行有效的访问。当这样情况发生时,你可以点击通过警告,但记住TLS 1.2已经推出有十年的时间了,这应当能够让你了解你试图访问的网站到底有多少是把安全性放在首要位置的。
无论如何,在接下来的几个月,期待其他浏览器也能进行更多这样的更新。