💡 この記事の3秒まとめ(結論)
- かつての弱点:従来の暗号は「暗号化と復号の鍵が同じ」で、鍵を安全に渡す方法がないという致命的な問題があった。
- 公開鍵暗号の革命:「鍵をかける人」と「鍵を開ける人」が別々の鍵を使う画期的な仕組み。開いた南京錠をバラ撒くイメージ。
- RSA暗号の仕組み:「掛け算は簡単だけど、素因数分解はめちゃくちゃ難しい(卵かけご飯理論)」という数学の性質を利用している。
- 社会への影響:ネットショッピング(HTTPS)や仮想通貨(ウォレット)など、現代のデジタル社会の根幹となっている。
🧩 これまでの暗号の弱点「鍵の事前共有問題」
もふねこ、そもそも「公開鍵」ってどういう意味?普通、鍵って人に公開しちゃダメなんじゃないの?
すごく鋭い質問だね!実は、そこが歴史上最大のブレイクスルーだったんだ。従来の暗号の弱点を克服するために生まれたのが「公開鍵」の考え方なんだよ🐾
古代の「シーザー暗号」から第二次世界大戦の「エニグマ」まで、これまでの暗号(共通鍵暗号)には大きな致命的な弱点がありました。それは、「暗号化する鍵と、復号(開ける)する鍵が同じ」だということです。
例えば、遠くにいる友達に暗号文を送る時、「AをZに変換するルールだよ」という鍵そのものを、どうやって友達に安全に届けるのか?という矛盾(鍵配送問題)が常に付き纏っていました。
🤔 にわとりと卵の問題
「安全に通信するために鍵が必要」なのに、「その鍵を安全に渡すための通信手段がない」。たとえるなら「錠前を送るために、錠前が必要」という状態です。途中でスパイに鍵を盗まれたら、どんな強力な暗号も一瞬で解読されてしまいます。
実際、かつての軍や外交の世界では、暗号の鍵を紙に書いて専門の使者が物理的に運ぶ「外交封印袋(がいこうふういんぶくろ)」という方法を使っていました。しかし、世界中の見知らぬ人と一瞬で繋がるインターネットの時代に、こんな方法は不可能です。
| 比較軸 | 共通鍵暗号(AES等) | 公開鍵暗号(RSA等) |
|---|---|---|
| 鍵の数 | 1つ(送受信者共通) | 2つ(公開鍵+秘密鍵) |
| 処理速度 | ⚡ 高速 | 🐢 低速(AESの数百〜千倍遅い) |
| 鍵配送問題 | ❌ あり(事前共有が困難) | ✅ なし(公開鍵は誰でも受け取れる) |
| 主な用途 | データ本体の暗号化 | 鍵交換・デジタル署名 |
💡 実際のHTTPS通信(ハイブリッド暗号)では、公開鍵暗号で安全に「共通鍵の合意」を行い、データ本体は処理が速い共通鍵暗号(AES等)で暗号化します(※現代のTLS1.3ではRSAによる鍵渡しは廃止され、より安全な鍵交換アルゴリズムが使われています)。
🔸 1976年の奇跡:ディフィーとヘルマンの論文
1976年、スタンフォード大学のホイットフィールド・ディフィーとマーティン・ヘルマンは、「New Directions in Cryptography(暗号技術の新しい方向)」という論文を発表しました。彼らが提唱したのは、当時の暗号学者には「そんなことは不可能だ」と思われていたアイデアでした。
💡 革命的なアイデア
「暗号化に使う鍵(公開鍵)を公開し、復号に使う鍵(秘密鍵)だけを秘密にすれば、鍵の事前共有なしに安全な通信ができる」
鍵を公開していいなんて、それまでの常識では考えられないことでした。彼らが考案した「ディフィー・ヘルマン鍵交換(DH法)」は、「色の混合」に例えると直感的に理解できます。
🎨 色の混合で理解する「鍵の共有」
- アリスとボブは「共通の色(黄色)」を公開して合意する
- アリスは自分だけの秘密の色(赤)を持っている
- ボブは自分だけの秘密の色(青)を持っている
- アリスは「黄色+赤」を混ぜてボブに送る(赤単体は見えない)
- ボブは「黄色+青」を混ぜてアリスに送る(青単体は見えない)
- アリスは受け取った色にさらに自分の赤を混ぜる → 黄色+赤+青
- ボブは受け取った色にさらに自分の青を混ぜる → 黄色+赤+青(同じ色が完成!)
※盗聴者は「黄色+赤」と「黄色+青」しか見えないので、「黄色+赤+青」の完全な色はわかりません。
「開いた南京錠」を公開する!公開鍵暗号の直感的な仕組み
実は、この1976年の論文にはDH鍵交換とは別に、もう一つの革命的なアイデアが含まれていました。それが「公開鍵暗号」という概念です(※この論文は公開鍵暗号の概念を世界で初めて公開提唱したもので、翌1977年のRSA暗号がその概念を初めて実用実装しました)。「鍵交換」で共通鍵を作るDH法と異なり、公開鍵暗号は「暗号化する鍵(公開鍵)」と「復号する鍵(秘密鍵)」を最初から別々にする仕組みです。これをわかりやすくしたのが「開いた南京錠」のイメージです。
- 受信者(もふねこ)は、「パチンと閉めることは誰でもできるけど、開けるカギは自分しか持っていない『開いた状態の南京錠』」をたくさん用意し、世界中にバラ撒きます。(=これが公開鍵)
- 送信者(あなた)は、もふねこから拾った南京錠を使って、手紙を入れた箱をカチャッとロックします。(南京錠なので、一度閉めたらあなた自身でももう開けられません)
- 受信者(もふねこ)の元に箱が届きます。南京錠を開けるカギ(=秘密鍵)を持っているのは世界でもふねこただ一人なので、安全に手紙を読むことができます。
このように、「暗号化する鍵(公開)」と「復号する鍵(秘密)」を別々にすることで、そもそも鍵を安全に配送しなくて済むシステムが理論上完成したのです。
🔐 1977年:RSA暗号の誕生—数学が生み出す“一方通行”の盾
南京錠の例えはわかった!でも、デジタルの世界で「自分でも開けられない南京錠」ってどうやって作るの?
ディフィー・ヘルマン論文から1年後の1977年、MITの3人の研究者がこの魔法のような公開鍵暗号を実際にコンピューターのプログラムとして完成させました。彼らの頭文字を取ってRSA暗号と名付けられました。
🅡
Ron Rivest
暗号の数学的基盤を設計
🅢
Adi Shamir
Rivestと共に暗号方式のアイデアを多数考案・設計
🅐
Leonard Adleman
数論的な証明の検証・理論的裏付けと完成に貢献
卵かけご飯は、元の「卵」と「ご飯」に戻せない
RSA暗号の安全性の根本にあるのは、「巨大な素数同士の掛け算は一瞬でできるが、その答えを元の素数に分解(素因数分解)するのは、現在のスーパーコンピューターでも事実上不可能(宇宙の年齢・約138億年を超える時間がかかる)」という数学の一方通行性です。
例えば、「13 × 17」を計算するのは人間でも数秒で「221」とわかります。しかし、「221を素因数分解してください」と言われると、急に難しくなります。これが現在主流の2048bit(約617桁)以上の途方もない巨大な数になったら、最高のコンピューターを使っても宇宙の寿命以上の時間がかかると言われています。
これを料理で例えれば、「巨大な素数同士を掛け合わせて卵かけご飯(=公開鍵の素材)を作るのは一瞬だけど、完成した卵かけご飯から元の生卵と白ご飯に戻す(=素因数分解でハッキングする)のは不可能に近い」のと同じです。だから公開鍵を世界中にバラ撒いても、元の素数がバレず、秘密鍵も割り出せないのです。
素数の掛け算は「鍵を作る準備」で、実際の暗号化・復号はそれとは別の「べき乗計算」という数学で行うんだ。公開鍵で暗号化して、秘密鍵で復号する——この2つの鍵は数学的にペアになっているけど、秘密鍵を公開鍵から計算で割り出すのはほぼ不可能。これがRSAの魔法の真髄だよ🐾
RSA暗号では、2つの巨大な素数を掛け合わせた数 n を世界に公開します(これが公開鍵の一部)。秘密鍵は、その2つの素数を使って別途計算される特別な数値で、本人だけが持っています。素因数分解が極めて難しいため、n を公開しても元の2つの素数が割り出せず、秘密鍵も導き出せない——これがRSAの安全性の根拠です。
💻 【技術詳細】RSA推奨鍵長・アルゴリズムの現在地(クリックで展開)
- RSA推奨鍵長:NIST基準で現在は2048bit以上。4096bitがより長期安全。長いほど安全性が高まる一方、処理負荷も増加。
- ECC(楕円曲線暗号)の台頭:現在のTLS 1.3やモバイル通信ではRSAより短い鍵長で同等の安全性を実現できるECDH/ECDSAが主流化。
- 量子コンピュータの脅威:将来の大規模量子コンピュータは「ショアのアルゴリズム」で素因数分解を高速化できるため、NISTはRSA・ECCに代わる「耐量子計算機暗号(PQC)」への移行を推進中(NIST PQC標準化は2024年第1弾策定済み)。
📘 まとめ:公開鍵暗号がもたらした「社会の変革」
公開鍵暗号の発明は、単なる技術の進化を超えて、社会そのものを変えました。
- 🛒 インターネット通販の誕生:クレジットカード情報を安全に送れるようになり、EC市場が生まれた
- 🏦 ネットバンキング:自宅から安全に銀行取引ができるようになった
- 💬 エンドツーエンド暗号化:LINEやWhatsAppのメッセージが第三者に読めない仕組み
- 📧 デジタル署名・電子政府:なりすましを防ぎ、デジタル文書の真正性を保証
- ₿ ビットコイン・暗号資産:公開鍵から生成されたウォレットアドレスで資産を受け取り、秘密鍵が所有権の証明になる
※ビットコインはRSAではなく楕円曲線暗号(ECDSA)を採用していますが、「公開鍵と秘密鍵のペア」という仕組みは同じです
なるほど〜!数学の「逆算のしにくさ」をつかって、見えない南京錠を作っているんだね。昔のインターネットで安全に買い物ができなかった理由もよくわかった!
あなたがAmazonで買い物する時、LINEで友達にメッセージを送る時——その裏ではこの公開鍵暗号が一瞬で計算されて、あなたを守っているんだよ🐾
南京錠、色の混合、卵かけご飯。この3つのイメージで公開鍵暗号の全体像が見えたはず。次はこの知識を「自分で秘密鍵を持つ」という実際の体験に変えてみよう!
本サイトのRSA暗号の解説は、仕組みをわかりやすく理解するための「教育用(Textbook RSA)」として簡略化されています。
- 実際のシステムでは、十分な鍵長(RSA-2048以上など)が必要です。
- 解説されている純粋なRSA(パディングなし)のままでは、同じメッセージが常に同じ暗号文になるなどの脆弱性があります。実際の通信や開発では、必ずOAEPなどのパディング方式を適用した安全なライブラリを使用してください。