Partilhar via


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:

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