公開鍵暗号方式(public key cryptography)
- テクノロジ系
- セキュリティ
- 基本情報
- 応用情報
- 重要度 ★★★★★
暗号化と復号で別の鍵を使う方式。片方は公開してよく、もう片方は本人だけが持つ。
もう少し詳しい説明
公開鍵暗号方式は、かける鍵と開ける鍵が別になっている暗号のやり方です。
郵便ポストを思い浮かべてください。投入口は誰にでも開いていて、誰でも手紙を入れられます。でも中身を取り出せるのは、ポストの鍵を持っている持ち主だけです。入れるのは誰でもできるが、取り出せるのは1人だけ。この形を暗号にしたものだと考えてください。
鍵は2本1組で作られ、それぞれこう呼ばれます。
- 公開鍵:誰に配ってもよい鍵。暗号をかけるのに使う(ポストの投入口)
- 秘密鍵:本人だけが持つ鍵。暗号を開けるのに使う(ポストの鍵)
ここが肝心なところですが、公開鍵で暗号化したものは、公開鍵では元に戻せません。開けられるのは、対になっている秘密鍵だけです。だから公開鍵は世界中に配っても構いません。
何が解決したのか
この形にすると、共通鍵暗号方式の弱点だった鍵配送問題が消えます。
共通鍵では、同じ鍵を相手にも渡す必要があり、その途中で盗まれる心配がありました。公開鍵方式では、渡すのは盗まれても困らない鍵です。秘密鍵は一度も持ち主の手元から動きません。
鍵の本数も減ります。共通鍵では相手ごとに鍵が要り、10人なら45本必要でした。公開鍵方式では1人が2本持つだけなので、10人なら20本です。人数が増えても比例して増えるだけで済みます。
弱点は遅いこと
良いことばかりに見えますが、弱点があります。計算に時間がかかるのです。
公開鍵暗号方式は、大きな数の素因数分解のような「片方向にしか進めない計算」を使っています。そのぶん処理が重く、共通鍵暗号方式に比べると数百倍から数千倍の時間がかかります。大きなファイルをこの方式だけで送るのは現実的ではありません。
そこで実際には、鍵の受け渡しだけを公開鍵方式で行い、本文は共通鍵方式で送るという組合せが使われます。これがハイブリッド暗号方式で、Webサイトの https:// 通信もこの形です。
もう1つの使い道:鍵を逆に使う
公開鍵と秘密鍵は、逆向きにも使えます。秘密鍵でかけて、公開鍵で開けるのです。
秘密鍵は本人しか持っていないので、公開鍵で開けられたということは「本人がかけた」と言えます。ただし公開鍵は誰でも持っているので、中身は誰にでも読めてしまい、秘密にはなりません。
つまりこの向きは、秘密にするためではなく、本人が作ったと示すための使い方です。これがデジタル署名の原理になります。同じ鍵の組を、目的に応じて向きを変えて使う、という点が試験でよく問われます。
| 目的 | かける鍵 | 開ける鍵 |
|---|---|---|
| 内容を秘密にしたい | 受け取る人の公開鍵 | 受け取る人の秘密鍵 |
| 本人が作ったと示したい | 送る人の秘密鍵 | 送る人の公開鍵 |
残る問題:その公開鍵は本物か
もう1つ気をつける点があります。手に入れた公開鍵が、本当にその人のものかは分かりません。
攻撃者が「これがBさんの公開鍵です」と偽物を配れば、Bさん宛てのつもりで暗号化したものを攻撃者が読めてしまいます。そこで、公開鍵が本人のものだと証明する第三者が必要になります。これが**認証局(CA)**で、その証明書がデジタル証明書です。
試験ではこう出る
科目A(旧・午前)のセキュリティ分野で最頻出の1つです。多いのは「AさんがBさんに秘密の文書を送るとき、暗号化に使う鍵はどれか」という形で、4つの選択肢に誰の公開鍵・秘密鍵が並びます。共通鍵暗号方式との比較(速さ、鍵の本数、配送の可否)を選ばせる問題も定番です。応用情報では、ハイブリッド暗号方式や認証局の役割と組み合わせて問われます。
鍵の選択は、先に「誰の鍵か」を決め、次に「公開か秘密か」を決めると迷いません。秘密にしたいなら受け取る人の鍵、本人だと示したいなら送る人の鍵。この順で考えれば、4択のうち2つはその時点で消えます。
関連する用語
- 共通鍵暗号方式
- 暗号化と復号に同じ鍵を使う方式。処理は速いが、鍵を相手へ渡す手段が要る
- デジタル署名
- 公開鍵暗号方式の鍵を逆向きに使う仕組み。秘密鍵で署名し、公開鍵で確かめる
- ハイブリッド暗号方式
- 鍵の受け渡しだけ公開鍵で行い、本文は共通鍵で送る方式。速さも確保できる
- RSA
- 代表的な公開鍵暗号の方式。大きな数を素因数分解する難しさを根拠にしている
- 認証局(CA)
- その公開鍵が本人のものだと証明する第三者。なりすましを防ぐ役目を負う
- ハッシュ関数
- データを決まった長さの値に変える関数。署名では本文を縮めるのに使う
ミニクイズ
公開鍵暗号方式を用いて、AさんがBさんへ内容を秘密にしたい文書を送る。このとき暗号化に使う鍵として、適切なものはどれか。
正解は 3番:Bさんの公開鍵
内容を秘密にしたいときは、受け取る人の公開鍵でかけます。その公開鍵で暗号化したものは、対になるBさんの秘密鍵でしか開けられず、その秘密鍵はBさん本人しか持っていないからです。Bさんの秘密鍵は他人が手に入れられないので、送る側が使うことはできません。Aさんの鍵でかけてしまうと、開けられるのはAさん自身か、Aさんの公開鍵を持つ全員になり、Bさんに宛てた秘密になりません。なおAさんの秘密鍵でかけるのはデジタル署名のやり方で、目的が秘密の保持ではなく本人の証明になります。誰の鍵かを先に決めてから、公開か秘密かを選ぶと間違えません。
最終更新:2026-09-15