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())
{
...
}