【发布时间】:2014-03-05 23:35:17
【问题描述】:
假设密钥库的密码不是由用户密码提供或绑定到用户密码(这或多或少意味着它只是代码中某处的字符串或数组 []),它是否足以保护它不能或只能勉强从字节码中提取出来?
我知道密钥库(JKS / BKS)的密码仅用于验证密钥库的完整性。此外,很明显,我必须假设应用程序在或多或少受信任的环境中运行才能“安全”。但无论如何,是否可以仅从 apk 文件中提取密码?
在应用程序的源代码中硬编码任何密码感觉是错误的,所以也许有一些想法,如何使其实际上不那么具有威胁性。 例如。是在外部配置文件中配置密码还是在安装应用程序期间随机生成密码更好(然后将其存储在哪里)?
【问题讨论】:
-
从字节码/apks中提取一些东西并不难。如果你反编译它,你就会再次粗略地获得纯文本的源代码。我不会打扰太多,如果你的应用程序(或你隐藏在其中的秘密)值得黑客攻击,那么会有人这样做。
-
我会说它值得黑客攻击。 :) 所以对我来说重要的是,如果密码被泄露,其他应用程序安装不会被感染。因此,为安装创建密码似乎至少是一个“更好”的解决方案。
-
如果是密钥库密码,我可以简单地将
println添加到例如Keystore.load 进入我的自定义固件,甚至不需要触摸您的应用程序。这很简单。 Dexguard 不能防止调用不受信任的平台代码,您需要自行实现,因此我需要嗅探您的网络流量或从内存转储中读取值。
标签: java android security keystore password-protection