最佳答案
我需要在我的 C + + 应用程序中存储敏感信息(一个我想保持私有的对称加密密钥)。简单的方法是这样做:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
但是,通过 strings
进程(或从二进制应用程序提取字符串的任何其他进程)运行应用程序将显示上述字符串。
应该使用什么技术来掩盖这些敏感数据?
编辑:
好了,你们几乎都说了 “你的可执行文件可以被逆向工程”-当然!这是我最讨厌的事情,所以我要在这里咆哮一下:
为什么这个网站上99% (好吧,我可能有点夸张了)的安全相关问题的答案都是“没有可能创建一个完全安全的程序”——这不是一个有用的答案!安全性是在完美的可用性和没有安全性之间的一个滑动尺度,在完美的安全性和没有可用性之间的另一端。
关键在于,您可以根据要做的事情和软件运行的环境来选择自己的位置。我不是在写一个军事设施的应用程序,我是在写一个家用电脑的应用程序.我需要通过一个不可信的网络用一个已知的加密密钥对数据进行加密。在这种情况下,“隐晦式安全”可能就足够了!当然,有足够的时间,精力和技能的人可以逆向工程的二进制和找到密码,但你猜怎么着?我不在乎:
实现一个一流的安全系统所花费的时间比由于破解版本造成的销售损失还要昂贵(并不是说我真的在推销这个,但是你明白我的意思)。在新程序员中间,这种“让我们尽可能用最好的方式来完成”的天马行空的编程趋势至少可以说是愚蠢的。
感谢您花时间回答这个问题-他们是最有帮助的。不幸的是,我只能接受一个答案,但我对所有有用的答案都投了赞成票。