“您的应用程序包含不安全的加密加密模式”-如何摆脱此警告?

时间:2019-09-19 02:29:48

标签: android android-security

几天前,在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

enter image description here


但是,自从APK诞生之初,我就没有更改加密代码/描述代码中的任何内容。因此,我不确定Google为什么会在最近的APK上警告我?

任何想法如何解决?因此,有关脆弱类c.j.a.s.J.b的信息没有帮助。

我尝试使用Proguard + mapping.txt回溯c.j.a.s.J.b,但能够弄清楚那是什么类。

您知道如何摆脱Google安全警告吗?

2 个答案:

答案 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

Jetpack Security

有关更多详细信息: Remediation for Unsafe Cryptographic Encryption

答案 1 :(得分:-1)

我认为您正在使用一些带有静态存储密钥的加密/解密代码。 静态计算的值是在每次执行应用程序时都相同的值。可以从您的应用程序中提取静态计算的密码值,并将其用于攻击应用程序的加密数据。 因此,Google会发出此警告,以使用动态生成的密钥更改存储的密钥。 为此,您可以在每次启动时生成不同的密钥。 要解决此问题,请在每次启动时生成动态加密/解密密钥。 为此,您可以在https://developer.android.com/jetpack/androidx/releases/security

中找到更多信息。