CA5350: Nepoužívejte slabé kryptografické algoritmy

Vlastnost Hodnota
ID pravidla CA5350
Název Nepoužívejte slabé kryptografické algoritmy
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

Poznámka:

Toto upozornění bylo naposledy aktualizováno 2015.

Příčina

Šifrovací algoritmy, jako jsou algoritmy hash, jako TripleDESSHA1RIPEMD160 jsou a které jsou považovány za slabé.

Tyto kryptografické algoritmy neposkytují tolik zabezpečení jako modernější protějšky. Kryptografické hashovací algoritmy SHA1 a RIPEMD160 poskytují menší odolnost proti kolizi než modernější hashovací algoritmy. Šifrovací algoritmus TripleDES poskytuje méně bitů zabezpečení než modernější šifrovací algoritmy.

Popis pravidla

Slabé šifrovací algoritmy a hashovací funkce se dnes používají z mnoha důvodů, ale neměly by se používat k zajištění důvěrnosti dat, která chrání.

Pravidlo se aktivuje, když najde algoritmy 3DES, SHA1 nebo RIPEMD160 v kódu a uživateli vyvolá upozornění.

Jak opravit porušení

Používejte kryptograficky silnější možnosti:

  • Pro šifrování TripleDES použijte Aes šifrování.

  • Pro funkce hash SHA1 nebo RIPEMD160 použijte funkce v rodině SHA-2 (například SHA512, SHA384a SHA256).

Kdy potlačit upozornění

Potlačit upozornění z tohoto pravidla, pokud úroveň ochrany potřebná pro data nevyžaduje záruku zabezpečení.

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

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

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

Příklady pseudokódu

V době psaní tohoto článku znázorňuje následující vzor pseudokódu model zjištěný tímto pravidlem.

Porušení algoritmu hash SHA-1

using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();

Řešení:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

Porušení hodnot hash RIPEMD160

using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();

Řešení:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

Porušení šifrování TripleDES

using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
  ...
}

Řešení:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}