我需要在我的C++应用程序中存储敏感信息(对称加密密钥,我希望保持私密)。简单的方法是这样做:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
然而,通过strings
进程(或任何其他从二进制应用程序提取字符串的进程)运行应用程序将会显示上述字符串。有哪些技术可以用来模糊这种敏感数据?
编辑:好的,几乎所有人都说过“您的可执行文件可以被反向工程化”——当然!这是我讨厌的事情之一,所以我要在这里发泄一下:为什么在这个网站上99%(好吧,也许我有点夸张)与安全相关的问题都被回答成:“没有可能创建一个完全安全的程序”这不是一个有用的答案! 安全是在完美的可用性和无安全性的一端和完美的安全但没有可用性的另一端之间的滑动比例尺。
关键是,你根据你想要做什么和你的软件将在其中运行的环境来选择你在那个滑动比例尺上的位置。 我不是为军用装置编写应用程序,我正在为家庭PC编写应用程序。 我需要使用预先已知的加密密钥加密跨不受信任的网络的数据。 在这些情况下,“安全通过模糊”可能已经足够了! 当然,有足够的时间,精力和技能的人可能会反向工程二进制文件并找到密码,但是猜猜? 我不在乎:
实施顶尖安全系统的时间比由于破解版本而失去的销售量更昂贵(虽然我实际上并没有出售这个软件,但你理解我的意思)。 在新程序员中,“让我们以最好的方式来做”的蓝天趋势至少是愚蠢的。
感谢您抽出时间回答这个问题-它们非常有帮助。 不幸的是,我只能接受一个答案,但我已经投票支持了所有有用的答案。