暗号化(共通鍵・公開鍵)
まず結論
暗号化とは盗聴対策のための技術。共通鍵暗号は「同じ鍵で暗号化・復号」して高速だが鍵の受け渡しに問題がある。公開鍵暗号は「公開鍵で暗号化・秘密鍵で復号」して鍵配送問題を解決するが低速。実際のHTTPSは両方を組み合わせたハイブリッド暗号を使う。
🔒 暗号化の目的
インターネット上のデータは第三者に盗聴される可能性がある。暗号化によってデータを読み取れない形式に変換し、機密性(Confidentiality)を確保する。
情報セキュリティの三要素(CIA)
機密性(Confidentiality)・完全性(Integrity)・可用性(Availability)
暗号化が直接守るのは「機密性」。
機密性(Confidentiality)・完全性(Integrity)・可用性(Availability)
暗号化が直接守るのは「機密性」。
たとえば、カフェのWi-Fiで通信すると、同じネットワーク上の人に通信内容を見られる可能性がある。HTTPSで暗号化されていれば、盗聴されても内容は解読できない。
🗝️ 共通鍵暗号(対称鍵暗号)
送信者と受信者が同じ鍵を使って暗号化・復号を行う方式。
メリット: 処理が高速。大量のデータ暗号化に向く。
デメリット: 鍵配送問題がある。「秘密の鍵」をどうやって安全に相手に渡すか?
デメリット: 鍵配送問題がある。「秘密の鍵」をどうやって安全に相手に渡すか?
代表的なアルゴリズム:
- AES(Advanced Encryption Standard)― 現在の標準。128/192/256ビット鍵
- DES(Data Encryption Standard)― 56ビット鍵。現在は安全でないため非推奨
- 3DES(Triple DES)― DESを3回適用。AESに置き換えられつつある
鍵配送問題の例:
AさんとBさんが共通鍵を共有したいが、鍵をメールで送ると第三者に盗まれるかもしれない。鍵を暗号化して送るには別の鍵が必要…という無限ループが発生する。
AさんとBさんが共通鍵を共有したいが、鍵をメールで送ると第三者に盗まれるかもしれない。鍵を暗号化して送るには別の鍵が必要…という無限ループが発生する。
🔑 公開鍵暗号(非対称鍵暗号)
数学的に関連した2種類の鍵のペアを使う方式。公開鍵(誰でも入手可能)で暗号化し、秘密鍵(本人だけが持つ)で復号する。
メリット: 鍵配送問題が解消される。公開鍵はそのまま公開できる。
デメリット: 処理が低速。共通鍵暗号の100〜1000倍の計算コスト。
デメリット: 処理が低速。共通鍵暗号の100〜1000倍の計算コスト。
代表的なアルゴリズム:
- RSA ― 大きな数の素因数分解の困難さを利用。最も広く使われる
- 楕円曲線暗号(ECC) ― 短い鍵長で高い安全性。スマートフォンで多用
重要:暗号化の「方向」
① 機密性の確保:公開鍵で暗号化 → 秘密鍵で復号(受信者だけが読める)
② 認証・署名:秘密鍵で署名 → 公開鍵で検証(本人確認・改ざん検知)
① 機密性の確保:公開鍵で暗号化 → 秘密鍵で復号(受信者だけが読める)
② 認証・署名:秘密鍵で署名 → 公開鍵で検証(本人確認・改ざん検知)
📊 共通鍵 vs 公開鍵 比較
共通鍵暗号
- 鍵の数:1種類(送受信者で共有)
- 速度:高速 ✅
- 鍵配送:問題あり ❌
- 主な用途:データ本体の暗号化
- 代表:AES, DES
公開鍵暗号
- 鍵の数:2種類(公開鍵 + 秘密鍵)
- 速度:低速 ❌
- 鍵配送:問題なし ✅
- 主な用途:鍵交換・デジタル署名
- 代表:RSA, ECC
🌐 ハイブリッド暗号(HTTPSの仕組み)
両者の長所を組み合わせた方式。共通鍵を公開鍵暗号で安全に交換し、実際のデータは高速な共通鍵暗号で暗号化する。
ハイブリッド暗号の流れ(HTTPS)
① 鍵交換フェーズ
クライアントが
共通鍵を生成
↓
サーバーの公開鍵で
共通鍵を暗号化
↓
サーバーに送信
↓
サーバーは秘密鍵で復号
→ 共通鍵を取得
共通鍵を生成
↓
サーバーの公開鍵で
共通鍵を暗号化
↓
サーバーに送信
↓
サーバーは秘密鍵で復号
→ 共通鍵を取得
→
② 通信フェーズ
両者が同じ共通鍵を
持っている状態
↓
以降のすべての
通信データを
共通鍵で暗号化
↓
高速・安全な
通信が実現!
持っている状態
↓
以降のすべての
通信データを
共通鍵で暗号化
↓
高速・安全な
通信が実現!
公開鍵暗号 → 鍵配送問題を解決 / 共通鍵暗号 → 高速なデータ通信を実現
🔄 暗号化の方向性まとめ
機密性(暗号化通信)
送信者
↓ 受信者の公開鍵で暗号化
→→→
受信者の秘密鍵で復号 ↓
受信者
↓ 受信者の公開鍵で暗号化
→→→
受信者の秘密鍵で復号 ↓
受信者
受信者だけが読める
認証(デジタル署名)
送信者
↓ 自分の秘密鍵で署名
→→→
送信者の公開鍵で検証 ↓
受信者
↓ 自分の秘密鍵で署名
→→→
送信者の公開鍵で検証 ↓
受信者
本人確認・改ざん検知
🎯 試験での出方
- 「共通鍵暗号の問題点は?」→ 鍵配送問題(鍵を安全に渡せない)
- 「n人が共通鍵を共有するとき必要な鍵の数は?」→ n(n-1)/2(10人なら45個!)
- 「公開鍵で暗号化、秘密鍵で復号」の目的は?→ 機密性の確保
- 「秘密鍵で署名、公開鍵で検証」の目的は?→ 認証・改ざん検知
- 「HTTPSが使う暗号化方式は?」→ ハイブリッド暗号
- AESの鍵長は128/192/256ビットのいずれか(DESは56ビット)
⚠️ よくある間違い
- 「公開鍵で暗号化→公開鍵で復号」は間違い。復号は必ず秘密鍵で行う
- 「共通鍵は安全でない」は間違い。AESは現在も安全。問題は鍵の配送方法
- 「公開鍵暗号だけをHTTPSで使う」は間違い。実際はハイブリッド暗号
- 「DESが現在の標準」は間違い。現在の標準はAES。DESは安全でない
- 「秘密鍵は送信者だけが持つもの」は間違い。受信者も自分の秘密鍵を持つ(各人がペアを保有)
✍️ 確認クイズ
Q1. 共通鍵暗号の最大の問題点として最も適切なものはどれか?
✅ 正解:② 共通鍵暗号は処理が高速な反面、「秘密の鍵をどうやって安全に相手に渡すか」という鍵配送問題が最大の課題。これを解決したのが公開鍵暗号。
Q2. Aさんが受信者Bさんだけに内容を読ませたいメッセージを送る場合、どの鍵で暗号化すべきか?
✅ 正解:③ 機密性の確保には「受信者(B)の公開鍵」で暗号化し、「受信者(B)の秘密鍵」で復号する。B の秘密鍵は B だけが持つため、B だけが復号できる。
Q3. HTTPSで使われるハイブリッド暗号について正しい説明はどれか?
✅ 正解:③ ハイブリッド暗号は「公開鍵暗号で共通鍵を安全に交換」し、「実際のデータは高速な共通鍵暗号で暗号化」する。両方の長所を組み合わせた方式。
Q4. デジタル署名において、送信者が署名を作成する際に使う鍵はどれか?
✅ 正解:① デジタル署名では「送信者の秘密鍵」でメッセージのハッシュに署名し、受信者は「送信者の公開鍵」で検証します。秘密鍵を持つのは送信者だけなので、なりすまし防止(否認防止)になります。暗号化(受信者の公開鍵)と混同しないよう注意。
Q5. AES(Advanced Encryption Standard)の説明として正しいものはどれか?
✅ 正解:② AESは共通鍵暗号方式の国際標準(旧DESを置き換えた)。鍵長は128/192/256ビットを選択でき、処理が高速で現在の暗号化の主流。公開鍵暗号はRSAなど、ハッシュ関数はSHA-256など別のアルゴリズムです。
Sponsor Link