テキスト
SHA-3ハッシュの計算
入力した文字列のSHA-3(Keccak)ハッシュ値をブラウザ上でリアルタイムに計算します。NISTが2012年に標準化した次世代ハッシュ関数で、SHA-2とは根本的に異なる「スポンジ構造」を採用しています。
| SHA-3 |
|---|
Tips
- SHA-3はNIST主催の国際コンペ(2007〜2012年)で選ばれたKeccakアルゴリズムがベースです。SHA-2と同じく複数の出力長があり、このツールでは256ビット出力を使用しています。
- SHA-2がMerkle–Damgård構造を採用しているのに対し、SHA-3は「スポンジ構造」という全く異なる設計哲学を採用。SHA-2への攻撃が将来発見された場合のバックアップとして位置付けられています。
- SHA-3は現時点で既知の脆弱性は発見されていません。ただし採用実績の豊富さではSHA-256に及ばないため、既存システムとの互換性を重視するならSHA-256が実用的です。
- Ethereumは独自のKeccak-256(SHA-3の標準化前のバージョン)を採用しています。NISTのSHA-3とは微妙に異なるため、Ethereumのハッシュ計算には専用の実装が必要です。
- SHA-3はビット操作を基本とした設計でハードウェア実装(FPGA・ASIC)に適した効率的な実装が可能です。一方、ソフトウェアではSHA-256に比べて若干遅くなる場合があります。
余談ですが ― Keccakの誕生とNISTコンペ:「次の標準」を決めた5年間
2006年、NSAが設計したSHA-1への衝突攻撃が現実味を帯びてきたことを受けNISTは「SHA-3コンペ」を開始しました。世界中から64のアルゴリズムが応募され、約5年間の審査を経て2012年10月にベルギーのグループ(Joan Daemen・Gilles Van Assche・Guido Bertoni・Michaël Peeters)が設計したKeccakが選ばれました。Daemenは以前にAES(Rijndael)の設計にも携わっており、暗号学の世界における「二冠」とも言える快挙でした。
SHA-3コンペの面白い点は、NISTが「SHA-2を置き換えるため」ではなく「SHA-2が破られた場合の保険」として設計を求めたことです。SHA-2は今日も安全であり続けており、SHA-3は"並立する標準"として位置付けられています。設計哲学の根本的な違いにより、SHA-2への攻撃手法がそのままSHA-3に適用できないことが重要な保証となっています。
Keccakの「スポンジ構造」は入力データを"吸収"し、必要な長さだけ出力を"絞り出す"という直感的なモデルです。この設計はSHAKE128・SHAKE256のような任意長の出力を生成できる拡張版ハッシュ関数(XOF)にも応用されており、暗号の世界に新しい可能性を開きました。