什麼是 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