暗号化の基礎

公開鍵暗号 こうかいかぎあんごう

非対称暗号RSA秘密鍵デジタル署名PKITLS
公開鍵暗号について教えて

簡単に言うとこんな感じ!

「鍵」が2本セットになってる暗号の仕組みだよ!片方の鍵で暗号化したら、もう片方の鍵でしか解けない、っていう不思議な構造なんだ。ネット通販でクレカ情報を安全に送れるのも、この仕組みのおかげってこと!


公開鍵暗号とは

公開鍵暗号(Public Key Cryptography)とは、「公開鍵」と「秘密鍵」という2本1セットの鍵を使って情報を暗号化・復号する方式です。従来の暗号方式が「同じ鍵で施錠・解錠する」のに対し、公開鍵暗号は「施錠用と解錠用で別々の鍵を使う」まったく異なるアプローチを取ります。非対称暗号(Asymmetric Cryptography)とも呼ばれます。

公開鍵は名前の通り「公開してよい鍵」で、誰に渡しても問題ありません。一方、秘密鍵は絶対に自分だけが持つ鍵です。公開鍵で暗号化されたデータは、対応する秘密鍵でしか復号できないため、公開鍵をインターネット上に広くばらまいても安全にやり取りができます。

実務では、HTTPS通信・電子メールの暗号化・デジタル署名・VPN接続など、現代のインターネットセキュリティを支えるほぼすべての場面で使われています。「どうやって鍵を相手に安全に渡すか」という長年の課題(鍵配送問題)を解決した革命的な発明です。


2本の鍵の役割と使い方

公開鍵暗号の使い方は大きく2パターンあります。

用途使う鍵(暗号化/署名)使う鍵(復号/検証)目的
暗号化通信受信者の公開鍵受信者の秘密鍵内容を他人に見られないようにする
デジタル署名送信者の秘密鍵送信者の公開鍵「本人が作ったこと」を証明する

🏠 南京錠アナロジーで覚える

【暗号化通信のイメージ】

  受信者が「開いた南京錠(公開鍵)」を世界中に配る

  送信者がその南京錠でボックスを施錠して送る

  鍵(秘密鍵)を持つ受信者だけが開けられる!

【デジタル署名のイメージ】

  送信者が「自分の印鑑(秘密鍵)」で封蝋する

  受信者は「印鑑の拓本(公開鍵)」で本物か確認する

  本人しか押せない印鑑なので、なりすまし不可!

主な公開鍵暗号アルゴリズム

アルゴリズム鍵長の目安特徴主な用途
RSA2048〜4096 bit最も広く普及TLS、メール暗号化
ECDSA256〜521 bit短い鍵で高強度TLS証明書、ビットコイン
EdDSA (Ed25519)256 bit高速・安全SSH、新世代TLS
DH / ECDH2048 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主導)

共通鍵暗号との違い・実務での組み合わせ

公開鍵暗号は「鍵配送問題を解決する天才的な仕組み」ですが、計算コストが高いという弱点があります。そのため実務では共通鍵暗号と組み合わせて使うのが一般的です。

公開鍵暗号 vs 共通鍵暗号 ― TLSでの使い分け 公開鍵暗号 (非対称暗号) ✔ 鍵を事前に共有しなくてよい ✔ デジタル署名ができる ✘ 計算が重い・低速 → 鍵の交換・署名に使う   例: RSA, ECDH, Ed25519 共通鍵暗号 (対称暗号) ✔ 計算が軽い・高速 ✔ 大量データの暗号化に向く ✘ 鍵を安全に共有する手段が必要 → 実際のデータ暗号化に使う   例: AES-256, ChaCha20 TLSハンドシェイクでの連携 公開鍵で「共通鍵」を安全に交換 → 共通鍵で高速に通信 実務での流れ(HTTPS接続時) ① ブラウザがサーバーの公開鍵(SSL証明書)を受け取る ② 公開鍵暗号で「セッション鍵(共通鍵)」を安全に交換する ③ 以降の通信はその共通鍵で高速に暗号化 ← これがHTTPS!

公開鍵インフラ(PKI)との関係

公開鍵暗号を実際に使うには「この公開鍵は本当に正しい相手のものか?」を保証する仕組みが必要です。それがPKI(Public Key Infrastructure:公開鍵基盤)です。PKIでは認証局(CA)と呼ばれる信頼できる第三者機関が公開鍵の正しさを電子証明書として保証します。ブラウザのURLバーに表示される🔒マークは、PKIが正常に機能している証拠です。


関連する規格・RFC

規格・RFC番号内容
RFC 8017RSA暗号の標準仕様(PKCS #1)
RFC 8446TLS 1.3(公開鍵暗号を使う通信規格の最新版)
RFC 8032EdDSA / Ed25519 署名アルゴリズム
RFC 5280X.509 証明書フォーマット(PKIの基盤)
FIPS 186-5ECDSA の米国政府標準仕様
NIST PQC耐量子暗号の標準化プロジェクト(2022年〜)

関連用語

  • 共通鍵暗号 — 同じ鍵で暗号化と復号を行う従来方式。公開鍵暗号と組み合わせて使う
  • TLS — HTTPSを実現するプロトコル。公開鍵暗号で鍵交換し、共通鍵で通信を暗号化する
  • デジタル署名 — 秘密鍵で「署名」し公開鍵で「検証」することで、本人性と改ざんを証明する仕組み
  • PKI — 公開鍵が本物かを証明する「認証局」を中心とした信頼の仕組み
  • SSL証明書 — サーバーの公開鍵を認証局が保証した電子証明書。HTTPS接続に必須
  • ハッシュ関数 — デジタル署名と組み合わせて使われる、データの「指紋」を生成する技術