BLAKE3 (2020)(ブレイクスリー)
Jack OConnor / Jean-Philippe Aumasson 2020年公開のハッシュ関数。BLAKE2 (2012) の後継・SHA-256 比5-10倍高速・並列処理可能、現代の最速ハッシュ。
概要
BLAKE3 は2020年1月9日にJack OConnor / Jean-Philippe Aumasson (BLAKE / BLAKE2 設計者) / Samuel Neves / Zooko Wilcox-OHearn が公開した、BLAKE2 (2012) の後継ハッシュ関数。Bao Tree (Merkle Tree 簡素化) ベースで並列処理対応・SHA-256 比5-10倍高速・SIMD (AVX2 / AVX-512) / Multi-Threading で15-30 GB/s スループット。出力長可変・MAC / KDF / Stream 用途・サイドチャネル耐性で、Cargo (Rust) / Rsync / IPFS / 各種P2P プロトコルで急速採用される現代の最速ハッシュ。
BLAKE3 主要仕様
| 項目 | 仕様 |
|---|---|
| 出力長 | 任意 (デフォルト 256bit) |
| 内部ブロック | 64 byte |
| Chunk サイズ | 1024 byte (1KB) |
| 構造 | Bao Tree (Merkle Tree 簡素化) |
| 並列処理 | あり (Tree レベル並列) |
| SIMD | AVX-512 / AVX2 / SSE / NEON |
| Multi-Thread | あり |
| 用途 | Hash / MAC / KDF / Stream / XOF |
| ライセンス | CC0 (Public Domain) |
BLAKE シリーズ系譜
| バージョン | 年 | 主要特徴 |
|---|---|---|
| BLAKE | 2008 | SHA-3 候補 (最終5候補) |
| BLAKE2 | 2012 | SHA-3 後・MD5/SHA-1 代替 (Linux/Git) |
| BLAKE3 | 2020 | 並列処理 / 5-10倍高速 |
BLAKE はSHA-3 コンペティション (2008-2012) で最終5候補・最終Keccak (SHA-3) が優勝・BLAKE は標準化されなかったが「SHA-3 同等の安全性で実装簡素」として認知・後にBLAKE2 / BLAKE3 として進化。
性能比較 (大ファイルハッシュ)
| アルゴリズム | x86 + HW 加速 | ARM (Apple M2) | 純SW |
|---|---|---|---|
| MD5 | 4 GB/s | 3 GB/s | 0.5 GB/s |
| SHA-1 | 6 GB/s | 5 GB/s | 0.5 GB/s |
| SHA-256 | 1.5 GB/s (SHA-NI) | 4 GB/s | 0.3 GB/s |
| SHA-512 | 1.0 GB/s | 3 GB/s | 0.5 GB/s |
| SHA-3 (Keccak) | 0.5 GB/s | 0.5 GB/s | 0.4 GB/s |
| BLAKE2b | 1.5 GB/s | 1.5 GB/s | 1.0 GB/s |
| BLAKE3 (1 Thread) | 5 GB/s | 3 GB/s | 2 GB/s |
| BLAKE3 (8 Threads) | 30 GB/s | 15 GB/s | - |
並列処理 + AVX-512 で SHA-256 の20倍高速。
並列処理 / Tree モード
BLAKE3 はBao Tree (修正Merkle Tree) で並列処理:
[Root (出力)]
/ \
[L1] [R1]
/ \ / \
[L2][L3] [R2][R3]
... ...
入力を1KB Chunk に分割 → 各Chunk を並列ハッシュ → Tree状に集約。Multi-Core CPU で線形スケール。
主要採用
| 用途 | 採用 |
|---|---|
| Cargo (Rust) | クレートハッシュ |
| Rsync 3.4 (2024) | ファイル差分 |
| IPFS | コンテンツアドレス |
| Veracrypt | 一部 |
| Tor | 一部実験 |
| Telegram MTProto 2.0 | 一部 |
| WebAssembly (実験) | ハッシュ |
| Linux 5.7+ | 一部Kernel |
| zstd (圧縮) | チェックサム |
XOF (Extendable-Output Function)
BLAKE3 は出力長を任意に設定可能 (Extendable):
import blake3
h = blake3.blake3(b"hello").digest(length=1024) # 1KB 出力
h2 = blake3.blake3(b"hello").digest(length=32) # 32 byte
KDF (Key Derivation Function) / Random Stream 用途で柔軟。
ライセンス
CC0 (Public Domain 等価)・特許なし・商用 / 個人完全フリー。BLAKE 系統は元々djb 影響でPublic Domain 文化、Sodium / NaCl と同じ思想。
SHA-3 (Keccak) vs BLAKE3
| 項目 | SHA-3 | BLAKE3 |
|---|---|---|
| 標準化 | NIST FIPS 202 (2015) | なし (Public Domain) |
| 構造 | Sponge | Tree (Merkle) |
| 並列処理 | × | ◎ |
| 速度 | 遅 (0.5 GB/s) | 速 (5-30 GB/s) |
| HW加速 | 限定的 | SIMD 効果大 |
| 用途 | NIST 標準 | 高速ハッシュ |
SHA-3 はNIST 認証必要時のみ・性能優先ならBLAKE3 圧倒。
関連用語との違い
- vs SHA-256: 5-10倍高速 / 並列処理
- vs SHA-3: 標準化 / 性能
- vs BLAKE2: 後継・並列処理
FAQ
Q1: SHA-256 から移行? A: NIST 認証必要でない用途 (内部チェックサム / P2P プロトコル) ならBLAKE3 推奨・5-10倍高速で実用差大。FIPS 必須なら SHA-256 / SHA-3。
Q2: 暗号通貨で? A: Bitcoin / Ethereum は SHA-256 / Keccak-256 でPath dependent・新規ブロックチェーン (Algorand 等) はBLAKE3 採用例増。
Q3: 個人で利用?
A: b3sum (Cargo install b3sum) でMD5sum / SHA256sum と同じ感覚で利用可。大ファイルハッシュで実用差体感可能。