SequenceHash: 残りの皆さんのためのマルチハッシュ
マルチハッシュ、すなわち複数の値を単一のハッシュに結合するプロセスは、重要でありながらしばしば誤解されている暗号タスクです。安全でないマルチハッシュの実装は、特にゼロ知識証明などの分野で脆弱性につながる可能性があります。Trail of Bitsは、幅広い暗号ハッシュ関数に対して安全なマルチハッシュを提供するように設計された新しい構成であるSequenceHashとSequenceMACを発表しました。Keccakに依存するNISTのTupleHashとは異なり、SequenceHashとSequenceMACはハッシュに依存せず、SHA256、BLAKE、RIPEMDなどの関数で動作します。これらの新しい構成は、連結された入力の操作を防ぐ、曖昧さのない入力エンコーディングを提供します。また、多くのハッシュ関数にとって重要なセキュリティ機能である長さ拡張防止も提供します。さらに、SequenceHashとSequenceMACは、リプレイ攻撃を防ぐためのプロトコルバインディング用のオプションのカスタマイズ文字列を組み込んでいます。キー付きバリアントであるSequenceMACは、メッセージ認証コードに同様のセキュリティ上の利点を提供します。SequenceHashは、入力バイト数に対して簡略化された固定長の128ビット整数エンコーディングを採用し、長さサフィックスエンコーディングでストリーミングAPIをサポートします。このアプローチは、簡単な実装を目指しており、${2}^{128}-1$バイトの制限で実用的な入力サイズを処理します。HMACに似たダブルハッシュ構成は、長さ拡張攻撃を防ぎ、キー付きSequenceMACモードを可能にします。SequenceMACは、キーメタデータを組み込むことで、HMACで見られる潜在的なキー疑似衝突の問題に対処します。SequenceHashとSequenceMACの3つの初期実装が、Rust、Go、Pythonで利用可能であり、包括的なテストベクトルも提供されています。これらのツールは、開発者にとって安全なマルチハッシュを簡素化することを目的としています。最終的な目標は、この一般的な暗号課題に対して、標準化された使いやすいソリューションを提供することです。