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。

请你们对本身的应用进行相应更新。

                                             

相关文章
相关标签/搜索