マニアック深掘りゾーン

🔐RSA暗号の仕組みと計算を完全解説|具体例で学ぶ公開鍵暗号

もふねこ

もふねこだよ🐾 この記事は『暗号の基礎』から一歩踏み込んだ、数学が好きな人向けの深掘り記事だよ!

あなたが毎日使っているネット銀行やLINEの安全性も、実はこれから学ぶ数学の延長線上にあるんだ。
「暗号化って裏でどんな計算をしてるの?」「公開鍵と秘密鍵ってどうやって作られるの?」──今日は、現代社会を守るRSA暗号の仕組みを、実際の数字を使って一緒に計算してみよう!

📝 この記事の目次

📖

読む前にチェック!もふねこ辞書

この記事は「数字の計算」がメインだよ!基本的な用語の意味を忘れちゃったら、別のタブで辞書を開きながら読んでみてね🐾

🔓 公開鍵(パブリックキー)
南京錠のように、誰でも「暗号化(箱を閉める)」できる鍵。
🔐 秘密鍵(プライベートキー)
自分だけが持つ、箱を「復号(開ける)」できる専用の鍵。
🧮 RSA暗号
素因数分解の難しさを利用した、現代のネットを支える暗号方式。
もふねこ
もふねこ

ここから先は「数字」が主役!アルファベットの文字も、コンピュータの中ではすべて数字に変換されて計算されるんだよ。

RSA暗号の鍵が、裏側でどんな「数字のペア」になっているのか、具体的な計算で確かめてみよう🐾

📌 もふねこメモ:RSAの鍵は「2つの数の組」
厳密には、RSAの鍵は「1つの数」ではなく2つの数のペアです。
公開鍵 = (E, N):暗号化の指数 E と法 N のセット
秘密鍵 = (D, N):復号の指数 D と法 N のセット
E だけでも D だけでも意味をなさず、N と組み合わせて初めて使える鍵になります🐾

RSA暗号の全体プロセス(鍵生成〜暗号化〜復号)

RSA暗号の全体プロセス(鍵生成・暗号化・復号の流れ)を図解したもふねこのイラスト

🔧 1. 鍵の生成

まず目標を確認しましょう。私たちは「誰でも閉められる箱(公開鍵:E)」と「自分しか開けられない鍵(秘密鍵:D)」という、絶対に離れないペアを探し出す必要があります。
そのための手順がこちらです。

  1. ランダムな2つの異なる大きな素数(p, q)を選ぶ
  2. 掛け算して N = p × q を作る(これが暗号のベース「法」になります)
  3. 秘密のペア(EとD)を計算するための「内緒の設計図(L)」を作る
     計算式:L = (p−1)(q−1)
     ※数学用語ではトーシェント関数と呼びますが、ここでは単なる「秘密の補助計算」だと思って大丈夫です。
  4. L と相性の良い数 E(暗号化用の数字) を適当に選ぶ
  5. 内緒の設計図(L)を使って、E とペアになる D(復号用の数字) を逆算する
     ※ E × D ≡ 1 (mod L) という数式を使いますが、パソコンが自動計算してくれます。
     これで鍵ペアの完成です!
     ・公開鍵 = (E, N)(みんなに配る箱)
     ・秘密鍵 = (D, N)(自分だけが持つ鍵)

📬 2. 暗号化の式

C = PE mod N
P
平文(Plaintext):暗号化する前の元のメッセージ
E
公開鍵の指数(Encryption key):みんなに配る暗号化用の数字
N
法(Modulo):pとqを掛けた大きな数字。時計の文字盤のようなもの
C
暗号文(Ciphertext):計算結果としてできあがった暗号

⚠️ 重要ルール:「mod(モッド)」って何?
modとは「特殊な時計のルール」です。
例えば「mod 33」なら、「数字が33になったら0に戻る、33時間時計」だと考えてください。35なら、33を2つオーバーしているので「2」になります(35 mod 33 = 2)。
このルールのおかげで、どれだけ掛け算をしても数字がN(今回は33)より大きくなることはありません!🐾

🔓 3. 復号の式

P = CD mod N
C
暗号文(Ciphertext):受け取った暗号メッセージ
D
秘密鍵の指数(Decryption key):自分だけが知っている復号用の数字
N
法(Modulo):公開鍵と同じ数字
P
平文(Plaintext):元通りになったメッセージ!
もふねこ
もふねこ

アルファベットの式だと、ちょっと難しそうに見えるよね?

