---
title: "MACとは？メッセージ認証コードで改ざんを検出する仕組み【SG試験】"
description: "MAC（Message Authentication Code）は、共通鍵を使ってメッセージの改ざんを検出し、送信者が正当であることを確認する仕組みです。SG試験・情報セキュリティマネジメント試験で混同しやすいデジタル署名、ハッシュ、暗号化、ステガノグラフィとの違いを整理します。"
last_modified_at: "2026-05-14"
canonical_url: "https://stemtazoo.github.io/sg/mac-message-authentication-code/"
section: "sg"
---

## まず結論

MAC（Message Authentication Code：メッセージ認証コード）とは、**共通鍵を使ってメッセージが改ざんされていないかを確認するための仕組み**です。

SG試験では、次のように押さえると判断しやすくなります。

- **MAC**：共通鍵で、改ざん検知と送信者の確認を行う
- **デジタル署名**：公開鍵暗号で、改ざん検知となりすまし防止・否認防止を行う
- **暗号化**：内容を読めないようにする
- **ステガノグラフィ**：情報の存在そのものを隠す

特に、MACは「暗号化して秘密にする技術」ではなく、**改ざんされていないことを確認する技術**として理解するのがポイントです。

---

## 直感的な説明

MACは、メッセージに付ける**封印シール**のようなものです。

送信者は、メッセージと秘密の鍵を使ってMAC値を作ります。  
受信者も同じ秘密の鍵を使ってMAC値を計算し、送られてきたMAC値と一致するか確認します。

一致すれば、

- メッセージが途中で書き換えられていない
- 同じ鍵を持つ正当な相手が作成した可能性が高い

と判断できます。

逆に、途中でメッセージが1文字でも変わると、計算されるMAC値が変わるため、改ざんに気づけます。

---

## 定義・仕組み

MACは、**メッセージと共通鍵から生成される短い認証用データ**です。

基本的な流れは次のとおりです。

1. 送信者が、メッセージと共通鍵からMAC値を作る
2. メッセージとMAC値を一緒に送る
3. 受信者が、受け取ったメッセージと同じ共通鍵からMAC値を再計算する
4. 送られてきたMAC値と一致するか確認する
5. 一致すれば改ざんなし、不一致なら改ざんの可能性ありと判断する

ここで重要なのは、**送信者と受信者が同じ共通鍵を持っている**という点です。

そのためMACは、公開鍵暗号を使うデジタル署名とは仕組みが異なります。

---

## どんな場面で使う？

MACは、通信やデータのやり取りで、**内容が途中で変えられていないか確認したい場面**で使われます。

たとえば、次のような場面です。

- API通信で、リクエストが改ざんされていないか確認する
- メッセージが正当な相手から送られたものか確認する
- 通信データの完全性を確認する
- 共有鍵を使うシステムで、送信元の正当性を確認する

SG試験では、MACを「データを隠す技術」としてではなく、**認証と完全性確認のための技術**として見ると選択肢を切りやすくなります。

---

## よくある誤解・混同

### MACと暗号化の違い

MACは、メッセージの内容を読めなくする仕組みではありません。

- **MAC**：改ざんされていないか確認する
- **暗号化**：第三者に内容を読まれないようにする

問題文に「盗聴を防ぐ」「内容を秘匿する」とあれば、MACではなく暗号化の話です。

---

### MACとハッシュの違い

ハッシュは、データから固定長の値を作る仕組みです。

ただし、通常のハッシュだけでは、誰でも同じハッシュ値を計算できます。  
そのため、攻撃者がメッセージを書き換えて、新しいハッシュ値を付け直すこともできてしまいます。

一方、MACは**共通鍵を使う**ため、鍵を知らない人は正しいMAC値を作れません。

- **ハッシュ**：データの要約値を作る
- **MAC**：鍵を使って、改ざん検知と送信者確認を行う

---

### MACとデジタル署名の違い

MACとデジタル署名は、どちらも改ざん検知に使われます。  
ただし、鍵の使い方と目的が違います。

| 項目 | MAC | デジタル署名 |
|---|---|---|
| 鍵 | 共通鍵 | 秘密鍵・公開鍵 |
| 主な目的 | 改ざん検知、送信者確認 | 改ざん検知、本人確認、否認防止 |
| 否認防止 | 弱い | 強い |
| ポイント | 同じ鍵を共有する | 秘密鍵で署名し、公開鍵で検証する |

