我们正在向我们的服务器和客户端应用程序添加 AES 256 位加密,以加密包含敏感信息的 TCP/IP 流量。我们将每天轮换密钥。因此,密钥将与应用程序一起存储在内存中。
密钥分发过程:
每个服务器和客户端每天都会有一个初始密钥加密密钥 (KEK) 列表
如果客户端刚刚启动或服务器刚刚启动,客户端将使用初始密钥向服务器请求每日密钥。服务器将使用每日密钥进行响应,并使用初始密钥加密。每日密钥是一组随机生成的字母数字字符。我们使用 AES 256 位加密。
所有后续通信都将使用该每日密钥进行加密。
每晚,客户端将使用当前每日密钥作为当前 KEK 从服务器请求新的每日密钥。客户端获得新密钥后,新的每日密钥将替换旧的每日密钥。
另一个不良应用程序是否有可能非法访问此内存,或者这在 Windows 中是否受到保护?密钥不会被写入文件,只会存储在内存中的变量中。
如果应用程序可以非法访问内存,如何保护内存不被篡改?
我们正在使用 C++ 和 XP(Vista/7 将来可能是一个选项,所以我不知道这是否会改变答案)。