---
title: "MACとデジタル署名の違いとは？改ざん検知と否認防止で整理【SG試験】"
description: "MACとデジタル署名はどちらも改ざん検知に使われますが、共通鍵を使うか公開鍵暗号を使うか、否認防止ができるかが異なります。メッセージ認証コード、ハッシュ、暗号化との違いを押さえ、SG試験で用途を切り分ける基準を整理します。科目Aの用語理解と科目Bのケース判断で迷いやすい表現も確認します。"
last_modified_at: "2026-06-24"
canonical_url: "https://stemtazoo.github.io/sg/mac-vs-digital-signature/"
section: "sg"
---

## まず結論

MACとデジタル署名は、どちらも**メッセージが改ざんされていないかを確認する仕組み**です。

ただし、試験では次の違いで切り分けます。

- **MAC**：共通鍵を使う。改ざん検知と送信者確認に使う
- **デジタル署名**：秘密鍵と公開鍵を使う。改ざん検知、本人確認、否認防止に使う

一番大事な判断基準は、**否認防止が必要ならデジタル署名**という点です。

MACも改ざん検知はできますが、送信者と受信者が同じ鍵を持つため、第三者に対して「誰が作ったか」を強く証明する用途には向きません。

---

## このページで切り分けること（先にここだけ）

このページは、**MACとデジタル署名の使い分け**を中心に整理します。

- MAC：共通鍵で改ざん検知・送信者確認を行う
- デジタル署名：公開鍵暗号で改ざん検知・本人確認・否認防止を行う
- 試験の切り分け：否認防止が必要ならデジタル署名

> 迷ったら、**「あとで本人が否認できるか」**を見ます。

## SG試験で選択肢を切る判断軸（MAC/デジタル署名編）

- 「共通鍵を使って完全性確認」
  → MACの話

- 「秘密鍵で署名し、公開鍵で検証」
  → デジタル署名の話

- 「否認防止できる」
  → デジタル署名。MACは共有鍵のため否認防止は弱い

## 関連記事との役割分担（混同防止）

