CA5401: Nepoužívejte CreateEncryptor s jiným než výchozím iv
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5401 |
Název | Nepoužívat CreateEncryptor s nevýchozím inicializačním vektorem |
Kategorie | Zabezpečení |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Používá se System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor s jiným než výchozím nastavením rgbIV
.
Popis pravidla
Symetrické šifrování by vždy mělo používat neopakovatelný inicializační vektor, aby se zabránilo útokům na slovník.
Toto pravidlo se podobá CA5402, ale analýza určuje, že inicializační vektor je rozhodně výchozí.
Jak opravit porušení
Použijte výchozí rgbIV
hodnotu, tj. použijte přetížení System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor , které nemá žádný parametr.
Kdy potlačit upozornění
Upozornění z tohoto pravidla je bezpečné potlačit, pokud:
- Parametr
rgbIV
byl vygenerován parametrem System.Security.Cryptography.SymmetricAlgorithm.GenerateIV. - Jste si jistí, že
rgbIV
je opravdu náhodná a neopakovatelná.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA5401
// The code that's violating the rule is on this line.
#pragma warning restore CA5401
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA5401.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(byte[] rgbIV)
{
AesCng aesCng = new AesCng();
aesCng.IV = rgbIV;
aesCng.CreateEncryptor();
}
}
Řešení
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
AesCng aesCng = new AesCng();
aesCng.CreateEncryptor();
}
}