メインコンテンツまでスキップ

10. セキュリティに関する考慮事項

セキュリティに関する考慮事項は、本書の各所で扱われている。

主なセキュリティ上の要点

鍵長

RSA 鍵の安全性は、法の大きさに大きく依存する。推奨される最小鍵長は次のとおりである。

  • 2048 ビット: 現在推奨される最小長
  • 3072 ビット: 高い安全性が必要な用途で推奨
  • 4096 ビット: 長期鍵または非常に高いセキュリティ要件向け

方式の選択

  • RSAES-OAEP: 新しいアプリケーションがサポートしなければならない(REQUIRED)暗号化方式
  • RSASSA-PSS: 新しいアプリケーションでの使用が推奨される(RECOMMENDED)署名方式
  • PKCS1-v1_5: 互換性のためだけに残されており、既知の弱点がある

実装上の注意

  1. 乱数生成: 暗号学的に安全な乱数生成器を使用しなければならない。
  2. サイドチャネル攻撃: 実装はタイミング攻撃および電力解析を防止するべきである。
  3. エラー処理: 復号および検証操作のエラーメッセージは統一し、情報漏えいを避けるべきである。
  4. パディングオラクル攻撃: RSAES-PKCS1-v1_5 は Bleichenbacher 攻撃に対して脆弱であり、実装時には特に注意が必要である。

ハッシュ関数

  • 使用を避ける: MD5、SHA-1(破られている)
  • 推奨: SHA-256、SHA-384、SHA-512

鍵の使用

  • 単一目的: 1 つの RSA 鍵ペアは、暗号化または署名のいずれか 1 つの方式にのみ使用するべきであり、混用してはならない。
  • 鍵のローテーション: 鍵を定期的に交換する。
  • 秘密鍵の保護: 秘密鍵は暗号化して保管するべきであり、ハードウェアセキュリティモジュール(HSM)の使用はベストプラクティスである。

既知の攻撃と防御

  • 選択暗号文攻撃(Chosen Ciphertext Attack): RSAES-OAEP が防御を提供する。
  • 選択メッセージ攻撃(Chosen Message Attack): RSASSA-PSS が防御を提供する。
  • Bleichenbacher 攻撃: RSAES-PKCS1-v1_5 に影響する。
  • タイミング攻撃: 定数時間アルゴリズムおよび CRT 高速化を使用する場合は注意が必要である。

複数の方式で同じ鍵ペアを使用しないことについては、6 節の議論を参照。