如何在C ++中安全地存储AES加密密钥?

时间:2016-11-21 11:26:28

标签: c++ encryption

我在客户端 - 服务器应用程序中使用AES进行加密。

目前,我只是定义了一个静态对称密钥,它在客户端和服务器上都是硬编码的。

我感觉这不是很安全,因为通过反转/反汇编可执行文件来获取密钥应该不会太难。

另一方面,我没有看到像Diffie-Hellman这样的密钥交换如何能够解决问题,因为密钥将最终存储在客户端的内存中,并且(可能)也可以通过某种方法提取。

我正在读到所有这些,包括加密和/或混淆密钥,都不安全。但它是如何安全地完成的?

2 个答案:

答案 0 :(得分:6)

加密技术无法保护用户的软件。

如果用户有权运行您的代码,他有权查看操作码,从而发现代码中的所有信息。

加密可以保护用户免受其他用户的侵害。

可能是重新检查用例的时候了。我们实际上想在这里实现什么目标?

我们是在尝试保护专有协议流,还是在保护用户'身份和数据?

对于前者,你需要一名律师(和大笔口袋)。对于后者,良好实施的公钥/私钥加密就足够了。

答案 1 :(得分:-3)

是您的密钥大小固定,例如128字节或256字节。如果是,那么您可以为关键数据定义结构。然后将其存储在以二进制模式打开的文件中。

如果否,则必须将密钥的大小存储在文件中,然后存储密钥数据。