【问题标题】:what is the proper way of encrypting the secret key of AES加密AES密钥的正确方法是什么
【发布时间】:2015-12-06 20:29:07
【问题描述】:

我正在使用以下库进行客户端加密 http://bitwiseshiftleft.github.io/sjcl/

它工作正常,用户定义了密码和密钥,我在客户端加密所有内容,然后将其推送到服务器。

我想让用户交互更容易,目前用户记住密钥和密码都很乏味,我想用用户定义的密码加密密钥并将其连接到密文。有什么好的方法?

使用用户定义的密码加密密钥并将其与密文连接的好方法是什么?

【问题讨论】:

  • 广义上讲,你使用“密钥拉伸”将密码转换为密钥,然后用它来加密保存的密钥。

标签: encryption password-encryption


【解决方案1】:

您可以使用 chrylis 指示的键拉伸。在这种情况下,您可以使用 PBKDF2、bcrypt、scrypt 或 Argon2 从密码生成密钥。您需要配置工作因子并使用密文保存盐。

以这种方式生成密钥后,您可以用它包装(加密)另一个随机数据密钥。您也可以直接使用它或与 KBKDF(如 HKDF)一起使用来生成数据密钥。

【讨论】:

  • 我对此很陌生,所以请原谅我的无知。 PBKDF2 是否被视为键拉伸?目前我正在使用用户定义的密码,然后我生成一个随机盐,然后我在用户定义的密码上运行 Pbkdf2 1000 x 以生成一个 256 位密钥。我的问题是,我如何安全地将密钥与我的密文连接起来,然后稍后解密以解密秘密消息?我或多或少地在做这里所做的事情,我只是想知道一个好方法来消除记住 256 密钥的需要。 bitwiseshiftleft.github.io/sjcl/demo/
  • 为什么要隐藏秘钥?您只需要通过再次运行 PBKDF2 来重新生成它。请注意,在非常低的端考虑 1000 次迭代,50K 会更好。当然,您也可以使用非常安全的密码短语。
  • PBKDF2 会重新生成完全相同的密钥吗?我的印象是它有一些随机性会生成不同的密钥。对实际密文使用相同的密码、盐和 IV 是否安全,因为我对密钥使用相同?我一直在听,不要多次使用同一个 IV。
  • 给定相同的盐,它将生成相同的密钥。如果不确定,您确实应该使用随机 IV。您可以使用密文存储盐和 IV...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
相关资源
最近更新 更多