✨ RSAは実は「遅い」暗号:ハイブリッド暗号とは
まず大事な事実をお伝えします。RSAは実際のWebサイト通信でデータの暗号化に直接使われることはほとんどありません。
理由はシンプルで、RSAは処理が遅いのです。大きな数の累乗計算を繰り返すRSAは、AESなどの対称暗号と比べて数百〜数千倍遅くなります。
では、RSAはどこで使われているのでしょうか?答えは「ハイブリッド暗号」の仕組みの中です。
🔄 ハイブリッド暗号の流れ(TLSの場合)
- クライアントがサーバーの公開鍵(RSA用)を受け取る
- クライアントがランダムなセッション鍵(AES用)を生成する
- そのセッション鍵をRSAで暗号化してサーバーに送る
- サーバーがRSAの秘密鍵でセッション鍵を復号する
- 以降の通信はAESで高速に暗号化される
💡 つまりRSAは「AESの鍵を安全に渡す」ためだけに使い、実際のデータ暗号化はAESが担当します。

二つの暗号を組み合わせるの?なんか複雑…

逆に考えると天才的なんだよ!「RSAの安全性」と「AESの速さ」のいいとこどり。宅配ボックスに例えると「ボックスの鍵をRSAで安全に渡して、荷物はAESで守る」ようなイメージね🐾
🔸 RSAパディング:素朴なRSAの落とし穴
「素朴なRSA(教科書RSA)」には実は重大な脆弱性があります。同じ平文は必ず同じ暗号文になるため、攻撃者が特定のメッセージを推測できてしまいます(選択平文攻撃)。
この問題を解決するのがパディングです。現在のRSAでは必ずパディングを使います:
- OAEP(最適非対称暗号化パディング):暗号化前にランダムな値を混ぜます。現在の標準。PKCS#1 v2.0(RFC 2437)以降で規定。
- PKCS#1 v1.5パディング:古い方式。一部のシステムで使われていますが、脆弱性(ROBOT攻撃など)が報告されており非推奨。
- PSS(確率的署名方式):電子署名専用のパディング。現在の標準。
⚠️ 重要:パディングなしのRSAは絶対に使わない
教科書的な「素のRSA」は安全ではありません。必ずOAEP(暗号化用)またはPSS(署名用)のパディングを使った実装を選んでください。信頼できるライブラリ(OpenSSL等)を使えば自動でパディングが適用されます。
🔸 RSAの電子署名への応用
RSAは暗号化だけでなく、電子署名にも使われます。面白いことに、暗号化とは逆の方向で鍵を使います:
🔒 暗号化
公開鍵で暗号化 → 秘密鍵で復号
「誰でも入れるが、持ち主だけ開けられる」
✍️ 電子署名
秘密鍵で署名 → 公開鍵で検証
「持ち主だけが署名でき、誰でも確認できる」
電子署名の具体的な流れ:送信者がメッセージのハッシュ値を自分の秘密鍵で署名 → 受信者が公開鍵で検証することで「このメッセージは確かに本人から来た」「改ざんされていない」を確認できます。
🔸 現在のRSAの正直な評価
| 評価項目 | 評価 | コメント |
|---|---|---|
| 現在の安全性(古典コンピュータ) | ✅ 高い | RSA-2048以上なら実用上安全 |
| 将来の安全性(量子コンピュータ) | ⚠️ 疑問あり | ショアのアルゴリズムで原理上解読可能 |
| 処理速度 | ⚠️ 低い | AESの数百〜千倍遅い |
| 鍵サイズ | ⚠️ 大きい | 楕円曲線暗号(ECC)より鍵が大きい |
| 実績・信頼性 | ✅ 最高水準 | 1977年の発明から約50年(2026年現在)、世界中で検証済み |
📌 まとめ
- RSAはデータ暗号化に直接使うのではなく、AESの鍵を安全に渡す「ハイブリッド暗号」で使う
- 「素のRSA」は危険。OAEPパディングとの組み合わせが現在の標準
- 暗号化と逆方向(秘密鍵で署名・公開鍵で検証)で電子署名にも使用
- 現在のスパコンに対しては十分安全。ただし量子コンピュータへの長期備えが必要
- 代替として楕円曲線暗号(ECDSA)や耐量子暗号(格子ベース)への移行も進んでいる

RSAは万能ではないけど、正しく使えば今も最も信頼できる公開鍵暗号の一つね。「限界を知ったうえで正しく使う」のが本物のセキュリティ知識だよ🐾 次はPGPと暗号の輸出規制の歴史についても見てみてね!