SHA-3とは

SHA-3は、任意の長さのデータから、固定長で暗号学的に安全なハッシュ値を生成するためにNIST(アメリカ国立標準技術研究所)によって選定された最新のハッシュ関数であり、先行するSHA-1やSHA-2とは異なる全く新しい「Keccak(ケチャック)」と呼ばれる構造を採用したアルゴリズムのことです。

SHA-3の概要と必要性

SHA-3(Secure Hash Algorithm 3)は、連邦情報処理標準(FIPS 202)として2015年に正式に標準化された暗号学的ハッシュ関数です。これは、SHA-2に続く「SHAファミリー」の一員ですが、その設計原理は根本的に異なります。

先行するSHA-1やSHA-2は、いずれもMD5と同じくMerkle-Damgård構造という設計原理をベースとしています。しかし、SHA-1の衝突攻撃の成功、およびSHA-2にも将来的に同様の攻撃を受ける可能性が指摘されたため、NISTは異なる構造を持つ代替のハッシュ標準を策定する必要があると判断し、国際的な公募コンペティション(SHA-3コンペティション)を実施しました。

SHA-3は、このコンペティションで最終的に選定されたKeccak(ケチャック)アルゴリズムに基づいており、Merkle-Damgård構造の潜在的な脆弱性を回避しています。

主な目的は、既存のハッシュ関数が将来的に破られた場合でも、暗号学的セキュリティを維持するための、独立した設計原理に基づく頑健な代替標準を提供することです。

SHA-3の技術的特徴と構造

SHA-3の最も重要な技術的特徴は、その核心であるスポンジ構造(Sponge Construction)です。

1. スポンジ構造(Sponge Construction)

Keccakが採用するスポンジ構造は、入力メッセージ(データ)を吸収(Absorbing)し、ハッシュ値を出力(Squeezing)するという、スポンジに水を吸わせ、絞り出すような処理をモデル化しています。

  • 状態(State): スポンジ構造の中核には、ビット配列で表される状態があり、この状態が入力データの吸収と内部の撹拌(かくはん)処理に使用されます。
  • 吸収フェーズ: 入力メッセージブロックは、状態の一部とXORされ、そのたびに順列関数 $f$(Keccak-f)が適用されて状態全体を複雑に撹拌します。
  • 絞り出しフェーズ: メッセージの吸収が完了した後、状態の一部が取り出されて出力ブロックとなり、その都度 $f$ が適用されて次の出力ブロックが生成されます。

このスポンジ構造により、SHA-2が持つような拡張攻撃(Length Extension Attack)など、Merkle-Damgård構造特有の脆弱性を防ぐことができます。

2. 出力サイズ(ハッシュ長)

SHA-3は、SHA-2と同じく複数のハッシュ長(出力サイズ)をサポートしており、セキュリティ要件に応じて選択されます。

  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512

例えば、SHA3-256を選択した場合、任意の入力から256ビットのハッシュ値が出力されます。

3. 可変長出力機能(SHAKE)

SHA-3は、標準の固定長ハッシュ出力に加えて、SHAKE(SHAke output length)という機能を提供します。SHAKEは、XOF(eXtendable Output Function、拡張可能出力関数)として機能し、ユーザーが必要な任意の長さのビット列をハッシュ値として生成できます。これは、特定の暗号プロトコルに合わせて柔軟な長さの出力を求められる場合に有用です。

応用と標準的な位置づけ

現在、TLS/SSL証明書、デジタル署名、ブロックチェーン技術など、暗号学的ハッシュ関数が必要なほとんどの場所でSHA-2(特にSHA-256)が主流として使用されています。

SHA-3は、SHA-2に対する将来的なセーフティネット(保険)としての役割が大きく、現在主流となっているSHA-2を直接置き換えるものではありませんが、両者が互いに異なるアルゴリズムとして共存し、暗号学的インフラの安定性を高めています。

関連用語

SHA-1 | 今更聞けないIT用語集
SHA-2 | 今更聞けないIT用語集
ソフトウェアエンジニアリング

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。