【问题标题】:Some questions about PBKDF2关于PBKDF2的一些问题
【发布时间】:2012-03-18 13:02:09
【问题描述】:

我正在使用 PBKDF2 从我的应用程序中的密码字符串派生密钥,但我对此有几个问题。

首先,我在网上看到很多使用 HMAC-SHA256 等哈希的 PBKDF2。它使用 HMAC-SHA256 而不仅仅是 HMAC 是什么意思?我认为 HMAC 使用密钥加密数据。

其次,我了解到 BlackBerry 存在漏洞,因为它的 PBKDF2 函数只使用了一次迭代(而不是像 1000 次)。一次迭代是否与仅对密码进行哈希处理相同(例如使用 SHA256)。

谢谢

【问题讨论】:

  • 你有关于黑莓漏洞的链接吗?
  • 所谓的漏洞与迭代次数的关系不大,而与人们使用弱密码以及黑莓备份实用程序在备份映像中包含密码加密数据库的事实有关。例如,如果密码只是一个四位数的 pin 码,则 10000 次迭代计数将无济于事。
  • 假设密码刚刚被制作成带有 MD5 哈希的密钥。彩虹表是否会成为一个问题,因为它们使暴力破解过程更快?
  • 彩虹表是一种技术,如果你有一个散列密码列表,例如来自被黑的服务器。这完全是一个不同的问题。

标签: cryptography passwords pbkdf2


【解决方案1】:

HMAC 在内部使用哈希函数。它不加密数据;它只是使用密钥创建可验证的“签名”(消息验证码)。 HMAC-SHA256 表示使用 SHA256 哈希函数的 HMAC。您还可以使用 HMAC-SHA1、HMAC-MD5 或 HMAC-WhateverHash。

是的,通过一次迭代,PBKDF2-HMAC-SHA256 很像使用 SHA256 对密码进行哈希处理。您仍然有一个盐,并且哈希函数被调用了两次(请参阅有关 HMAC 的任何参考),但是检查大量密码要快得多。

【讨论】:

  • 是和不是。如果密码一开始就包含足够的熵,那么 1 对 1000 的迭代计数是非常微不足道的。如果您需要 256 位的安全性,并且密码都是 8 个字符的 7 位 ASCII 码,那么添加一个相当于 10 位安全性的工作因素不会有多大作用。
  • @Henrick Hellström:您是否打算将您的评论作为答案?
  • @PeterO.:我认为 Nemo 给出了一个正确的、很好的答案。我的评论只涉及“快得多”这句话。
  • 因此,例如,如果它是一封加密的电子邮件,我会使用密钥对电子邮件地址进行 HMAC,然后收件人会使用相同的密钥执行此操作并检查它们是否相同?以及 HMAC 如何与 PBKDF2 一起玩
  • PBKDF2 在内部使用 PRF(伪随机函数)。使用哪个 PRF 是一个配置选项,而 HMAC-SHA1 恰好是该 PRF 最常见(也是推荐/默认)的选择。
【解决方案2】:

是的,一次迭代与调用底层 hmac 函数大致相同。您不想这样做,它使计算函数变得更加容易,从而更容易暴力破解密码选择。更多的迭代会使过程花费更长的时间。

PBKDF2 使用 HMAC。然而,HMAC 是一种使用任何散列函数的算法。您可以插入 md5、sha1、sha2 或其他任何内容。

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2013-07-07
    • 2013-05-10
    • 2023-03-09
    • 2021-07-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多