CA5402: Použijte CreateEncryptor s výchozím iv

Vlastnost Hodnota
ID pravidla CA5402
Název Použít CreateEncryptor s vý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 8 No

Příčina

Při rgbIV použití System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptormůžou být jiné než výchozí.

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á CA5401, ale analýza nedokáže určit, že inicializační vektor je rozhodně výchozí.

Jak opravit porušení

Použijte výchozí rgbIV hodnotu explicitně, 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:

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 CA5402
// The code that's violating the rule is on this line.
#pragma warning restore CA5402

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.CA5402.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Příklady pseudokódu

using System;
using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        Random r = new Random();

        if (r.Next(6) == 4)
        {
            aesCng.IV = rgbIV;
        }

        aesCng.CreateEncryptor();
    }
}

Řešení

using System.Security.Cryptography;

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