午前I問題

暗号学的ハッシュ関数に求められる性質に関する記述として、適切なものはどれか。

ア)ハッシュ値から元のメッセージを効率的に復元できることを「衝突耐性」という。

イ)異なる2つのメッセージから同じハッシュ値が生成されることを見つけるのが計算上困難であることを「衝突耐性」という。

ウ)暗号学的ハッシュ関数は可逆な変換であり、秘密鍵を用いてハッシュ値から元のメッセージを復号できる。

エ)ハッシュ関数の出力長を長くすると、必ず衝突が発生しなくなることが数学的に証明されている。

午前I の解答・解説を見る

正解: イ

解説:

  • ア)不正解。ハッシュ値から元のメッセージを復元できないという性質は「原像計算困難性(一方向性)」であり、衝突耐性とは異なる概念である。
  • イ)正解。衝突耐性(Collision Resistance)とは、異なる2つの入力 x ≠ y に対して H(x) = H(y) となるペアを見つけることが計算上困難である性質を指す。SHA-1やMD5はこの性質が破られ(衝突が実際に発見され)危殆化した。
  • ウ)不正解。ハッシュ関数は不可逆な一方向関数であり、鍵を用いた復号という概念自体が存在しない。暗号化とハッシュ化は全く異なる操作である。
  • エ)不正解。出力長を長くすることは衝突を発見するための計算量(バースデー攻撃の計算量は出力長の半分のビット数に比例)を増大させ衝突を発見しにくくするが、鳩の巣原理により入力空間が出力空間より大きい以上、衝突は理論上必ず存在する。「発生しなくなる」という断定は誤り。

午前II問題

SHA-1に対する2017年のSHAttered攻撃とバースデー攻撃の関係に関する記述として、最も適切なものはどれか。

ア)SHAttered攻撃はSHA-1の原像計算困難性を破る攻撃であり、任意のハッシュ値から元のメッセージを復元することに初めて成功した。

イ)SHAttered攻撃はバースデー攻撃の原理を応用し、SHA-1の理論上の衝突攻撃計算量(約2の80乗)よりも高度な差分解読法を組み合わせることで、実際に衝突する2つの異なるPDFファイルを構築した攻撃である。

ウ)バースデー攻撃は、総当たりで単一の特定ハッシュ値に一致する入力を探索する攻撃であり、出力長n bitのハッシュ関数に対して2のn乗回の計算を要する。

エ)SHAttered攻撃の成功以降、SHA-1は原像計算困難性・衝突耐性のいずれも完全に失われたため、ハッシュ関数としての一方向性も破られたとされている。

午前II の解答・解説を見る

正解: イ

解説:

  • ア)不正解。SHAtteredが破ったのは「衝突耐性」であり「原像計算困難性」ではない。任意のハッシュ値から元メッセージを復元する攻撃(原像攻撃)はSHA-1に対して実用的なレベルでは成功していない。この違いは頻出のひっかけポイントである。
  • イ)正解。バースデー攻撃は「同じハッシュ値を持つ2つの入力ペア」を探す衝突攻撃において、理論上2^(n/2)回程度の試行で衝突が発見できるという確率論(誕生日のパラドックス)に基づく手法である。GoogleとCWIによるSHAttered攻撃はこの原理をベースに、SHA-1特有の差分解読法を組み合わせて計算量を理論値からさらに削減し、実際に異なる内容ながら同一SHA-1値を持つ2つのPDFファイルの構築に成功した(2017年発表)。
  • ウ)不正解。特定の1つのハッシュ値に一致する入力を探す攻撃は「原像攻撃」であり、計算量は2^n回程度である。バースデー攻撃(衝突攻撃)は「任意の2つが一致すればよい」ため計算量が2^(n/2)回程度と大幅に少なくて済む点が異なる。この区別が本問の核心である。
  • エ)不正解。SHAtteredが破ったのは衝突耐性のみであり、原像計算困難性(一方向性)は現時点でも実用的なレベルでは破られていない。ただし衝突耐性が破られた時点で、デジタル署名など衝突耐性に依存する用途では危殆化とみなされ、利用が非推奨とされている。

午後問題

I社は社内の各種システムでファイルの完全性検証やデジタル署名にSHA-1を利用していることが、セキュリティ監査で判明した。監査担当のJ氏は以下の3つのシステムについて対応方針を検討している。

(システムA)ソフトウェア配布サーバにおいて、配布ファイルの改ざん検知のためにSHA-1ハッシュ値を公開Webページに掲載し、利用者がダウンロード後に照合する運用。

(システムB)契約書PDFに対してデジタル署名を行う社内システムで、ハッシュアルゴリズムにSHA-1を使用している。

(システムC)パスワードの保存にSHA-1(ソルトなし、1回ハッシュ化)を使用しているログイン認証システム。

設問1

システムBについて、SHA-1の衝突耐性が破られていることが、デジタル署名の信頼性にとって特に深刻な問題となる理由を、攻撃シナリオを含めて説明せよ。

設問1の解答・解説を見る

