CA5350: Använd inte svaga kryptografiska algoritmer

Egenskap Värde
Regel-ID CA5350
Title Använd inte svaga kryptografiska algoritmer
Kategori Säkerhet
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

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 hashfunktioner SHA1 och RIPEMD160 har mindre kollisionsmotstånd än modernare hashfunktioner. 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-hashöverträdelse

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