Android P 加密程序變動

在 3 月 8 日,咱們發佈了 Android P 的首個開發者預覽版,看到開發者們很是積極地響應,在此感謝你們及時反饋的建議和問題,小編已經將你們的反饋收集並提交給 Google 相關技術工程師。期待與大家有更多的互動,一塊兒建立更加美好、健康的 Android 生態。安全

本文將給你們作個特別說明,因爲咱們計劃對 Android P 中的加密功能進行一些反向不兼容的改動,其改動內容在開發者預覽版中也有體現。dom

提供程序變動

從 Android P 開始,對於 AndroidOpenSSL (也稱爲 Conscrypt) 提供程序所重複的、來自於 BC 提供程序的部分功能,咱們計劃將予以棄用。ide

此改動僅會影響在調用 getInstance() 方法時明確指定 BC 提供程序的應用程序。加密

須要說明的一點是,咱們此舉的目的不是由於對 BC 提供程序的實施安全存在疑慮,而是由於重複功能會形成額外的成本和風險,卻沒法帶來太多益處。3d

若是您在 getInstance() 調用中不會指定提供程序,則無需作出任何改動。日誌

若是您按名稱或實例指定提供程序 - 例如,Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC") 或 Cipher.getInstance("AES/CBC/PKCS7PADDING", Security.getProvider("BC")) - 則 Android P 的行爲將取決於您應用的目標 API 級別。orm

對於目標級別早於 P 的應用,調用會返回 BC 實施方法,並在應用日誌中記錄警告。對於目標級別爲 Android P 或以後版本的應用,調用會拋出 NoSuchAlgorithmException。cdn

爲了解決此問題,您須要中止指定提供程序,並使用默認實施方法。blog

在後續的 Android 版本中,咱們計劃徹底移除 BC 提供程序的棄用功能。在移除後,全部請求 BC 提供程序的調用 (不論按名稱仍是實例) 都會拋出 NoSuchAlgorithmException。ip

移除 Crypto 提供程序

在先前的帖子中,咱們曾宣佈自 Android Nougat 開始棄用 Crypto 提供程序。

此後,以 API 23 (Marshmallow) 或更早級別爲目標的應用程序請求 Crypto 提供程序會成功,但以 API 24 (Nougat) 或以後級別爲目標的應用程序請求則會失敗。

在 Android P 中,咱們計劃徹底移除 Crypto 提供程序。在移除後,全部對 SecureRandom.getInstance("SHA1PRNG", "Crypto") 的調用都會拋出 NoSuchProviderException。

請你們對本身的應用進行相應更新。

                                             

相關文章
相關標籤/搜索