Google 博客:Android O 移除 HttpsURLConnection 中不安全的 TLS 版本回退

发布人:软件工程师 Tobias Thierer

为提高安全性,在 Android O 中,已从
HttpsURLConnection 中移除不安全的 TLS 版本回退。

有何变更?为何作出这些变更?

TLS 版本回退是解决 HTTPS 堆栈兼容性问题的一种权宜方法,用于连接未正确实现 TLS 协议版本协商的服务器。在之前的 Android 版本中,如果因为某种原因初始 TLS 握手失败,HttpsURLConnection 将停用较新的 TLS 协议版本并重新尝试握手。在 Android O 中,不会再重新尝试进行此操作。与正确实现 TLS 协议版本协商的服务器的连接不受影响。

我们不再采用此权宜方法,因为它会停用 TLS 协议版本降级保护,从而降低 TLS 安全性。截至 2015 年末,通过此权宜方法连接的网络服务器的比例不到 0.01%,因此没必要再使用此方法。

我的应用会受此影响吗?

大多数应用不受此变更的影响。要确定您的应用是否受影响,最简便的方式是使用
Android O Developer Preview 构建和测试您的应用。在 Android O 中,下列情形下,您的应用的 HTTPS 连接不受影响:

  • 目标网络服务器使用最新版本的 Chrome 或 Firefox,因为这些服务器已正确实现 TLS 协议版本协商。在 Firefox 37(2015 年 3 月)和 Chrome 50(2016 年 4 月)中,已移除对 TLS 版本回退的支持。
  • 使用并非在 HttpsURLConnection 基础上构建的第三方 HTTP 内容库。如果您使用第三方内容库,我们建议您停用协议回退。例如,在 3.6 及之前的 OkHttp 版本中,您可能需要将 OkHttpClient 配置为仅使用 ConnectionSpec.MODERN_TLS。

我的应用受到影响。现在该怎么办?

如果您的应用依赖于 TLS 版本回退,则其 HTTPS 连接容易受到降级攻击。要修复此问题,您需要联系服务器运营商。如果暂时无法联系,则可采用一种权宜方法:您可以使用提供 TLS 版本回退的第三方 HTTP 内容库。请注意,使用此方法会降低应用的 TLS 安全性。要发现任何兼容性问题,请在 Android O Developer Preview 中测试您的应用。

    原文作者:小蜜蜂
    原文地址: https://juejin.im/entry/58f6dea2b123db2fa2b9bf74
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