几天前,在Google Play控制台的“ APK的预发布报告”中,它开始标记我
Unsafe encryption
Detected in APK ???
Your app contains unsafe cryptographic encryption patterns. Please see this Google Help Centre article for details.
Vulnerable classes:
c.j.a.s.J.b
但是,自从APK诞生之初,我就没有更改加密代码/描述代码中的任何内容。因此,我不确定Google为什么会在最近的APK上警告我?
任何想法如何解决?因此,有关脆弱类c.j.a.s.J.b
的信息没有帮助。
我尝试使用Proguard + mapping.txt回溯c.j.a.s.J.b
,但能够弄清楚那是什么类。
您知道如何摆脱Google安全警告吗?
答案 0 :(得分:2)
在Google剧本中,建议使用功能名称与易受攻击的类,在对话框中可以看到。
查看您的应用程序以获取用于密码加密操作的静态计算密钥,初始化向量和/或盐,并确保安全构造这些值
例如:
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES/GCM/NoPadding”);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
GCMParameterSpec paramSpec = new GCMParameterSpec(256, iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
您将函数调用为:
byte[] cipherText = encryptionUtil(“abcdef...”, “010203040506”, plainText);
在这里,您的加密密钥“abcdef...”
是作为静态字符串提供的。静态计算的值是在每次执行应用程序时都相同的值。可以从您的应用程序中提取静态计算的密码值,并将其用于攻击应用程序的加密数据。
因此您可以使用 EncryptedSharedPreferences 存储本地数据
参考链接https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences
OR
答案 1 :(得分:-1)
我认为您正在使用一些带有静态存储密钥的加密/解密代码。 静态计算的值是在每次执行应用程序时都相同的值。可以从您的应用程序中提取静态计算的密码值,并将其用于攻击应用程序的加密数据。 因此,Google会发出此警告,以使用动态生成的密钥更改存储的密钥。 为此,您可以在每次启动时生成不同的密钥。 要解决此问题,请在每次启动时生成动态加密/解密密钥。 为此,您可以在https://developer.android.com/jetpack/androidx/releases/security
中找到更多信息。