Keccak 是一个非常庞大且多产的算法家族,除了被采纳为 SHA-3 标准的核心成员外,它还衍生出了众多功能各异的成员。
站长发现:很多在线工具站点、技术文章博客网站,把 keccak512、keccak384、keccak256、keccak224 认知为加密函数,这是错误的!
🧬 核心基石:Keccak-f 与 Keccak-p 排列
所有 Keccak 家族成员都建立在底层的“置换函数”(Permutation)之上,这是它们安全与功能的根基。
- Keccak-f[b]:家族的核心,b 代表状态宽度,有 7 种 固定规格:b ∈ {25, 50, 100, 200, 400, 800, 1600}。每个规格的置换轮数是固定的。
- Keccak-p[b, nr]:Keccak-f 的超集(Superset)。它允许自定义轮数 nr,是实现性能与安全权衡的灵活工具。
- 两者的关系:Keccak-f[b] 本质上就是采用最大轮数的 Keccak-p[b, nr]。例如,Keccak-f[1600] 等价于 Keccak-p[1600, 24](24轮)。
🏛️ 官方标准:NIST 标准化的 SHA-3 家族
Keccak 赢得 NIST 哈希函数竞赛后,被标准化为 SHA-3 家族。这些是使用最广泛的成员,均基于 Keccak-f[1600] 排列。
固定长度哈希函数:
- SHA3-224
- SHA3-256
- SHA3-384
- SHA3-512
可扩展输出函数 (XOF):
- SHAKE128
- SHAKE256
此外,NIST 还发布了基于 Keccak 的更多标准化函数:
- cSHAKE128 / cSHAKE256:可自定义的 SHAKE 函数。
- KMAC:基于 Keccak 的消息认证码 (MAC)。
- ParallelHash / TupleHash:用于并行或结构化数据的哈希函数。
🚀 高速进化:KangarooTwelve 与 TurboSHAKE
为追求更高速度,Keccak 团队基于其核心排列开发了更快的变体。
- KangarooTwelve (KT):一个高速的 XOF 家族。它基于轮数减半的 Keccak-p[1600, 12] 排列,并利用树形哈希模式实现高度并行化。包含 KT128 和 KT256 两个实例。
- TurboSHAKE:KangarooTwelve 底层所使用的更基础的哈希模式。
🛡️ 认证加密:Ketje 与 Keyak 家族
Keccak 的“海绵结构”不仅可用于哈希,也能轻松实现认证加密 (AE)。Ketje 和 Keyak 就是基于此的两大认证加密方案。
- Ketje 家族:轻量级认证加密方案,包括 Ketje Jr 和 Ketje Sr。
- Keyak 家族:另一组认证加密方案,包括 River Keyak、Lake Keyak、Sea Keyak、Ocean Keyak 和 Lunar Keyak。
🧩 功能扩展:其他衍生工具
Keccak 的“海绵结构”不仅可用于哈希,也能轻松实现认证加密 (AE)。Ketje 和 Keyak 就是基于此的两大认证加密方案。
- Keccak[r, c]:通用的海绵函数家族,通过参数化容量 c 和比特率 r,可以定义无数个 Keccak 实例。
- SP 800-185 函数家族:NIST 发布的基于 Keccak 的专用函数。
- 伪随机数生成器 (PRNG):KeccakPRG,利用 Keccak 的“双工结构”(Duplex Construction)生成高质量的伪随机数。
总的来说,Keccak 已经从一个单一的哈希算法,发展成了一个庞大且不断演进的加密算法家族,其成员覆盖了从标准哈希、高速哈希到认证加密等多个重要领域。