戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報セキュリティマネジメント 2019年 秋期 午前(科目A)12


問題文

セキュアハッシュ関数SHA-256を用いてファイルA及びファイルBのハッシュ値を算出すると、どちらも全く同じ次に示すハッシュ値n(16進数で示すと64桁)となった。この結果から考えられることとして、適切なものはどれか。
ハッシュ値n : 86620f2f 152524d7 dbed4bcb b8119bb6 d493f734 0b4e7661 88565353 9e6d2074

選択肢

ファイルAとファイルBの各内容を変更せずに再度ハッシュ値を算出すると、ファイルAとファイルBのハッシュ値が異なる。
ファイルAとファイルBのハッシュ値nのデータ量は64バイトである。
ファイルAとファイルBを連結させたファイルCのハッシュ値の桁数は16進数で示すと128桁である。
ファイルAの内容とファイルBの内容は同じである。(正解)

🔒 解説は解答すると表示されます

SHA-256のハッシュ一致【情報セキュリティマネジメント解説】

正解の理由

同じハッシュ値が得られた場合、通常は元のファイルの内容が同一であると判断します。SHA-256は「セキュアハッシュ関数(ハッシュ値を固定長で出力する関数)」であり、同じ入力に対して常に同じ出力を返す(決定性)性質があります。さらに、SHA-256は衝突(異なる入力が同じハッシュを出すこと)を実用上見つけることが極めて困難とされているため、同一のハッシュ値が出た時点で実務上は同一の内容とみなすのが妥当です。したがって選択肢「ファイルAの内容とファイルBの内容は同じである」が妥当です。
(注意:理屈としては「数学的に絶対に同じ」と断定することはできません。ハッシュ関数は入力空間が無限に近く出力は有限長なので理論上は衝突が存在しますが、SHA-256では実用的に発見できないため運用上は同一と扱います。)

解法ステップ

  1. SHA-256の出力長を確認する。SHA-256はである。
  2. 問題のハッシュ値が16進(hex)で64桁になっていることを確認する。これはSHA-256の標準的な表現と一致する。
  3. ハッシュ関数の性質を思い出す:決定性(同じ入力は同じ出力)と衝突耐性(異なる入力で同じ出力を見つけるのが困難)。
  4. よって同じSHA-256ハッシュが得られたなら、実務上はファイルの内容が同じと判断する。

選択肢別の誤答解説

  • ア: 「内容を変更せずに再度算出すると異なる」
    ハッシュ関数は決定性を持つため、内容を変えなければ常に同じハッシュが出ます。したがってこの選択肢は誤りです。
  • イ: 「ハッシュ値nのデータ量は64バイトである」
    ここは表現の混同による誤りです。表示されているのは16進数で64桁(hex digits)です。1バイトは2桁の16進数に相当するため、64桁の16進数は32バイトに相当します。つまり正しくは32バイトです。
    変換の覚え方:2桁の16進 = 1バイト。よって
  • ウ: 「連結したファイルCのハッシュ値の桁数は16進で128桁である」
    ハッシュ値の長さは入力の長さに依存せず固定です。SHA-256は常に64桁(16進)です。入力が長くなっても出力長は変わりません。したがってこの選択肢は誤りです。
  • エ: 「ファイルAとファイルBの内容は同じである」
    実務的な判断として妥当です(前述の通り、理論的には衝突の可能性はあるが実用上無視できるため)。

よくある誤解

  1. 「同じハッシュなら絶対同じ」と考える誤解
    → 理論的には誤りですが、SHA-256では衝突を見つけるのは現実的に不可能に近いため、運用上は同じと扱って問題ありません。検証用途ではこれで十分なことが多いです。
  2. 「16進の桁数=バイト数」と誤解する
    → 16進1桁は4ビット。バイト数は16進2桁で1バイトです。混同に注意してください。
  3. 「ハッシュが長ければ安全」と勘違いする
    → 長さは重要ですが、安全性はアルゴリズム設計(衝突耐性や予像耐性)に依存します。単に桁数だけで判断しないこと。

補足コラム

実務でファイルの同一性や改ざん検知を行う場合、SHA-256などのハッシュを使うのが一般的です。受け取ったファイルのハッシュを送信者から受け取った値と比較すれば、転送中の破損や改ざんを簡単に検出できます。より強固な確認が必要な場合は、ハッシュに署名(電子署名)を組み合わせて出所の証明も行います。
例:コマンドラインでの確認(Linux / macOS)
# ファイルのSHA-256を計算
sha256sum fileA
sha256sum fileB

# 値が一致すれば内容は同一の可能性が非常に高い
職場での運用イメージ:
  • ソフトウェア配布:配布元がSHA-256値を公開。受け取った側が検証して一致すれば改ざんされていないと判断する。
  • バックアップの整合性チェック:定期的にハッシュを取り、前回と同じならデータに変更がないことを確認する。

FAQ

Q1: 同じハッシュなら100%同じファイルですか?
A1: 理論上は100%とは言えませんが、SHA-256では衝突を現実的に発見できないため、実務では同一とみなして差し支えありません。
Q2: ハッシュ値が短ければ安全性が低いですか?
A2: 一般に短い出力長は衝突を起こしやすくなりますが、アルゴリズムの設計や既知の脆弱性も重要です。現在はSHA-256以上が推奨されるケースが多いです。
Q3: ファイルの一致を完全に保証したい場合は?
A3: ハッシュ一致の上でバイナリ比較(ファイルを直接比較するツール)や、配布側が電子署名を付与する方法がより確実です。

関連キーワード: SHA-256、ハッシュ関数、衝突耐性、決定性、ハッシュ長、整合性検証、プリイメージ耐性、バイトと16進の換算
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報セキュリティマネジメント
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について