⏱ 9分 ★★★★★ 頻出:高

ハッシュ・電子署名

ハッシュ=指紋、電子署名=本人確認+改ざん検知。違いを図で理解。

ハッシュ=「指紋」、電子署名=「本人確認+改ざん検知」

ハッシュ関数はデータから固定長の「指紋」を生成します。データが1ビットでも変わると全く別の値になります。

電子署名は「このデータを確かに私が送った」「途中で改ざんされていない」を証明します。

試験では「完全性の確保手段=ハッシュ・電子署名」という対応が頻出。

ハッシュ関数とは

ハッシュ関数のイメージ
📄 元データ(任意の長さ)
「こんにちは」でも100MBのファイルでも
🔢 ハッシュ値(固定長)
例:a3f2...(256ビット固定)
重要な性質:
  • 同じデータ → 必ず同じハッシュ値
  • 1ビットでも変わると → 全く別のハッシュ値
  • ハッシュ値から元データを復元できない(一方向性)
  • 異なるデータが同じハッシュ値になりにくい(衝突耐性)

代表的なアルゴリズム:SHA-256(安全)、MD5・SHA-1(脆弱性あり・非推奨)

暗号化とハッシュの違い

比較暗号化ハッシュ
目的機密性の確保完全性の確認
復元鍵があれば復元できる復元できない(一方向)
用途データ秘匿・通信保護改ざん検知・パスワード保管
CIAConfidentialityIntegrity
「ハッシュ=暗号化」は誤り!ハッシュは復号できません。

電子署名のしくみ

電子署名は送信者の秘密鍵でハッシュ値を暗号化したものです。

電子署名の送信フロー
【送信者側】
📄 元データ → ハッシュ化 → 🔢 ハッシュ値 → 秘密鍵で暗号化 → ✍️ 署名
データ+署名を一緒に送信
【受信者側の検証】
① 受信したデータを自分でハッシュ化 → ハッシュ値A
② 署名を送信者の公開鍵で復号 → ハッシュ値B
③ A=B なら → 改ざんなし&本人確認OK

電子署名が証明すること:

デジタル証明書・PKI

「この公開鍵は本当にA社のもの?」という問題を解決するのがデジタル証明書です。

📜 デジタル証明書(電子証明書)の中身
  • 証明書の持ち主の情報(氏名・組織名など)
  • 持ち主の公開鍵
  • 有効期限
  • 認証局(CA)の電子署名(本物であることの保証)
認証局(CA)=第三者が「この公開鍵は確かにA社のもの」と保証する機関
HTTPSの鍵マークをクリックすると見られる「証明書」がこれです。

PKI — 証明書の信頼チェーン

証明書の階層構造(信頼の連鎖)
🏛 ルートCA(Root CA)
自己署名証明書。OSやブラウザに
あらかじめ組み込み済み(信頼の起点)
↓ 署名(お墨付き)
🔐 中間CA(Intermediate CA)
ルートCAから署名を受けた認証局
(ルートCAへの直接署名を減らすため)
↓ 署名(お墨付き)
🌐 Webサイト証明書
example.com の証明書
公開鍵・組織名・有効期限を含む
💻 ブラウザの証明書検証フロー
① サイト証明書を受け取る
② 発行元(中間CA)の署名を確認
③ 中間CAはルートCAに署名されているか確認
④ ルートCAがブラウザのトラストストアにあるか確認
✅ すべてOK → アドレスバーに🔒が表示される
「なぜHTTPSサイトに鍵マークが出るのか」→ CAが署名した証明書でサーバの公開鍵が正規のものと保証されているから。

試験でよく問われること

勘違い:「電子署名=機密性の確保」は誤り。電子署名は機密性を保証しない!
🧠 確認クイズ
Q1. ハッシュ関数の特性として正しいのは?
Q2. 電子署名の検証に使う鍵は?
Q3. 電子署名が保証しないものは?