Partilhar via


CA5350: Não use algoritmos criptográficos fracos

Property valor
ID da regra CA5350
Título 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 10 Não

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