Cryptology Academy · レッスン

RSA鍵生成をステップごとに学ぶ

p、q、n、e、dを生成し、それぞれのパラメーターの役割を理解します。

レッスン 2/413 ステップ

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

ようこそ

このレッスンでは、素数の選択から鍵パラメータの決定まで、すべての数学的な手順に従いながらRSA鍵ペアをゼロから生成します。

手順1:2つの大きな素数を選ぶ

大きなランダム素数pとqを選びます。実運用では、2048ビットRSAの場合、p,q ≥ 2^1023とします。説明用には、p=61、q=53を使用します。

手順2:法を計算する

n = p × q = 61 × 53 = 3233。 法nは公開コンポーネントです。RSA-2048ではn ≈ 2^2048となります。nの素因数分解は、大きな値では計算量的に実行困難です。

手順3:オイラーのトーシェント関数を計算する

φ(n) = (p-1)(q-1) = 60 × 52 = 3120。 これは鍵生成後も秘密にします。素因数分解の情報と組み合わせることで、秘密鍵を計算できるためです。

手順4:公開指数eを選ぶ

1 < e < φ(n)かつGCD(e, φ(n)) = 1となるようにeを選びます。 標準的な選択はe = 65537(0x10001)です。これは素数で、ハミング重みが小さく(暗号化が高速)、広くサポートされています。

手順5:秘密指数dを計算する

d = e^(-1) mod φ(n):e×d ≡ 1 (mod 3120)となるdを求めます。 e=17、φ=3120の場合、d=2753です(確認:17×2753 = 46801 = 15×3120 + 1 ✓)。 Python: d = pow(e, -1, phi_n)

鍵ペア

公開鍵: (e=17, n=3233) — 共有可能 秘密鍵:(d=2753, n=3233) — 秘密 (e, n)は自由に共有できます。dは命がけで守るほど厳重に保護してください。鍵生成後は、p、q、φ(n)を決して公開してはいけません。

実運用での鍵長

RSA-1024:2010年以降は非推奨です。RSA-2048:推奨される最小値です。RSA-4096:高い安全性を提供しますが、4倍遅くなります。ほとんどのTLS証明書では、RSA-2048またはECDSA-256(同等の安全性で、はるかに高速)が使われています。

CRTによる最適化

中国剰余定理(CRT)により、RSAの復号を約4倍高速化できます。秘密鍵はdだけでなく、(p, q, dp, dq, qInv)として保存します。pを法とする計算とqを法とする計算を個別に行い、その後で結果を組み合わせます。

Pythonで鍵を生成する

from cryptography.hazmat.primitives.asymmetric import rsa private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048 ) public_key = private_key.public_key()

鍵をシリアライズする

from cryptography.hazmat.primitives import serialization pem = private_key.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.PKCS8, serialization.BestAvailableEncryption(b'passphrase') )

理解度チェック

p=7、q=11でRSA鍵を生成する場合、nの正しい値はいくつですか?

まとめ

これでRSA鍵をゼロから生成できるようになりました。次はモジュラーべき乗を使って、これらの鍵でメッセージを暗号化および復号します。
無料で開始

AI チューターと学ぶ Cryptology Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
67
レッスン
261

よくある質問

「RSA鍵生成をステップごとに学ぶ」レッスンは無料ですか?

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

「RSA鍵生成をステップごとに学ぶ」で何を学びますか?

p、q、n、e、dを生成し、それぞれのパラメーターの役割を理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「RSA鍵生成をステップごとに学ぶ」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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