Keccak

高阶

Keccak(英语读作“ketchak”)是一种多功能加密函数,由Guido Bertoni、Joan Daemen、Michaël Peeters和Gilles Van Assche设计而成。Keccak用途众多,但最为人熟知则是用作哈希函数。与SHA-1和SHA-2等较早的哈希算法相比,Keccak的安全级别更高。

“SHA”是“安全哈希算法”的首字母缩写,即由美国国家标准与技术研究院(NIST)发布的一组加密哈希函数。SHA-1和SHA-2均由美国国家安全局(NSA)设计,因此结构较为相似。虽然Keccak支持的输出大小(哈希长度)与SHA-2相同,但二者的运作机制则截然不同。尽管如此,Keccak仍是SHA家族的一员,通常称为“SHA-3”。

SHA-1于2004年进行理论攻击,并于2005年公开发布。多年后的2011年,美国国家标准与技术研究院宣布SHA-2为即将投入使用的哈希函数新标准。但是,从SHA-1迁移到SHA-2的速度相当缓慢。直至2017年初,大部分开发人员和计算机科学家才最终完成了SHA-2迁移。不久之后,谷歌于2017年2月宣布对SHA-1成功发起碰撞攻击。此后,大众认为SHA-1不再安全,不愿继续使用。
美国国家标准与技术研究院宣布公开竞争和审查程序,旨在寻求可攻克此前SHA-1和SHA-2缺陷的全新加密哈希函数。随后,Keccak函数(SHA-3)于2007年左右开始开发。

尽管尚未有证据证明SHA-2受到过重大攻击,但破解哈希函数只是时间问题而已,要开发出新的标准函数还需要数年时间。考虑到这一点,再加上SHA-1于2004年和2005年都被攻击得逞,美国国家标准与技术研究院认为有必要创建全新的加密哈希算法。2012年,美国国家标准与技术研究院宣布Keccak在算法竞赛中胜出,并标准化为SHA家族的最新成员,即排位为SHA-3。 

美国国家标准与技术研究院选择Keccak的一大原因在于,经过证明,该算法的创新结构比其他算法更安全高效。从技术上讲,SHA-3算法依靠所谓的“海绵函数”(或称“海绵建构”),这与SHA-1和SHA-2所用的默克尔·达姆加德(Merkle Damgård)结构截然不同。

目前,SHA-2仍被认为安全可靠,并获得广泛使用。例如,比特币和其他加密货币均使用SHA-256算法。该算法在挖矿过程中发挥着至关重要的作用。SHA-3受攻击的可能性微乎其微,因此应用将越来越广。尽管如此,随着密码学领域持续发展,新的缺陷随之暴露,我们会在未来几年内见证更多加密哈希算法的开发。