【问题标题】:How to safely store secret key? [closed]如何安全地存储密钥? [关闭]
【发布时间】:2014-01-11 13:40:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: encryption haxe openfl haxelib


    【解决方案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 填充)。

    【讨论】:

    • 谢谢,我想知道 haxe 社区中是否有人可以发布一个链接到可以进行加密的库..
    • @simo 我不熟悉这个平台,我知道要求离线资源被认为是题外话。
    • 请问您的答案中的 MAC 是什么意思?您的意思是用作硬件 ID 的 MAC 地址吗?
    • 否,消息验证码。通常使用基于哈希的 MAC 或 HMAC。它为发送包提供完整性和真实性。它是数字签名的对称等价物。它还可以用来阻止攻击,例如填充预言机攻击,例如攻击。 AES CBC 加密,专门针对在线协议(密码本身没有受到攻击,但服务器的错误处理可用于检索明文,每字节 128 次尝试(!)。除非你没有其他选择。解密前进行anc检查。
    • 先生,我如何生成 MAC?
    猜你喜欢
    • 2012-01-11
    • 2014-10-18
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2014-06-24
    • 2018-03-16
    相关资源
    最近更新 更多