在我的应用中-我具有加密的首选项,并且使用Android Keystore密钥对其进行加密和解密。
在某些较旧的设备(Android 5.x)上,我看到了很多此类logcat消息:
03-10 14:35:37.601 2573-2573 /? W / keystore:无法读取 CACERT_KEY_ALIAS
在执行特定操作时-该应用可能会在很短的时间内解密15-20个值,并且我认为可能是密钥库上的这种负载。
一种解决方案,可以在应用启动过程中检索密钥,并在整个操作甚至整个应用执行过程中保持对它的引用。
仅供参考-我使用的SecretKey对象不会公开实际的密钥(调试时无法获取密钥,因为SecretKey.getEncoded()方法返回null)。加密/解密时,我将SecretKey对象传递给安全提供者的密码对象(密钥以某种方式在幕后传递)。
这对安全性有影响吗?有人可以通过检查应用程序的内存堆或转储来检索密钥吗?有什么想法吗?建议?
谢谢!
答案 0 :(得分:0)
更新:在广泛搜索有关天气的答案之后,可以从任何其他进程快照的内存转储中检索到内存中保留的内存,但找不到该快照-我们决定不将密钥库密钥保留在内存中。每当我们解密一个值时,都必须检索它。