CA5351 Använd inte brutna kryptografiska algoritmer
Property | Värde |
---|---|
Regel-ID | CA5351 |
Title | Använd inte brutna kryptografiska algoritmer |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Kommentar
Varningen uppdaterades senast i november 2015.
Orsak
Hashfunktioner som MD5 och krypteringsalgoritmer som DES och RC2 kan exponera betydande risker och kan leda till exponering av känslig information genom triviala attacktekniker, till exempel råstyrkeattacker och hashkollisioner.
Listan med kryptografiska algoritmer nedan är föremål för kända kryptografiska attacker. Den kryptografiska hash-algoritmen MD5 utsätts för hash-kollisionsattacker. Beroende på användningen kan en hash-kollision leda till personifiering, manipulering eller andra typer av attacker på system som förlitar sig på unika kryptografiska utdata från en hashfunktion. Krypteringsalgoritmerna DES och RC2 är föremål för kryptografiska attacker som kan leda till oavsiktligt avslöjande av krypterade data.
Regelbeskrivning
Brutna kryptografiska algoritmer anses inte vara säkra och bör inte användas. MD5-hashalgoritmen är känslig för kända kollisionsattacker, men den specifika sårbarheten varierar beroende på användningskontexten. Hash-algoritmer som används för att säkerställa dataintegritet (till exempel filsignatur eller digitalt certifikat) är särskilt sårbara. I det här sammanhanget kan angripare generera två separata datadelar, så att godartade data kan ersättas med skadliga data, utan att ändra hash-värdet eller ogiltigförklara en associerad digital signatur.
För krypteringsalgoritmer:
DES kryptering innehåller en liten nyckelstorlek, som kan vara brute-forcerad på mindre än en dag.
RC2 kryptering är känslig för en relaterad nyckelattack, där angriparen hittar matematiska relationer mellan alla nyckelvärden.
Den här regeln utlöses när den hittar någon av ovanstående kryptografiska funktioner i källkoden och utlöser en varning till användaren.
Så här åtgärdar du överträdelser
Använd kryptografiskt starkare alternativ:
För MD5 använder du hashvärden i SHA-2-familjen (till exempel SHA512, SHA384, SHA256).
För DES och RC2 använder du Aes kryptering.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln, såvida den inte har granskats av en kryptografisk expert.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Följande pseudokodexempel illustrerar det mönster som identifierats av den här regeln och möjliga alternativ.
MD5-hashfel
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Lösning:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RC2-krypteringsöverträdelse
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Lösning:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
BROTT MOT DES-kryptering
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Lösning:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}