問12 SHA-⁠256 のハッシュ値の性質

情報セキュリティ​マネジメント試験 令和元年度 秋期 午前、全50問のうちの問12。

出典:令和元年度 秋期 情報セキュリティマネジメント試験 午前 問12

セキュアハッシュ関数 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 は、どんな大きさのデータからも 2⁠5⁠6 ビットのハッシュ値を作る関数です。1⁠6 進数の 1 桁は 4 ビットなので、2⁠5⁠6 ビットは 2⁠5⁠6 ÷ 4 = 6⁠4 桁になり、問題文の 6⁠4 桁と合います。セキュアハッシュ関数は、内容が少しでも違えば全く違うハッシュ値になり、同じハッシュ値になる別のデータを見つけることも実際上できないように作られています。そのため、2 つのファイルのハッシュ値が全く同じなら、内容も同じと考えられます。正解はエです。

ほかの選択肢が違う理由

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

仕組み

ハッシュ値は、データの指紋のような物です。ダウンロードしたファイルのハッシュ値を、配布元が公開した値と比べると、途中で書き換えられていないかを確かめられます。

1⁠6 進数の 1 桁は 4 ビット、2 桁で 1 バイトです。1⁠6 進数の桁数を 2 で割るとバイト数になります。6⁠4 桁なら 6⁠4 ÷ 2 = 3⁠2 バイトです。

この問に出る言葉