假设密钥库的密码不是由用户密码提供或绑定的(这或多或少意味着它只是代码中的某个字符串或数组[] []],它是一种足够的保护,它不能或不能只能很难从字节码中提取出来?好习惯:如何在android/java中处理密钥库密码?
我知道,对于一个密钥库(JKS/BKS)的密码只是用来验证密钥库的完整性。此外,我非常清楚,我必须假设应用程序运行在或多或少的可信环境中以保证“安全”。但无论如何,是否有可能从apk文件中提取密码?
就觉得这是不对的硬编码的应用程序的源代码中的任何密码,所以也许有一些想法,如何使它真正威胁较小。 例如在外部配置文件中配置密码或者在安装应用程序期间随机生成密码(以及应该存储在哪里)会更好吗?
不难提取出来的东西字节/ APK中。如果你反编译它,你可以再次以明文形式粗略地显示你的源代码。我不会打扰太多,如果你的应用程序(或者你隐藏的秘密)值得黑客入侵,那么将会有一个这样做。 – zapl
我会说它值得黑客入侵。 :)所以对我来说,重要的是如果密码被破坏,其他应用程序安装不会受到感染。所以创建一个安装密码似乎至少是一个“更好”的解决方案。 – evildead
在密钥库密码的情况下,我可以简单地添加一个'println'到[Keystore.load](https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/java/security/KeyStore.java)到我的自定义固件中,甚至不需要触摸你的应用。这很简单。 Dexguard不能防止调用不受信任的平台代码,您需要推出自己的实现,以便我需要嗅探网络流量或从内存转储中读取值。 – zapl