該演算法的最終實作已經發布 ,它提供了一個加密雜湊函數,專為文件完整性檢查、訊息認證和數位簽章資料產生等應用而設計。 BLAKE3 並非為密碼哈希而設計(對於密碼哈希,請使用 yescrypt、bcrypt、scrypt 或 Argon2),因為它旨在盡可能快速地計算哈希值,並保證無碰撞,防止 並且對哈希資料的大小不敏感。參考實作是 BLAKE3 雙重授權-公共領域(CC0)和 Apache 2.0。
新雜湊函數的關鍵區別在於其極高的雜湊計算效能,同時保持了SHA-3等級的可靠性。預設情況下,BLAKE3 產生的雜湊大小為 32 位元組(256 位元),但可以擴展為任意值。在針對 16 KB 檔案的雜湊生成測試中,BLAKE3 的效能比 SHA3-256 高出 15 倍,比 SHA-256 高出 12 倍,比 SHA-512 高出 8 倍,比 SHA-1 高出 6 倍,比 BLAKE2b 高出 4 倍。在處理大量資料時,仍然存在顯著的差距,例如,BLAKE3 被證明 對 256GB 隨機資料進行雜湊計算時,SHA-8 速度提高 1 倍。
該演算法由著名密碼學專家開發(, , , )並繼續開發演算法 並使用一種機制對區塊鏈樹進行編碼 。與 BLAKE2(BLAKE2b、BLAKE2s)不同,BLAKE3 為所有平台提供單一演算法,不受哈希的位元深度和大小的限制。
效能提升是透過將輪數從 10 減少到 7 輪,並將區塊分別以 1 KB 的區塊進行哈希處理而實現的。據開發者稱,他們找到了一種令人信服的 ,在保持相同可靠性水平的情況下,可以用 7 輪而不是 10 輪來解決問題(為了清楚起見,我們可以用在攪拌機中攪拌水果的例子——7 秒後水果已經完全混合,再過 3 秒不會影響混合物的稠度)。同時,一些研究人員對此表示懷疑,認為即使 7 輪目前足以抵禦所有已知的哈希攻擊,但如果將來檢測到新的攻擊,額外的 3 輪可能會有用。
至於分塊,在 BLAKE3 中,資料流被分成 1 KB 的區塊,每個區塊單獨進行雜湊運算。基於基塊上的哈希值 形成一個大的哈希值。這種劃分可以解決計算雜湊值時資料處理並行化的問題——例如,您可以使用 4 流 SIMD 指令同時計算 4 個區塊的雜湊值。傳統的 SHA-* 雜湊函數是依序處理資料的。
BLAKE3的特點:
- 生產率高;
- 安全,包括抵抗 ,SHA-2 容易受到該漏洞的影響;
- 提供跨任意數量的執行緒和 SIMD 通道的平行運算;
- 增量更新和驗證流處理的可能性;
- 在 PRF、MAC、KDF、XOF 模式中的應用以及作為常規哈希;
- 適用於所有架構的單一演算法,在 x86-64 系統和 32 位元 ARM 處理器上都快速運作。
來源: opennet.ru
