本文面向的是所发布的应用存在以下情形的开发者:采用安全性较低的加密模式 AES/ECB。如果采用这种安全系数低的模式加密内容,可能会导致密文安全系数低,从而可能使用户数据面临风险。您可以在 Play 管理中心内针对您应用提供的通知中找到应用中安全性较低的加密模式所在的位置。如果某个位置以“(in dynamically loaded code)”结尾,则该位置在由应用或应用使用的库动态加载的代码中。应用通常会通过按需功能分发使用动态加载的代码,但也存在其他不推荐使用的方法(部分不推荐使用的方法还违反了 Google Play 政策,不得采用)。此外,打包工具可以将应用代码转换为动态加载的代码。
如何解决“不安全的加密模式”提醒的问题
查看您的应用,找到 Cipher 的实例化位置。以下配置模式表示使用了不安全的 AES/ECB:
"AES"
"AES/ECB/NoPadding"
"AES/ECB/PKCS5Padding"
"AES/ECB/ISO10126Padding"
例如,以下代码包含“AES”,因此默认采用 AES/ECB 模式:
// Console 提醒所指的问题存在于此方法中
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES”); // 默认采用 AES/ECB 模式
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
Google 建议开发者弃用上述不安全的模式,改用“AES/GCM/NoPadding”
。
后续措施
- 按照上文中重点介绍的步骤更新应用。
- 登录您的 Play 管理中心,然后提交应用的更新版本。
在此期间,您的新应用或应用更新将会处于待发布状态,直至您的请求审核完毕。如果该应用未正确更新,您仍然会看到警告。
我们随时为您提供帮助
如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。