🔐 RSA暗号のしくみ

3桁の素数を使って、暗号の魔法を体験しよう!

💡 RSA暗号とは?
素数の特性を生かした、「公開鍵」と「秘密鍵」という2つの鍵を使う暗号です。 南京錠(公開鍵)は誰でも使えるけど、開ける鍵(秘密鍵)は自分だけが持っています!
👨‍🏫RSA暗号の基本的な流れ
🔓
公開鍵
みんなに配る
📦
暗号化
メッセージを箱に入れる
🔑
秘密鍵
自分だけが持つ
モトさん
1 秘密の素数を選ぶ

3桁の素数を2つ選びます(秘密!)

素数1 (p): 101
素数2 (q): 103

この2つは絶対に秘密にします!

2 公開する数を作る

2つの素数をかけ算します:

101 × 103 = 10403
公開鍵 (n): 10403
暗号化指数 (e): 7

この数字はみんなに教えてOK

3 秘密鍵を持つ
秘密鍵 (d): 8743
※特別な計算で求めた魔法の数

この数字で暗号を解読できます!

カズさん
1 公開鍵を受け取る

モトさんの公開鍵をもらいます:

公開鍵 (n): 10403
暗号化指数 (e): 7
2 メッセージを暗号化

送りたい数字を暗号化します:

3 暗号文を送る

暗号化された数字をモトさんに送ります。

この数字は他の人が見ても、元の数字は分かりません!

📨 メッセージの復号化

モトさんが暗号文を受け取りました!

※ 暗号文はカズさんが送ったものを自動で受け取ります

🎯 なぜ安全なの?
10403という数字から元の素数(101と103)を見つけるのはとても難しい!
でも、最初から素数を知っているモトさんは簡単に暗号を解読できます。
⚠️ 実際のRSA暗号では、もっとずっと大きな素数(100桁以上!)を使います
🔒 なぜこれが安全につながるの?

間違った暗号文を送るとどうなる?

💡 安全性のポイント
1. たった1違うだけでも全然違う結果に!
  正しい:295 → 42 間違い:296 → 6923

2. 推測が不可能
  近い数字を試しても、正解に近づいているか分からない

3. 正確な暗号文を知らないと無意味
  悪い人が適当に数字を送っても、元のメッセージは得られない
🧮 暗号化と復号化の計算

暗号化の計算:

暗号文 = (メッセージ ^ e) mod n
例:42^7 mod 10403 = 295

復号化の計算:

元のメッセージ = (暗号文 ^ d) mod n
例:295^8743 mod 10403 = 42

魔法のように元の数字に戻ります!