2026.03.26 🔐 技術解説

RSA暗号を手計算で体験!
小さな数字で暗号化・復号の全工程を解説

📌 この記事でわかること
もふねこ

「RSA暗号って難しそう…」と思っているかもしれないけど、実は小学校レベルの計算だけで体験できるんだよ🐾
今日はN=15という超シンプルな例を使って、暗号化から復号まで全部手計算でやってみよう!

1. RSA暗号とはなにか?

RSA暗号は1977年に開発された公開鍵暗号方式だよ。世界で最も広く使われてきた暗号で、インターネットのHTTPS通信(鍵マーク)にも使われているんだ。

RSAの安全性の根拠はシンプルだよ:

🧮

「大きな数を2つの素数に分解するのは、現実時間では不可能」
例えば「N = 143」を見ても、これが「11 × 13」だとすぐわかる人は少ないよね。これが何百桁になると、世界最速のコンピュータでも数万年かかるんだ。この「素因数分解の難しさ」を安全性の根拠にしているんだよ🐾

2. ステップ①:秘密鍵と公開鍵のペアを作る

今回使う超シンプルな例(大阪大学 三浦研究室の講義演習より):

STEP 1-1 ── 2つの素数 p、q を選ぶ
p = 3,   q = 5

「素数」とは、1と自分自身でしか割り切れない数のことだよ。3も5も素数だよ🐾

STEP 1-2 ── N(法・モジュラス)を計算する
N = p × q = 3 × 5 = 15

この N = 15 が公開される数字だよ。でも「15 = 3 × 5」と分かっている人は今だけ!実際のRSAは何百桁もあるから逆算は不可能なんだ。

STEP 1-3 ── L(最小公倍数)を計算する
L = lcm(p-1, q-1) = lcm(2, 4) = 4

「lcm」は最小公倍数のことだよ。2と4の最小公倍数は4だね。

STEP 1-4 ── 公開鍵 E を選ぶ
E = 3 (公開鍵)

L(=4)と「互いに素」な数を選ぶんだ(共通の約数が1のみ)。3と4の最大公約数は1なので OK。E は公開していい数字だよ。

STEP 1-5 ── 秘密鍵 D を計算する
E × D mod L = 1 を満たす D を求める
3 × D mod 4 = 1 → D = 11(秘密鍵)

確認:3 × 11 = 33。33 ÷ 4 = 8 余り 1。✅ OK!
D = 11 は絶対に秘密にしておく数字だよ🐾

🗝️ 生成されたキーペア
項目公開?
N(法)15✅ 公開
E(公開鍵)3✅ 公開
D(秘密鍵)11🔴 秘密
p, q(素因数)3, 5🔴 秘密(捨てる)

3. ステップ②:暗号化してみよう

平文(送りたいメッセージ)を M = 7 としよう。

本来は「A=1、B=2...」のような文字コード変換をして数字にするんだけど、今回はシンプルにM=7で試すよ。

暗号化:M を公開鍵 E で冪乗して N で割った余りを求める
C = ME mod N = 73 mod 15

73 = 7 × 7 × 7 = 343
343 ÷ 15 = 22 余り 13

→ 暗号文 C = 13

「7」というメッセージが、「13」という暗号文に変換されたよ!
これを受け取った人には、N=15とE=3(公開鍵)は知っていても、秘密鍵D=11がわからないと復号できないんだ。

4. ステップ③:復号してみよう

受け取った暗号文 C = 13 を、秘密鍵 D = 11 で復号するよ。

復号:暗号文 C を秘密鍵 D で冪乗して N で割った余りを求める
M = CD mod N = 1311 mod 15

1311 = 1,792,160,394,037
1,792,160,394,037 ÷ 15 = 119,477,359,602 余り 7

→ 復号された平文 M = 7
もふねこ

7が13に暗号化され、13が7に戻ってきた!元のメッセージが正確に復元されたよ🐾
この「魔法」の理由は、オイラーの定理という数学的な証明にあるんだけど、今は「そういう仕組みになっている」と覚えておけば大丈夫だよ。

5. 全体の流れをまとめると

📝 N=15 の RSA 手計算まとめ
ステップ計算内容
素数選択p=3, q=5
N(法)p × q15
L(最小公倍数)lcm(2, 4)4
E(公開鍵)Lと互いに素な数3
D(秘密鍵)E × D mod L = 1 を満たす11
暗号化73 mod 1513
復号1311 mod 157 ✅

6. ビットコインの秘密鍵との違い

🔗 RSA暗号 vs ビットコインの秘密鍵

ビットコインはRSAではなく楕円曲線暗号(ECC/secp256k1)を使っているんだ。理由はシンプル——同じ安全レベルなら、ECCはRSAより約1/10の鍵長で済むから。

RSA では128bit相当の安全性に3,072bitの鍵が必要。ECCなら256bitで同等。スマホでビットコインを管理する場合、計算量が少なく端末への負荷が低いECCが最適なんだよ🐾

RSA暗号の手計算を体験したことで、「なぜ公開鍵から秘密鍵を逆算できないのか」が感覚でわかったんじゃないかな。N=15のような小さな数でさえ、1311という膨大な計算が必要だったよね。現実のRSAやECCは桁数が何百倍も大きいから、逆算は事実上不可能なんだよ🐾

📚 あわせて読みたい

🔑 公開鍵・秘密鍵・リカバリーフレーズとは?暗号資産の「三種の神器」を解説 ⚛️ 量子コンピュータが来たらビットコインは危ない?現状と対策を解説
← 技術と仕組みに戻る