CA5350: Keine schwachen Kryptografiealgorithmen verwenden.

Eigenschaft Wert
Regel-ID CA5350
Titel Keine schwachen Kryptografiealgorithmen verwenden.
Kategorie Security
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Nein

Hinweis

Diese Warnung wurde zuletzt im November 2015 aktualisiert.

Ursache

Verschlüsselungsalgorithmen, wie z. B. TripleDES , und Hashalgorithmen, wie z. B. SHA1 und RIPEMD160 , gelten als schwach.

Diese kryptografischen Algorithmen bieten nicht dieselbe Sicherheitsgarantie wie modernere Entsprechungen. Die kryptografischen Hashalgorithmen SHA1 und RIPEMD160 bieten weniger Resistenz gegenüber Konflikten als modernere Hashalgorithmen. Der Verschlüsselungsalgorithmus TripleDES bietet weniger Sicherheit als modernere Verschlüsselungsalgorithmen.

Regelbeschreibung

Unsichere Verschlüsselungsalgorithmen und Hashfunktionen werden heute aus verschiedenen Gründen verwendet, sollten jedoch nicht verwendet werden, um die Vertrauenswürdigkeit der Daten, die sie schützen, zu gewährleisten.

Die Regel wird beim Auffinden von 3DES-, SHA1- oder RIPEMD160-Algorithmen im Code ausgelöst und gibt eine Warnung für den Benutzer zurück.

Behandeln von Verstößen

Verwenden Sie kryptografisch sicherere Optionen:

  • Verwenden Sie für TripleDES-Verschlüsselung die Aes -Verschlüsselung.

  • Verwenden Sie für SHA1- oder RIPEMD160-Hashfunktionen diejenigen der SHA-2 -Produktfamilie (z. B. SHA512, SHA384, SHA256).

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie eine Warnung dieser Regel, wenn der für die Daten benötigte Schutzgrad keine Sicherheitsgarantie erfordert.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Pseudocodebeispiele

Zum Zeitpunkt der Erstellung dieses Dokuments veranschaulicht das folgende Beispiel mit Pseudocode das von dieser Regel erkannte Muster.

Verstoß bei SHA-1-Hashfunktion

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

Lösung:

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

Verstoß bei RIPEMD160-Hashfunktion

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

Lösung:

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

Verstoß bei TripleDES-Verschlüsselung

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

Lösung:

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