我在客户端 - 服务器应用程序中使用AES进行加密。
目前,我只是定义了一个静态对称密钥,它在客户端和服务器上都是硬编码的。
我感觉这不是很安全,因为通过反转/反汇编可执行文件来获取密钥应该不会太难。
另一方面,我没有看到像Diffie-Hellman这样的密钥交换如何能够解决问题,因为密钥将最终存储在客户端的内存中,并且(可能)也可以通过某种方法提取。
我正在读到所有这些,包括加密和/或混淆密钥,都不安全。但它是如何安全地完成的?
答案 0 :(得分:6)
加密技术无法保护用户的软件。
如果用户有权运行您的代码,他有权查看操作码,从而发现代码中的所有信息。
加密可以保护用户免受其他用户的侵害。
可能是重新检查用例的时候了。我们实际上想在这里实现什么目标?
我们是在尝试保护专有协议流,还是在保护用户'身份和数据?
对于前者,你需要一名律师(和大笔口袋)。对于后者,良好实施的公钥/私钥加密就足够了。
答案 1 :(得分:-3)
是您的密钥大小固定,例如128字节或256字节。如果是,那么您可以为关键数据定义结构。然后将其存储在以二进制模式打开的文件中。
如果否,则必须将密钥的大小存储在文件中,然后存储密钥数据。