如何安全存储密钥?

时间:2013-12-23 10:42:12

标签: encryption haxe openfl haxelib

由于我使用使用haxe的openFL开发了我的应用程序,并且我即将启动我的软件的激活部分,我想知道如何安全地存储我的加密密钥?我会把它硬编码到我的应用程序中吗?!

我将在发送到服务器之前使用此密钥加密数据,我将使用它来解密从服务器接收的数据。

在这种情况下,任何人都可以推荐最佳实践吗?

1 个答案:

答案 0 :(得分:1)

这听起来像是非对称加密的工作。

  1. 在服务器上创建密钥对,存储公钥和私钥。私钥应保持安全,密钥大小应为2048位或更多;
  2. 在您的应用程序中包含公钥;
  3. 应用程序使用安全随机生成器创建AES密钥;
  4. 使用CBC和PKCS#7填充加密数据,还包括HMAC(可能还有另一个随机AES密钥);
  5. 使用RSA算法和公钥加密密钥;
  6. 服务器现在可以使用私钥解密AES密钥,并使用检索到的密钥解密数据。然后验证MAC,如果您将其包含在协议中。最后解密密文以检索明文。

    此方案称为混合加密,因为它使用对称和非对称加密。如果不使用MAC,请注意填充oracle攻击(将所有纯文本泄露给攻击者)。在解密之前始终验证MAC。

    您可以在应用程序中存储RSA公钥。使用此公钥,您可以加密AES密钥(使用PKCS#1 OAEP或v1.5填充)。