我在一个必须满足FISMA系统要求的FISMA要求的组织中工作。我要做的一件事就是为我们的密码实现哈希算法。我有很多选择:SHA-2,MD5,bcrypt(与Blowfish),RIPE等。
通过各种NIST出版物,FISMA没有说明我必须使用特定的算法来满足他们的要求。
但是,根据FISMA,FIPS 180-4指定WHICH哈希算法被认为是安全的,这是SHA-1到SHA-512/256。 NIST SP 800-132也建议使用PBKDS2。
这是否意味着: 一个)。我必须使用SHA作为哈希算法来传递FISMA审计/要求吗?
... ... OR
B)。我可以使用任何算法,只要它比SHA更好吗?即不要使用MD5,但是bcrypt或RIPE没问题。
答案 0 :(得分:1)
是的,你必须使用SHA。 SP 800-53在整个地方引用FIPS 140-2,暗示您必须使用SHA-256或SHA-512。 (Avoid SHA-1)。
总统执行办公室的MEMORANDUM FOR HEADS OF EXECUTIVE DEPARTMENTS AND AGENCIES清楚地说明了这一点:
11。是使用国家标准与技术研究所(NIST)的出版物 需要?
是。对于非国家安全计划和信息系统,机构 必须遵循NIST标准和指南。的 ... 强>
12。 NIST指南是否灵活?
是。虽然代理商必须遵守NIST的标准和指南 根据OMB政策,NIST的指导方针具有灵活性 (特别是在800系列中)代理机构如何应用它们。的然而, 联邦信息处理标准(FIPS)是强制性的。 ... 强>
(并考虑一下.NIST没有将SHA作为标准发布,以便您可以转而使用别的东西......)
此外,SHA和Bcrypt并不是真正可比的。 SHA是一组散列算法。 Bcrypt更像是一个以Blowfish算法为核心来生成哈希的过程。 Bcrypt的FIPS等价物是PBKDF2,它使用SHA作为其核心算法。
答案 1 :(得分:1)
两者怎么样?使用bcrypt对密码进行哈希/加密,以利用其工作因素功能,提供针对大规模并行暴力攻击的未来验证。然后SHA-512来自bcrypt的结果并存储它。
您可以从bcrypt获得保护,并检查FISMA / FIPS框,因为您正在存储使用其接受的算法生成的哈希值。
即使有人可以强制使用SHA-512来查找生成您已存储在数据库中的相同哈希的输入,该输入也不是可以将用户登录到系统的工作密码。