Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA5351 |
| Název | Nepoužívejte poškozené kryptografické algoritmy |
| Kategorie | Zabezpečení |
| Oprava, která může být destruktivní nebo nedestruktivní | Nezlomitelný |
| Povoleno ve výchozím nastavení v .NET 10 | Ne |
| Příslušné jazyky | C# a Visual Basic |
Poznámka:
Toto upozornění bylo naposledy aktualizováno v listopadu 2015.
Příčina
Hashovací funkce, jako je MD5, a šifrovací algoritmy, jako jsou DES a RC2, mohou představovat 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 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 kolizí 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í zranitelnost bude lišit podle 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 dvě samostatné části dat, aby neškodná data mohla být nahrazena škodlivými daty, aniž by došlo ke změně hodnoty hash nebo k zneplatnění přidruženého digitálního podpisu.
Pro šifrovací algoritmy:
DES šifrování má malou velikost klíče, kterou lze prolomit 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())
{
...
}