CA5350: Não use algoritmos criptográficos fracos
Propriedade | valor |
---|---|
ID da regra | CA5350 |
Cargo | Não use algoritmos criptográficos fracos |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 8 | Não |
Nota
Este aviso foi atualizado pela última vez em novembro de 2015.
Causa
Algoritmos de encriptação como TripleDES e algoritmos de hash como SHA1 e RIPEMD160 são considerados fracos.
Esses algoritmos criptográficos não fornecem tanta garantia de segurança quanto os homólogos mais modernos. Algoritmos de SHA1 hash criptográficos e RIPEMD160 fornecem menos resistência a colisão do que algoritmos de hash mais modernos. O algoritmo TripleDES de encriptação fornece menos bits de segurança do que os algoritmos de encriptação mais modernos.
Descrição da regra
Algoritmos de encriptação fracos e funções de hashing são usados hoje por uma série de razões, mas não devem ser usados para garantir a confidencialidade dos dados que protegem.
A regra é acionada quando encontra algoritmos 3DES, SHA1 ou RIPEMD160 no código e lança um aviso para o usuário.
Como corrigir violações
Use opções criptograficamente mais fortes:
Para criptografia TripleDES, use Aes criptografia.
Para funções de hash SHA1 ou RIPEMD160, use as da família SHA-2 (por exemplo, , SHA512SHA384e SHA256).
Quando suprimir avisos
Suprima um aviso desta regra quando o nível de proteção necessário para os dados não exigir uma garantia de segurança.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
No momento em que este artigo foi escrito, o exemplo de pseudocódigo a seguir ilustra o padrão detetado por essa regra.
Violação de hash SHA-1
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
Solução:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RIPEMD160 Violação de hash
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
Solução:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Violação de criptografia TripleDES
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
Solução:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}