将密码保存在应用程序代码中

时间:2009-12-30 18:11:39

标签: security cryptography password-protection

我对如何在我的应用程序中存储使用密码存有疑问。我需要动态加密/解密数据,因此密码需要在某个地方。选项是在我的应用程序中硬编码或从文件加载它。

我想加密应用程序的许可证文件,其中一个安全步骤涉及应用程序能够解密许可证(之后的其他步骤)。密码永远不会被用户知道,只有我知道,因为它真的不需要它!

我担心的是黑客通过我的代码并检索我存储在那里的密码并使用它来破解许可证,从而破坏了第一个安全屏障。

此时我不考虑代码混淆(最终我会),所以这是一个问题。

我知道任何存储密码的解决方案都存在安全隐患,但没有办法解决它!

我考虑过在真正需要之前从多个部分组装密码,但在某些时候密码已经完成,因此只需要调试器和井位断点。

当你需要在你的应用程序中存储硬编码的密码时,你们会采用什么方法(和胆子)?

干杯

5 个答案:

答案 0 :(得分:7)

我的个人意见与上面的GregS相同:这是浪费时间。无论你试图阻止它多少,该应用程序都将被盗版。然而...

最好的办法是减少随意盗版。

考虑您有两类用户。普通用户和盗版者。海盗将竭尽全力破解你的应用程序。普通用户只想使用您的应用程序完成某项工作。你对海盗无能为力。

普通用户不会对破解代码有任何了解(“呃...什么是十六进制编辑器?”)。如果这类人购买应用程序比盗版更容易,那么他们更有可能购买它。

看起来您已经考虑过的解决方案对普通用户有效。这就是你所能做的一切。

答案 1 :(得分:4)

现在决定您希望花多少时间/精力来预防盗版。如果某人有决心,他们可能会让你的申请工作无论如何。

答案 2 :(得分:4)

我知道你不想听,但这是浪费时间,如果你的应用需要一个硬编码密码那么这就是一个缺陷。

答案 3 :(得分:4)

我不知道有任何方法可以解决这个问题,以任何有意义的方式阻止黑客。保守秘密是密码学的一大问题。

答案 4 :(得分:0)

我过去采用的一种方法是在安装过程中生成一个唯一的ID,它将获得HDD和MCU的SN并在复杂的结构中使用它,然后用户将为我们的自动化系统发送此编号,我们回复另一个块,应用程序现在将在使用过程中动态解密和比较这些数据。

是的我工作但它仍然有密码,我们有一些保护层(即有一些技术可以阻止中级黑客了解我们的安全系统)。

我建议你做一个非常复杂的系统并尝试自己破解它,看看反汇编是否会导致一个简单的路径。添加一些随机调用随机子程序,使其非常具有寓意,试图伪造使用注册表键和全局变量,将黑客生活置于地狱中,这样他最终会放弃。