🔐暗号化・復号の基本と例|仕組みと計算のやさしい解説

もふねこ

もふねこだよ🐾 今回のテーマは「🔐暗号化・復号の基本と例|仕組みと計算のやさしい解説」について!

少し難しいかもしれないけど、ボクと一緒にゆっくり読み解いていこうね!

はじめに:暗号化と復号ってなんのこと?

もふねこ
もふねこ

暗号って、安全な通信のために使われてるよね。でも、"暗号化"と"復号"の違い、説明できる?

読者
読者

えっ…たしか、暗号化は情報を隠すことで、復号は戻すってこと…?

その通り!
でも、実際には「どうやって」「どんな鍵を使って」「どんな計算をして」いるのか、知らないとピンとこない人も多いはず。

そこで今回は、
✅ 暗号化と復号の基本的な違い
✅ RSA暗号を例にした計算の流れ
✅ 実際にどのように鍵を作って使うのか
✅ バイナリ法による計算の効率化
について、やさしく解説していきます!


暗号化と復号の基本

● 暗号化とは?

誰かに秘密のメッセージを送るとき、そのまま送ると盗み見られる危険があります。
そこで、第三者に読まれないように情報を変換するのが「暗号化」です。

● 復号とは?

受け取った人が、暗号化された情報を元の内容に戻すことが「復号」です。
復号できるのは、特定の鍵(秘密鍵)を持っている人だけです。


鍵のしくみ:公開鍵と秘密鍵の関係

もふねこ
もふねこ

RSA暗号では、“ペアの鍵”を使うんだよ!

読者
読者

ペア?ひとつの鍵じゃないの?

RSAでは以下の2つの鍵を使います👇

  • 🔓 公開鍵(みんなに配る):暗号化に使用
  • 🔐 秘密鍵(自分だけが持つ):復号に使用

公開鍵で暗号化したメッセージは、そのペアの秘密鍵でしか復号できません

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

RSA暗号の基本プロセスを図解!

🔧 鍵の生成

  1. ランダムな2つの大きな素数(p, q)を選ぶ
  2. それを掛け算して N = p × q を作る(これが鍵のベース)
  3. オイラーのトーシェント関数(φ関数) L = (p−1)(q−1) を計算
    ※「φ(N)」とも書く。Nを割り切れない、1以上N未満の整数の個数を表す関数。RSAではその性質を利用して秘密鍵を導出する。
  4. L と互いに素な数 E を選ぶ(例:65537)
  5. E × D ≡ 1 (mod L) を満たすように D を計算 → 鍵ペアの完成!
     ・公開鍵 = (E, N)(みんなに配る)
     ・秘密鍵 = (D, N)(自分だけが持つ)
     ※計算に使った p・q は、D が完成したら絶対に秘密にするか破棄する

📬 暗号化の式

C = P^E mod N
  • P:平文(Plaintext)
  • E:公開鍵の指数
  • N:公開鍵のモジュロ(p×q)
  • C:暗号文(Ciphertext)

🔓 復号の式

P = C^D mod N
  • D:秘密鍵の指数
  • C:暗号文
  • N:同じくp×qのモジュロ

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

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, 9, 17, 31」を暗号化するよ👇

2^3 mod 33 = 8  
9^3 mod 33 = 3
17^3 mod 33 = 29
31^3 mod 33 = 25

→ 暗号文は【8, 3, 29, 25】

3. ボブが復号

8^7 mod 33 = 2  
3^7 mod 33 = 9
29^7 mod 33 = 17
25^7 mod 33 = 31

元のメッセージ【2, 9, 17, 31】に戻った!


バイナリ法で高速化!

もふねこ
もふねこ

でもさ、大きな数のべき乗って、計算にすっごく時間がかかるよね…

読者
読者

たしかに、100桁とか…ムリムリ!

そこで登場するのがバイナリ法(繰り返し二乗法:指数演算の効率化アルゴリズム)です。

✅ バイナリ法の仕組み

  1. 指数を2進数に変換する(例:13→1101)
  2. ビットごとに処理を分ける
     - 「0」なら2乗だけ
     - 「1」なら2乗+元の数を掛ける
  3. 途中で毎回「mod N」を取って、数を小さく保つ!

これで大きな数でもサクサク計算できるようになるんです✨


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

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

もふねこ
もふねこ

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

読者
読者

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

🔙 暗号の基礎 へ戻る