什么是 Keccak?
Keccak 是一系列加密散列函数,是 SHA-3(安全散列算法 3)标准的基础。由 Guido Bertoni、Joan Daemen、Michaël Peeters 和 Gilles Van Assche 开发,在 2012 年赢得了 NIST 散列函数竞赛。
主要特征:
- 海绵结构:使用创新的海绵函数设计,包含吸收和挤压阶段
- 可变输出长度:可以产生任何所需长度的散列输出
- 高安全边际:设计时具有大量安全储备
- 不同于 SHA-1/SHA-2:基于完全不同的数学原理
- Keccak[c=2d] 变体:此实现使用原始 Keccak 规范,容量 c = 2d(其中 d 是输出长度)
Keccak 与 SHA-3 (FIPS 202) 的区别: 🔍 重要区别:原始 Keccak 和标准化的 SHA-3 并不相同:
- 原始 Keccak:使用容量 c = 2d 和不同的填充(Keccak 填充:0x01)
- FIPS 202 SHA-3:使用容量 c = 2d 但不同的填充(SHA-3 填充:0x06)
- 域分离:填充差异确保 Keccak 和 SHA-3 对相同输入产生不同输出
- 此工具实现:原始 Keccak 规范,使用 Keccak[c=2d] 参数化
安全状态: ✅ Keccak 被认为是高度安全的,没有已知的实际攻击。它提供了出色的安全边际和对各种密码分析技术的抗性。
常见用途:
- 以太坊区块链(使用原始 Keccak-256)
- 学术研究和加密协议
- 需要可变长度散列输出的应用
- 需要 SHA-2 系列替代品的系统
- 区块链和加密货币实现
相对于传统散列的优势:
- 根本不同的设计降低了相关攻击的风险
- 灵活的输出长度(不限于固定大小)
- 强大的理论安全基础
- 抗长度扩展攻击
- 在各种平台上的出色性能
技术说明:
- Keccak-256:产生 256 位输出(最常见的变体)
- 容量公式:c = 2d 确保适当的安全级别
- 以太坊使用:以太坊特别使用原始 Keccak-256,而不是 SHA3-256