対象試験と出題頻度
メッセージ認証コード(MAC)は、情報セキュリティマネジメント試験、基本情報技術者試験、応用情報技術者試験で出題されます。
頻出度は「B(標準)」で、デジタル署名やハッシュ関数との違いを問われることがあります。「共通鍵を使う」という特徴を押さえておきましょう。
詳細をクリックして確認
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)
用語の定義
メッセージ認証コード(MAC: Message Authentication Code)とは、一言で言うと「共通鍵とメッセージを組み合わせて生成する固定長のコードで、メッセージの改ざん検知と送信者の認証を実現する技術」のことです。
イメージとしては、「秘密の合言葉で作る封印」のようなものです。送信者と受信者だけが知っている共通鍵(合言葉)を使ってMACを生成します。受信者は同じ共通鍵でMACを計算し直し、一致すれば「正しい送信者からのメッセージで、改ざんされていない」と確認できます。
📊 メッセージ認証コードの基本情報
| 項目 | 内容 |
|---|---|
| 使用する鍵 | 共通鍵(送信者と受信者で共有) |
| 入力 | メッセージ+共通鍵 |
| 出力 | 固定長の認証コード(MAC値) |
| 実現できる機能 | 改ざん検知、送信者認証 |
| 代表的なアルゴリズム | HMAC、CMAC |
解説
情報処理試験を勉強していると、「MACとデジタル署名って何が違うの?どっちも改ざん検知できるんでしょ?」と混乱しがちです。
結論から言うと、MACは「共通鍵」を使い、デジタル署名は「公開鍵暗号」を使うという点が最大の違いです。
MACの仕組み
MACの生成と検証は、以下の流れで行われます。
送信者側(MAC生成)では、メッセージと共通鍵を入力としてMAC値を計算します。そして、メッセージとMAC値を一緒に受信者に送信します。
受信者側(MAC検証)では、受け取ったメッセージと、自分が持っている共通鍵を使って、同じ方法でMAC値を計算します。計算したMAC値と、受け取ったMAC値が一致すれば、「メッセージは改ざんされていない」「正しい共通鍵を持つ送信者からのメッセージである」と確認できます。
📊 MACの流れ
| 手順 | 送信者 | 受信者 |
|---|---|---|
| ① | メッセージ+共通鍵からMAC値を計算 | - |
| ② | メッセージ+MAC値を送信 | メッセージ+MAC値を受信 |
| ③ | - | メッセージ+共通鍵からMAC値を計算 |
| ④ | - | 2つのMAC値が一致すれば検証成功 |
MACとデジタル署名の違い
MACとデジタル署名は、どちらも「改ざん検知」と「送信者の認証」を実現できますが、重要な違いがあります。
否認防止ができるかが最大の違いです。デジタル署名は送信者の秘密鍵(本人だけが持つ)で署名するため、「自分は署名していない」と否定できなくなります(否認防止)。
一方、MACは共通鍵を送信者と受信者の両方が持っているため、どちらがMAC値を生成したか証明できません。つまり、MACでは否認防止ができません。
処理速度にも違いがあります。MACは共通鍵暗号やハッシュ関数をベースにしているため、処理が高速です。デジタル署名は公開鍵暗号を使うため、MACより処理に時間がかかります。
📊 MACとデジタル署名の比較(試験対策)
| 項目 | MAC | デジタル署名 |
|---|---|---|
| 使用する鍵 | 共通鍵 | 公開鍵・秘密鍵 |
| 改ざん検知 | ◎ 可能 | ◎ 可能 |
| 送信者認証 | ◎ 可能 | ◎ 可能 |
| 否認防止 | × 不可能 | ◎ 可能 |
| 処理速度 | 速い | 遅い |
| 主な用途 | 通信プロトコル、API認証 | 電子契約、証明書 |
💡 HMACとは
HMAC(Hash-based MAC)は、ハッシュ関数を使ってMACを生成する方式で、最も広く使われています。
「HMAC-SHA256」のように、使用するハッシュ関数と組み合わせて表記されます。TLS/SSL通信やAPIの認証など、様々な場面で採用されています。試験では「HMAC」という用語が選択肢に登場することもあるので覚えておきましょう。
MACが使われる場面
MACは、否認防止が不要で、高速な処理が求められる場面で使われます。
代表的な例として、HTTPS通信(TLS)では、セッション中のデータ改ざん検知にMACが使用されています。また、金融系システムのAPI認証や、ファイルの整合性確認などでも活用されています。
⚠️ 試験での注意点
MACの問題で最も重要なのは「否認防止ができない」という点です。MACは共通鍵を送信者と受信者の両方が持っているため、「どちらが生成したか」を第三者に証明できません。
「MACで否認防止ができる」という選択肢は誤りです。また、MACは「共通鍵」を使うので、単なるハッシュ関数(鍵を使わない)とは異なる点にも注意しましょう。
試験ではこう出る!
MACは、デジタル署名やハッシュ関数との比較で出題されます。
「共通鍵を使う」「否認防止ができない」という2点を押さえておけば対応できます。試験ではここまででOKです。
【重要キーワード】
- メッセージ認証コード(MAC)
- 共通鍵を使用
- 改ざん検知、送信者認証が可能
- 否認防止は不可能
- HMAC(ハッシュベースのMAC)
- デジタル署名より高速
試験問題で「共通鍵を使ってメッセージの認証を行う」「改ざん検知はできるが否認防止はできない」という記述があれば、それは「メッセージ認証コード(MAC)」に関する説明です。
📝 IPA試験での出題ポイント
MACの問題は、「デジタル署名との違い」「実現できる機能」という形式で出題されます。
最も重要なのは「共通鍵を使う」「否認防止ができない」という2点です。改ざん検知と送信者認証はできますが、否認防止はデジタル署名でのみ可能という点を区別しておきましょう。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. メッセージ認証コード(MAC)に関する説明として、最も適切なものはどれでしょうか?
- A. 共通鍵とメッセージを組み合わせて認証コードを生成し、改ざん検知と送信者認証を実現するが、否認防止はできない
- B. 送信者の秘密鍵でメッセージに署名し、公開鍵で検証することで、否認防止を含む全ての認証機能を提供する
- C. 鍵を使わずにメッセージから固定長のハッシュ値を生成し、データの完全性のみを確認する
正解と解説を見る
正解:A
解説:
メッセージ認証コード(MAC)は、共通鍵とメッセージを組み合わせて固定長の認証コードを生成する技術です。受信者は同じ共通鍵を使ってMAC値を計算し、一致すれば改ざんされていないこと(完全性)と、正しい共通鍵を持つ送信者からのメッセージであること(認証)を確認できます。ただし、共通鍵は送信者と受信者の両方が持っているため、どちらが生成したか証明できず、否認防止はできません。
選択肢Bは「デジタル署名」の説明です。選択肢Cは「ハッシュ関数」の説明であり、MACとは異なり鍵を使用しません。