2016-11-21 152 views
0

我在我的客户端 - 服务器应用程序中使用AES进行加密。如何在C++中安全地存储AES加密密钥?

目前,我已经简单地定义了一个静态对称密钥,该密钥在客户端和服务器中都是硬编码的。

我有一种感觉,这不是很安全,因为通过反转/反汇编可执行文件来获得密钥不应该太困难。另一方面,我不明白Diffie-Hellman这样的密钥交换是如何解决问题的,因为密钥最终会存储在客户端的内存中,并且可能(可能)也会通过某种方法提取。

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

+0

使用非对称密码算法,这意味着每个部分不知道对方的部分私钥。这是纯粹的数学。 – jweyrich

+0

@jweyrich这不会通过反汇编来阻止关键发现,是吗? –

+4

@jweyrich这样做只会阻止网络上的某个人找到密钥,而不会阻止某人访问该计算机。 – user66875

回答

-3

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

如果否,那么您必须将密钥的大小存储在文件中然后存储关键数据。

+0

你还没有回答OP问的问题:'但是它如何安全地完成?'。 – jweyrich