Android O移除HttpsURLConnection中不安全的TLS版本回退

谷歌開發者_發表於2017-04-20

640?wx_fmt=gif


640?wx_fmt=jpeg


為提高安全性,在 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 中測試您的應用。


瞭解更多細節,檢視文內所有連結,請點選文末“閱讀原文”。


推薦閱讀:

Android O 中對裝置識別符號所做的變更

介紹Android原生開發工具包r14

“Google軟體開發代理商計劃”中國地區正式開啟報名

尋找全中國使用TensorFlow的開發者和公司

640?wx_fmt=gif

點選「閱讀原文」,檢視文內連結640?wx_fmt=gif

相關文章