CA5350:脆弱な暗号アルゴリズムを使用しないでください
プロパティ | 値 |
---|---|
ルール ID | CA5350 |
Title | 脆弱な暗号アルゴリズムを使用しないでください |
[カテゴリ] | Security |
修正が中断か中断なしであるか | なし |
.NET 8 では既定で有効 | いいえ |
Note
この警告の最終更新は 2015 年 11 月です。
原因
TripleDES などの暗号化アルゴリズムと SHA1 や RIPEMD160 などのハッシュ アルゴリズムは脆弱であると見なされています。
これらの暗号化アルゴリズムは、最新の暗号化アルゴリズムほどにはセキュリティが保証されません。 暗号ハッシュ アルゴリズム SHA1 と RIPEMD160 は、最新のハッシュ アルゴリズムよりも耐衝突性が低くなります。 暗号化アルゴリズム TripleDES は、最新の暗号化アルゴリズムよりもセキュリティ ビットの数が少なくなっています。
規則の説明
現在、さまざまな理由で弱い暗号化アルゴリズムとハッシュ関数が使用されていますが、保護対象のデータの機密性を保証するためにこれらを使用しないでください。
この規則がトリガーされるのは、コードで 3DES、SHA1、RIPEMD160 のいずれかのアルゴリズムが検出され、ユーザーに警告がスローされるときです。
違反の修正方法
暗号強度の高いオプションを使用します。
TripleDES 暗号化の場合、 Aes 暗号化を使用します。
SHA1 または RIPEMD160 のハッシュ関数の場合、SHA-2 ファミリのいずれか (SHA512、SHA384、SHA256など) を使用します。
どのようなときに警告を抑制するか
データに必要な保護レベルがセキュリティ保証を必要としない場合には、この規則による警告を抑制してください。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
疑似コードの例
この記事の執筆時点では、次の擬似コード サンプルはこの規則によって検出されたパターンを示しています。
SHA-1 ハッシュ違反
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
解決方法:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RIPEMD160 ハッシュ違反
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
解決方法:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
TripleDES 暗号化違反
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
解決方法:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
.NET