# 公開鍵暗号 — 2つの鍵で、鍵配送問題を解く

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/public-key?level=beginner&audience=adult
暗号の2つ目のタイプが**公開鍵暗号**。**2つの鍵**を使い、共通鍵の弱点（鍵配送問題）を解きます。

## 2つの鍵の役割

鍵がペアになっています。

- **公開鍵** — みんなに配ってよい鍵。**施錠（暗号化）専用**
- **秘密鍵** — 本人だけが持つ鍵。**開錠（復号）専用**

**南京錠**にたとえると分かりやすい。開いた南京錠（公開鍵）をばらまいておき、誰でも施錠できる。でも開ける鍵（秘密鍵）は本人だけが持つ——だから誰でも「その人宛」に安全に送れます。

::diagram{name="public-key-lock"}

## なぜ鍵配送問題が解ける？

共通鍵は「同じ鍵をどう渡すか」で悩みました。公開鍵は、**公開鍵を堂々と配ってよい**ので、事前に秘密の経路で鍵を共有しなくて済みます。

代表は **RSA** や **楕円曲線暗号（ECC）**。ただし**処理は遅い**ので、実際は「公開鍵で共通鍵を渡し、以降は速い共通鍵で通信」と組み合わせます（HTTPSの仕組み）。

## ⚠️ 気をつける

- **遅い** — 大量データには不向き（だから共通鍵と併用）
- **公開鍵が本物か？** — 偽物の公開鍵をつかまされたら台無し。**証明書**で本物だと保証する
- **秘密鍵の保護** — 秘密鍵が漏れたら全て破られる
