Android P 加密程式變更

Android_開發者發表於2019-02-27

Android P 加密程式變更

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

本文將給大家做個特別說明,由於我們計劃對 Android P 中的加密功能進行一些反向不相容的改動,其改動內容在開發者預覽版中也有體現。

提供程式變更

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

此改動僅會影響在呼叫 getInstance() 方法時明確指定 BC 提供程式的應用程式。

需要說明的一點是,我們此舉的目的不是因為對 BC 提供程式的實施安全存在疑慮,而是因為重複功能會造成額外的成本和風險,卻無法帶來太多益處。

如果您在 getInstance() 呼叫中不會指定提供程式,則無需做出任何改動。

如果您按名稱或例項指定提供程式 – 例如,Cipher.getInstance(“AES/CBC/PKCS7PADDING”, “BC”) 或 Cipher.getInstance(“AES/CBC/PKCS7PADDING”, Security.getProvider(“BC”)) – 則 Android P 的行為將取決於您應用的目標 API 級別。

對於目標級別早於 P 的應用,呼叫會返回 BC 實施方法,並在應用日誌中記錄警告。對於目標級別為 Android P 或之後版本的應用,呼叫會丟擲 NoSuchAlgorithmException。

為了解決此問題,您需要停止指定提供程式,並使用預設實施方法。

在後續的 Android 版本中,我們計劃完全移除 BC 提供程式的棄用功能。在移除後,所有請求 BC 提供程式的呼叫 (不論按名稱還是例項) 都會丟擲 NoSuchAlgorithmException。

移除 Crypto 提供程式

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

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

在 Android P 中,我們計劃完全移除 Crypto 提供程式。在移除後,所有對 SecureRandom.getInstance(“SHA1PRNG”, “Crypto”) 的呼叫都會丟擲 NoSuchProviderException。

請大家對自己的應用進行相應更新。

                                             Android P 加密程式變更

相關文章