Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | valor |
|---|---|
| ID da regra | CA5350 |
| Título | Não use algoritmos criptográficos fracos |
| Categoria | Segurança |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Não |
| Línguas aplicáveis | C# e Visual Basic |
Nota
Este aviso foi atualizado pela última vez em novembro de 2015.
Motivo
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 hash criptográficos SHA1 e RIPEMD160 fornecem menos resistência a colisões 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 criptografar usando TripleDES, utilize Aes para criptografar.
Para funções de hash SHA1 ou RIPEMD160, use as da família SHA-2 (por exemplo, SHA512, SHA384e SHA256).
Quando suprimir avisos
Quando o nível de proteção necessário para os dados não exige uma garantia de segurança, suprima um aviso desta regra.
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 da funçã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())
{
...
}