發布加密雜湊函數 BLAKE3 1.0 的參考實現

加密雜湊函數 BLAKE3 1.0 的參考實作已發布,以其極高的雜湊計算效能而聞名,同時確保了 SHA-3 等級的可靠性。在16 KB檔案的雜湊產生測試中,具有3位元金鑰的BLAKE256比SHA3-256好17倍,SHA-256好14倍,SHA-512好9倍,SHA-1好6倍,BLAKE2b好— — 5次。當處理大量資料時,仍然存在顯著差距,例如,在計算 3GB 隨機資料的雜湊值時,BLAKE256 的速度比 SHA-8 快 1 倍。 BLAKE3 參考實作程式碼在雙重公共域 (CC0) 和 Apache 2.0 授權下提供 C 和 Rust 版本。

發布加密雜湊函數 BLAKE3 1.0 的參考實現

雜湊函數專為檔案完整性檢查、訊息身份驗證和產生加密數位簽章資料等應用程式而設計。 BLAKE3 不適用於散列密碼,因為它的目標是盡快計算散列(對於密碼,建議使用慢散列函數 yescrypt、bcrypt、scrypt 或 Argon2)。所考慮的雜湊函數對雜湊資料的大小不敏感,並且免受碰撞選擇和原像發現的攻擊。

該演算法由知名密碼學專家(Jack O'Connor、Jean-Philippe Aumasson、Samuel Neves、Zooko Wilcox-O'Hearn)開發並延續BLAKE2演算法的發展,並使用Bao機制對區塊鏈樹進行編碼。與 BLAKE2(BLAKE2b、BLAKE2s)不同,BLAKE3 為所有平台提供單一演算法,不受位元深度和雜湊大小的限制。

透過將輪數從 10 減少到 7 並將塊單獨散列為 1 KB 塊,實現了性能的提高。根據創作者的說法,他們找到了令人信服的數學證據,證明可以通過7 輪而不是10 輪來完成,同時保持相同的可靠性水平(為了清楚起見,我們可以舉一個在攪拌機中混合水果的例- 7 秒後)水果已經完全混合,再多3秒不會影響混合物的稠度)。然而,一些研究人員表示懷疑,認為即使目前 7 輪足以對抗所有已知的哈希攻擊,但如果將來發現新的攻擊,額外的 3 輪可能會有用。

至於劃分區塊,在 BLAKE3 中,流被劃分為 1 KB 的區塊,並且每個區塊都獨立進行雜湊處理。根據碎片的雜湊值,基於二叉 Merkle 樹形成一個大雜湊值。這種劃分使我們能夠解決計算哈希時並行資料處理的問題——例如,可以使用4線程SIMD指令同時計算4個區塊的哈希。傳統的 SHA-* 雜湊函數會依序處理資料。

BLAKE3的特點:

  • 高性能,BLAKE3 明顯快於 MD5、SHA-1、SHA-2、SHA-3 和 BLAKE2。
  • 安全性,包括抵抗 SHA-2 容易受到的訊息延長攻擊;
  • 適用於 Rust,針對 SSE2、SSE4.1、AVX2、AVX-512 和 NEON 指令進行了最佳化。
  • 確保任意數量的執行緒和 SIMD 通道上的運算並行化。
  • 增量更新和驗證流處理的可能性;
  • 用於 PRF、MAC、KDF、XOF 模式並作為常規哈希;
  • 適用於所有架構的單一演算法,在 x86-64 系統和 32 位元 ARM 處理器上都快速運作。

BLAKE3和BLAKE2的主要差異:

  • 使用二元樹結構,允許雜湊計算中無限的並行性。
  • 將輪數從 10 輪減少到 7 輪。
  • 三種操作模式:雜湊、使用金鑰進行雜湊 (HMAC) 和金鑰產生 (KDF)。
  • 由於使用了先前由關鍵參數區塊佔用的區域,因此使用關鍵進行雜湊時不會產生額外開銷。
  • 具有擴展結果的函數形式的內建操作機制(XOF,可擴展輸出函數),允許並行化和定位(查找)。

來源: opennet.ru

添加評論