でも大丈夫!次のセクションで、アリスとボブと一緒に実際の「数字」を当てはめて計算してみるよ。数字を入れるとパズルみたいにスッキリわかるからね🐾


具体例:アリスとボブのメッセージ交換

1. [受信者] ボブが鍵ペアを作る

  • 素数p=3, q=11 → N=33
  • E=3(公開鍵)
  • L=(3-1)(11-1)=20
  • D=7(秘密鍵。3×7≡1 mod 20。計算後、素数pとqは絶対に秘密にするか破棄する)

2. [送信者] アリスがボブの公開鍵で暗号化

試しに、秘密のメッセージ「2」を暗号化してみましょう👇
※RSAのルールで、暗号化する数字は必ず「N(今回は33)」より小さく設定する必要があります。

2^3 mod 33
= (2 × 2 × 2) mod 33
= 8 mod 33
= 8

→ メッセージ「2」が、暗号文「8」に変換されました!
これなら、ハッカーが通信を盗み見ても「8」としか認識できません。

3. [受信者] ボブが自分の秘密鍵で復号

ボブは受け取った暗号文「8」を、自分だけが知っている秘密鍵(D=7)で復号します。

8^7 mod 33
= 2097152 mod 33
= 2

→ 見事、元のメッセージ「2」に戻りました!
(※実際の通信では、いくつもの数字を同じように順番に計算していきます)

📌 もふねこメモ:実際の通信では「パディング」が必要!
今回計算した方法は「教科書的RSA」と呼ばれる基本の形だよ。でも、現実の通信でこのまま使うと、「同じメッセージを送ったら毎回同じ暗号文になってしまう」という弱点があるんだ。
だから実際は、暗号化する前にランダムなデータ(パディング)をメッセージに混ぜてから計算しているんだよ🐾

🚀 発展編:どうやって「巨大な数」を高速計算しているの?

実際のRSA暗号では、「100桁以上の数字」を何千回も掛け算します。普通に計算したらスーパーコンピュータでも何年もかかってしまいます。
これを一瞬で終わらせるための魔法のアルゴリズムが「バイナリ法(繰り返し二乗法)」です。興味がある方は、こちらの発展編も読んでみてください!

👉 RSA暗号の数値例でバイナリ法も体験する

💡 補足:RSA暗号の「限界」と未来

ここまでRSA暗号の素晴らしい仕組みを学んできましたが、実はRSA暗号にも「弱点」があります。それは計算に時間がかかる(重い)ということです。
そのため現在では、スマートフォンなどでもサクサク動く「ECC(楕円曲線暗号)」という、より計算が軽くて安全な次世代の方式が主流になりつつあります(ビットコイン等もECCの一種を使用しています)。
さらに将来的には「量子コンピュータ」によってRSA暗号が破られる可能性もあるため、世界中で新しい暗号への移行準備が進められています。

とはいえ、RSA暗号が「公開鍵暗号の歴史を切り開いた最強の基礎」であることは間違いありません。この基礎を知っているだけで、最新の暗号技術のニュースもずっと深く理解できるようになりますよ🐾


🔍まとめ:暗号化と復号のしくみがわかると安心できる!

📌 暗号化とは「隠す」ことで、復号とは「元に戻す」ことです
📌 RSAは「公開鍵で暗号化」「秘密鍵で復号」します
📌 計算の裏には、「mod」や「バイナリ法」などの数学的な工夫が詰まっています!

もふねこ
もふねこ

技術の裏にあるアイデアを知ると、暗号の世界がちょっと面白く感じるでしょ?

読者
読者

うん!仕組みがわかると安心してネットも使えるし、ちょっと賢くなれた気がする!

🧮 数学が好きなあなたへ

RSA暗号の基礎となる「素因数分解の困難性」や、現代暗号に欠かせない「乱数」「ハッシュ関数」についてもっと深く知りたい方は、こちらの記事もおすすめです!

👉 現代暗号を支える3つの応用数学 を読む
歴史×サイバーセキュリティ
💡 暗号を解き明かしたあなたへ!

解読不可能な現代の暗号で
「資産」を持つ体験を

RSAの「公開鍵暗号」の構造は、暗号資産ウォレットの設計にも共通しています(ビットコインはRSAではなくECDSA(secp256k1楕円曲線暗号)を使用)。
仕組みがわかったら、次は姉妹サイトで「実際のウォレットがどうやって資産を守っているのか」を学んでみましょう🐾