正解例: デジタル署名は文書のハッシュ値に対して署名を行う仕組みであるため、攻撃者があらかじめ同一のSHA-1ハッシュ値を持つ2つの異なる内容の文書(例:正規の契約条件を記載した文書と、改ざんされた不利な条件を記載した文書)を用意できれば、署名者が一方の文書に対して正規に署名した署名データを、もう一方の改ざん文書に対しても有効な署名として流用できてしまう(衝突攻撃によるなりすまし・改ざん文書への署名の付け替え)。これにより契約内容の改ざんや否認防止性の破壊につながる。

解説: デジタル署名は「文書全体に署名する」のではなく「文書のハッシュ値に署名する」ため、ハッシュ関数の衝突耐性が署名の安全性を根本から支えている。衝突耐性が破られると、攻撃者は同一ハッシュ値を持つ「無害に見える文書」と「悪意ある文書」のペアをあらかじめ用意し、署名者に無害な方へ署名させた上で、その署名を悪意ある文書に転用するという攻撃が理論上可能になる。SHAttered攻撃でもPDFファイルのペアで衝突が実証されており、契約書等の実務文書への応用可能性が指摘された。これがSHA-1がデジタル署名用途で真っ先に非推奨化された理由である。

採点基準(15点):

  • 「署名はハッシュ値に対して行われる」という前提の説明(4点)
  • 「同一ハッシュ値を持つ2つの異なる文書を事前に用意できる」(5点)
  • 「一方への署名をもう一方(改ざん文書)に流用できる」という攻撃シナリオ(6点)

設問2

システムAとシステムCについて、それぞれSHA-1のリスクレベルが異なる理由を説明し、優先して対応すべきシステムとその理由を述べよ。

設問2の解答・解説を見る

正解例: システムAは改ざん検知目的の利用であり、衝突耐性が破られたことで理論上のリスクはあるが、攻撃者が公開ハッシュ値と一致する悪意あるファイルを新たに作成する必要があり、かつ利用者が正規のハッシュ値と見比べて検知する運用のため即座に深刻な被害には直結しにくい。一方システムCは、ソルトなし・1回ハッシュのSHA-1でパスワードを保存しており、これは衝突耐性ではなく高速な計算速度(レインボーテーブル攻撃・ブルートフォース攻撃への耐性の低さ)が問題であり、SHA-1の危殆化以前からパスワードハッシュとしては不適切な設計である。優先対応すべきはシステムCであり、理由はパスワード漏えい時の被害(不正ログイン)が直接的かつ深刻であり、ソルトなし・低コストのハッシュはレインボーテーブルや高速GPUによる総当たり攻撃に対して極めて脆弱なため。

解説: 本設問は「同じSHA-1でもリスクの性質が異なる」ことを理解しているかを問う。システムAの改ざん検知は衝突耐性の弱さが問題になるが、公開されたハッシュ値と一致する改ざんファイルを実際に作る攻撃コストは依然として高い。システムCの問題はそもそも衝突耐性ではなく、SHA-1(およびMD5等)が高速に計算できる汎用ハッシュ関数であるためパスワード保存に不向きという別軸の問題であり、ソルトなし・1回ハッシュという設計自体が既知のアンチパターンである。パスワード保存にはbcrypt、scrypt、Argon2などの低速化・ソルト付きの専用鍵導出関数(KDF)を使うべきである。

採点基準(15点):

  • システムAのリスク説明:「衝突耐性の弱さが問題だが即座の被害は限定的」(4点)
  • システムCのリスク説明:「ソルトなし・高速ハッシュはブルートフォース/レインボーテーブルに脆弱」(5点)
  • 「システムCの方が優先度が高い」という判断+理由(4点)
  • bcrypt/scrypt/Argon2等の代替技術への言及(2点、加点)

重要キーワード

用語説明
暗号学的ハッシュ関数一方向性・衝突耐性を持つハッシュ関数。改ざん検知やデジタル署名の基盤技術
衝突耐性(Collision Resistance)異なる2つの入力から同一ハッシュ値を生成するペアを見つけることが計算困難である性質
バースデー攻撃誕生日のパラドックスを応用し、衝突発見の計算量を2^(n/2)に削減する攻撃手法
SHAttered攻撃2017年発表のSHA-1に対する実証済み衝突攻撃。差分解読法とバースデー攻撃を組み合わせた
原像計算困難性ハッシュ値から元の入力を逆算することが計算困難である性質。衝突耐性とは異なる概念
パスワードハッシュ専用KDFbcrypt/scrypt/Argon2等、意図的に低速化・ソルト付与したハッシュ関数。汎用ハッシュとの違いに注意

まとめ

  • 午前I視点: 衝突耐性・原像計算困難性・一方向性など類似用語の定義を正確に区別する。ハッシュは不可逆であり復号という概念がない点も基本
  • 午前II視点: バースデー攻撃の計算量2^(n/2)と原像攻撃の計算量2^nの違いを理解し、SHAttered攻撃が破ったのは衝突耐性であって原像計算困難性ではない点を押さえる
  • 午後視点: 同じSHA-1の脆弱性でも用途(改ざん検知/署名/パスワード保存)によってリスクの性質と深刻度が異なることを整理し、優先度をつけて対策を提示できるようにする