暗号ハッシュ関数 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回。非常に大量のデータを処理する場合には、大きなギャップが残ります。たとえば、3 GB のランダム データのハッシュを計算する場合、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 の部分に分割され、それぞれの部分が独立してハッシュされます。断片のハッシュに基づいて、バイナリ マークル ツリーに基づいて 4 つの大きなハッシュが形成されます。この分割により、ハッシュ計算時のデータ処理の並列化の問題を解決できます。たとえば、4 スレッドの SIMD 命令を使用して XNUMX つのブロックのハッシュを同時に計算できます。従来の 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 に減少します。
  • 3 つの動作モード: ハッシュ、キーを使用したハッシュ (HMAC)、およびキー生成 (KDF)。
  • キー パラメーター ブロックによって以前に占有されていた領域を使用するため、キーを使用してハッシュするときに追加のオーバーヘッドは発生しません。
  • 拡張結果を含む関数 (XOF、拡張可能出力関数) の形式の組み込み操作メカニズムにより、並列化と位置決め (シーク) が可能になります。

出所: オープンネット.ru

コメントを追加します