CA5350: Använd inte svaga kryptografiska algoritmer
Property | Värde |
---|---|
Regel-ID | CA5350 |
Title | Använd inte svaga 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
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:
Använd kryptering för TripleDES-kryptering Aes .
För SHA1- eller RIPEMD160-hashfunktioner använder du dem i SHA-2-familjen (till exempel SHA512, SHA384och SHA256).
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())
{
...
}