- 署名の基本を単体で確認したい → [電子署名とは？本人証明と改ざん検知を整理【SG試験】](https://stemtazoo.github.io/sg/digital-signature/)
- MACの基礎を単体で確認したい → [メッセージ認証符号（MAC）とは？共有鍵で改ざんを検知する仕組み【SG試験】](https://stemtazoo.github.io/sg/message-authentication-code/)
- 否認防止の考え方を確認したい → [否認防止とは？証跡で「やっていない」を防ぐ考え方【SG試験】](https://stemtazoo.github.io/sg/non-repudiation/)

---

## 直感的な説明

MACは、**合い鍵で押す封印スタンプ**のようなものです。

送信者と受信者が同じ鍵を持っていて、その鍵を使ってメッセージに確認用の値を付けます。受信者は同じ鍵で確認し、一致すれば「途中で変えられていない」と判断できます。

一方、デジタル署名は、**本人だけが押せる印鑑と、誰でも確認できる印鑑証明**のようなものです。

本人だけが持つ秘密鍵で署名し、公開鍵で誰でも検証できます。そのため、あとから「自分は送っていない」と言いにくくなります。

---

## 定義・仕組み

### MACの仕組み

MAC（Message Authentication Code：メッセージ認証コード）は、**メッセージと共通鍵から認証用の値を作る仕組み**です。

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

1. 送信者がメッセージと共通鍵からMAC値を作る
2. メッセージとMAC値を送る
3. 受信者も同じ共通鍵でMAC値を計算する
4. 送られてきたMAC値と一致するか確認する

一致すれば、メッセージが途中で改ざんされていない可能性が高いと判断できます。

ただし、送信者と受信者が同じ共通鍵を持っているため、**どちらがMAC値を作ったかを第三者に証明しにくい**という特徴があります。

---

### デジタル署名の仕組み

デジタル署名は、**送信者の秘密鍵で署名し、公開鍵で検証する仕組み**です。

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

1. 送信者がメッセージからハッシュ値を作る
2. 送信者の秘密鍵で署名を作る
3. 受信者は送信者の公開鍵で署名を検証する
4. 検証できれば、改ざんされていないことと、署名者の正当性を確認できる

秘密鍵は本人だけが持つ前提なので、デジタル署名は**否認防止**に使えます。

---

## どんな場面で使う？

### MACを使う場面

MACは、送信者と受信者が共通鍵を安全に共有できる場面で使われます。

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

- API通信で、リクエストが改ざんされていないか確認する
- システム間通信で、相手が共通鍵を持つ正当な相手か確認する
- 通信データの完全性を確認する

ポイントは、**共通鍵を共有している相手同士で使う**ことです。

---

### デジタル署名を使う場面

デジタル署名は、第三者にも検証してもらいたい場面や、あとから否認されたくない場面で使われます。

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

- 電子契約で、本人が署名したことを示す
- ソフトウェア配布で、配布元と改ざんの有無を確認する
- 電子文書で、作成者と改ざんの有無を確認する
- タイムスタンプと組み合わせて、ある時点で存在していたことを示す

ポイントは、**公開鍵で第三者も検証できる**ことです。

---

## よくある誤解・混同

### 誤解1：改ざん検知なら全部デジタル署名である

これは誤解です。

改ざん検知は、MACでもデジタル署名でも行えます。

- 共通鍵で確認するなら、MAC
- 秘密鍵で署名し、公開鍵で検証するなら、デジタル署名

問題文に「共通鍵」「メッセージ認証コード」とあれば、MACを選びます。

---

### 誤解2：MACでも否認防止ができる

MACでは、否認防止は弱いです。

なぜなら、送信者と受信者が同じ共通鍵を持っているからです。

第三者から見ると、MAC値を作ったのが送信者なのか、受信者なのかを区別しにくくなります。

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

---

### 誤解3：デジタル署名は暗号化と同じである

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

- **暗号化**：内容を読めなくする
- **デジタル署名**：改ざん検知、本人確認、否認防止を行う

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

---

### 誤解4：ハッシュだけで送信者確認ができる

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

しかし、通常のハッシュ値は誰でも計算できます。そのため、ハッシュだけでは「誰が作ったか」の確認には不十分です。

- ハッシュ：データの要約値を作る
- MAC：共通鍵を使ってメッセージ認証を行う
- デジタル署名：秘密鍵で署名し、公開鍵で検証する

ハッシュは、MACやデジタル署名の中で使われることがありますが、役割は同じではありません。

---

## MACとデジタル署名の比較

| 項目 | MAC | デジタル署名 |
|---|---|---|
| 鍵の種類 | 共通鍵 | 秘密鍵・公開鍵 |
| 検証する人 | 共通鍵を持つ相手 | 公開鍵を持つ人 |
| 改ざん検知 | できる | できる |
| 送信者確認 | できる | できる |
| 否認防止 | 弱い | できる |
| 主な用途 | システム間通信、メッセージ認証 | 電子文書、電子契約、ソフトウェア署名 |
| 試験でのキーワード | 共通鍵、メッセージ認証コード、MAC値 | 秘密鍵、公開鍵、署名、否認防止 |

---

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

問題文では、次の言葉に注目します。

| 問題文のキーワード | 判断 |
|---|---|
| 共通鍵、MAC値、メッセージ認証 | MAC |
| 秘密鍵で署名、公開鍵で検証 | デジタル署名 |
| 否認防止 | デジタル署名 |
| 改ざん検知だけ | MACもデジタル署名も候補になる |
| 内容を秘匿、盗聴防止 | 暗号化 |
| 固定長の要約値 | ハッシュ |

特に、**改ざん検知だけで判断しない**ことが大切です。

改ざん検知はどちらにも関係するため、鍵の種類と否認防止の有無で切り分けましょう。

---

## 確認問題

<details>
<summary>確認問題：MACとデジタル署名の違いとして最も適切なものはどれか</summary>

MACとデジタル署名の違いとして、最も適切なものはどれか。

- ア：MACは公開鍵で検証し、デジタル署名は共通鍵で検証する。
- イ：MACは共通鍵を使い、デジタル署名は秘密鍵と公開鍵を使う。
- ウ：MACは盗聴防止のために使い、デジタル署名はデータ圧縮のために使う。
- エ：MACは情報の存在を隠し、デジタル署名は画像に情報を埋め込む。

**正解：イ**

MACは共通鍵を使って、メッセージの改ざん検知や送信者確認を行います。  
デジタル署名は、秘密鍵で署名し、公開鍵で検証する仕組みです。

アは鍵の説明が逆です。  
ウは暗号化や圧縮との混同です。  
エはステガノグラフィとの混同です。

</details>

---

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

- MACは、**共通鍵で改ざん検知とメッセージ認証を行う**
- デジタル署名は、**秘密鍵と公開鍵で改ざん検知・本人確認・否認防止を行う**
- 「否認防止」が出たら、MACではなくデジタル署名を選ぶ

MACとデジタル署名は、どちらも改ざん検知に関係します。  
SG試験では、**鍵の種類**と**否認防止の有無**を見て切り分けましょう。
