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-2受到过重大攻击,但破解哈希函数只是时间问题而已,要开发出新的标准函数还需要数年时间。考虑到这一点,再加上SHA-1于2004年和2005年都被攻击得逞,美国国家标准与技术研究院认为有必要创建全新的加密哈希算法。2012年,美国国家标准与技术研究院宣布Keccak在算法竞赛中胜出,并标准化为SHA家族的最新成员,即排位为SHA-3。
美国国家标准与技术研究院选择Keccak的一大原因在于,经过证明,该算法的创新结构比其他算法更安全高效。从技术上讲,SHA-3算法依靠所谓的“海绵函数”(或称“海绵建构”),这与SHA-1和SHA-2所用的默克尔·达姆加德(Merkle Damgård)结构截然不同。