問5 SHA-⁠256 のハッシュ値が一致する意味

情報セキュリティ​マネジメント試験 令和5年度 公開問題、全15問のうちの問5。

出典:令和5年度 情報セキュリティマネジメント試験 科目A・B 公開問題 問5

セキュアハッシュ関数 SHA-⁠2⁠5⁠6 を用いてファイル A 及びファイル B のハッシュ値を算出すると,どちらも全く同じ次に示すハッシュ値 n(1⁠6 進数で示すと 6⁠4 桁)となった。この結果から考えられることとして,適切なものはどれか。

ハッシュ値 n:8⁠6⁠6⁠2⁠0f2f 1⁠5⁠2⁠5⁠2⁠4d7 dbed4bcb b8⁠1⁠1⁠9bb6 d4⁠9⁠3f7⁠3⁠4 0b4e7⁠6⁠6⁠1 8⁠8⁠5⁠6⁠5⁠3⁠5⁠3 9e6d2⁠0⁠7⁠4

  1. アファイル A とファイル B の各内容を変更せずに再度ハッシュ値を算出すると,ファイル A とファイル B のハッシュ値が異なる。
  2. イファイル A とファイル B のハッシュ値 n のデータ量は 6⁠4 バイトである。
  3. ウファイル A とファイル B を連結させたファイル C のハッシュ値の桁数は 1⁠6 進数で示すと 1⁠2⁠8 桁である。
  4. エファイル A の内容とファイル B の内容は同じである。
答えと解説を開く

正解はエです。

SHA-⁠2⁠5⁠6 のようなセキュアハッシュ関数は、同じ入力からは必ず同じハッシュ値を出し、入力が 1 ビットでも違えばまったく違う値を出します。また、違う入力で同じハッシュ値になる組 (衝突) を見つけることは、計算の量の面で事実上できないように作られています。そのため、ファイル A と B のハッシュ値が同じなら、2 つの内容は同じと考えるのが適切です。ファイルの改ざんの確認や、ダウンロードした物が元と同じかの確認にこの性質が使われます。正解はエです。

ほかの選択肢が違う理由

  • アハッシュ関数は、同じ入力からは何度計算しても同じ値を出します。内容を変えずに計算し直しても、ハッシュ値は変わりません。
  • イ1⁠6 進数の 1 桁は 4 ビットなので、6⁠4 桁は 6⁠4×4=2⁠5⁠6 ビットです。2⁠5⁠6 ビットは 2⁠5⁠6÷8=3⁠2 バイトで、6⁠4 バイトではありません。
  • ウSHA-⁠2⁠5⁠6 のハッシュ値は、入力の大きさにかかわらず常に 2⁠5⁠6 ビット、1⁠6 進数で 6⁠4 桁です。2 つのファイルをつなげても 1⁠2⁠8 桁にはなりません。

仕組み

ハッシュ値は、どんな大きさのデータからでも決まった長さの値を作る「データの指紋」です。SHA-⁠2⁠5⁠6 の名前の 2⁠5⁠6 は、出てくる値の長さ (ビット数) を表しています。

ハッシュ値から元のデータを戻すことはできません。暗号化と違って、元に戻すための鍵もありません。

この問に出る言葉