为什么我应该选择 SHA(例如 SHa-512)而不是 bcrypt 或 PBKDF2,以实现 FIPS 合规性?

信息安全 bcrypt pbkdf2 菲普斯
2021-09-05 07:26:19

由于法规的原因,我的公司需要符合 FIPS。

我正在查看FIPS 批准的加密方法的当前列表,我注意到 bcrypt 或 PBKDF2 都不在此列表中。

  • 这是否意味着我应该使用加盐SHA-512 来存储密码?

  • 这是一个好主意吗?

2个回答

FIPS 140-2 不包括密码散列的主题。因此,从这个意义上说,没有“FIPS 批准”的密码散列函数。“按原样”使用 SHA-512,加或不加盐,无论您如何在发动机中注入所述盐,都不会授予您 NIST 的批准。NIST 根本不批准(或不批准)密码散列。

NIST 世界中最接近您的是SP 800-132 ,它列出了基于密码的密钥派生的批准方法,这与密码散列非常接近(但不相同)。NIST 批准 PBKDF2,只要 PBKDF2 中使用的基础原语本身是“批准的”(即它是与 SHA-2 函数之一一起使用的 HMAC)。

FIPS 140-2 没有列出密码散列算法。如果您确实需要使用经过 FIPS 140-2 验证的算法,则需要找到经过 NIST 验证的解决方案,以满足您所需的合规级别。

您可能需要通过 FIPS 审核员来验证这一点,但 PBKDF2 具有例如 PBKDF2-HMAC-SHA256 或 512 之类的实现。这可以被认为是合规的,因为实现是使用 SHA256 或 512。