CA5350: non usare algoritmi di crittografia vulnerabili
Proprietà | valore |
---|---|
ID regola | CA5350 |
Title | Non usare algoritmi di crittografia vulnerabili |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Nota
Ultimo aggiornamento di questo avviso: novembre 2015.
Causa
Gli algoritmi di crittografia, ad esempio TripleDES e gli algoritmi di hash, ad esempio SHA1 e RIPEMD160 sono considerati vulnerabili.
Questi algoritmi di crittografia non assicurano la sicurezza tanto quanto le controparti più moderne. Gli algoritmi di hash crittografici SHA1 e RIPEMD160 forniscono meno resistenza ai conflitti rispetto agli algoritmi di hash più moderni. L'algoritmo di crittografia TripleDES fornisce un minor numero di bit di sicurezza rispetto ad algoritmi di crittografia più moderni.
Descrizione regola
Oggi si usano algoritmi di crittografia e funzioni hash deboli per diversi motivi, ma non dovrebbero essere usati per garantire la riservatezza dei dati che proteggono.
La regola viene attivata quando trova algoritmi 3DES, SHA1 o RIPEMD160 nel codice e genera un avviso all'utente.
Come correggere le violazioni
Usare opzioni di crittografia più avanzate:
Per la crittografia TripleDES, usare la crittografia Aes .
Per le funzioni di hashING SHA1 o RIPEMD160, usare quelle nella famiglia SHA-2 (ad esempio, SHA512, SHA384e SHA256).
Quando eliminare gli avvisi
Escludere un avviso da questa regola quando il livello di protezione necessario per i dati non richiede una garanzia di sicurezza.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Esempi di pseudo-codice
Al momento della stesura di questo articolo, l'esempio di pseudocodice seguente illustra il modello rilevato da questa regola.
Violazione di hash SHA-1
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
Soluzione:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Violazione di hash RIPEMD160
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
Soluzione:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Violazione di crittografia TripleDES
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
Soluzione:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}