独立的 exe 应用程序 - 隐藏密码

信息安全 密码
2021-08-18 22:41:38

我正在制作一个无法连接到互联网的独立 exe 应用程序。有一个“密码保护”的“编辑模式”,但 c++ 中的机制(我用它编写)看起来像:

string passwd = getString();
if(password=="something"){//do stuff}

其中“某物”是我的真实密码。所以我知道它是否被逆向工程或密码很容易获得。

该程序无法连接到互联网,如果用户发现了密码,那只会带来轻微的不便。有没有更安全的方法,或者这就足够了?据我所知,没有任何东西是加密的。

2个回答

使用加盐哈希,就像在连接到 Internet 的工具中一样。

显然,如果攻击者在他们自己的系统上安装了软件,他们可以修改它并完全删除密码。但是他们只是在他们自己的系统上破解它。

如果密码是加盐散列,他们将只知道加盐散列,而不知道实际密码。
应该有在 C++ 中计算加盐哈希的实现,您可以使用它来验证用户输入的密码。因此您不必自己编写。即使您的应用程序没有连接到互联网,这仍然是需要考虑的事情。您的应用程序可能不会上网,但运行它的计算机可能确实有连接,并且容易受到攻击 - 它仅与运行它的计算机一样安全。

正如@SL Barth 所建议的那样,最好的方法是使用加盐散列,也可以使用一些散列迭代。避免使用过时的算法,例如 MD5。SHA256 及以上更好,但你也可以使用 PBKDF2,这是一种慢速算法,如果使用多次迭代会更难破解。您还可以创建一个控制链,如果给定的密码通过了所有控制,它必须是正确的,但这不是最聪明的主意。如果有足够的时间,一个好的反向器将打破这个链条。

最后但并非最不重要的一点是,考虑打包和/或混淆您的可执行文件,因此逆向者从一开始就会遇到困难。

PS:如果你想对逆向者有点好笑,看看这里这里:D