2012年10月 《SHA-3花落Keccak》

来源:互联网 发布:网络编程招聘 编辑:程序博客网 时间:2024/04/28 14:15

SHA-3花落Keccak

——201210月安全天下事

 

江海客

 

2012103日,美国国家标准与技术研究院(NIST)宣布新一代hash算法SHA-3的漫长遴选已经产生结果,经过4年的时间,Keccak算法最终摘得正果。这毫无疑问是本月安全业界最重量级的消息。

从整体结构上看,Keccak算法主要依靠基于海绵结构(sponge construction)的海绵函数(sponge function),状态更新使用的是作用在三维数组上的五步迭代排列。学习和赏鉴Keccak的设计时,我不禁想起在201012月冲击最后一轮评选的五个算法产生之后,一名业内友人对我作出了如下预言:

SHA-3的结果将宣告M-DMerkle-Damgard)迭代结构甚至部分进化变形彻底的失败。 GrøstlJH的出局将是必然;Skien的设计巧妙,但书卷气太重,硬件性能也不算理想;而BLAKE进入本轮本身就有些意外。最终Keccak必然胜出。”

回看起来,在M-D迭代结构逐步被算法研究者吃透的情况下,多个通用性攻击方式先后重挫了MD4MD5SHA-1。尽管采用宽管道M-D等改进设计在对抗类似攻击时有了明显的提高,但从NIST本次对算法的要求来看,明显存在寻求M-D之外设计的倾向。

Keccak的设计团队也值得我们分析和关注。按照Keccak算法的官方排名,其署名次序为Guido BertoniJoan DaemenMichaël PeetersGilles Van Assche。其中,我们对Joan Daemen并不陌生,他正是AES中选算法Rijndael的两位作者之一。在这四位作者中,Guido Bertoni是意大利人,其他三位都是比利时人。在第三轮与Keccak竞争的其他四个算法中,BLAKEGrøstl也分别来自丹麦和瑞士。继AES之后,欧洲大陆再次证明了其在信息安全基础研究方面的实力。

Keccak也具有非常鲜明的“硬件化”色彩。四位作者中三位都来自意法半导体(STMicroelectronics),Michaël Peeters则来自恩智半导体(NXP Semiconductor)。这也可以理解,由于hash算法在电子认证领域有比较广泛的应用,因此SHA-3算法的在硬件实现方面的特性,包括复杂度、实现成本和效率等,都将成为非常重要的指标。不知道是否因为海绵结构在硬件实现上有特殊的优势,在51个备选算法中,另外一个采用了Sponge的算法Luffa,也是由硬件厂商日本日立(Hitachi)的研究者提交的。

值得我们思考的一个细节是,SHA-351个入围算法中,有多个借鉴了AES的思想和部分设计,其中也包括最终5个入围算法之一的Grøstl;反而是AES作者之一所在的Keccak团队相对另辟蹊径,突破了自我。这个情况令人感慨不已。

目前在Keccak算法的官方网站keccak.noekeon.org,可以下载到这个算法用CPython VDHL语言的实现代码。但需要提醒使用者的是,那些认为将MD5替换成Keccak来保存口令就会更安全的想法是愚蠢的,正如我们多次所说,hash算法的设计初衷并非用于保存口令,而是用于完整性验证。Keccak的彩虹表(rainbow table)一定正被高速地计算着。

在最开始的SHA-3的候选名单中,我们也高兴地看到有中国的研究者提交算法,并进入了第一轮51个入围的算法名单。尽管似乎这是两份比较传统的基于M-D迭代结构的改进算法,但对于保守的中国密码学界来说,有人参与这种互动尝试,不能说是一件坏事。我们曾赞叹过美国创造这种全世界智慧为美国打工模式的先见,而对中国,在注定是艰难和孤独的大国崛起之路,也必须要有构建自己的智慧创造模式的抱负与行动。