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

情報セキュリティマネジメント 2018年 春期 午前(科目A)16


問題文

ワームの検知方式の一つとして、検査対象のファイルからSHA-256を使ってハッシュ値を求め、既知のワーム検体ファイルのハッシュ値のデータベースと照合する方式がある。この方式によって、検知できるものはどれか。

選択肢

ワーム検体と同一のワーム(正解)
ワーム検体と特徴あるコード列が同じワーム
ワーム検体とファイルサイズが同じワーム
ワーム検体の亜種に該当するワーム

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

ファイルハッシュ照合【情報セキュリティマネジメント解説】

正解の理由

SHA-256(Secure Hash Algorithm 256ビット:入力データを固定長の256ビット(32バイト)の要約に変換する暗号学的ハッシュ関数)は、入力ファイルの「ビット単位の内容」が完全に一致するときだけ同じハッシュ値を出力します。ハッシュ照合方式は、検査対象ファイルのSHA-256ハッシュを既知のワーム検体のハッシュデータベースと比較します。したがって、この方法で確実に検知できるのは、検体とバイナリレベルで完全に同一のファイル、つまり の「ワーム検体と同一のワーム」です。
(補足)暗号学的ハッシュは同じ入力からは必ず同じ出力を得ますが、小さな変更でもハッシュは大きく変わるため、少しでも改変があれば一致しません。

解法ステップ

  1. 「SHA-256が何をするか」を思い出す:入力データを固定長の要約に変換し、わずかな違いでも全く異なる値になる性質がある。
  2. ハッシュ照合は「ハッシュが一致するかどうか」を判定する方式であると理解する。
  3. 選択肢を照らし合わせる:
    • 完全に同一のファイルであればハッシュが一致 → 検出可能(ア)。
    • 部分一致やファイルサイズだけ同じ、あるいは亜種(改変あり)はハッシュが変わる → 検出不可(イ・ウ・エを除外)。
  4. よって正しいのは

選択肢別の誤答解説

  • :正解。バイナリが完全一致すればSHA-256も一致するため検出できる。
  • イ: 誤り。ワーム検体と「特徴あるコード列が同じ」でも、ファイル全体が少しでも変わればSHA-256は異なる。部分一致を検出するにはシグネチャの部分照合やヒューリスティックが必要。
  • ウ: 誤り。ファイルサイズが同じでも中身が異なればハッシュは異なる。サイズだけでは同一性は保証されない。
  • エ: 誤り。ワームの「亜種(改変されたもの)」はバイナリが変わるため、ハッシュが一致しない限り検出できない。亜種検知にはふわっとした類似度(fuzzy hashing)や挙動検知が必要。

よくある誤解

  • ハッシュが同じなら「必ず同じファイル」と断言できる:現実には極めてまれなハッシュ衝突(異なる入力で同じハッシュになる事象)は理論上存在しますが、SHA-256では実用上無視できるほど稀です。とはいえ「絶対無欠」ではありません。
  • ハッシュ検出は「変種も捕まえられる」:小さな改変でハッシュは大きく変わるため、亜種やパッキング(圧縮・難読化)には弱いです。
  • ファイルサイズが同じ=同一ファイル:これは誤りです。サイズは一次的な手がかりに過ぎません。

補足コラム

  • ハッシュ照合は「既知の悪意あるファイルを白黒リスト化して照合する」典型的なシグネチャ検出です。実務ではこれを侵害兆候の高速な一次スクリーニングとして使いますが、検出が難しい変種や難読化には別の方法(動作解析、ふわふわハッシュ、YARAルール)を組み合わせます。
  • ファイルの整合性確認(改ざん検知)にも同じ仕組みを使います。例えば社内サーバの重要ファイルのSHA-256を定期的に記録し、変化があれば調査する運用が考えられます。
  • 実務での運用イメージ:アンチウイルスは既知の悪性ハッシュのデータベースを更新し、受信ファイルをハッシュ化して照合する。データベースは頻繁に更新し、さらに振る舞い検知も併用するのが標準運用です。
実際のハッシュ計算例(参考)
  • Linuxコマンド:
sha256sum sample.exe
  • Pythonでの例:
import hashlib

def sha256_of_file(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_of_file('sample.exe'))

FAQ

Q1: SHA-256で検出漏れが発生する具体例は?
A1: ワームが自己を圧縮・暗号化・難読化したり、設定ファイルや日時等を埋め込んでバイナリを毎回変える場合、ハッシュは一致しないため検出できません。
Q2: 部分的に同じコードがあれば検出できないの?
A2: SHA-256はファイル全体のハッシュを扱うため、部分一致を検知しません。部分的な署名を使うか、ふわふわハッシュ(例:ssdeep)やYARAのようなルール型検出を用います。
Q3: ハッシュだけで十分な対策になる?
A3: いいえ。既知のバイナリの検出には有効ですが、変種や未知の攻撃には無力です。シグネチャ検出と振る舞い検知、ネットワーク監視などを組み合わせるのが現実的です。

関連キーワード: SHA-256、ハッシュ、シグネチャ検出、ファイル整合性、ワーム、マルウェア検知、fuzzy hashing、YARA
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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