最終更新日:2026年10月8日
fe fe-technology security authentication
まず結論
MAC(Message Authentication Code:メッセージ認証符号)は、メッセージと共有する秘密鍵から認証用の値を作り、改ざんの有無と送信元の正当性を確認する仕組みです。
基本情報技術者試験では、「改ざん検知」ならMACの候補、「内容を秘密にする」なら暗号化と切り分けます。ただし、改ざん検知はデジタル署名でも可能なので、使う鍵にも注目します。
直感的な説明
MACは、送信者と受信者だけが知る合い鍵で作った確認印のようなものです。
送信者はメッセージと秘密鍵を使ってMAC値を作り、メッセージと一緒に送ります。受信者は同じ鍵を使ってMAC値を計算し、届いたMAC値と比べます。
送信者 受信者
メッセージ+共有鍵 受信メッセージ+共有鍵
↓ ↓
MACを計算 MACを再計算
↓ ↑
メッセージ+MAC ─────送信──────→ 値を比較
↓
一致:検証に成功
不一致:改ざんなどを疑う
MACの値が一致すれば、共有鍵を知らない第三者による改ざんが行われていないと判断する根拠になります。ただし、絶対に改ざんがなかったことを保証するものではありません。
定義・仕組み
MACは、秘密鍵とメッセージを入力して作る認証用データです。メッセージの内容を暗号化するものではありません。
MACの代表的な方式には、ハッシュ関数と秘密鍵を組み合わせる HMAC があります。HMACは「単なるハッシュ値」ではなく、鍵付きのメッセージ認証方式です。
| 技術 | 鍵の使い方 | 主な目的 |
|---|---|---|
| ハッシュ関数 | 鍵を使わない | データの要約値を計算 |
| MAC / HMAC | 送受信者で秘密鍵を共有 | 改ざん検知・メッセージ認証 |
| 暗号化 | 方式に応じた鍵を使う | 内容の秘匿 |
| デジタル署名 | 署名者の秘密鍵・検証用公開鍵 | 改ざん検知・署名者確認・否認防止 |
MACでは送受信者が同じ鍵を持つため、第三者に対して「どちらがMACを作ったか」を証明しにくく、否認防止には向きません。
科目Aでどう出る?
科目Aでは、目的を取り違えた説明を見分けます。
| 選択肢に出やすい表現 | 判断 |
|---|---|
| メッセージが改ざんされていないか確認する | MACの役割 |
| メッセージの内容を第三者から隠す | 暗号化の役割 |
| メッセージの暗号化方式を判別する | MACの役割ではない |
| メッセージの文章を要約する | MACの役割ではない |
| 送信者が後から送信を否認できないようにする | デジタル署名の役割 |
「秘密鍵を使うから、内容も秘密になる」という考え方はひっかけです。MACを付けても、メッセージ本体が平文なら第三者に読まれる可能性があります。
また、改ざん検知という目的だけでMACと断定せず、共有鍵ならMAC、署名者の秘密鍵と公開鍵ならデジタル署名と確認しましょう。
どんな場面で使う?
例えば、二つのシステムがAPIで注文データをやり取りする場合を考えます。
送信側が「商品Aを3個」という注文データから秘密鍵付きでMACを計算し、注文データとMACを送ります。受信側が同じ鍵で計算し直せば、途中で「30個」に書き換えられた場合などに不一致を検出できます。
ただし、MACだけでは注文内容を隠せません。盗聴も防ぎたい場合は、TLSなどの通信保護も必要です。また、過去の正しいメッセージをそのまま再送するリプレイ攻撃には、MACに加えて時刻や一度だけ使う番号などの対策が必要です。
よくある誤解・混同
MACとハッシュ関数は同じ?
同じではありません。通常のハッシュ関数は鍵なしで誰でも計算できます。攻撃者がデータとハッシュ値を両方書き換えられる場合、単なるハッシュ値の比較だけでは悪意ある改ざんを防げません。
MACは秘密鍵を使うため、鍵を知らない攻撃者は正しい認証値を作りにくくなります。詳しくはハッシュ関数とは?を参照してください。
MACとデジタル署名は同じ?
どちらも改ざん検知に使えますが、鍵が違います。MACは送受信者が同じ秘密鍵を持ち、デジタル署名は署名者の秘密鍵で署名して公開鍵で検証します。
第三者にも検証させたい、否認防止が必要という場面ではデジタル署名が適しています。公開鍵暗号方式とデジタル署名の違いも確認しましょう。
MACアドレスのMACと同じ?
別の用語です。メッセージ認証符号のMACは Message Authentication Code、ネットワークのMACアドレスは Media Access Control に由来します。MACアドレスとは?で区別できます。
まとめ(試験直前用)
- MAC:共有する秘密鍵で、改ざん検知とメッセージ認証
- 暗号化:内容を秘密にする。MACだけでは秘匿できない
- デジタル署名:秘密鍵で署名・公開鍵で検証し、否認防止にも使う
関連する試験範囲はIPA:基本情報技術者試験で確認できます。