共通鍵暗号と公開鍵暗号のしくみ
共通鍵暗号と公開鍵暗号の違い、使う鍵の選び方、AESやRSAなど方式名の分類、必要な鍵の数を区別して、関連する科目Aの過去問を自力で解けるようになる。
公開鍵暗号で「誰のどの鍵で暗号化するか」は、本試験系でも免除試験でも最も多く出ている論点です。HTTPSやVPNの裏側も同じしくみなので、API設計の通信要件を読むときにも役立ちます。
このレッスンで稽古する(用語チェック・過去問)結論:暗号は「鍵が1本か、ペアか」で2種類
暗号化とは、読める文(平文)を、鍵がないと読めない文(暗号文)に変えることです。暗号文を平文に戻すことを復号と呼びます。暗号方式は、暗号化と復号に同じ鍵を使う共通鍵暗号方式と、ペアになった別々の鍵を使う公開鍵暗号方式の2つに分かれます。
| 比較項目 | 共通鍵暗号方式 | 公開鍵暗号方式 |
|---|---|---|
| 暗号化と復号の鍵 | 同じ鍵(共通鍵) | 別の鍵(公開鍵と秘密鍵のペア) |
| 鍵の扱い | 相手と秘密に共有する | 公開鍵はみんなに配る。秘密鍵は本人だけが持つ |
| 処理速度 | 速い | 遅い |
| 弱点 | 鍵を安全に渡すのが難しい。相手が増えると鍵の数も増える | 処理が重い |
| 必要な鍵の数(n人) | n(n−1)/2 | 2n |
| 代表例 | AES、KCipher-2 | RSA、楕円曲線暗号 |
共通鍵暗号方式は秘密鍵暗号方式と呼ばれることもあります。公開鍵暗号の「秘密鍵」と名前が似ているので、選択肢で「共通の秘密鍵」と出てきたら共通鍵のことだと読み替えてください。
最頻出:公開鍵暗号では「受信者の公開鍵」で暗号化する
秘密の内容を送るときは、受信者の公開鍵で暗号化し、受信者が自分の秘密鍵で復号します。公開鍵で暗号化した文は、ペアになった秘密鍵でしか戻せません。秘密鍵を持っているのは受信者本人だけなので、途中で盗まれても読まれません。
たとえるなら、公開鍵は誰でも閉められる開いた南京錠で、秘密鍵はそれを開ける本人だけの鍵です。Bさんは南京錠をたくさん配っておき、Aさんはその南京錠で箱を閉めて送ります。箱を開けられるのは、鍵を持っているBさんだけです。
flowchart LR
A["Aさん(送信者)平文"] -->|"Bさんの公開鍵で暗号化"| C["暗号文(ネットワーク上)"]
C -->|"Bさんの秘密鍵で復号"| B["Bさん(受信者)平文"]
目的によって使う鍵が逆になるので、表でまとめて覚えます(デジタル署名は後のレッスンで詳しく扱います)。
| 目的 | 送る側が使う鍵 | 受け取る側が使う鍵 |
|---|---|---|
| 内容を秘密にする(機密性) | 受信者の公開鍵で暗号化 | 受信者の秘密鍵で復号 |
| 本人が送ったと証明する(デジタル署名) | 送信者の秘密鍵で署名 | 送信者の公開鍵で検証 |
- 公開するのは、暗号化に使う鍵と署名の検証に使う鍵です。復号鍵と署名鍵は秘密にします。
- 「Bさんの公開鍵で暗号化したメールをCさんにも送った」場合でも、復号できるのはBさんだけです。公開鍵では復号できず、Cさんの秘密鍵では合いません。
方式の名前を見て分類できるようにする
「公開鍵暗号はどれか」「同じ鍵で暗号化と復号をするのはどれか」という問題は、名前と分類を覚えていれば解けます。暗号ではない仲間(ハッシュ関数や基盤)が選択肢に混ざるのが定番です。
| 名前 | 分類 | 覚えるポイント |
|---|---|---|
| AES | 共通鍵暗号 | 現在の標準。DBのデータ暗号化やIPsecの通信暗号化に使う |
| KCipher-2 | 共通鍵暗号 | 日本で開発された高速な共通鍵暗号 |
| RSA | 公開鍵暗号 | 安全性の根拠は大きな数の素因数分解が難しいこと |
| 楕円曲線暗号 | 公開鍵暗号 | RSAより短い鍵長で同じレベルの安全性を実現できる |
| DH | 鍵交換方式 | 安全性の根拠は離散対数問題。暗号化そのものではなく、鍵を共有するための方式 |
| DSA | 署名方式 | 安全性の根拠は離散対数問題 |
| SHA-256 | ハッシュ関数 | 暗号ではない。元に戻せない要約値を作る |
| PKI | 公開鍵基盤 | 暗号方式ではなく、公開鍵が本人のものだと保証するしくみ |
「素因数分解」と書いてあればRSAです。「短い鍵長で同等の安全性」と書いてあれば楕円曲線暗号です。楕円曲線暗号は公開鍵暗号なので、「共通鍵暗号で高速」という選択肢は誤りです。
共通鍵は速いが、鍵の受け渡しが弱点
同じ暗号強度で比べると、共通鍵暗号は公開鍵暗号より暗号化と復号にかかる時間が短いです。そのため、大量の通信データの暗号化には共通鍵が使われます。たとえば、IPsec(IP通信を暗号化する技術)でAESを使う場合は、PCとサーバで共有した共通鍵を使います。
弱点は、鍵を相手に安全に渡す必要があることです。平文で鍵を送ると盗まれるので、「事前に平文で送付する」という選択肢は誤りです。また、相手ごとに別の鍵が必要なので、相手が増えるほど鍵の管理が大変になります。
実際には、公開鍵暗号で共通鍵を安全に渡し、データ本体は速い共通鍵で暗号化するという組合せ(ハイブリッド暗号方式)がよく使われます。両方の長所を活かすやり方です。
必要な鍵の数:共通鍵 n(n−1)/2、公開鍵 2n
n人が互いに暗号通信をする場合、必要な鍵の数は次のとおりです。
| 方式 | 数え方 | 式 | 100人の場合 |
|---|---|---|---|
| 共通鍵暗号 | 2人の組ごとに1本 | n(n−1)/2 | 100×99÷2 = 4,950 |
| 公開鍵暗号 | 1人1ペア(2本) | 2n | 2×100 = 200 |
共通鍵は、AさんとBさんの組とBさんとAさんの組が同じなので、2で割るのを忘れないでください。下の例題で手順を確認します。
暗号の危殆化とは
危殆化(きたいか)とは、計算能力の向上や新しい解読法の発見によって、暗号アルゴリズムそのものの安全性が下がることです。たとえば、ハッシュ値が同じになるデータの組を現実的な時間で見つける方法が見つかった場合は、危殆化にあたります。
鍵の漏えいや証明書の有効期限切れは運用上の問題なので、危殆化ではありません。「アルゴリズムが弱くなったか、それとも運用のミスか」で見分けます。
試験での問われ方
- 鍵選びの問題:「秘密にして送るとき、使う鍵はどれか」と聞かれたら、答えは受信者の公開鍵です。送信者の秘密鍵は署名用のひっかけです。
- 分類の入れ替え:「AESは公開鍵暗号、RSAは共通鍵暗号」のように、2つを逆にした選択肢が出ます。
- 特徴の付け替え:「同じ鍵を使う」「共通鍵の配送が必要」は共通鍵の特徴です。これを公開鍵暗号の説明として出してきます。
- 公開する鍵の取り違え:「復号鍵を公開する」「署名鍵を公開する」はどちらも誤りです。
- 鍵の数の計算:200(2n)、9,900(n(n−1))、10,000(n²)を並べて選ばせます。
- 危殆化:鍵の漏えいや有効期限切れを正解に見せかけます。
共通鍵の総数を計算する(100人)
ア 200
イ 4,950
ウ 9,900
エ 10,000
出典:基本情報技術者試験 科目A免除 修了試験 20260125 実施分 問28
解き方と答えを見る
- 共通鍵は「通信する2人の組」ごとに1本必要だと確認する。
- 1人あたりの相手は自分以外の 100−1 = 99人。全員分を足すと 100 × 99 = 9,900。
- この数え方では、AさんからBさんとBさんからAさんを2回数えている。同じ組なので2で割る:9,900 ÷ 2 = 4,950。
- 式にすると n(n−1)/2 = 100×99/2 = 4,950。
- 選択肢を確認する。ア 200 は公開鍵の 2n、ウ 9,900 は2で割り忘れ、エ 10,000 は n²。
答え:イ:4,950
公開鍵暗号で必要な鍵の数を求める
ア n+1
イ 2n
ウ n(n−1)/2
エ log_2 n
出典:基本情報技術者試験 科目A免除 修了試験 20161211 実施分 問39
解き方と答えを見る
- 公開鍵暗号では、利用者1人が公開鍵と秘密鍵のペアを1組持つ。
- 1組は2個と数えるという条件なので、1人あたり2個。
- n人なら 2 × n = 2n 個。相手が何人いても、自分のペアは1組で足りる。
- ウ n(n−1)/2 は共通鍵暗号の式なので、ひっかけ。
答え:イ:2n
XさんがYさんに秘密のメールを送るときの鍵
ア X さんの公開鍵
イ X さんの秘密鍵
ウ Y さんの公開鍵
エ Y さんの秘密鍵
解き方と答えを見る
- 目的を確認する。内容を秘密にしたいので、目的は機密性(署名ではない)。
- 機密性のルールは「受信者の公開鍵で暗号化し、受信者の秘密鍵で復号」。
- 受信者はYさんなので、暗号化に使うのはYさんの公開鍵。
- イ Xさんの秘密鍵は署名で使う鍵。エ Yさんの秘密鍵はYさん本人しか持っていないので、Xさんは使えない。
答え:ウ:Yさんの公開鍵
要点(試験直前に読む)
- 共通鍵暗号は鍵が1本(同じ鍵)で処理が速い。公開鍵暗号は鍵がペアで処理が遅い。
- 秘密に送るときは受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する。署名はその逆で送信者の秘密鍵で作る。
- 共通鍵暗号はAESとKCipher-2、公開鍵暗号はRSAと楕円曲線暗号。SHA-256はハッシュ関数、PKIは基盤。
- RSAは素因数分解の難しさが根拠。楕円曲線暗号はRSAより短い鍵長で同じ安全性を実現できる。
- n人で必要な鍵の数は、共通鍵がn(n−1)/2、公開鍵が2n。100人なら4,950と200。
- 危殆化は、アルゴリズムそのものの安全性が下がること。鍵の漏えいは含まない。
ひっかけ
- 「送信者の秘密鍵で暗号化して秘密にする」は署名の話で、機密性は得られない。秘密にするなら受信者の公開鍵を選ぶ。
- 「AESは公開鍵、RSAは共通鍵」という入れ替えに注意。Aは共通鍵(Advanced)、Rは公開鍵と覚える。
- 「同じ鍵を使う」「共通鍵の配送が必要」を公開鍵暗号の説明にした選択肢は誤り。どちらも共通鍵暗号の特徴。
- 鍵の数の計算では、9,900(2で割り忘れ)や200(公開鍵の2n)を選ばせる。共通鍵なら組の数なので最後に2で割る。
- 危殆化の問題では、鍵の漏えいや証明書の期限切れを正解に見せかける。アルゴリズムの弱体化だけが危殆化。
用語(18)
暗号化する前の、誰でも読める状態のデータ。
鍵がないと元の内容が分からないように変換されたデータ。
暗号文を鍵を使って元の平文に戻すこと。
⚠ 「解読」は鍵を持たない第三者が暗号を破ること。正規の受信者が鍵で戻すのが復号。
暗号化と復号に同じ鍵を使い、その鍵を相手と秘密に共有する方式。処理が速い。
⚠ 秘密鍵暗号方式とも呼ばれる。公開鍵暗号の「秘密鍵」と名前が似ているので注意。鍵が1本なら共通鍵暗号、ペアなら公開鍵暗号。
公開鍵と秘密鍵のペアを使い、一方で暗号化したものをもう一方でしか復号できない方式。
⚠ 「暗号化鍵と復号鍵が同一」「共通鍵の配送が必要」は共通鍵暗号の特徴。
誰にでも配ってよい鍵。秘密の通信では、送る側が受信者の公開鍵で暗号化する。
⚠ 公開鍵で暗号化したものは公開鍵では復号できない。復号するのはペアの秘密鍵。
本人だけが持つ鍵。自分宛ての暗号文の復号と、デジタル署名の作成に使う。
⚠ 選択肢の「共通の秘密鍵」は共通鍵暗号の鍵のこと。
送信者が自分の秘密鍵で署名し、受信者が送信者の公開鍵で検証して、本人が送ったことと改ざんされていないことを確かめるしくみ。
⚠ 秘密通信は受信者の公開鍵で暗号化、署名は送信者の秘密鍵で作成。鍵の持ち主と種類が逆になる。
現在の標準となっている共通鍵暗号方式。DBのデータ暗号化やIPsecの通信暗号化に使われる。
⚠ RSAは公開鍵暗号。「AESは公開鍵」という選択肢は誤り。
日本で開発された高速な共通鍵暗号方式。
⚠ 公開鍵暗号の選択肢に混ぜられる。共通鍵の仲間。
大きな数の素因数分解が難しいことを安全性の根拠とする公開鍵暗号方式。
⚠ DH・DSAは離散対数問題が根拠。「素因数分解」と書いてあればRSA。
楕円曲線の数学を利用した公開鍵暗号で、RSAより短い鍵長で同じレベルの安全性を実現できる。
⚠ 共通鍵暗号ではない。総当たりで解読できないことが数学的に証明されているわけでもない。
離散対数問題の難しさを利用して、通信相手と安全に共通鍵を共有するための鍵交換方式。
⚠ 素因数分解が根拠のRSAと取り違えやすい。
離散対数問題の難しさを利用したデジタル署名の方式。
⚠ 名前に署名と入っている。素因数分解が根拠のRSAとは別。
データから元に戻せない256ビットの要約値(ハッシュ値)を作るハッシュ関数。
⚠ 暗号化方式ではないので、暗号方式を選ぶ問題では外す。
認証局がデジタル証明書を発行して、公開鍵が本人のものだと保証するしくみ全体。
⚠ 暗号アルゴリズムではなく基盤。暗号方式の選択肢に混ぜられる。
IPの通信を暗号化するなどして保護する技術で、VPNに使われる。
⚠ 通信データの暗号化にAESを使う場合、使う鍵は共有した共通鍵。
計算能力の向上や解読法の発見によって、暗号アルゴリズムの安全性が下がること。
⚠ 鍵の漏えいや証明書の有効期限切れは運用上の問題で、危殆化ではない。
このレッスンの過去問
- 暗号方式の分類と鍵の使い分け基本情報技術者試験 科目A免除 修了試験 20230611 実施分 問28
- 共通鍵暗号方式の特徴(処理速度)平成30年度 秋期 基本情報技術者試験 午前 問38
- 共通鍵暗号方式の代表例(AES)平成27年度 春期 基本情報技術者試験 午前 問39
- 公開鍵暗号方式の鍵の使い分け(暗号化は受信者の公開鍵)平成30年度 春期 基本情報技術者試験 午前 問38
- RSAの定義(素因数分解の困難性)平成29年度 秋期 基本情報技術者試験 午前 問38
- 公開鍵暗号方式の代表的方式(RSA・楕円曲線暗号)平成29年度 春期 基本情報技術者試験 午前 問40
- 楕円曲線暗号の特徴(短い鍵長で同等の安全性)平成31年度 春期 基本情報技術者試験 午前 問39
- 共通鍵暗号方式の必要鍵数(n(n-1)/2)基本情報技術者試験 科目A免除 修了試験 20260125 実施分 問28
- 公開鍵暗号方式の必要鍵数(2n個)基本情報技術者試験 科目A免除 修了試験 20161211 実施分 問39
- 暗号の危殆化の定義令和7年度 基本情報技術者試験 科目A 公開問題 問9