RSA暗号のおもちゃ
2つの素数を選び、メッセージを入力して、RSAがそれを暗号化してから復号する様子を見てみよう。
インタラクティブシミュレーションを読み込んでいます...
モジュロ演算と素因数分解の複雑性 🖖
RSA暗号は、素因数分解の数学的非対称難読性に依存しています。オイラーのトーシェント関数 φ(n) = (p-1)(q-1) とモジュロ演算(c = m^e mod n)を用いて公開鍵と秘密鍵を生成します。復号には e * d ≡ 1 mod φ(n) を満たす秘密指数dが必要であり、nを素因数分解しない限りdを求めることは計算困難です。
あなただけが開けられる南京錠 🖖
RSAは誰にでも開いた南京錠(あなたの公開鍵)を渡し、メッセージに掛けて閉じることはできても、再び開けられるのはあなたの秘密鍵だけです。閉じる鍵と開ける鍵が違うので、公開鍵は世界中に見せて公開しても、復号の方法は明かされません。このツールでは小さな素数で一連の流れを丸ごと試せますが、実際のシステムは同じ手順を何百桁もの数で行います。
暗号化を逆に回すと署名になる 🖖
同じRSAの計算を逆方向に回すと、メッセージを隠す代わりに誰が送ったかを証明できます。あなたが秘密鍵でメッセージを「復号」すると、誰もが公開鍵でそれを「暗号化」し直して、本当にあなたから来たものかを確かめられます。これがデジタル署名です。つまり一つの計算が、どちらの鍵を先に使うかを入れ替えるだけで、機密性と認証の両方を支えているのです。
例題
- p=61, q=53 - p=61, q=53: 教科書でおなじみのRSA
- 非常に小さな素数 - p=7, q=11: 小さな素数で、計算の流れを追いやすい
- より大きな素数 - p=101, q=103: より大きな鍵空間
- 教科書の例 - p=17, q=19: 教科書の演習問題