本文へスキップ
ecdsa.com

BLAKE2

高速なハッシュ関数のファミリー(64 ビットプラットフォーム向けで最大 64 バイトのダイジェストを出力する BLAKE2b と、32 ビット向けで最大 32 バイトの BLAKE2s)で、RFC 7693 で規定され、Argon2、WireGuard、PASETO、libsodium で使われています。
別表記BLAKE2bBLAKE2sRFC 7693

BLAKE2 は SHA-3 の最終候補だった BLAKE から派生したもので、伸長攻撃に耐性のある HAIFA 方式の反復構造を使います。鍵付きモード(HMAC を使わない MAC モード)、ソルトとパーソナライゼーションのパラメーター、ツリーハッシュ用の派生版を備えています。テストベクトル:空文字列の BLAKE2b-512 は 786a02f742015903 で始まります。

Argon2(RFC 9106 のパスワードハッシュは内部で BLAKE2b を使用)、WireGuard(ハッシュと MAC に BLAKE2s を使用)、PASETO v4 の local トークン(MAC として鍵付き BLAKE2b を使用。v2 では nonce の導出に使用)、libsodium の crypto_generichash、Zcash、多くのコンテンツアドレス型ストレージで使われています。BLAKE3(2020年)は、独自の仕様を持つ、より高速なツリーベースの別個の後継です。

BLAKE2 は NIST の承認済みハッシュではないため、FIPS 認証済みモジュールは承認済みサービスに BLAKE2 を使えません。ハッシュ専用命令を使わないソフトウェア処理では通常 SHA-256 より高速ですが、SHA 拡張命令を持つ CPU では優劣が逆転します。Apple M4 Max の 1 コアで、OpenSSL 3.6.5 は BLAKE2b-512 を約 1.27 GB/s、SHA-256 を 2.85 GB/s でハッシュします。

規格と参考文献

すべての用語