1

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

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

任何人都可以推荐在这种情况下遵循的最佳实践?

4

1 回答 1

1

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

  1. 在您的服务器上创建一个密钥对,存储公钥和私钥。私钥应妥善保管,密钥大小应在 2048 位或以上;
  2. 在您的应用程序中包含公钥;
  3. 该应用程序使用安全随机生成器来创建 AES 密钥;
  4. 数据使用 CBC 和 PKCS#7 填充加密,还包括 HMAC(可能还有另一个随机 AES 密钥);
  5. 使用 RSA 算法和公钥加密密钥;

服务器现在可以使用私钥解密 AES 密钥,并使用检索到的密钥解密数据。然后验证 MAC(如果您将其包含在协议中)。最后解密密文以检索明文。

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

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

于 2013-12-23T11:06:04.650 回答