10. セキュリティに関する考慮事項
セキュリティに関する考慮事項は、本書の各所で扱われている。
主なセキュリティ上の要点
鍵長
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 節の議論を参照。