Partilhar via


CA5350: Não use algoritmos criptográficos fracos

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:

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