Dela via


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:

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