如何在C++中安全地存储AES加密密钥?
问题描述:
我在我的客户端 - 服务器应用程序中使用AES进行加密。如何在C++中安全地存储AES加密密钥?
目前,我已经简单地定义了一个静态对称密钥,该密钥在客户端和服务器中都是硬编码的。
我有一种感觉,这不是很安全,因为通过反转/反汇编可执行文件来获得密钥不应该太困难。另一方面,我不明白Diffie-Hellman这样的密钥交换是如何解决问题的,因为密钥最终会存储在客户端的内存中,并且可能(可能)也会通过某种方法提取。
我到处都在阅读,包括加密和/或混淆密钥在内的所有内容都不安全。但是它如何安全地完成?
答
是你的密钥大小固定的说128字节或256字节。如果是,那么你可以为你的关键数据定义一个结构。然后将其存储在以二进制模式打开的文件中。
如果否,那么您必须将密钥的大小存储在文件中然后存储关键数据。
+0
你还没有回答OP问的问题:'但是它如何安全地完成?'。 – jweyrich
使用非对称密码算法,这意味着每个部分不知道对方的部分私钥。这是纯粹的数学。 – jweyrich
@jweyrich这不会通过反汇编来阻止关键发现,是吗? –
@jweyrich这样做只会阻止网络上的某个人找到密钥,而不会阻止某人访问该计算机。 – user66875