MACでは、送信者と受信者が同じ鍵を持っています。  
そのため、あとから「どちらがMAC値を作ったか」を第三者に証明しにくく、**否認防止には向きません**。

否認防止が問われたら、デジタル署名を選ぶのが基本です。

---

### MACとPKI・ルート証明書の違い

PKI（公開鍵基盤）やルート証明書は、公開鍵が「誰のものか」を証明する仕組みです。

- **MAC**：共通鍵で、メッセージの改ざん検知と送信者確認を行う
- **PKI / ルート証明書**：公開鍵の正当性を証明し、電子署名やTLS証明書の信頼連鎖を支える

SG試験では、問題文に「認証局」「証明書」「信頼の連鎖」「公開鍵の正当性」が出てきたら、MACではなくPKI側の論点です。

---

### MACとパリティビットの違い

パリティビットは、主に通信や記録時の**偶発的なビット誤り**を検出するための仕組みです。

- **MAC**：共通鍵を使う、改ざん検知・認証向け
- **パリティビット**：鍵を使わない、伝送誤り検出向け

「悪意ある改ざんを防ぐ」「送信者の正当性を確認する」という目的なら、パリティビットでは不十分です。

---

### MACとステガノグラフィの違い

ステガノグラフィは、画像や音声などの中に別のデータを埋め込み、**情報の存在そのものを隠す**技術です。

一方、MACは、メッセージの存在を隠すのではなく、**メッセージが改ざんされていないかを確認する**技術です。

- **MAC**：改ざん検知、認証
- **ステガノグラフィ**：情報を隠して存在を気づかれにくくする

問題文に「画像データにメッセージを埋め込む」「存在を隠す」とあれば、MACではなくステガノグラフィです。

---

### MACアドレスとの違い

同じ「MAC」でも、ネットワークで出てくるMACアドレスとは別物です。

- **MAC（Message Authentication Code）**：メッセージ認証コード
- **MACアドレス**：ネットワーク機器の識別番号

SG試験では、文脈で判断します。

「改ざん」「認証」「メッセージ」「共通鍵」が出てきたら、メッセージ認証コードのMACです。  
「LAN」「NIC」「物理アドレス」「機器識別」が出てきたら、MACアドレスです。

---

## SG試験での判断ポイント

MACが選択肢に出たら、次の観点で判断します。

| キーワード | 選ぶべき技術 |
|---|---|
| 改ざん検知、共通鍵、メッセージ認証 | MAC |
| 否認防止、秘密鍵で署名、公開鍵で検証 | デジタル署名 |
| 認証局、証明書、公開鍵基盤、信頼の連鎖 | PKI / ルート証明書 |
| 内容を読めなくする、盗聴対策 | 暗号化 |
| 画像や音声に埋め込む、存在を隠す | ステガノグラフィ |
| 固定長の要約値、メッセージダイジェスト | ハッシュ |
| 偶数・奇数パリティ、1ビット誤り検出 | パリティビット |

特に、MACは**完全性確認**と**メッセージ認証**の文脈で出やすいです。

---

## 確認問題

<details>
<summary>確認問題：MACの説明として最も適切なものはどれか</summary>

次のうち、MAC（Message Authentication Code）の説明として最も適切なものはどれか。

- ア：画像データなどにメッセージを埋め込み、メッセージの存在そのものを隠す。
- イ：メッセージの改ざんを検出し、送信者が同じ共通鍵を持つ相手であることを確認する。
- ウ：メッセージを暗号化して、通信途中で第三者に読まれないようにする。
- エ：公開鍵を使って署名を検証し、否認防止を実現する。

**正解：イ**

MACは、共通鍵を使ってメッセージ認証コードを生成し、受信側で再計算した値と比較することで、改ざんの有無を確認します。

アはステガノグラフィ、ウは暗号化、エはデジタル署名の説明です。

</details>

---

## まとめ（試験直前用）

- MACは、**共通鍵を使ってメッセージの改ざんを検出する仕組み**
- 「内容を隠す」なら暗号化、「存在を隠す」ならステガノグラフィ
- 否認防止まで問われたら、MACではなくデジタル署名を選ぶ

MACは、暗号技術の細かい計算方法よりも、**何を守る技術なのか**を押さえることが大切です。  
SG試験では「改ざん検知」「共通鍵」「メッセージ認証」という言葉を手がかりに判断しましょう。
