RSA計算機 - 公開鍵暗号の暗号化・復号ツール

RSA鍵ペアを生成し、数値メッセージを暗号化・復号できます——公開鍵暗号と数論を学ぶための対話型ツールです。

2つの異なる素数(pとq)、公開指数(e)、任意の平文数値を入力して、RSAアルゴリズムで暗号化と復号を行います。

RSA計算機 - 公開鍵暗号の暗号化・復号ツール
RSA鍵ペアを生成し、数値メッセージを暗号化・復号できます——公開鍵暗号と数論を学ぶための対話型ツールです。

RSA計算機について

RSA(Rivest–Shamir–Adleman)は、世界で最も広く使われている公開鍵暗号方式です。HTTPS、メール暗号化、デジタル署名、安全なソフトウェア配布を支えています。RSAを理解するには、素因数分解、剰余演算、オイラーのトーシェント関数という3つの数論概念に慣れる必要があります。この計算機は、それらを対話的かつ具体的に体験できるようにします。 RSAの鍵生成は、2つの異なる大きな素数pとqを選ぶところから始まります。学習目的のため、このツールでは小さな素数を扱いますが、実際のRSA実装では数千桁の素数が使われます。法nはn = p × qとして計算されます。次に、オイラーのトーシェントφ(n) = (p − 1)(q − 1)を計算します。公開指数eは1 < e < φ(n)かつgcd(e, φ(n)) = 1を満たすように選ぶ必要があります。よく使われる値は3、17、65,537(フェルマー素数)で、65,537はほぼすべての本番システムで使われています。秘密指数dは、φ(n)を法とするeの乗法逆元であり、拡張ユークリッド互除法により d ≡ e⁻¹ (mod φ(n)) として求められます。 暗号化は公開鍵(e, n)で行います。暗号文C = Mᵉ mod nで、Mは平文整数です。復号は秘密鍵(d, n)を使い、平文M = Cᵈ mod nです。RSAの安全性は、大きなnをその素因数pとqに分解することが実用上不可能である点に依存しています。この問題に対する古典的な多項式時間アルゴリズムは知られていません。 このRSA計算機は学習用であり、本番のセキュリティ用途向けではありません。JavaScript BigIntを使って正確な整数演算を行うため、ブラウザが扱える任意の素数入力に対して数学的に正しい結果を返します。ただし、現実の安全なシステムには少なくとも2,048ビットの素数、適切なパディング方式(OAEP)、暗号学的に安全な乱数生成器が必要です。この教育用ツールはそれらを提供しません。 この計算機の一般的な用途には、暗号と数論に関するコンピューターサイエンスの課題、RSA鍵生成の手計算の確認、eの小さな変更やpとqの選択が秘密鍵dにどう影響するかの探索、そしてnの因数分解がRSAの安全性の中核にある難問である理由の直感的理解が含まれます。 計算機を使うには、pとqに任意の2つの異なる素数を入力し、φ(n)と互いに素な公開指数eを選び、必要に応じてnより小さい数値メッセージを入力して、生成をクリックします。ツールはn、φ(n)、d、暗号化値と復号値を即座に表示するため、復号が元のメッセージを復元することを確認できます。

RSA計算機の例

小さな素数を使った鍵生成とメッセージ暗号化の3つの実例です。

入力(p, q, e, M)主な結果注記
p=61, q=53, e=17, M=65n=3233, φ=3120, d=2753, C=2790, M′=65古典的な教科書例です。n=3233、φ(n)=3120。d=17⁻¹ mod 3120 = 2753。65を暗号化: 65¹⁷ mod 3233 = 2790。復号: 2790²⁷⁵³ mod 3233 = 65 ✓
p=7, q=11, e=13, M=5n=77, φ=60, d=37, C=26, M′=5手計算で確認しやすい小さな素数です。φ(77)=60、gcd(13,60)=1 ✓。d=13⁻¹ mod 60=37。5を暗号化: 5¹³ mod 77=26。26³⁷ mod 77=5を復号 ✓
p=17, q=19, e=5, M=88n=323, φ=288, d=173, C=200, M′=88中程度の例です。φ(323)=288、gcd(5,288)=1 ✓。d=5⁻¹ mod 288=173。88を暗号化: 88⁵ mod 323=200。200¹⁷³ mod 323=88を復号 ✓

RSA計算機の使い方

  1. 「素数 p」と「素数 q」の欄に、2つの異なる素数を入力します。まずは61と53のようなよく知られた小さな素数で、古典的な例を確認してみましょう。
  2. 1より大きく、φ(n) = (p−1)(q−1)より小さく、φ(n)と互いに素な公開指数eを入力します。一般的な選択肢は3、17、65537です。
  3. 必要に応じて、n(p × q)より小さい数値の平文メッセージMをメッセージ欄に入力します。
  4. 「鍵を生成して暗号化」をクリックします。計算機は法n、トーシェントφ(n)、秘密鍵d、そしてメッセージを入力した場合は暗号文Cと復号されたM′を表示します。
  5. 復号された値M′が元のメッセージMと一致することを確認し、RSAの往復処理が正しく機能していることを検証します。

RSA計算機FAQ

RSAにおけるp、q、n、e、dとは何ですか?
pとqは選択する2つの異なる素数です。n = p × qは公開される法です。eは公開指数で、公開されます。dは秘密指数で、秘密に保ちます。(e, n)の組が公開鍵、(d, n)の組が秘密鍵です。誰でも(e, n)を使ってメッセージを暗号化できますが、復号できるのはdの保持者だけです。
なぜeはφ(n)と互いに素でなければならないのですか?
秘密鍵dは、φ(n)を法とするeのモジュラ逆元です。モジュラ逆元はgcd(e, φ(n)) = 1、つまり共通因子を持たない場合にのみ存在します。eがφ(n)と因子を共有していると、有効なdが存在せず、RSA鍵生成は失敗します。
なぜメッセージMはnより小さくなければならないのですか?
RSA暗号化はMᵉ mod nです。M ≥ nの場合、剰余への還元によって情報が失われます。異なる2つのメッセージが同じ暗号文を生む可能性があり、復号が曖昧になります。実際のRSA実装では、OAEPでメッセージをパディングし、この制約が常に満たされるようにします。
このRSA計算機は実用途で安全ですか?
いいえ。このツールは教育目的のみです。本番のRSAでは、少なくとも2,048ビット(約617桁の10進数)の素数、暗号学的に安全なランダム素数生成、OAEPのようなパディング方式が必要です。小さな素数は簡単に因数分解できるため、実データの保護には決して使うべきではありません。
オイラーのトーシェントφ(n)とは何ですか?
オイラーのトーシェント関数φ(n)は、1からnまでの整数のうちnと互いに素なものの数を数えます。n = p × qでpとqが異なる素数の場合、φ(n) = (p − 1)(q − 1)です。この値は、鍵の関係 d ≡ e⁻¹ (mod φ(n)) が成り立つ群を定義するため、RSAの中心的な役割を担います。
RSAの復号は秘密鍵が機能することをどのように示しますか?
オイラーの定理により、nと互いに素な任意のMについてM^φ(n) ≡ 1 (mod n)です。e × d ≡ 1 (mod φ(n))なので、(Mᵉ)ᵈ = M^(ed) = M^(1 + k·φ(n)) = M × (M^φ(n))^k ≡ M × 1^k = M (mod n)となります。したがってM < nである限り、復号は常に元のメッセージを復元します。