10. Security Considerations (セキュリティに関する考慮事項)
本文書では、セキュリティに関する考慮事項を各所で議論しています。
主要なセキュリティポイント
鍵長
RSA鍵のセキュリティは、剰余のサイズに大きく依存します。推奨される最小鍵長:
- 2048ビット: 現在の最低推奨長
- 3072ビット: 高セキュリティアプリケーションに推奨
- 4096ビット: 長期鍵または極めて高いセキュリティ要件
スキームの選択
- RSAES-OAEP: 新しいアプリケーションの暗号化スキームは必須 (REQUIRED) でサポート
- RSASSA-PSS: 新しいアプリケーションに推奨 (RECOMMENDED) される署名スキーム
- PKCS1-v1_5: 互換性のためのみ保持、既知の弱点が存在
実装に関する注意事項
- 乱数生成: 暗号学的に安全な乱数生成器を使用する必要があります
- サイドチャネル攻撃: 実装はタイミング攻撃や電力解析を防ぐ必要があります
- エラー処理: 復号化および検証操作のエラーメッセージは統一し、情報漏洩を避ける必要があります
- パディングオラクル攻撃: 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の議論を参照してください。