予測可能な乱数

C#の予測可能な乱数

説明

System.Random は予測可能なため、トークン、コード、セッション識別子、鍵、nonceなど、セキュリティ上重要な値には使用しないでください。

想定される影響

  • トークンの予測、認証の回避、セッション識別子の推測。

対処方法

セキュリティ上重要な値には、RandomNumberGenerator などの暗号学的に安全な乱数生成器を使用してください。

例

変更前

csharp
var token = new Random().Next();

変更後

csharp
var token = RandomNumberGenerator.GetBytes(32);

解説:

  • 変更前: System.Random は予測可能であり、トークン、セッション識別子、認証コード、鍵、nonce、パスワードなど、セキュリティ上重要な値には適していません。
  • 変更後: RandomNumberGenerator など、暗号学的に安全な乱数源を使用してください。

参考資料