公開鍵暗号 こうかいかぎあんごう
簡単に言うとこんな感じ!
「鍵」が2本セットになってる暗号の仕組みだよ!片方の鍵で暗号化したら、もう片方の鍵でしか解けない、っていう不思議な構造なんだ。ネット通販でクレカ情報を安全に送れるのも、この仕組みのおかげってこと!
公開鍵暗号とは
公開鍵暗号(Public Key Cryptography)とは、「公開鍵」と「秘密鍵」という2本1セットの鍵を使って情報を暗号化・復号する方式です。従来の暗号方式が「同じ鍵で施錠・解錠する」のに対し、公開鍵暗号は「施錠用と解錠用で別々の鍵を使う」まったく異なるアプローチを取ります。非対称暗号(Asymmetric Cryptography)とも呼ばれます。
公開鍵は名前の通り「公開してよい鍵」で、誰に渡しても問題ありません。一方、秘密鍵は絶対に自分だけが持つ鍵です。公開鍵で暗号化されたデータは、対応する秘密鍵でしか復号できないため、公開鍵をインターネット上に広くばらまいても安全にやり取りができます。
実務では、HTTPS通信・電子メールの暗号化・デジタル署名・VPN接続など、現代のインターネットセキュリティを支えるほぼすべての場面で使われています。「どうやって鍵を相手に安全に渡すか」という長年の課題(鍵配送問題)を解決した革命的な発明です。
2本の鍵の役割と使い方
公開鍵暗号の使い方は大きく2パターンあります。
| 用途 | 使う鍵(暗号化/署名) | 使う鍵(復号/検証) | 目的 |
|---|---|---|---|
| 暗号化通信 | 受信者の公開鍵 | 受信者の秘密鍵 | 内容を他人に見られないようにする |
| デジタル署名 | 送信者の秘密鍵 | 送信者の公開鍵 | 「本人が作ったこと」を証明する |
🏠 南京錠アナロジーで覚える
【暗号化通信のイメージ】
受信者が「開いた南京錠(公開鍵)」を世界中に配る
↓
送信者がその南京錠でボックスを施錠して送る
↓
鍵(秘密鍵)を持つ受信者だけが開けられる!
【デジタル署名のイメージ】
送信者が「自分の印鑑(秘密鍵)」で封蝋する
↓
受信者は「印鑑の拓本(公開鍵)」で本物か確認する
↓
本人しか押せない印鑑なので、なりすまし不可!
主な公開鍵暗号アルゴリズム
| アルゴリズム | 鍵長の目安 | 特徴 | 主な用途 |
|---|---|---|---|
| RSA | 2048〜4096 bit | 最も広く普及 | TLS、メール暗号化 |
| ECDSA | 256〜521 bit | 短い鍵で高強度 | TLS証明書、ビットコイン |
| EdDSA (Ed25519) | 256 bit | 高速・安全 | SSH、新世代TLS |
| DH / ECDH | 2048 bit〜 | 鍵共有専用 | TLSハンドシェイク |
歴史と背景
- 1976年 — Whitfield DiffieとMartin Hellmanが論文「暗号における新方向」を発表。公開鍵暗号の概念を世界で初めて提唱(Diffie-Hellman鍵交換)
- 1977年 — MIT の Rivest・Shamir・Adleman がRSA暗号を発明。実用的な公開鍵暗号として初めて広く使われることになる
- 1991年 — Phil Zimmermann が PGP(Pretty Good Privacy) を公開。メール暗号化ツールとして個人にも普及し始める
- 1994年 — SSL(後のTLS)が開発され、ネットショッピングなどHTTPS通信の基盤に公開鍵暗号が組み込まれる
- 2004年頃〜 — 楕円曲線暗号(ECC)が普及。より短い鍵で同等の安全性を実現し、スマートフォン時代にフィット
- 2022年〜 — 量子コンピュータへの耐性を持つ耐量子暗号(PQC)の標準化が進行中(NIST主導)
共通鍵暗号との違い・実務での組み合わせ
公開鍵暗号は「鍵配送問題を解決する天才的な仕組み」ですが、計算コストが高いという弱点があります。そのため実務では共通鍵暗号と組み合わせて使うのが一般的です。
公開鍵インフラ(PKI)との関係
公開鍵暗号を実際に使うには「この公開鍵は本当に正しい相手のものか?」を保証する仕組みが必要です。それがPKI(Public Key Infrastructure:公開鍵基盤)です。PKIでは認証局(CA)と呼ばれる信頼できる第三者機関が公開鍵の正しさを電子証明書として保証します。ブラウザのURLバーに表示される🔒マークは、PKIが正常に機能している証拠です。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 8017 | RSA暗号の標準仕様(PKCS #1) |
| RFC 8446 | TLS 1.3(公開鍵暗号を使う通信規格の最新版) |
| RFC 8032 | EdDSA / Ed25519 署名アルゴリズム |
| RFC 5280 | X.509 証明書フォーマット(PKIの基盤) |
| FIPS 186-5 | ECDSA の米国政府標準仕様 |
| NIST PQC | 耐量子暗号の標準化プロジェクト(2022年〜) |