不適切なRSAパディング

C#での不適切なRSAパディング

説明

RSA暗号化のPKCS#1 v1.5パディングでは、復号エラーや処理時間からパディングの有効性を区別できると、パディングオラクル攻撃を受けるおそれがあります。パディングのないRSAは決定的で暗号文の改ざんに弱いため、代替手段にはなりません。

想定される影響

  • 暗号文の復号、メッセージの偽造、機密情報の漏えいといったリスクの増加。

対処方法

OAEPパディングを使用し、可能であれば RSAEncryptionPadding.OaepSHA256 以上の強度を持つ、サポートされている方式を選んでください。

例

変更前

csharp
return rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);

変更後

csharp
return rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA256);

解説:

  • 変更前: PKCS#1 v1.5の暗号文を処理する復号側でパディングエラーを区別できると、パディングオラクルになるおそれがあります。
  • 変更後: OAEPパディングを使用し、対応している場合は RSAEncryptionPadding.OaepSHA256 以上の方式を優先してください。

参考資料