暗号の2つ目のタイプが公開鍵暗号。2つの鍵を使い、共通鍵の弱点(鍵配送問題)を解きます。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
2つの鍵の役割
鍵がペアになっています。
- 公開鍵 — みんなに配ってよい鍵。施錠(暗号化)専用
- 秘密鍵 — 本人だけが持つ鍵。開錠(復号)専用
南京錠にたとえると分かりやすい。開いた南京錠(公開鍵)をばらまいておき、誰でも施錠できる。でも開ける鍵(秘密鍵)は本人だけが持つ——だから誰でも「その人宛」に安全に送れます。
アニメーション『公開鍵暗号(南京錠)』を開く
この部分をもっと深く(中級)
公開鍵暗号は、「片方向は簡単だが逆は極めて難しい」数学に依ります。
- RSA — 大きな数の素因数分解の困難さ
- 楕円曲線(ECC) — 楕円曲線上の離散対数の困難さ。同じ強度を短い鍵で(省電力・高速)
- 鍵長の対応 — RSA-2048 ≒ ECC-224 程度、のように対応づく
「公開鍵から秘密鍵を計算できない」のは、この問題が現実的な時間で解けないからです。
なぜ鍵配送問題が解ける?
共通鍵は「同じ鍵をどう渡すか」で悩みました。公開鍵は、公開鍵を堂々と配ってよいので、事前に秘密の経路で鍵を共有しなくて済みます。
代表は RSA や 楕円曲線暗号(ECC)。ただし処理は遅いので、実際は「公開鍵で共通鍵を渡し、以降は速い共通鍵で通信」と組み合わせます(HTTPSの仕組み)。
この部分をもっと深く(中級)
同じ鍵ペアを、用途を変えて使います。
- 暗号化 — 相手の公開鍵で施錠、相手の秘密鍵だけが開ける
- 鍵交換(DH/ECDHE) — 互いの公開値から同じ共通鍵を作る。使い捨てにすれば前方秘匿性を持つ
- 電子署名 — 秘密鍵で署名、公開鍵で検証(別ユニット)
- ハイブリッド — 遅いので、鍵交換で共通鍵を確立し、本体は速い共通鍵で(HTTPSの基本)
⚠️ 気をつける
- 遅い — 大量データには不向き(だから共通鍵と併用)
- 公開鍵が本物か? — 偽物の公開鍵をつかまされたら台無し。証明書で本物だと保証する
- 秘密鍵の保護 — 秘密鍵が漏れたら全て破られる
この部分をもっと深く(中級)
- 遅い — 大量データには不向き(だから共通鍵と併用)
- 公開鍵が本物か — 偽物をつかまされたら台無し。証明書で保証する
- 秘密鍵の保護 — 漏れたら全て破られる。乱数の質も安全の土台
- 将来の量子脅威 — 十分な量子計算はRSA/ECCを破りうる。耐量子暗号(PQC)への移行が始まっている
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 公開鍵暗号で「暗号化」に使うのはどちらの鍵?
問2. 公開鍵暗号が共通鍵暗号より優れている点は?
問3. 秘密鍵の役割として正しいのはどれ?
問4. 南京錠のたとえで「開いた南京錠をみんなに配る」のは、どの鍵にあたる?
問5. 公開鍵暗号の弱点として正しいのはどれ?
問6. 配られた公開鍵が「本物か(偽物とすり替えられていないか)」を保証するために使うのはどれ?
問7. 公開鍵暗号の代表的なアルゴリズムで、大きな数の素因数分解の難しさを利用するものを英字3文字で答えてください。
問8. 本人だけが持ち、絶対に他人へ渡してはいけないほうの鍵を何と呼ぶ?