Android 最近发布了 EncryptedSharedPreferences,它自动加密 SharedPreferences 键/值数据。虽然这很好,但我发现我可以简单地挂接到 API 调用并检索解密的值。除了在调用 EncryptedSharedPreferences 之前手动加密数据(哪种方式违背了它的目的)并实施更强大的运行时篡改确实检测到挂钩,有没有办法抵抗这种攻击?
此外,我还能够通过挂钩 javax.crypto.Cipher 并检查 SecretKeySpec 和 IvParameterSpec 来提取用于加密 EncryptedSharedPreferences 中的键/值对的加密密钥。这看起来很奇怪,因为加密密钥不是应该驻留在 Android 密钥库中并且永远不会离开吗?