0Pricing
Cryptology Academy · レッスン

RSA暗号化と復号の数学

モジュラーべき乗を使ってメッセージを暗号化・復号化します。

「RSA暗号化と復号の数学」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

RSA鍵を生成したので、次はそれを使います。暗号化も復号もモジュラーべき乗であり、計算は簡単ですが、秘密鍵なしで逆算することは現実的に困難です。

教科書的RSA暗号化

公開鍵(e, n)でメッセージM(整数)を暗号化します。 C = M^e mod n 例:M=42、e=17、n=3233 C = 42^17 mod 3233 Python: C = pow(42, 17, 3233) = 2557

教科書的RSA復号

秘密鍵(d, n)で暗号文Cを復号します。 M = C^d mod n C=2557、d=2753、n=3233 M = 2557^2753 mod 3233 Python: M = pow(2557, 2753, 3233) = 42 ✓

なぜ機能するのか:オイラーの定理

C^d mod n = (M^e)^d mod n = M^(ed) mod n。 ed ≡ 1 (mod φ(n))なので、M^(ed) = M^(1+k×φ(n)) = M × (M^φ(n))^k ≡ M × 1^k = Mとなります。

繰り返し二乗法

M^eを単純に計算すると、e回の乗算が必要になります。繰り返し二乗法を使うと、乗算の回数をO(log e)まで減らせます。 Pythonのpow(base, exp, mod)は、この方法を自動的に使用します。

メッセージサイズの制限

教科書的RSAではM < nでなければなりません。RSA-2048の場合、Mは最大256バイトです。これは短いAES鍵の暗号化には適していますが、大きなファイルを直接暗号化する用途には適していません。

教科書的RSAが安全でない理由

生のRSAには次の問題があります。 1. 同じMは常に同じCになる(決定的) 2. eが小さくMも小さい場合、C = M^eがそのまま成立する(法による剰余計算が行われない) 3. 乗法的である:Enc(M1)×Enc(M2) = Enc(M1×M2) パディング方式によって、これらの問題をすべて解決できます。

PythonでRSA暗号化(OAEP)

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes ciphertext = public_key.encrypt( b'Secret message', padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) )

PythonでRSA復号

plaintext = private_key.decrypt( ciphertext, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) print(plaintext) # b'Secret message'

RSA + AESのハイブリッドパターン

# Real-world pattern: aes_key = os.urandom(32) # Random 256-bit AES key encrypted_key = rsa_encrypt(aes_key, recipient_pub) # RSA ciphertext = aes_gcm_encrypt(aes_key, plaintext) # AES # Send: encrypted_key + ciphertext

RSAの性能値

RSA-2048の暗号化(公開鍵):約0.1ミリ秒。RSA-2048の復号(秘密鍵):約1ミリ秒。AES-256-GCM:約100 MB/秒。ハイブリッド暗号により、RSAの鍵交換速度とAESのデータ処理速度を組み合わせられます。

理解度チェック

e=3、n=33の教科書的RSAを使う場合、M=5の暗号化結果はいくつですか?

まとめ

RSAの暗号化と復号の数学が明確になりました。次は、実際の世界でRSAがHTTPS、SSH、コード署名をどのように保護しているかを見ていきます。

よくある質問

「RSA暗号化と復号の数学」レッスンは無料ですか?

はい。「RSA暗号化と復号の数学」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「RSA暗号化と復号の数学」で何を学びますか?

モジュラーべき乗を使ってメッセージを暗号化・復号化します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「RSA暗号化と復号の数学」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 公開鍵暗号の概念
  2. RSA鍵生成をステップごとに学ぶ
  3. RSA暗号化と復号の数学
  4. RSAの実世界での用途と鍵サイズ
← Cryptology Academyに戻る