情報セキュリティマネジメント 2018年 春期 午前(科目A) 問16
問題文
ワームの検知方式の一つとして、検査対象のファイルからSHA-256を使ってハッシュ値を求め、既知のワーム検体ファイルのハッシュ値のデータベースと照合する方式がある。この方式によって、検知できるものはどれか。
選択肢
ア:ワーム検体と同一のワーム(正解)
イ:ワーム検体と特徴あるコード列が同じワーム
ウ:ワーム検体とファイルサイズが同じワーム
エ:ワーム検体の亜種に該当するワーム
🔒 解説は解答すると表示されます
ファイルハッシュ照合【情報セキュリティマネジメント解説】
正解の理由
SHA-256(Secure Hash Algorithm 256ビット:入力データを固定長の256ビット(32バイト)の要約に変換する暗号学的ハッシュ関数)は、入力ファイルの「ビット単位の内容」が完全に一致するときだけ同じハッシュ値を出力します。ハッシュ照合方式は、検査対象ファイルのSHA-256ハッシュを既知のワーム検体のハッシュデータベースと比較します。したがって、この方法で確実に検知できるのは、検体とバイナリレベルで完全に同一のファイル、つまり ア の「ワーム検体と同一のワーム」です。
(補足)暗号学的ハッシュは同じ入力からは必ず同じ出力を得ますが、小さな変更でもハッシュは大きく変わるため、少しでも改変があれば一致しません。
解法ステップ
- 「SHA-256が何をするか」を思い出す:入力データを固定長の要約に変換し、わずかな違いでも全く異なる値になる性質がある。
- ハッシュ照合は「ハッシュが一致するかどうか」を判定する方式であると理解する。
- 選択肢を照らし合わせる:
- 完全に同一のファイルであればハッシュが一致 → 検出可能(ア)。
- 部分一致やファイルサイズだけ同じ、あるいは亜種(改変あり)はハッシュが変わる → 検出不可(イ・ウ・エを除外)。
- よって正しいのは ア。
選択肢別の誤答解説
- ア:正解。バイナリが完全一致すれば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: ワームが自己を圧縮・暗号化・難読化したり、設定ファイルや日時等を埋め込んでバイナリを毎回変える場合、ハッシュは一致しないため検出できません。
A1: ワームが自己を圧縮・暗号化・難読化したり、設定ファイルや日時等を埋め込んでバイナリを毎回変える場合、ハッシュは一致しないため検出できません。
Q2: 部分的に同じコードがあれば検出できないの?
A2: SHA-256はファイル全体のハッシュを扱うため、部分一致を検知しません。部分的な署名を使うか、ふわふわハッシュ(例:ssdeep)やYARAのようなルール型検出を用います。
A2: SHA-256はファイル全体のハッシュを扱うため、部分一致を検知しません。部分的な署名を使うか、ふわふわハッシュ(例:ssdeep)やYARAのようなルール型検出を用います。
Q3: ハッシュだけで十分な対策になる?
A3: いいえ。既知のバイナリの検出には有効ですが、変種や未知の攻撃には無力です。シグネチャ検出と振る舞い検知、ネットワーク監視などを組み合わせるのが現実的です。
A3: いいえ。既知のバイナリの検出には有効ですが、変種や未知の攻撃には無力です。シグネチャ検出と振る舞い検知、ネットワーク監視などを組み合わせるのが現実的です。
関連キーワード: SHA-256、ハッシュ、シグネチャ検出、ファイル整合性、ワーム、マルウェア検知、fuzzy hashing、YARA

\ せっかくなら /
情報セキュリティマネジメントを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

