CA5350: No usar algoritmos criptográficos no seguros
Propiedad | Value |
---|---|
Identificador de la regla | CA5350 |
Título | No usar algoritmos criptográficos no seguros |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | No |
Nota
Esta advertencia se actualizó por última vez en noviembre de 2015.
Causa
Los algoritmos de cifrado como TripleDES y los algoritmos hash como SHA1 y RIPEMD160 se consideran no seguros.
Estos algoritmos criptográficos no proporcionan tantas garantías de seguridad como sus equivalentes más modernos. Los algoritmos hash criptográfico SHA1 y RIPEMD160 proporcionan menos resistencia a colisiones que los algoritmos hash más modernos. El algoritmo de cifrado TripleDES proporciona menos bits de seguridad que los algoritmos de cifrado más modernos.
Descripción de la regla
Las funciones hash y los algoritmos de cifrado no seguros se usan hoy en día por varios motivos, pero no deben usarse para garantizar la confidencialidad o la integridad de los datos que protegen.
La regla se desencadena cuando encuentra los algoritmos 3DES, SHA1 o RIPEMD160 en el código y lanza una advertencia al usuario.
Cómo corregir infracciones
Use opciones de criptografía más segura:
Para el cifrado TripleDES, use el cifrado Aes .
Para las funciones hash SHA1 o RIPEMD160, use los de la familia SHA-2 (por ejemplo, SHA512, SHA384y SHA256).
Cuándo suprimir las advertencias
Suprima una advertencia de esta regla cuando el nivel de protección necesario para los datos no requiera una garantía de seguridad.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Ejemplos de pseudocódigo
En el momento de redactar este artículo, el ejemplo de pseudocódigo siguiente muestra el patrón que esta regla detecta.
Infracción de hash SHA-1
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
Solución:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Infracción de hash RIPEMD160
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
Solución:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Infracción de cifrado TripleDES
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
Solución:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}