CA5351: Nepoužívejte poškozené kryptografické algoritmy
Vlastnost | Hodnota |
---|---|
ID pravidla | CA5351 |
Název | Nepoužívejte poškozené 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
Hashovací funkce, jako jsou algoritmy šifrování, jako MD5DESRC2 jsou a mohou vystavit významné riziko, a mohou vést k vystavení citlivých informací prostřednictvím triviálních technik útoku, jako jsou útoky hrubou silou a kolize hodnot hash.
Níže uvedený seznam kryptografických algoritmů podléhá známým kryptografickým útokům. Kryptografický hashovací algoritmus MD5 podléhá útokům na kolize hodnot hash. V závislosti na využití může kolize hash vést k zosobnění, manipulaci nebo jiným druhům útoků na systémy, které spoléhají na jedinečný kryptografický výstup funkce hash. Šifrovací algoritmy DES a RC2 podléhají kryptografickým útokům, které můžou vést k nezamýšlenému zpřístupnění šifrovaných dat.
Popis pravidla
Poškozené kryptografické algoritmy se nepovažují za bezpečné a jejich použití by se mělo odradit. Hashovací algoritmus MD5 je náchylný ke známým útokům na kolize, i když se konkrétní ohrožení zabezpečení bude lišit v závislosti na kontextu použití. Algoritmy hash používané k zajištění integrity dat (například podpisu souboru nebo digitálního certifikátu) jsou obzvláště zranitelné. V tomto kontextu by útočníci mohli vygenerovat dva samostatné části dat, aby neškodná data mohla být nahrazena škodlivými daty, aniž by změnili hodnotu hash nebo zneplatnění přidruženého digitálního podpisu.
Pro šifrovací algoritmy:
DES šifrování obsahuje malou velikost klíče, která může být vynucená hrubou silou za méně než den.
RC2 šifrování je náchylné k útoku souvisejícího klíče, kde útočník najde matematické vztahy mezi všemi hodnotami klíče.
Toto pravidlo se aktivuje, když najde některou z výše uvedených kryptografických funkcí ve zdrojovém kódu a uživateli vyvolá upozornění.
Jak opravit porušení
Používejte kryptograficky silnější možnosti:
Pro MD5 použijte hodnoty hash v rodině SHA-2 (například SHA512, , SHA384SHA256).
Pro DES a RC2 použijte Aes šifrování.
Kdy potlačit upozornění
Nepotlačujte upozornění z tohoto pravidla, pokud ho nezkontroloval kryptografický odborník.
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 CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
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.CA5351.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Následující ukázky pseudokódu ilustrují vzor zjištěný tímto pravidlem a možné alternativy.
Porušení hash MD5
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Řešení:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Porušení šifrování RC2
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Řešení:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
Porušení šifrování DES
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Řešení:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}