公開鍵暗号とは

こうかいかぎあんごう

暗号化と復号に、対になる別々の鍵(公開鍵と秘密鍵)を使う暗号方式。公開鍵は誰に知られてもよく、秘密鍵は本人だけが持つ。鍵の配送が楽になる一方、計算が重いので、データ本体の暗号化には共通鍵暗号と組み合わせて使う。RSAや楕円曲線暗号が代表的。

「公開鍵暗号」は、2分野の5問の練習問題に出てきます(情報セキュリティの基礎, ハードウェアセキュリティなど)。

この用語の分野: 情報セキュリティの基礎

公開鍵と秘密鍵の使い分け

公開鍵暗号では、各人が数学的に対になった公開鍵と秘密鍵を持ちます。秘密を守る目的では、送り手が受け手の公開鍵で暗号化し、受け手だけが自分の秘密鍵で復号します。本人であることを示す目的では、本人が自分の秘密鍵で署名を作り、誰でも本人の公開鍵で検証します(デジタル署名)。公開鍵から秘密鍵を求めることが、RSAでは大きな数の素因数分解、楕円曲線暗号では楕円曲線上の離散対数問題の難しさによって、現実的に不可能になっていることが安全の根拠です。

共通鍵暗号との違いと鍵の数

共通鍵暗号では、通信する2人の組ごとに秘密の鍵を前もって共有しておく必要があり、n人では n(n−1)/2 個の鍵が要ります。公開鍵暗号では、各人が1対の鍵を持てばよく、鍵は全部で 2n 個です。例えば100人なら、共通鍵暗号では4950個、公開鍵暗号では200個です。一方、公開鍵暗号の計算は共通鍵暗号より何桁も重いため、実際にはデータ本体を共通鍵暗号で暗号化し、その鍵の受け渡しや合意に公開鍵の技術を使うハイブリッド暗号方式が一般的です。

公開鍵の持ち主を確かめる仕組み

公開鍵暗号では、使っている公開鍵が本当に相手のものかが重要です。攻撃者が自分の公開鍵を相手のものと偽って渡せば、その相手に宛てた暗号文を読まれてしまいます。そこで、認証局(CA)が「この公開鍵はこの人(ドメイン名)のものである」と署名した証明書を使い、公開鍵の持ち主を保証します。この仕組みをPKI(公開鍵基盤)と呼び、HTTPSで使われるTLSのサーバ証明書がその代表例です。なお、2020年代半ばの時点では、将来の量子コンピュータに備えた耐量子計算機暗号への移行も進められています。

公開鍵暗号の練習問題に挑戦

公開鍵暗号を使って、AさんがBさんだけに読めるようにメッセージを暗号化して送りたい。暗号化に使う鍵はどれか。

  1. AAさんの秘密鍵
  2. BBさんの公開鍵
  3. CBさんの秘密鍵
答えと解説を見る

正解:B. Bさんの公開鍵

公開鍵暗号では、各人が公開鍵と秘密鍵の対を持ちます。公開鍵は誰に知られてもよく、秘密鍵は本人だけが厳重に保管します。公開鍵で暗号化したデータは、対になる秘密鍵でしか復号できません。そこで、AさんはBさんの公開鍵で暗号化して送り、Bさんは自分の秘密鍵で復号します。途中で暗号文を盗み見られても、Bさんの秘密鍵を持たない人には読めません。Bさんの秘密鍵はBさんしか持っていないので、Aさんが使うことはできません。Aさんの秘密鍵で処理するのは、Aさんが作ったことを示すデジタル署名の場合です。

50人のメンバーが、2人ずつの組のすべてで、ほかのメンバーに内容を知られずに暗号の通信をしたい。共通鍵暗号を使う場合に必要な鍵の数と、公開鍵暗号を使う場合に必要な鍵の数(公開鍵と秘密鍵の合計)の組み合わせとして正しいものはどれか。

  1. A共通鍵暗号は1225個、公開鍵暗号は100個
  2. B共通鍵暗号は2450個、公開鍵暗号は100個
  3. C共通鍵暗号は100個、公開鍵暗号は1225個
答えと解説を見る

正解:A. 共通鍵暗号は1225個、公開鍵暗号は100個

共通鍵暗号では、2人の組ごとに別々の鍵が必要です。同じ鍵を3人以上で使うと、ほかのメンバーにも内容が読めてしまうからです。n人から2人を選ぶ組の数は n(n−1)/2 なので、50人では 50 × 49 / 2 = 1225個です。公開鍵暗号では、各人が公開鍵と秘密鍵を1つずつ持てば、誰に送るときも相手の公開鍵で暗号化できるので、鍵は 2n = 2 × 50 = 100個で済みます。人数が増えると、共通鍵暗号の鍵の数は人数のおよそ2乗に比例して増えるのに対し、公開鍵暗号は人数に比例するだけです。これが公開鍵暗号で鍵の管理が楽になる理由の1つです。

よくある質問

公開鍵暗号で暗号化するときは、誰の鍵を使いますか?

受け手の公開鍵で暗号化します。復号できるのは、受け手が持つ対の秘密鍵だけです。自分の秘密鍵で処理するのは、暗号化ではなくデジタル署名の場合です。

公開鍵暗号だけで大きなファイルを暗号化しないのはなぜですか?

公開鍵暗号は計算が重く、大きなデータを直接暗号化するのに向かないためです。ファイルは速い共通鍵暗号で暗号化し、その共通鍵だけを公開鍵暗号で守るハイブリッド暗号方式を使います。

解説の中の「公開鍵暗号」

「公開鍵暗号」が出てくる問題(5問)

  1. 公開鍵暗号を使って、AさんがBさんだけに読めるようにメッセージを暗号化して送りたい。暗号化に使う鍵はどれか。
  2. 50人のメンバーが、2人ずつの組のすべてで、ほかのメンバーに内容を知られずに暗号の通信をしたい。共通鍵暗号を使う場合に必要な鍵の数と、公開鍵暗号を使う場合に必要な鍵の数(公開鍵と秘密鍵の合計)の組み合わせとして正しいものはどれか。
  3. セキュアブートで、ソフトウェアの署名の確認に公開鍵暗号を使う利点として正しいものはどれか。
  4. 共通鍵暗号の特徴として正しいものはどれか。
  5. 大きなファイルを相手に暗号化して送るとき、よく使われるハイブリッド暗号方式の手順として正しいものはどれか。

情報セキュリティの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

共通鍵暗号 デジタル署名 セキュアブート TLS SQLインジェクション クロスサイトスクリプティング(XSS) 最小権限の原則 ゼロデイ攻撃 ソーシャルエンジニアリング ソルト

用語集の一覧へ