SHA3​​ (Keccak & SHAKE) 与 SHA2 相比如何?我应该使用非 SHAKE 参数吗?

信息安全 密码学 哈希 sha-3
2021-09-06 06:18:08

Keccak 是 SHA3 竞赛的获胜者。由于 Keccak 是高度可定制的(可能是为了安全/内存/时间/速度的权衡),所以关于 Keccak 与 SHA2 的比较似乎确实存在一些争议。SHAKE 似乎是一组参数,以减少 SHA2 的插入式替换中的摩擦

Keccak/SHAKE 在以下方面与 SHA2 相比如何:

  • 安全感
  • 位预像电阻
  • 第二原像电阻
  • 声明“高于 256 位的安全强度级别毫无意义”。
  • “与 SHA-2 相比,SHA-3 不太适合用作 pbkdf2 的 PRF”
  • 任何其他值得比较的标准

鉴于这是一个非常复杂的主题,并且 Keccak 有许多排列,我认为 SHAKE 简化可能会从某些场景中删除一些灵活性、安全性和性能......

话虽如此,哪些场景值得与 SHAKE 标准不同并直接使用 Keccak(因为缺乏更好的类比)?

2个回答

NIST 有一个出色的文档,详细说明了他们想要创建 SHA-3 的原因以及 SHA-2 的缺点,这似乎解决了您的许多问题。具体而言,本文档涵盖了设计挑战以及 Keccak 如何解决这些挑战。

http://csrc.nist.gov/groups/ST/hash/sha-3/documents/burr_dimacs2013_presentation.pdf

我认为使用“海绵函数”的主要好处之一是它们的持续输入。在海绵函数中,您不会将输入作为位块提供,而是逐个提供。这使得 SHA3 与 SHA2 截然不同,并且使比较变得过时了。

此外,在每一位之后,Keccak 在海绵函数中运行某种排列。但是,它必须按设计运行如此多的排列。海绵函数必须一个一个地浸泡在比特中,然后在某个点之后,将它们一个一个地释放出来。