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

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


問題文

メッセージ認証符号の利用目的に該当するものはどれか。

選択肢

メッセージが改ざんされていないことを確認する。(正解)
メッセージの暗号化方式を確認する。
メッセージの概要を確認する。
メッセージの秘匿性を確保する。

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

メッセージ認証符号【情報セキュリティマネジメント解説】

正解の理由

メッセージ認証符号(Message Authentication Code:MAC)は、送られてきたメッセージが「改ざんされていないこと」と「送信者が正しいこと(認証)」を確認するために使います。つまり、選択肢のうち正しい目的は の「メッセージが改ざんされていないことを確認する」です。
ポイントを簡単にまとめると:
  • MACはメッセージと共有している秘密鍵を入力にして計算されます。受信側も同じ鍵で計算し、一致すれば改ざんされていないと判断します。
  • 秘密鍵を知らない第三者は正しいMACを作れないため、改ざん検出と送信者の認可(簡易な認証)に使えます。

解法ステップ

  1. 問題文で問われているのは「メッセージ認証符号(MAC)の利用目的」。まず用語の役割を思い出す。
  2. MACは「整合性(改ざん検出)」と「認証(誰が作ったかの確認)」に使うと記憶する。
  3. 各選択肢を当てはめる:
    • 「改ざんされていないこと」 → MACに合致。
    • 「暗号化方式の確認」→ MACの役割ではない。
    • 「メッセージの概要を確認」→ これはハッシュ(要約)に近く、MACとは目的が異なる。
    • 「秘匿性を確保」→ 秘匿は暗号化の仕事。MACは秘匿しない。
  4. よって を選ぶ。

選択肢別の誤答解説

  • メッセージが改ざんされていないことを確認する。
    → 正しい。MACはメッセージ整合性と認証のために計算・付加される。
  • イ メッセージの暗号化方式を確認する。
    → 誤り。暗号化方式(どのアルゴリズムで暗号化したか)を確認する機能はMACにない。暗号方式の判定はプロトコル設計やメタデータの話です。
  • ウ メッセージの概要を確認する。
    → 誤り。メッセージの「概要」を作るのはハッシュ関数(hash function:データから固定長の要約を作る)の役割です。ハッシュは整合性検出に使えますが、鍵を使わない単純なハッシュは第三者が同じハッシュを作れるため「認証」は提供しません。MACは「ハッシュ+秘密鍵」で整合性+認証を提供します(例:HMAC)。
  • エ メッセージの秘匿性を確保する。
    → 誤り。秘匿性(confidentiality:内容を他人に知られないようにする)は暗号化(encryption)が担当する。MACは中身を隠さず、改ざんがないか確認するためだけに使います。

よくある誤解

  1. 「ハッシュとMACは同じ」
    → ハッシュは要約を作る技術で、単体では誰でも同じ要約を作れます。MACは「要約に秘密鍵を加える」ことで第三者には作れないようにしてあり、認証が付く点が異なります。
  2. 「MACでデータを暗号化できる」
    → できません。MACは整合性確認のタグ(付加データ)で、内容そのものを隠す(秘匿する)機能はありません。秘匿が必要なら暗号化を別に行い、追加でMACを付ける(暗号化+認証)ことが推奨されます。
  3. 「MACは送信者の否認防止(Non-repudiation)になる」
    → 原則的に違います。MACは共通鍵を使うため、受信者も同じ鍵を持つケースでは送信者だけの作成を証明できません。否認防止が必要なら公開鍵暗号を使ったデジタル署名を使います。

補足コラム

実務でのイメージ:
  • ファイルを送るとき、送信側がファイルに対してMACを計算し、ファイルとMACを一緒に送ります。受信側は同じ鍵でMACを再計算し、一致すれば「改ざんされていない」と判断します。社内で共有するログや設定ファイルの改ざん検知などに使えます。
よく使われる方式:
  • HMAC(Hash-based Message Authentication Code):ハッシュ関数(例:SHA-256)と秘密鍵を組み合わせたMACの一種。広く標準化されているため実務で多用されます。
簡単な式のイメージ:

  • ここで は秘密鍵、 はメッセージ、 はMACを生成する関数(例えばHMAC-SHA256)。
実装例(PythonでのHMACの簡単な使い方):
import hmac, hashlib

key = b'secret-key'
message = b'important message'

mac = hmac.new(key, message, hashlib.sha256).hexdigest()
print(mac)  # 受信側は同じ計算をして比較する

FAQ

Q1: MACとデジタル署名の違いは何ですか?
A1: MACは共通の秘密鍵を使い、送信者と受信者が同じ鍵を共有します。デジタル署名は公開鍵暗号を使い、署名者だけが秘密鍵を持ち、誰でも公開鍵で検証できます。したがって否認防止が必要なら署名を使います。
Q2: メッセージの安全性を高めるにはMACと暗号化はどちらを使うべきですか?
A2: 多くの場合、暗号化で秘匿性を確保し、その上でMACで整合性と認証を確かめる「暗号化+認証(Authenticated Encryption)」の組合せが推奨されます。
Q3: MAC用の鍵管理はどうすればよいですか?
A3: 鍵は安全に生成・保管し、不要になれば速やかに破棄または更新します。鍵が漏れるとMACの意味がなくなるため、アクセス制御や鍵管理ポリシーが重要です。

関連キーワード: メッセージ認証、MAC、HMAC、ハッシュ、整合性、認証、秘匿性(暗号化)
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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