Keccak / SHA-3是用于加密哈希函数的新的NIST标准。但是,它在软件实现中比BLAKE2慢得多。 Keccak是否具有补偿优势?

评论

这就是NIST声称他们选择Keccak作为赢家的原因,无论如何:csrc.nist.gov/groups/ST/hash/sha-3/…

keccak在硬件上的速度要快得多,而Blake-2不是竞争的一部分,而Blake是。预计未来的CPU将像AES一样加速keccak内核置换。

要总体上判断Keccak排列的软件性能(而不是专门针对SHA-3),您可能还需要查看KangarooTwelve派生的哈希函数。同样,BLAKE2bp和BLAKE2sp并行变体。当您使用像AVX2这样的现代SIMD指令集来实现这些功能时,所有这些功能都将达到惊人的速度。

#1 楼

(公开:我是BLAKE2的作者之一,但不是BLAKE。) (注意:这些幻灯片中的性能数据已经过时了-BLAKE2现在比以前更快。)

幻灯片中包含了NIST关于SHA-3竞赛的第三轮报告的引文,其中显示了一些内容NIST认为BLAKE(不是BLAKE2)与Keccak相比的优缺点。

这是我写给幻灯片的博客文章。

NIST给出的结论是,与Keccak相比,BLAKE与SHA-2更相似。设计SHA-3竞赛时,其主要目的是提供一个新的哈希函数,以备SHA-2损坏时使用,因此要求获胜者与SHA-2不同是很有意义的。但是现在,随着近十年的研究和SHA-2的不断发展,与SHA-2类似的哈希函数似乎并不坏,甚至可能还不错。

还有另一个NIST给出的我在幻灯片中省略的原因是Keccak在ASIC实施方面更有效。 ,谁将为您的项目构建特殊的硬件,但是对我来说,更灵活/通用的性能更重要。 (请参阅亚当·兰利(Adam Langley)关于该主题的博客文章。)此外,一切在硬件上都是快速的!请参阅此安全哈希函数的硬件实现目录。 BLAKE的ASIC实现可以处理大约12.5 GB / s,而Keccak可以处理大约44 GB / s。 BLAKE2的ASIC实现可能比BLAKE的类似实现快40%,即约17.5 GB / s。哈希函数。

评论


$ \ begingroup $
在设计Blake2时,您是否考虑过如何保护嵌入式设备上的侧通道攻击(例如差分功率分析)?在加法掩码(加法模$ 2 ^ n $)和布尔掩码(xor)之间切换非常昂贵。
$ \ endgroup $
–希望这是一个开始
16-09-27在8:03

$ \ begingroup $
这些硬件性能数字没有显示出达到该性能水平所需的功率
$ \ endgroup $
– Richie车架
16-9-28 at 1:37

$ \ begingroup $
@ Hopethat'sastart在BLAKE原始论文中讨论了对旁通道攻击的抵抗力。
$ \ endgroup $
–森林
18/12/25在11:44

#2 楼

Blake-2不参与SHA-3竞争,而Blake的前身是Blake-2。 Blake-2在软件方面比Blake快1.3到1.7倍,最有利于512位摘要。
性能
两个SHA-3决赛入围者之间的软件性能比较表明Blake是在512位哈希中,比现代CPU上的Keccak快大约3倍,而在256位哈希中,它仅快1.26倍。性能以每个字节的周期数列出。
  Algorithm        512-bit        256-bit
  ---------------------------------------
  Blake            5.18 cpb       6.79 cpb
  Keccak           15.99 cpb      8.56 cpb

硬件设计对Keccak来说是一个巨大的胜利。在相同的功耗,但频率和晶体管数不同的情况下,性能以ASIC每秒的千兆字节列出。在FPGA平台上,Keccak提供了类似的优势,即性能至少提高了4倍,而功耗预算仅增加10%,并且电路数量相同或少于Blake。
作为标准化过程的一部分,在讨论了诸如ARM,Intel和AMD等未来的商用处理器。这将使用多达25个128位寄存器来保存状态和所有舍入常量,分别处理回合,或者使用13 128位寄存器来仅保存状态并处理一组舍入,并动态生成舍入常数。 。对于Keccak状态,可能还会有一个特殊的1600位寄存器。
这将使Keccak具有与使用适当的CPU指令提供的AES类似的性能优势,并且可能使其比Blake-2更快,几乎可以肯定对于256位哈希,性能已经非常接近。
安全性
Keccak的舍入计数足够高,可以提供很大的安全余量,并且使用的海绵结构可以提供很好的安全性安全证明,随着时间的推移,证明只会更好。
Blake还具有很高的安全裕度,这使Blake-2的回合计数较低,并且仍然保留了给定大小的哈希函数所期望的安全性。对于Blake-2,Blake使用的构造也进行了更改,以简化软件平台中的填充和内存访问,但也仅将其锁定为字节处理。 Blake和Keccak可以处理位流。
由于低汉明权重和结构相似性,Keccak中的舍入常数可能是其最弱点。 Blake-2的常数也小于Blake。这可能会使某些攻击的复杂度降低,但是攻击的复杂度已经高于哈希函数的预期安全性。对这两个散列函数都没有攻击,甚至都没有破坏它们。对Keccak的唯一实际攻击方法是在少于10轮的简化轮变体上以及在少于7轮的Blake上进行。
由于攻击者的低优势,Blake-2b是基于密码的密钥派生功能的最佳选择。
其他
作为标准化过程的一部分,Keccak的柔性海绵构造导致SHAKE XOF可以为各种应用生成任意长度的比特流。也有关于基于Keccak置换的认证加密的讨论,Keyak是基于SHA-3的Keccak置换的第二轮CAESAR候选。
布雷克和派生的灵活性不如诺克,诺克斯不如布雷克什么都可以,但它们实际上并没有像一个软件包一样,并且核心功能是不同的。