基本情報技術者 2011年 秋期 午前(科目A) 問41
問題文
メッセージ認証符号におけるメッセージダイジェストの利用目的はどれか。
選択肢
ア:メッセージが改ざんされていないことを確認する。(正解)
イ:メッセージの暗号化方式を確認する。
ウ:メッセージの概要を確認する。
エ:メッセージの秘匿性を確保する。
メッセージ認証符号におけるメッセージダイジェストの利用目的はどれか。【午前2 解説】
要点まとめ
- 結論:メッセージダイジェストは、受信側が受け取ったデータが送信時と同一で改ざんされていないかを検証する目的で用いられます。
- 根拠:ハッシュ関数により元のメッセージを固定長のダイジェストに変換し、小さな変更でもダイジェストが大きく変わる性質で改ざん検知が可能です。
- 差がつくポイント:ダイジェスト単体は秘匿性や暗号化を提供せず、認証や改ざん防止には秘密鍵と組み合わせたHMACなどの利用が重要です。
正解の理由
正解は ア です。メッセージダイジェスト(ハッシュ値)は、元のメッセージから一方向性の関数で生成される固定長の値であり、メッセージの一部が改ざんされるとダイジェストが大きく変化します。メッセージ認証符号(MAC)の仕組みにおいてダイジェストはメッセージの整合性(改ざん検知)を検証する主要な役割を果たします。したがって「メッセージが改ざんされていないことを確認する」が目的に合致します。
よくある誤解
- ダイジェスト=暗号化と誤解する:ダイジェストは可逆ではなく復号できないため、秘匿(機密性)は提供しません。
- ダイジェストだけで完全な認証ができると考える:鍵を使わないハッシュ値は改ざん検知に有効でも、送信者のなりすまし防止(真正性)は保証しません。
- 「概要」や「要約」と混同する:人が読む要約ではなく、機械的・数学的なデータ指紋(フィンガープリント)です。
解法ステップ
- 問題文のキーワード「メッセージ認証符号」「メッセージダイジェスト」を確認する。
- 各選択肢が示す機能(改ざん検出、暗号方式の確認、概要確認、秘匿性)を整理する。
- 「メッセージダイジェスト」の定義(ハッシュ関数で生成される固定長の値)と照合し、最も合致する選択肢を選ぶ。
- 秘匿性や暗号化、要約とは別物である点を根拠に誤答を排除する。
選択肢別の誤答解説
- ア: 正解。ダイジェストはメッセージの整合性と改ざん検出のために使われます。
- イ: 誤り。メッセージの暗号化方式(例:AES, RSA)はダイジェストで確認するものではなく、プロトコルやヘッダ情報で示されます。
- ウ: 誤り。ダイジェストは「概要」を人間に分かりやすく示す要約ではなく、機械的な固定長のハッシュ値です。
- エ: 誤り。秘匿性(機密性)は暗号化によって達成され、ダイジェスト自体は情報を秘匿しません。
補足コラム
- メッセージ認証符号(MAC)とメッセージダイジェスト(ハッシュ)は密接に関連しますが役割が異なります。MAC は通常、ハッシュ関数と秘密鍵を組み合わせた HMAC のような方式で、整合性に加えて送信者の真正性(鍵を知る者のみが生成可能)を提供します。
- 代表的なハッシュ関数:MD5(現在は脆弱)、SHA-1(推奨されない)、SHA-2(SHA-256 など)や SHA-3。プロトコル(TLS、IPsec、SSH)では整合性検査にハッシュやHMACが用いられます。
- 実装例(Python):ハッシュとHMAC の生成
import hashlib, hmac
msg = b'hello, world'
# SHA-256 ハッシュ(ダイジェスト)
digest = hashlib.sha256(msg).hexdigest()
print('SHA-256 digest:', digest)
# HMAC-SHA256(秘密鍵を用いたメッセージ認証符号)
key = b'secret_key'
mac = hmac.new(key, msg, hashlib.sha256).hexdigest()
print('HMAC-SHA256:', mac)
FAQ
Q: メッセージダイジェストだけで送信者の本人性は保証できますか?
A: いいえ。ダイジェスト単体は本人性を保証しません。本人性を保証するには秘密鍵を使ったMACや公開鍵暗号によるデジタル署名が必要です。
A: いいえ。ダイジェスト単体は本人性を保証しません。本人性を保証するには秘密鍵を使ったMACや公開鍵暗号によるデジタル署名が必要です。
Q: ダイジェストはなぜ改ざん検知に有効なのですか?
A: ハッシュ関数はわずかな入力変化でも出力が大きく変わる性質(アバランチ効果)を持ち、同じハッシュを別のメッセージで作るのが難しいため検知に有効です。
A: ハッシュ関数はわずかな入力変化でも出力が大きく変わる性質(アバランチ効果)を持ち、同じハッシュを別のメッセージで作るのが難しいため検知に有効です。
Q: ダイジェストと暗号化を組み合わせる必要はありますか?
A: 通常は、整合性確認にはダイジェスト(またはHMAC)を、機密性には暗号化を併用します。用途に応じて両方使うのが一般的です。
A: 通常は、整合性確認にはダイジェスト(またはHMAC)を、機密性には暗号化を併用します。用途に応じて両方使うのが一般的です。
関連キーワード: メッセージダイジェスト、ハッシュ関数、整合性、改ざん検知、MAC、HMAC、SHA-256、デジタル署名、暗号学

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

