RSA暗号とは
RSAは、1977年にRon Rivest、Adi Shamir、Leonard Adlemanによって発明された公開鍵暗号アルゴリズムです。名前は3人の発明者の頭文字に由来します。RSAは、大きな素数の積を因数分解することが計算上困難であるという数学的性質を安全性の根拠としています。
RSAは公開鍵と秘密鍵のペアを使用し、暗号化、デジタル署名、鍵交換など、現代のセキュリティインフラで広く使用されています。TLS/SSL、SSH、S/MIMEなど、多くのプロトコルがRSAを採用しています。
RSAの仕組み
RSAは以下の数学的原理に基づいています:
- 鍵生成:2つの大きな素数p, qを選び、n = p × qを計算
- 公開鍵:(e, n) - eは公開指数(通常65537)
- 秘密鍵:(d, n) - dは秘密指数
- 暗号化:c = m^e mod n
- 復号化:m = c^d mod n
AIエンジニアとしての実体験
AIエンジニアとして、RSAは主にサーバー間通信の認証や、機密データの暗号化に使用しています。特にSSH鍵やTLS証明書の管理において、RSAの理解は必須です。
# RSA鍵ペアの生成
openssl genrsa -out private.key 4096
# 公開鍵の抽出
openssl rsa -in private.key -pubout -out public.key
# RSAで暗号化
openssl rsautl -encrypt -inkey public.key -pubin -in plaintext.txt -out encrypted.bin
# RSAで復号化
openssl rsautl -decrypt -inkey private.key -in encrypted.bin -out decrypted.txt
RSAの鍵長と安全性
| 鍵長 | 安全性 | 推奨度 |
|---|---|---|
| 1024ビット | 危険(2010年以降非推奨) | ❌ 使用禁止 |
| 2048ビット | 2030年まで安全 | ⚠️ 最低限 |
| 3072ビット | 2030年以降も安全 | ✅ 推奨 |
| 4096ビット | 長期的に安全 | ✅ 最推奨 |
最新動向(2026年)
楕円曲線暗号への移行
RSAと比較して、楕円曲線暗号(ECC)は同等の安全性をより短い鍵長で実現できます。新規システムではECDSAやEd25519の採用が推奨されます。
量子コンピュータの脅威
量子コンピュータが実用化されると、ShorのアルゴリズムによりRSAは解読される可能性があります。NISTはポスト量子暗号の標準化を進めており、長期的な機密性が必要なデータには注意が必要です。
トラブル事例と対策
⚠️ 弱い鍵長の使用
症状:古いシステムで1024ビットRSAが使用されている
対策:2048ビット以上の鍵に更新。可能であればEd25519への移行を検討。
⚠️ RSAでの大量データ暗号化
症状:RSAで直接大量のデータを暗号化しようとする
対策:RSAは鍵交換や署名に使用し、データ暗号化にはAESを使用(ハイブリッド暗号)。
権威あるリソース
関連用語
📝 関連ブログ記事
よくある質問(FAQ)
Q. RSAとは何ですか?
RSAは1977年にRivest・Shamir・Adlemanが開発した公開鍵暗号アルゴリズムです。大きな数の素因数分解が計算困難であることを安全性の根拠とし、デジタル署名・鍵交換・暗号化に使われます。ただし現在は処理速度や鍵長の観点から、新規実装では楕円曲線暗号(ECC)が推奨されます。
Q. RSAの最小推奨鍵長は何ビットですか?
NIST(2022年)とBSI(ドイツ)の推奨では、2030年以降もRSA-3072以上を推奨しています。RSA-2048は2030年まで許容されますが、新規システムでは2048より長い鍵長またはECCへの移行が推奨されます。RSA-1024は既に危殆化しており使用禁止です。
Q. RSAとECCはどう違いますか?
RSAは素因数分解の困難性に基づき鍵長が長い(2048〜4096ビット)です。ECCは楕円曲線離散対数問題に基づき、256ビットのECC(P-256/Ed25519)でRSA-3072と同等のセキュリティを実現します。ECCはRSAより鍵生成・署名・検証が高速で、特にモバイル・IoT環境で有利です。
