由于我已经使用使用haxe的openFL开发了我的应用程序,并且我即将启动软件的激活部分,我想知道如何安全地存储我的加密密钥?我能把它硬编码到我的应用程序中吗??!
在发送到服务器之前,我将使用此密钥对数据进行加密,也将使用它对从服务器接收的数据进行解密。
在这种情况下,有人可以推荐遵循的最佳实践吗?
这听起来像是非对称加密的工作。
- 在服务器上创建一个密钥对,存储公钥和私钥。私钥应保持安全,密钥大小应为2048位或更多
- 在您的应用程序中包含公钥
- 该应用程序使用安全的随机生成器来创建AES密钥
- 数据使用CBC和PKCS#7填充进行加密,还包括HMAC(可能具有另一个随机AES密钥)
- 使用RSA算法和公钥对密钥进行加密
服务器现在可以使用私钥解密AES密钥,并使用检索到的密钥解密数据。然后验证MAC,如果您将其包含在协议中。最后解密密文以检索明文。
这种方案被称为混合加密,因为它同时使用对称和非对称加密。如果您不使用MAC,请小心填充oracle攻击(将所有纯文本泄漏给攻击者)。在解密之前,请始终验证MAC。
您可以在应用程序中存储RSA公钥。使用此公钥,您可以加密AES密钥(使用PKCS#1OAEP或v1.5填充)。