CA5350 : N’utilisez pas d’algorithmes de chiffrement faibles

Propriété Value
Identificateur de la règle CA5350
Titre N’utilisez pas d’algorithmes de chiffrement faibles
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Notes

Cet avertissement a été mis à jour pour la dernière fois en novembre 2015.

Cause

Les algorithmes de chiffrement, tels que TripleDES , et les algorithmes de hachage, tels que SHA1 et RIPEMD160 , sont considérés comme faibles.

Ces algorithmes de chiffrement n’offrent pas autant de sécurité que leurs équivalents plus modernes. Les algorithmes de chiffrement et de hachage SHA1 et RIPEMD160 offrent moins de résistance aux collisions que les algorithmes de hachage plus modernes. L’algorithme de chiffrement TripleDES fournit moins de bits de sécurité que les algorithmes de chiffrement plus modernes.

Description de la règle

Des algorithmes de chiffrement et des fonctions de hachage faibles sont utilisés aujourd’hui pour plusieurs raisons, mais ils ne doivent pas servir à garantir la confidentialité des données qu’ils protègent.

La règle se déclenche et lève un avertissement quand elle trouve des algorithmes 3DES, SHA1 ou RIPEMD160 dans le code.

Comment corriger les violations

Utilisez des options de chiffrement plus fortes :

  • Pour le chiffrement TripleDES, utilisez le chiffrement Aes .

  • Pour les algorithmes de hachage SHA1 et RIPEMD160, utilisez des algorithmes de la famille SHA-2 (par exemple, SHA512, SHA384, SHA256).

Quand supprimer les avertissements

Supprimez un avertissement de cette règle quand le niveau de protection nécessaire pour les données ne nécessite pas une garantie de sécurité.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Exemples de pseudo-code

Au moment de l’écriture de cet article, l’exemple de pseudo-code suivant illustre le schéma détecté par cette règle.

Violation de hachage SHA-1

using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();

Solution :

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

Violation de hachage RIPEMD160

using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();

Solution :

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

Violation de chiffrement TripleDES

using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
  ...
}

Solution :

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}