【发布时间】:2014-09-18 09:03:22
【问题描述】:
我正在开发一个软件项目,该项目最终将在不受信任的环境中运行。我需要执行一些辅助加密签名(这意味着这不是保护数据的主要方法),但不希望将密钥留在这样的普通视图中:
private static final String privateKey = "00AABBCC....0123456789";
我可以使用什么方法来合理地保护它?我知道没有什么是完全证明的,但这会在安全墙中增加一层。
为了澄清:我有一个本质上是字符串的东西,我不希望在调试器中或通过反射轻松取出。我知道类文件的反编译实际上可能会使这个问题变得毫无意义,但这是可以接受的风险。
显然,将密钥存储在异地是理想的,但我不能保证可以访问互联网。
【问题讨论】:
-
请详细说明限制条件以及“不受信任的环境”和“在普通视图中”的含义。
-
你关心是否有人在 Mac.getInstance() 上设置断点然后跟踪代码直到他们找到你的密钥?
-
kdgregory,我在乎,但我不确定有什么办法。
-
看到您对我的帖子的回复,我认为唯一的后续是对您的应用程序和部署过程进行更长的描述。也许您可以从外部配置加载密钥。如果不是,那么我会同意 Kevin 的观点,即可能不值得应用任何混淆。
标签: java cryptography obfuscation