---
title: "ダイジェスト認証とベーシック認証の違い【SG試験】"
description: "Basic認証とDigest認証をHTTP認証情報の扱い方で比較し、BasicのBase64は暗号化ではないこと、Digestはハッシュを使うことを確認します。認証方式そのものとTLSによる通信路保護を混同しない視点で整理します。"
last_modified_at: "2026-06-30"
canonical_url: "https://stemtazoo.github.io/sg/basic-digest-authentication/"
section: "sg"
---

## まず結論

ダイジェスト認証とベーシック認証は、どちらもHTTPで利用される認証方式ですが、**利用者IDとパスワードの送信のしかた**が違います。

SG試験では、次の切り分けが重要です。

- **ベーシック認証**：`利用者ID:パスワード` を **Base64でエンコード**して送る
- **ダイジェスト認証**：パスワードそのものではなく、認証に必要な情報を使って作った **ハッシュ値** を送る

選択肢では、**「Base64」「MD5」「SHA」「エンコード」「ハッシュ化」** の言葉を入れ替えて迷わせてくることがあります。

---

## 直感的な説明

ベーシック認証は、たとえるなら、IDとパスワードを書いた紙を**読みにくい文字に変えて渡す**イメージです。

見た目はそのまま読めませんが、Base64は暗号化ではありません。  
元に戻すことができるので、通信経路を盗聴されると危険です。

一方、ダイジェスト認証は、パスワードそのものを渡すのではなく、パスワードなどを材料にして作った**確認用の値**を渡すイメージです。

そのため、ベーシック認証よりはパスワードが直接見えにくい方式です。  
ただし、現在の実務では、どちらの方式でもHTTPSなど安全な通信と組み合わせることが重要です。

---

## 定義・仕組み

ベーシック認証は、HTTPのAuthorizationヘッダーに認証情報を入れて送る方式です。

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

1. 利用者IDとパスワードを `:`（コロン）で連結する
2. 連結した文字列をBase64でエンコードする
3. Authorizationヘッダーに入れてサーバへ送る

たとえば、SG試験では次のような表現が出たらベーシック認証を考えます。

> 利用者IDとパスワードを `:` で連結し、Base64でエンコードしてAuthorizationヘッダーで送信する。

ここで注意したいのは、**Base64は暗号化ではなくエンコード**だという点です。

ダイジェスト認証は、サーバから送られるランダムな値などを使い、認証用のハッシュ値を作って送る方式です。

古い説明ではMD5が代表例として出てきます。  
ただし、SG試験では細かい計算式よりも、**パスワードそのものを送らず、ハッシュ値を使う**という理解が大切です。

HTTP Basic認証はRFC 7617で、HTTP Digest認証はRFC 7616で定義されています。

---

## どんな場面で使う？

ベーシック認証は、簡単なアクセス制限で使われることがあります。

たとえば、社内向けの簡易ページや、開発中のページに最低限の認証をかけるような場面です。  
ただし、認証情報の扱いが弱いため、HTTPSなしで使うのは危険です。

ダイジェスト認証は、ベーシック認証よりもパスワードを直接送らない点が特徴です。

しかし、現在のWebシステムでは、フォーム認証、セッション管理、多要素認証、OAuthなど、別の認証方式が使われることも多くあります。

SG試験では、実務でどれが最新かを細かく覚えるよりも、次のように判断するとよいです。

- `ID:パスワード` をBase64で送る → ベーシック認証
- パスワードそのものではなくハッシュ値を送る → ダイジェスト認証
- Base64を「暗号化」と書いている → 注意
- HTTPSなしで安全と言い切っている → 注意

---

## よくある誤解・混同

### Base64は暗号化ではない

ベーシック認証では、IDとパスワードをBase64でエンコードします。

ここで、**Base64でエンコード＝暗号化**と考えると誤りです。

Base64は、データを別の文字表現に変える方法です。  
秘密にするための仕組みではないので、認証情報を安全に守るにはHTTPSなどの対策が必要です。

### ダイジェスト認証は「IDとパスワードをBase64で送る」ではない

`利用者ID:パスワード` をBase64で送るのは、ベーシック認証です。

ダイジェスト認証は、パスワードそのものではなく、認証に必要な情報から作ったハッシュ値を使います。

選択肢で、

> ダイジェスト認証では、利用者IDとパスワードを `:` で連結し、Base64でエンコードする。

と書かれていたら、ベーシック認証の説明と混同している可能性があります。

### MD5やSHAだけで判断しない

問題によっては、ダイジェスト認証の説明でMD5やSHAが出てくることがあります。

ただし、SG試験では、アルゴリズム名だけで判断するよりも、**認証情報をどのように送るか**を見る方が安定します。

- Base64でエンコードして送る → ベーシック認証
- ハッシュ値を使って送る → ダイジェスト認証

この切り分けを優先しましょう。

---

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

- **ベーシック認証**は、`利用者ID:パスワード` を **Base64でエンコード**してAuthorizationヘッダーで送る。

- **ダイジェスト認証**は、パスワードそのものではなく、認証用の **ハッシュ値** を使う。

- **Base64は暗号化ではない**。  
  「Base64だから安全」と書かれていたら注意する。

- 迷ったら、  
  **Base64＝ベーシック認証、ハッシュ値＝ダイジェスト認証**  
  で切り分ける。

- SG試験では、方式名よりも、**IDとパスワードをどう扱っているか**を見る。

## 公式情報・参考リンク

- IETF：['Basic' HTTP Authentication Scheme（RFC 7617）](https://datatracker.ietf.org/doc/html/rfc7617)
- IETF：[HTTP Digest Access Authentication（RFC 7616）](https://datatracker.ietf.org/doc/html/rfc7616)
