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:

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