微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在编译程序的源中存储敏感数据

如何解决在编译程序的源中存储敏感数据

this 示例中使用 libcurl,程序将使用用户和密码字符串“登录”到 IMAP 服务器,为简洁起见,该字符串存储在源中的两个单独字符串中。大多数真实的电子邮件客户端(gnus,mutt)从纯文本配置文件或加密文件中读取,如果我要使用真实的用户名和密钥编译示例文件,是否可以反编译生成的二进制文件以解析私有钥匙?我想象在编译前将私钥输入到宏中比编译后读取配置文件更安全,这种理解是否正确?

解决方法

如果用户名和密码是字符串并且只是包含在源代码中,则可以从二进制可执行文件中提取它们,甚至无需反编译。请参阅 strings 命令。您可以采取措施在源代码中包含用户名和密码,以便 strings 不容易找到它们(例如,在添加字符串之前,将字符串与程序中的其他位模式进行异或,然后在可执行文件中进行异或恢复原件)。然而,这是“通过默默无闻来确保安全”,因此不推荐使用。

将用户名和密码放在配置文件中可以让您使用系统的文件权限,这样使用二进制文件的人可能不一定有读取文件的权限。您还可以设置 PKI 身份验证安排,或者可能使用 Kerberos 密钥授权。

需要付出的努力取决于您要保护的事物的价值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。