目次
はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回のテーマは、情報セキュリティ分野の基本である公開鍵暗号方式と鍵の数です。
問題では、
- 公開鍵暗号方式を使う
- n人が相互に通信する
- 全部で何個の異なる鍵が必要か
という点が問われます。
ポイントは、共通鍵暗号方式のように「通信する人の組合せ」を数えるのではなく、公開鍵暗号方式では各利用者に公開鍵と秘密鍵の1組が対応するという点です。
それでは問題を見ていきましょう。
問題
公開鍵暗号方式を使った暗号通信を n人が相互に行う場合、
全部で何個の異なる鍵が必要になるか。
ここで、一組の公開鍵と秘密鍵は 2個と数える。
選択肢
| 記号 | 選択肢 |
|---|---|
| ア | n + 1 |
| イ | 2n |
| ウ | n(n − 1) / 2 |
| エ | n² |
解答
イ:2n
解説
公開鍵暗号方式では、各利用者に
- 公開鍵
- 秘密鍵
という1組の鍵が対応します。
暗号化通信を単純化して考えると、次のようになります。
| 鍵 | 主な役割 |
| 公開鍵 | 通信相手が暗号化するときに利用する |
| 秘密鍵 | 自分宛てに暗号化されたデータを復号するときに利用する |
つまり、この問題の前提では、
1人
├─ 公開鍵:1個
└─ 秘密鍵:1個
合計:2個
となります。
したがって、n人いれば、
n人 × 2個 = 2n個
です。
よって、正解はイ:2nとなります。
人数ごとに考えてみる
具体的な人数で確認すると分かりやすくなります。
| 人数 | 公開鍵 | 秘密鍵 | 合計 |
| 1人 | 1 | 1 | 2 |
| 2人 | 2 | 2 | 4 |
| 3人 | 3 | 3 | 6 |
| 5人 | 5 | 5 | 10 |
| n人 | n | n | 2n |
通信相手の組合せが増えても、利用者ごとに新しい鍵ペアを作るわけではありません。
鍵の数は通信ペアの数ではなく、利用者数に比例して増える
というところがポイントです。
公開鍵暗号による通信のイメージ
Aさん、Bさん、Cさんの3人がいる場合を考えてみます。
Aさん
├─ 公開鍵A
└─ 秘密鍵A
Bさん
├─ 公開鍵B
└─ 秘密鍵B
Cさん
├─ 公開鍵C
└─ 秘密鍵C
AさんがBさんに暗号化したデータを送りたい場合は、概念的には次のようになります。
Aさん
│
│ Bさんの公開鍵で暗号化
▼
暗号化データ
│
▼
Bさん
│
│ Bさんの秘密鍵で復号
▼
元のデータ
AさんがCさんに送る場合も、Aさん専用・Cさん専用の新しい共通鍵を用意するのではなく、Cさんに対応する公開鍵を利用します。
このため、この問題では通信の組合せ数を数える必要はありません。
各選択肢を解説
ア:n + 1
誤りです。
公開鍵暗号方式では、この問題の前提では各利用者に
公開鍵:1個
秘密鍵:1個
が対応します。
そのため、n人なら2n個です。
n + 1にはなりません。
イ:2n
正解です。
1人につき公開鍵と秘密鍵の2個が対応するため、
2 × n = 2n
となります。
ウ:n(n − 1) / 2
誤りです。
この式は、n人の中から2人を選ぶ組合せの数を表しています。
つまり、
です。
これは、全員が相互に通信し、通信する2人の組ごとに異なる共通鍵を用意するという前提の共通鍵暗号方式で使われる考え方です。
今回の公開鍵暗号方式では使用しません。
エ:n²
誤りです。
n²は、
n × n
という計算ですが、公開鍵暗号方式で必要な鍵の数を求める式ではありません。
各利用者について公開鍵と秘密鍵の2個を数えるだけなので、正しくは2nです。
共通鍵暗号方式との違い
この問題を理解するうえで重要なのが、共通鍵暗号方式との違いです。
公開鍵暗号方式
公開鍵暗号方式では、この問題のような単純化されたモデルでは、各利用者に公開鍵と秘密鍵の1組が対応します。
したがって、
2n
個です。
共通鍵暗号方式
一方、共通鍵暗号方式では、全員が相互に秘密通信し、それぞれの通信ペアで別々の共通鍵を使用するとすると、2人の組合せごとに鍵が必要になります。
そのため、
n(n − 1) / 2
個必要です。
4人の場合
A、B、C、Dの4人で考えてみましょう。
共通鍵暗号の場合は、
A ─ B
A ─ C
A ─ D
B ─ C
B ─ D
C ─ D
の6組です。
したがって、
4×3/2=6
個の共通鍵が必要になります。
公開鍵暗号の場合は、
4人 × 2個 = 8個
です。
人数を増やして比較すると次のようになります。
| 人数 | 公開鍵暗号 | 共通鍵暗号 |
| 2人 | 4 | 1 |
| 3人 | 6 | 3 |
| 4人 | 8 | 6 |
| 5人 | 10 | 10 |
| 10人 | 20 | 45 |
| 100人 | 200 | 4,950 |
人数が増えてくると、共通鍵暗号方式では管理しなければならない鍵が急激に増えることが分かります。
ただし、実際の通信では「大量のデータをすべて公開鍵暗号だけで暗号化する」というわけではありません。
公開鍵暗号は共通鍵暗号と比べて一般に計算量が大きいため、実際には両者の長所を組み合わせたハイブリッド暗号方式が広く利用されています。
問題の用語解説
公開鍵暗号方式とは
公開鍵暗号方式とは、互いに数学的な関係を持つ
- 公開鍵
- 秘密鍵
の2種類の鍵を使用する暗号技術です。
公開鍵は他者に公開できますが、秘密鍵は本人だけが安全に保持します。
代表的な公開鍵暗号技術として、
- RSA
- 楕円曲線暗号(ECC:Elliptic Curve Cryptography)
などがあります。
公開鍵暗号技術は、暗号化だけでなく、電子署名や鍵共有などにも利用されています。
公開鍵
公開してもよい鍵です。
暗号化通信では、受信者の公開鍵を使ってデータなどを暗号化します。
また、電子署名では署名の検証にも利用されます。
暗号化通信
公開鍵 → 暗号化
電子署名
公開鍵 → 署名の検証
秘密鍵
本人だけが秘密に保持する鍵です。
暗号化通信では、対応する公開鍵で暗号化されたデータなどを復号するために利用します。
また、電子署名では署名を作成するために利用されます。
暗号化通信
秘密鍵 → 復号
電子署名
秘密鍵 → 署名の作成
秘密鍵が第三者に漏えいすると安全性が失われるため、厳重な管理が必要です。
共通鍵暗号方式
共通鍵暗号方式は、暗号化と復号に基本的に同じ秘密鍵を利用する方式です。
代表例としてAESがあります。
送信者
│
│ 共通鍵で暗号化
▼
暗号文
│
▼
受信者
│
│ 同じ共通鍵で復号
▼
平文
高速に処理できることが大きな利点ですが、通信相手に共通鍵を安全に渡す必要があります。
ハイブリッド暗号方式
公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式です。
それぞれには次のような特徴があります。
| 方式 | 主な特徴 |
| 公開鍵暗号 | 鍵配送や認証に適している |
| 共通鍵暗号 | 高速なデータ暗号化に適している |
そこで、
公開鍵技術
↓
通信に必要な秘密情報や鍵を安全に確立
↓
共通鍵暗号
↓
実際の大量データを高速に暗号化
という考え方が利用されています。
TLSなどの安全な通信でも、公開鍵技術と共通鍵暗号を組み合わせる仕組みが使われています。
なぜ公開鍵を公開しても大丈夫なのか
ここで少し不思議なのが、
「鍵を公開したら暗号の意味がないのでは?」
という点です。
公開鍵暗号では、
公開鍵から秘密鍵を簡単に求めることができない
ように数学的な仕組みが設計されています。
そのため、
公開鍵
↓
誰でも取得可能
秘密鍵
↓
本人だけが保持
という使い分けができます。
これによって、共通鍵暗号方式に存在する、
「秘密の共通鍵をどうやって安全に相手へ渡すのか?」
という問題を軽減できます。
ただし、別の問題もあります。
それは、
「その公開鍵は本当に通信相手本人のものなのか?」
という問題です。
そこで登場するのがデジタル証明書やPKIです。
PKIとの関係
公開鍵は公開できますが、攻撃者が偽の公開鍵を送りつけてくる可能性があります。
例えば、
本当のBさんの公開鍵
↑
│
Aさん ─┼─ 本物なのか確認したい
│
↓
攻撃者の偽公開鍵
という問題です。
そこで、公開鍵と本人の情報を結び付けるためにデジタル証明書が利用されます。
そして、その証明書を認証局などによって管理する仕組みがPKI(Public Key Infrastructure:公開鍵基盤)です。
公開鍵暗号を理解するときは、
公開鍵暗号
↓
公開鍵が本物か確認したい
↓
デジタル証明書
↓
認証局(CA)
↓
PKI
という流れまで理解しておくと、後のセキュリティ問題にもつながります。
体系的位置づけ
今回の問題を情報セキュリティ分野の中に位置づけると、次のようになります。
情報セキュリティ
│
├─ 暗号技術
│ ├─ 共通鍵暗号
│ │ └─ AESなど
│ │
│ ├─ 公開鍵暗号
│ │ ├─ RSA
│ │ └─ 楕円曲線暗号
│ │
│ └─ ハイブリッド暗号
│
├─ 電子署名
│ ├─ 秘密鍵で署名
│ └─ 公開鍵で検証
│
└─ PKI
├─ デジタル証明書
├─ 認証局(CA)
└─ 公開鍵の真正性確認
今回の問題自体は非常にシンプルですが、ここから
- 電子署名
- デジタル証明書
- PKI
- TLS
- HTTPS
など、多くのセキュリティ技術につながっていきます。
今回の問題の重要ポイント
今回覚えておきたいポイントは3つです。
① この問題では「1人につき公開鍵と秘密鍵の1組」
公開鍵:1個
秘密鍵:1個
──────────
合計 :2個
したがって、n人なら
2n
個です。
② 共通鍵暗号とは鍵数の数え方が違う
全員が相互通信し、ペアごとに異なる共通鍵を用意するとすると、
| 暗号方式 | 必要な鍵の数 |
| 公開鍵暗号 | 2n |
| 共通鍵暗号 | n(n−1)/2 |
となります。
試験では、この2つを入れ替えないように注意しましょう。
③ 実際の通信では両方式を組み合わせる
試験問題だけを見ると、
「公開鍵暗号の方が便利なのだから、全部公開鍵暗号にすればよいのでは?」
と思うかもしれません。
しかし、公開鍵暗号は一般に共通鍵暗号より計算負荷が大きくなります。
そのため実際には、
公開鍵技術
+
共通鍵暗号
を組み合わせた方式が広く使われています。
「どちらが優れているか」ではなく、それぞれ得意分野が違うと理解しておくことが重要です。
まとめ
今回の問題では、公開鍵暗号方式でn人が相互に通信するときに必要な鍵の数を求めました。
試験では、
公開鍵暗号 → 2n
共通鍵暗号 → n(n−1)/2
という対応をまず押さえつつ、その理由まで説明できるようにしておきましょう。

コメント