暗号技術の基礎

公開鍵暗号方式(RSA, ECC)の数学的仕組みを優しく解説

2025年12月9日

セキュリティの世界において、最大の革命の一つと言われるのが「公開鍵暗号方式」の発明です。

前回学んだ「共通鍵暗号」には、「鍵を相手に送らなければならないが、送る途中で盗まれたら終わり」というジレンマ(鍵配送問題)がありました。これを魔法のように解決したのが公開鍵暗号です。

しかし、その仕組みを理解しようとすると、「素因数分解」や「楕円曲線」といった難解な数学の壁が立ちはだかります。ここで挫折してしまう方も多いのではないでしょうか。

安心してください。SC試験対策として必要なのは、複雑な計算ができることではありません。「どんな数学的な性質を利用して、なぜ安全だと言えるのか」というイメージを掴むことです。

今日は、公開鍵暗号の代表格であるRSAとECC(楕円曲線暗号)について、数式は極力使わず、その「数学的な仕掛け」を直感的に解説します。

公開鍵暗号の基本アイデア「2つの鍵」

共通鍵の悩みを解決する逆転の発想

共通鍵暗号が「家の鍵(開け閉めが同じ鍵)」だとしたら、公開鍵暗号は「南京錠」のようなものです。

想像してみてください。あなたは遠くの友人に秘密の手紙を送りたいとします。

  1. まず、友人から「開いた状態の南京錠(公開鍵)」だけを送ってもらいます(鍵本体は友人が持ったままです)
  2. あなたはその南京錠を使って、手紙を入れた箱に鍵をかけます(暗号化
  3. 鍵のかかった箱を友人に送ります

この箱は、南京錠をかけたあなた自身でさえ開けることはできません。開けられるのは、その南京錠の「鍵本体(秘密鍵)」を持っている友人だけです。

「公開鍵」と「秘密鍵」の役割分担

公開鍵暗号方式では、ペアとなる2つの鍵を使います。

公開鍵(Public Key):

  • 役割: データを「暗号化」するための鍵。南京錠そのもの
  • 扱い: 名前通り、世界中に「公開」してOK。誰に盗まれても問題ありません

秘密鍵(Private Key):

  • 役割: 暗号文を「復号」するための鍵。南京錠を開ける鍵本体
  • 扱い: 自分専用。絶対に他人に見せてはいけません

「誰でも暗号化できるけれど、復号できるのは持ち主だけ」という非対称な関係を作るのがポイントです。このため、公開鍵暗号は「非対称鍵暗号」とも呼ばれます。

なぜこれで「鍵配送問題」が解決するの?

答えはシンプルです。「守るべき秘密の鍵を、配送していないから」です。

ネットワークを通じて相手に送るのは「公開鍵(盗まれても良い鍵)」だけです。一番大事な「秘密鍵」は、作成した本人の手元から一歩も外に出ません。

例えば、オンラインショッピングの場合を考えてみましょう。Amazonのような大手サイトは、自分の公開鍵を世界中のユーザーに配布しています(Webブラウザが自動的に取得します)。あなたがクレジットカード番号を入力すると、その情報はAmazonの公開鍵で暗号化されて送信されます。途中で誰かに盗聴されても、暗号文しか見えません。そして、その暗号文を復号できるのは、Amazonが厳重に管理している秘密鍵だけです。

これにより、共通鍵暗号の最大の弱点であった「鍵を安全に送る方法がない」という問題が根本的に解決したのです。

公開鍵暗号の処理速度という課題

ただし、公開鍵暗号にも弱点があります。それは「処理速度が非常に遅い」ことです。共通鍵暗号と比べて、数百倍から数千倍も時間がかかります。

そのため、実際のシステムでは「公開鍵暗号で共通鍵を安全に交換し、本体のデータは共通鍵暗号で暗号化する」というハイブリッド方式が使われています。これについては次回詳しく解説します。

RSA暗号の仕組み(素因数分解の壁)

安全性の根拠は「計算の難しさ」

では、どうやって「暗号化は簡単だけど、復号は難しい」という状況を作っているのでしょうか。ここで数学の出番です。

現在最も有名な公開鍵暗号であるRSA暗号は、「大きな数の素因数分解は非常に難しい」という数学的な性質を利用しています。

RSAという名前は、開発者であるRivest、Shamir、Adlemanの3人の頭文字から付けられました。1977年に発表されて以来、40年以上にわたってインターネットセキュリティの基盤を支えてきた歴史ある暗号方式です。

「掛けるのは簡単、戻すのは困難」

直感的なイメージで説明します。

絵の具を想像してください。「赤」と「青」の絵の具を混ぜて「紫」を作るのは一瞬で簡単にできます(掛け算)。しかし、出来上がった「紫」の絵の具を見て、「これを元の赤と青に完全に分離してください」と言われたらどうでしょうか?これは非常に困難です(素因数分解)。

RSA暗号では、これと同じことを数字で行います。

  • 2つの巨大な素数(例えば数百桁の数)を掛け合わせて、さらに巨大な数(N)を作るのは、コンピュータなら一瞬です
  • しかし、その巨大な数(N)だけを見て、「どの素数同士を掛けたのか?」を割り出す(素因数分解する)には、現在のスーパーコンピュータでも数年から数万年かかると言われています

この「元に戻す(復号する)ことの圧倒的な難しさ」が、RSA暗号の安全性の盾となっています。

素数とは何か?

補足として、「素数」について簡単に説明しておきます。素数とは、1とその数自身以外では割り切れない数のことです。例えば、2、3、5、7、11、13などです。4は2で割り切れるので素数ではありません。

小さな数では素数を見つけるのは簡単ですが、数百桁の巨大な素数を見つけるのは、それだけでも大変な計算です。そして、その巨大な素数2つを掛け合わせた数を元の2つの素数に分解するのは、さらに困難なのです。

RSA暗号の現状と未来

RSAは長年セキュリティの主役でしたが、コンピュータの性能向上に伴い、安全性を保つために必要な鍵の長さ(ビット数)がどんどん長くなってきています。現在は2048ビット以上が推奨されており、より高度なセキュリティが求められる場合は4096ビットが使われることもあります。鍵が長くなると、その分計算処理も重くなります。

また、遠い将来「量子コンピュータ」が実用化されると、素因数分解が簡単に解けてしまう可能性が指摘されています。量子コンピュータは、従来のコンピュータとは全く異なる原理で動作し、特定の種類の計算を劇的に高速化できるとされています。このため、次世代の「耐量子計算機暗号」の研究も世界中で進められています。

ECC(楕円曲線暗号)の仕組み(新しい数学の力)

RSAより「短くて強い」次世代のエース

RSAに代わって、現在主流になりつつあるのがECC(Elliptic Curve Cryptography:楕円曲線暗号)です。

ECCの最大のメリットは、「RSAよりも短い鍵長で、同等の安全性を確保できる」ことです。例えば、RSAの2048ビットと同じ強度を、ECCならわずか224ビット程度で実現できます。

鍵が短いということは、計算が速く、通信データ量も少なく済むことを意味します。そのため、処理能力が限られるスマートフォンIoT機器での利用に非常に適しています。バッテリー消費も少なく抑えられるため、モバイル環境では特に有利です。

楕円曲線ってなに?(イメージで掴む)

ECCは「楕円曲線」という複雑なグラフ上の点の性質を利用しますが、その仕組みを直感的に言うと「グラフ上のすごろくゲーム」のようなものです。

  1. 特殊な形のグラフ上にスタート地点の点(P)を置きます
  2. あるルールに従って、グラフ上を「点P → 点2P → 点3P…」とジャンプ(移動)していきます
  3. これを「秘密の回数(例えば1億回)」繰り返して、ゴール地点の点(Q)に到達します

この時、次のような特徴があります。

  • スタート点(P)とジャンプ回数から、ゴール点(Q)を計算するのは簡単です(暗号化)
  • しかし、スタート点(P)とゴール点(Q)だけを見て、「何回ジャンプしたか?」を逆算するのは非常に困難です

これが「楕円曲線上の離散対数問題」と呼ばれる難問です。この「逆算の難しさ」を安全性の根拠としています。RSAの素因数分解よりも、さらに解くのが難しい問題を利用しているため、短い鍵でも安全なのです。

なぜ「楕円曲線」と呼ぶのか?

「楕円曲線」という名前から、楕円形を想像するかもしれませんが、実際にはもっと複雑な曲線です。数学的には「y² = x³ + ax + b」という形の方程式で表される曲線のことを指します。この曲線が持つ独特な性質(点の加法と呼ばれる特殊な演算)が、暗号技術に利用されています。

身近な利用シーン

ECCはその効率の良さから、現代のインターネットを支える多くの場所で使われています。

Webサイトのセキュリティ(SSL/TLS): ブラウザのアドレスバーに鍵マークがついている通信(HTTPS)の多くでECCが使われています。Google、Facebook、Amazonなどの大手サイトは、すでにECCを標準的に採用しています。

ビットコイン(ブロックチェーン): 仮想通貨ビットコインでは、所有者の署名などにECCの技術(具体的にはsecp256k1という楕円曲線)が使われています。

スマートフォンのアプリ: LINEやWhatsAppなどのメッセージングアプリでも、エンドツーエンド暗号化にECCが使われています。

RSAとECCの使い分け

現在のシステムでは、RSAとECCが併存しています。RSAは歴史が長く、多くのシステムで実装されているため、互換性の観点から引き続き使われています。一方、新しいシステムや、処理能力が限られるモバイル環境では、ECCが選ばれることが多くなっています。

学んだ知識を定着させよう

ここまでの内容が、なんとなくイメージできたでしょうか? 「数式はわからなくても、安全性の理由が言える」状態がゴールです。理解度を確認するための簡単なクイズです。

【演習】公開鍵暗号方式(RSA, ECC)理解度チェック(全10問・詳細解説付き)

Q1. 公開鍵暗号方式における鍵の役割として、正しい組み合わせはどれか。

正解:イ

解説:
公開鍵暗号は「誰でも暗号化できる(公開鍵)が、復号できるのは本人だけ(秘密鍵)」という仕組みです。南京錠(公開鍵)と鍵本体(秘密鍵)の関係を思い出しましょう。

他の選択肢はなぜ不正解?
  • ア:これは「デジタル署名」の仕組みです(本人が秘密鍵で署名し、他者が公開鍵で検証する)。暗号化通信とは逆になります。
  • ウ・エ:同じ鍵を使うのは「共通鍵暗号方式」です。

Q2. 公開鍵と秘密鍵の管理方法として、適切な記述はどれか。

正解:ア

解説:
その名の通り、「公開鍵」は誰に知られても問題ありません。「秘密鍵」は復号に必要なため、絶対に他人に知られてはいけません。

他の選択肢はなぜ不正解?
  • イ・ウ:秘密鍵を公開してしまったら、誰でも暗号文を復号できてしまい、暗号の意味がなくなります。
  • エ:公開鍵を誰にも渡さないと、誰もあなた宛てのデータを暗号化できなくなります。

Q3. 公開鍵暗号方式の導入によって解決された、共通鍵暗号方式の最大の課題は何か。

正解:ウ

解説:
公開鍵暗号は「守るべき秘密鍵を配送しない」ことで、共通鍵暗号の最大の弱点であった「鍵配送問題」を解決しました。

他の選択肢はなぜ不正解?
  • ア・イ:これらはむしろ公開鍵暗号のデメリット(共通鍵と比較して遅い、計算コストが高い)です。
  • エ:現在の主要な公開鍵暗号(RSA, ECC)は、将来的に量子コンピュータで解読されるリスクが指摘されています(解決されていません)。

Q4. RSA暗号の安全性の根拠となっている、数学的な「計算の困難性」はどれか。

正解:ア

解説:
RSA暗号は、「大きな素数同士を掛けるのは簡単だが、その結果(合成数)を元の素数に分解する(素因数分解)のは非常に困難である」という性質を利用しています。

他の選択肢はなぜ不正解?
  • イ(離散対数問題):これはECC(楕円曲線暗号)などの安全性の根拠です。
  • ウ・エ:これらも数学的に困難な問題ですが、RSA暗号の根拠ではありません。

Q5. RSA暗号に関する記述として、適切なものはどれか。

正解:ウ

解説:
素因数分解の解読技術やコンピュータの計算能力が向上しているため、RSAで十分な安全性を確保するための鍵長は年々長くなっています(現在は2048ビット以上が推奨)。

他の選択肢はなぜ不正解?
  • ア:RSAは公開鍵暗号であり、共通鍵暗号より処理は低速です。
  • イ:同等の安全性で比較すると、RSAの方がECCより鍵長はずっと長くなります。
  • エ:鍵長が長く計算負荷が高いため、リソースが限られた環境にはECCの方が適しています。

Q6. ECC(楕円曲線暗号)の安全性の根拠となっている数学的な問題はどれか。

正解:イ

解説:
ECCは、楕円曲線上の点に定義された演算において、「ある点から何回移動してゴールに到達したか(離散対数)を逆算するのは困難である」という性質を利用しています。

他の選択肢はなぜ不正解?
  • ア(素因数分解):これはRSA暗号の根拠です。
  • ウ(ハッシュ衝突):ハッシュ関数の安全性に関わる問題です。
  • エ:素数判定などに使われる定理ですが、ECCの直接の根拠ではありません。

Q7. ECC(楕円曲線暗号)がRSAと比較して優れている点(メリット)はどれか。

正解:イ

解説:
これがECC最大のメリットです。例えば、RSAの2048ビットと同等の強度が、ECCでは224ビット程度で実現できるとされています。

他の選択肢はなぜ不正解?
  • ア:楕円曲線の数学は、素因数分解(RSA)よりも複雑で理解が難しいとされています。
  • ウ:歴史が長く標準的に広く使われてきたのはRSAです(ECCは比較的新しい)。
  • エ:ECCは公開鍵暗号の中では効率的ですが、AESなどの共通鍵暗号よりは低速です。

Q8. ECC(楕円曲線暗号)の特徴から、特に利用に適している環境はどれか。

正解:ア

解説:
ECCは鍵長が短く、計算負荷や通信データ量を抑えられるため、リソースの限られたモバイル端末やIoTデバイスでの利用に非常に適しています。

他の選択肢はなぜ不正解?
  • イ:使えないわけではありませんが、ECCの「効率性」というメリットが最も活きる環境ではありません。
  • ウ:大容量データの高速暗号化には、AESなどの「共通鍵暗号」が適しています。
  • エ:現在のECCはRSAと同様に、量子コンピュータによって解読されるリスクがあります(耐量子暗号ではありません)。

Q9. 一般的な傾向として、公開鍵暗号方式と共通鍵暗号方式の処理速度を比較した場合、正しい記述はどれか。

正解:イ

解説:
公開鍵暗号は複雑な数学的計算を必要とするため、単純なビット演算などが中心の共通鍵暗号と比較して、処理速度は数百倍〜千倍程度遅くなるのが一般的です。

他の選択肢はなぜ不正解?
  • ア・ウ・エ:仕組みの複雑さが全く異なるため、一般的に共通鍵暗号の方がはるかに高速です。

Q10. 実際のインターネット通信(SSL/TLSなど)では、公開鍵暗号と共通鍵暗号を組み合わせた「ハイブリッド暗号方式」が用いられることが多い。この方式において、公開鍵暗号は主にどのような目的で使われるか。

正解:ウ

解説:
「遅いが鍵配送ができる公開鍵暗号」で、データ暗号化用の「速い共通鍵」を包んで送る。これがハイブリッド暗号の核心であり、公開鍵暗号の主要な役割です。

他の選択肢はなぜ不正解?
  • ア:全データの暗号化には、高速な共通鍵暗号が使われます。
  • イ:ハッシュ計算にはハッシュ関数(SHA-256など)が使われます。
  • エ:デジタル署名にも使われますが、「それだけ」ではありません。共通鍵の配送(鍵交換)も重要な役割です。

まとめ

今日は、少し難解な「公開鍵暗号方式」の数学的仕組みについて、イメージ中心に解説しました。

  • 公開鍵暗号の基本: 「暗号化する公開鍵」と「復号する秘密鍵」のペアを使う。これで鍵配送問題を解決した。
  • RSA暗号: 「巨大な数の素因数分解は困難である」という性質を利用。歴史があるが、鍵が長くなりがち。
  • ECC(楕円曲線暗号): 「グラフ上の点の移動回数を逆算するのは困難(離散対数問題)」という性質を利用。短くて強い、現代の主流。

ここまで、共通鍵と公開鍵、2つの暗号方式を学んできました。

「共通鍵は速いけど、鍵を渡せない(鍵配送問題)」

「公開鍵は鍵を渡せるけど、処理が遅い」

それぞれの長所と短所が見えてきたと思います。

では、実際のインターネット通信(SSL/TLSなど)では、どうしているのでしょうか?実は、「共通鍵の速さ」と「公開鍵の便利さ」をいいとこ取りした方法を使っているのです。

次回は、その巧妙な仕組みである「ハイブリッド暗号方式」について解説します。ここまでの知識がパズルのように組み合わさる、暗号技術のクライマックスです。どうぞお楽しみに!

-暗号技術の基礎