Keccak(发音为“ketchak”)是由 Guido Bertoni、Joan Daemen、Michaël Peeters 和 Gilles Van Assche 设计的多功能加密函数。尽管 Keccak 可能用于其他目的,但它最出名的是一种哈希函数,与 SHA-1 和 SHA-2 等旧哈希算法相比,它提供了更高级别的安全性。
SHA 代表安全哈希算法,是指由美国国家标准与技术研究所 (NIST) 发布的一组加密哈希函数。 SHA-1 和 SHA-2 都是由美国国家安全局 (NSA) 设计的,因此具有相似的结构。尽管 Keccak 支持与 SHA-2 相同的输出大小(哈希长度),但其工作机制却截然不同。尽管如此,Keccak 仍然是 SHA 家族的一部分,通常被称为 SHA-3。
对 SHA-1 的理论攻击是该算法于 2004 年执行,并于 2005 年公开。几年后,即 2011 年,NIST 宣布 SHA-2 作为要使用的新标准哈希函数。然而,从 SHA-1 到 SHA-2 的迁移相当缓慢,直到 2017 年初,很大一部分开发人员和计算机科学家才最终迁移到 SHA-2。不久之后,Google 于 2017 年 2 月宣布成功进行了 SHA-1 碰撞攻击,从那时起,SHA-1 不再被认为是安全的,并且不鼓励使用它。
Keccak 函数 (SHA-3) 于 2007 年左右开始开发,此前 NIST 宣布公开竞争和审查流程,寻求新的加密哈希值可以克服前面的 SHA-1 和 SHA-2 的潜在缺陷的功能。
虽然没有对 SHA-2 进行重大攻击尽管已经得到证明,但预计哈希函数会随着时间的推移而被破解,并且需要数年时间才能开发出新的标准函数。考虑到这一点,再加上 2004 年和 2005 年针对 SHA-1 的成功攻击,NIST 意识到需要创建一种新的加密哈希算法。 2012 年,NIST 宣布 Keccak 为竞赛获胜算法,并将其标准化为 SHA 家族的最新成员(因此称为 SHA-3)。
Keccak 被 NIST 选择的原因之一是其创新结构,事实证明该结构比其他算法。从技术上讲,SHA-3 算法依赖于所谓的海绵函数(或海绵构造) - 与 SHA-1 和 SHA-2 使用的 Merkle Damgård 构造相反。
目前,SHA-2 仍被认为是安全的并被广泛使用。例如,比特币和其他加密货币使用 SHA-256,在挖矿过程中发挥着至关重要的作用。我们可能会看到 SHA-3 的采用不断增加,因为它似乎远未成功受到攻击。尽管如此,随着密码学领域的进步和新缺陷的发现,我们将在未来几年看到更多的密码哈希算法被开发出来。