🏗️ RSA暗号の構造と安全性:現実の使われ方・限界・正直な評価

もふねこ

もふねこだよ🐾 RSA暗号シリーズの締めくくり!今回は「現実世界でRSAがどう使われているか」と「正直な限界」を説明するね。

ウソなく・正確に・わかりやすく伝えるのがもふねこのモットーだよ🐾

📝 この記事の目次

✨ RSAは実は「遅い」暗号:ハイブリッド暗号とは

まず大事な事実をお伝えします。RSAは実際のWebサイト通信でデータの暗号化に直接使われることはほとんどありません。

理由はシンプルで、RSAは処理が遅いのです。大きな数の累乗計算を繰り返すRSAは、AESなどの対称暗号と比べて数百〜数千倍遅くなります。

では、RSAはどこで使われているのでしょうか?答えは「ハイブリッド暗号」の仕組みの中です。

🔄 ハイブリッド暗号の流れ(TLS 1.2以前の場合)

🖥️ クライアント
🖧 サーバー
AESセッション鍵を生成
RSAで暗号化
RSA秘密鍵で復号
AESで暗号化して通信
高速・安全
AESで暗号化して通信

💡 RSAは「AESの鍵を安全に渡す役」のみ担当。実データの暗号化はAESが高速に処理。

⚠️ TLS 1.3(2018年〜現在の標準)では異なります
TLS 1.3ではRSAによる鍵交換が廃止され、ECDHE(楕円曲線ディフィー・ヘルマン鍵交換)による前方秘匿性のある鍵共有が必須となっています。RSAはTLS 1.3でも「サーバー証明書の署名検証」には引き続き使われますが、セッション鍵の暗号化(鍵交換)には使われません。

読者
読者

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

もふねこ
もふねこ

逆に考えると天才的なんだよ!「RSAの安全性」と「AESの速さ」のいいとこどり。宅配ボックスに例えると「ボックスの鍵をRSAで安全に渡して、荷物はAESで守る」ようなイメージね🐾


🔸 RSAパディング:素朴なRSAの落とし穴

「素朴なRSA(教科書RSA)」には実は重大な脆弱性があります。同じ平文は必ず同じ暗号文になるため、攻撃者が特定のメッセージを推測できてしまいます(意味的安全性の欠如)。また、暗号文を巧みに細工して復号させる選択暗号文攻撃(CCA)にも脆弱です。

この問題を解決するのがパディングです。現在のRSAでは必ずパディングを使います:

  • OAEP(最適非対称暗号化パディング):暗号化前にランダムな値を混ぜます。現在の標準。PKCS#1 v2.0(RFC 2437)以降で規定。
  • PKCS#1 v1.5パディング:古い方式。一部のシステムで使われていますが、脆弱性(ROBOT攻撃など)が報告されており非推奨。
  • PSS(Probabilistic Signature Scheme / RSASSA-PSS):デジタル署名専用のパディング。現在の標準。

⚠️ 重要:パディングなしのRSAは絶対に使わない
教科書的な「素のRSA」は安全ではありません。必ずOAEP(暗号化用)またはPSS(署名用)のパディングを使った実装を選んでください。信頼できるライブラリ(OpenSSL等)を使えば自動でパディングが適用されます。


🔸 RSAのデジタル署名への応用

RSAは暗号化だけでなく、デジタル署名にも使われます。面白いことに、暗号化とは逆の方向で鍵を使います:

🔒 暗号化

公開鍵で暗号化 → 秘密鍵で復号
「誰でも入れるが、持ち主だけ開けられる」

✍️ デジタル署名

秘密鍵で署名 → 公開鍵で検証
「持ち主だけが署名でき、誰でも確認できる」

デジタル署名の具体的な流れ:送信者がメッセージのハッシュ値を自分の秘密鍵で署名 → 受信者が公開鍵で検証することで「このメッセージは確かに本人から来た」「改ざんされていない」を確認できます。

🔸 現在のRSAの正直な評価

評価項目 評価 コメント
現在の安全性(古典コンピュータ) ✅ 高い RSA-2048以上なら実用上安全
将来の安全性(量子コンピュータ) ⚠️ 疑問あり ショアのアルゴリズムで原理上解読可能
処理速度 ⚠️ 低い AESの数百〜千倍遅い
鍵サイズ ⚠️ 大きい 楕円曲線暗号(ECC)より鍵が大きい
実績・信頼性 ✅ 最高水準 1977年の発明から約50年(2026年現在)、世界中で検証済み

📌 まとめ

  • RSAはデータ暗号化に直接使うのではなく、AESの鍵を安全に渡す「ハイブリッド暗号」で使う(TLS 1.2以前の方式。TLS 1.3以降はECDHEに移行済み)
  • 「素のRSA」は危険。OAEPパディングとの組み合わせが現在の標準
  • 暗号化と逆方向(秘密鍵で署名・公開鍵で検証)でデジタル署名にも使用
  • 現在のスパコンに対しては十分安全。ただし量子コンピュータへの長期備えが必要
  • 代替として楕円曲線暗号(ECDSA)や耐量子暗号(格子ベース)への移行も進んでいる
もふねこ
もふねこ

RSAは決して万能じゃないし、遅いという弱点もある。でも、それを「ハイブリッド暗号」や「パディング」といった天才的な工夫でカバーして、現在のインターネットを支えているんだよ!
「仕組みと限界を正しく知った上で使いこなす」——これこそが、本物のITエンジニアの視点だね🐾

⚠️
セキュリティ上のご注意(Textbook RSAについて)
本サイトのRSA暗号の解説は、仕組みをわかりやすく理解するための「教育用(Textbook RSA)」として簡略化されています。
  • 実際のシステムでは、十分な鍵長(RSA-2048以上など)が必要です。
  • 解説されている純粋なRSA(パディングなし)のままでは、同じメッセージが常に同じ暗号文になるなどの脆弱性があります。実際の通信や開発では、必ずOAEPなどのパディング方式を適用した安全なライブラリを使用してください。

📚 RSAシリーズの他の記事も読んでみよう

📖
RSA暗号の入門
公開鍵・秘密鍵の基本概念
📐
RSAを手計算で理解する
p=3, q=5で鍵生成から復号まで
🔐
RSAプレイグラウンド
ブラウザで暗号化・復号を体験
🔢
RSAと素数の関係
なぜ素数が安全性の要なのか
歴史×サイバーセキュリティ
💡 暗号を解き明かしたあなたへ!

解読不可能な現代の暗号で
「資産」を持つ体験を

RSAなどの高度な暗号理論をここまで読み解けるあなたは、非常に高いITリテラシーを持っています。
実はビットコインなどの「暗号資産(仮想通貨)」も、「秘密鍵によるデジタル署名」の強度だけで数兆円の価値を守り抜いています(ビットコインはRSAではなくECDSA(secp256k1楕円曲線暗号)を使用)。

理論を知った今だからこそ、実際にウォレットを作成し、暗号技術が「お金」に変わる瞬間を体験してみませんか?