📌 結論から理解する
ハッシュ=「指紋」、電子署名=「本人確認+改ざん検知」
ハッシュ関数はデータから固定長の「指紋」を生成します。データが1ビットでも変わると全く別の値になります。
電子署名は「このデータを確かに私が送った」「途中で改ざんされていない」を証明します。
試験では「完全性の確保手段=ハッシュ・電子署名」という対応が頻出。
ハッシュ関数とは
ハッシュ関数のイメージ
📄 元データ(任意の長さ)
「こんにちは」でも100MBのファイルでも
→
🔢 ハッシュ値(固定長)
例:a3f2...(256ビット固定)
重要な性質:
- 同じデータ → 必ず同じハッシュ値
- 1ビットでも変わると → 全く別のハッシュ値
- ハッシュ値から元データを復元できない(一方向性)
- 異なるデータが同じハッシュ値になりにくい(衝突耐性)
代表的なアルゴリズム:SHA-256(安全)、MD5・SHA-1(脆弱性あり・非推奨)
暗号化とハッシュの違い
| 比較 | 暗号化 | ハッシュ |
|---|---|---|
| 目的 | 機密性の確保 | 完全性の確認 |
| 復元 | 鍵があれば復元できる | 復元できない(一方向) |
| 用途 | データ秘匿・通信保護 | 改ざん検知・パスワード保管 |
| CIA | Confidentiality | Integrity |
「ハッシュ=暗号化」は誤り!ハッシュは復号できません。
電子署名のしくみ
電子署名は送信者の秘密鍵でハッシュ値を暗号化したものです。
電子署名の送信フロー
【送信者側】
📄 元データ
→ ハッシュ化 →
🔢 ハッシュ値
→ 秘密鍵で暗号化 →
✍️ 署名
データ+署名を一緒に送信
【受信者側の検証】
① 受信したデータを自分でハッシュ化 → ハッシュ値A
② 署名を送信者の公開鍵で復号 → ハッシュ値B
③ A=B なら → 改ざんなし&本人確認OK
② 署名を送信者の公開鍵で復号 → ハッシュ値B
③ A=B なら → 改ざんなし&本人確認OK
電子署名が証明すること:
- 否認防止:「私は送っていない」と言えなくなる
- 完全性:途中で改ざんされていない
- 認証:確かに本人が送った
デジタル証明書・PKI
「この公開鍵は本当にA社のもの?」という問題を解決するのがデジタル証明書です。
📜 デジタル証明書(電子証明書)の中身
- 証明書の持ち主の情報(氏名・組織名など)
- 持ち主の公開鍵
- 有効期限
- 認証局(CA)の電子署名(本物であることの保証)
認証局(CA)=第三者が「この公開鍵は確かにA社のもの」と保証する機関
HTTPSの鍵マークをクリックすると見られる「証明書」がこれです。
PKI — 証明書の信頼チェーン
証明書の階層構造(信頼の連鎖)
🏛 ルートCA(Root CA)
自己署名証明書。OSやブラウザに
あらかじめ組み込み済み(信頼の起点)
あらかじめ組み込み済み(信頼の起点)
↓ 署名(お墨付き)
🔐 中間CA(Intermediate CA)
ルートCAから署名を受けた認証局
(ルートCAへの直接署名を減らすため)
(ルートCAへの直接署名を減らすため)
↓ 署名(お墨付き)
🌐 Webサイト証明書
example.com の証明書
公開鍵・組織名・有効期限を含む
公開鍵・組織名・有効期限を含む
💻 ブラウザの証明書検証フロー
① サイト証明書を受け取る
② 発行元(中間CA)の署名を確認
③ 中間CAはルートCAに署名されているか確認
④ ルートCAがブラウザのトラストストアにあるか確認
✅ すべてOK → アドレスバーに🔒が表示される
② 発行元(中間CA)の署名を確認
③ 中間CAはルートCAに署名されているか確認
④ ルートCAがブラウザのトラストストアにあるか確認
✅ すべてOK → アドレスバーに🔒が表示される
「なぜHTTPSサイトに鍵マークが出るのか」→ CAが署名した証明書でサーバの公開鍵が正規のものと保証されているから。
試験でよく問われること
- 電子署名は送信者の秘密鍵で署名し、送信者の公開鍵で検証
- ハッシュ値からは元データを復元できない
- SHA-256は安全、MD5・SHA-1は非推奨
- 電子署名が保証するのは完全性・認証・否認防止
- 機密性は保証しない(暗号化と組み合わせが必要)
勘違い:「電子署名=機密性の確保」は誤り。電子署名は機密性を保証しない!
🧠 確認クイズ
Q1. ハッシュ関数の特性として正しいのは?
Q2. 電子署名の検証に使う鍵は?
Q3. 電子署名が保証しないものは?