CA5401: Nie używaj polecenia CreateEncryptor z inną niż domyślną IV

Właściwości Wartość
Identyfikator reguły CA5401
Stanowisko Nie używaj metody CreateEncryptor w wektorem inicjowania innym niż domyślny
Kategoria Bezpieczeństwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Używanie z System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor wartością inną niż domyślna rgbIV.

Opis reguły

Szyfrowanie symetryczne powinno zawsze używać nie powtarzalnego wektora inicjalizacji, aby zapobiec atakom słownikowym.

Ta reguła jest podobna do CA5402, ale analiza określa, że wektor inicjowania jest zdecydowanie domyślny.

Jak naprawić naruszenia

Użyj wartości domyślnej rgbIV , czyli użyj przeciążenia System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor , które nie ma żadnego parametru.

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły, jeśli:

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA5401
// The code that's violating the rule is on this line.
#pragma warning restore CA5401

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA5401.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykłady przykładów kodu przykładowego

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        aesCng.IV = rgbIV;
        aesCng.CreateEncryptor();
    }
}

Rozwiązanie

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod()
    {
        AesCng aesCng  = new AesCng();
        aesCng.CreateEncryptor();
    }
}