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

情報セキュリティマネジメント 2023年 科目A05


問題文

セキュアハッシュ関数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は「セキュアハッシュ関数(Secure Hash Algorithm 256)」で、どんな長さの入力でも必ず256ビット(=32バイト)の固定長の出力を作ります。出力は通常16進数で64桁で表されます。
同じ入力(同じファイルのバイト列)に対しては常に同じハッシュが出る(決定性)ため、ファイルAとファイルBがともに同じSHA-256ハッシュ値nになったことは、両者の内容が同一であることを示します。したがって選択肢の中では が適切です。
(補足)理論的には「衝突」と呼ばれる異なる入力が同じハッシュになる可能性は存在しますが、SHA-256は実用上非常に衝突が起きにくい設計です。日常のファイル確認ではハッシュ一致=同一内容と扱って差し支えありません。

解法ステップ

  1. SHA-256の出力長を確認する:256ビット = 32バイト = 64桁の16進数。
  2. 問題のハッシュ表記が16進で64桁であることを見る(与えられた値は64桁)。
  3. 各選択肢を出力長やハッシュ関数の性質(決定性・固定長・衝突耐性)に照らして検討する。
  4. 「同じハッシュなら同じ内容」と結論づけられる選択肢を選ぶ(実務的判断として )。

選択肢別の誤答解説

  • ア: ファイルAとファイルBを内容を変更せずに再度ハッシュすると異なる、という主張は誤りです。ハッシュ関数は決定的なので、同一のバイト列なら常に同一のハッシュが得られます(変更なければ同じハッシュ)。
  • イ: 「ハッシュ値nのデータ量は64バイトである」は誤りです。16進数で64桁の表記は64文字(桁)であって、実際のバイナリ長は256ビット=32バイトです。1バイトは16進で2桁に相当します。
  • ウ: ファイルAとファイルBを連結したファイルCのハッシュが16進で128桁になる、は誤りです。入力の長さに関わらずSHA-256の出力は常に256ビット(64桁の16進)です。出力が増えることはありません。
  • エ: 同じハッシュは同じ内容である、が最も実務的に妥当です。衝突の可能性は理論上あるものの極めて稀で、一般的な整合性確認ではこれをもって同一と判断します。

よくある誤解

  • ハッシュの「64桁」=「64バイト」と混同する:16進で1桁=4ビット、2桁=1バイトである点を押さえてください。
  • ハッシュ一致は絶対の証拠だと考える:実務では同一と扱ってよいが、極めて重要な場面(法的証拠や高リスクの配布物)ではデジタル署名など追加の検証を併用する方が安全です。
  • 入力を長くすればハッシュも長くなると誤解:SHA-256は入力長に関係なく出力は固定長です。

補足コラム

ハッシュ関数は主に「データ改ざん検知」に使います。例:ソフトウェア配布サイトで配布ファイルのSHA-256を載せておき、ダウンロード後にユーザが自分でハッシュを計算して照合することで、途中で改ざんされていないことを確認できます。
しかし、配布元自体が改ざんされた場合はハッシュ値も偽装される恐れがあるため、配布元の公開鍵で署名されたハッシュ(デジタル署名)を使うとより安全です。
実務上の運用イメージ:社内で受領したファイルの整合性確認を行う場合、まずファイルサイズとSHA-256を比較し、疑わしい場合は内容の差分確認や提供元への照会、場合によっては再入手を行います。

FAQ

Q1: ハッシュが一致してもファイルを念のため別方法で確認すべきですか?
A1: ほとんどの業務ではハッシュ一致で十分です。ただし重要度が高ければ、デジタル署名による検証や発信元への確認を行ってください。
Q2: どうやってSHA-256ハッシュを計算できますか?(実例)
A2: よく使うコマンドとPython例を示します。
  • Linux/macOS(端末):
    sha256sum ファイル名
  • Windows(PowerShell):
    Get-FileHash -Algorithm SHA256 ファイル名
  • Pythonで計算する例:
import hashlib

def sha256_hex(path):
    h = hashlib.sha256()
    with open(path, "rb") as f:
        for chunk in iter(lambda: f.read(8192), b""):
            h.update(chunk)
    return h.hexdigest()

print(sha256_hex("example.bin"))
Q3: SHA-256より安全なものはありますか?
A3: 現時点ではSHA-256は広く安全とされ、SHA-384やSHA-512はより長い出力(より高い理論的安全度)を提供します。用途に応じて選びますが、一般的な整合性確認にはSHA-256で十分です。

関連キーワード: SHA-256、ハッシュ関数、ハッシュ値、衝突耐性、整合性検査、256ビット、16進表記、バイト長、デジタル署名、ファイル検証
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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