查看原文
其他

Android P 加密程序变更

2018-04-04 Google Play 谷歌开发者

在 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 开发者预览版 · 操作指南

满足 Google Play 目标 API 等级的要求

减少使用非 SDK 接口,提升系统稳定性

体验游戏,就在即刻!Google Play Instant

您所知道的 Play Console 远不止是发布应用这么简单!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存