Share via


CA5350: Använd inte svaga kryptografiska algoritmer

Property Värde
Regel-ID CA5350
Rubrik Använd inte svaga kryptografiska algoritmer
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Kommentar

Varningen uppdaterades senast i november 2015.

Orsak

Krypteringsalgoritmer som TripleDES och hashningsalgoritmer som SHA1 och RIPEMD160 anses vara svaga.

Dessa kryptografiska algoritmer ger inte lika mycket säkerhetssäkerhet som modernare motsvarigheter. Kryptografiska hash-algoritmer och RIPEMD160 ger mindre kollisionsmotstånd SHA1 än modernare hash-algoritmer. Krypteringsalgoritmen TripleDES ger färre säkerhetsbitar än modernare krypteringsalgoritmer.

Regelbeskrivning

Svaga krypteringsalgoritmer och hashfunktioner används i dag av ett antal skäl, men de bör inte användas för att garantera konfidentialiteten för de data som de skyddar.

Regeln utlöses när den hittar 3DES-, SHA1- eller RIPEMD160-algoritmer i koden 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 en varning från den här regeln när den skyddsnivå som krävs för data inte kräver någon säkerhetsgaranti.

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 CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350

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.CA5350.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Exempel på pseudokod

När det här skrivs illustrerar följande pseudokodexempel det mönster som identifieras av den här regeln.

SHA-1-hashfel

using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();

Lösning:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

RIPEMD160 hash-överträdelse

using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();

Lösning:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

TripleDES-krypteringsöverträdelse

using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
  ...
}

Lösning:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}