CA5350: Nie używaj słabych algorytmów kryptograficznych
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5350 |
Tytuł | Nie używaj słabych algorytmów kryptograficznych |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Uwaga
To ostrzeżenie zostało ostatnio zaktualizowane w listopadzie 2015 r.
Przyczyna
Algorytmy szyfrowania, takie jak TripleDES i algorytmy tworzenia skrótów, takie jak SHA1 i RIPEMD160 , są uważane za słabe.
Te algorytmy kryptograficzne nie zapewniają tak dużej pewności bezpieczeństwa, jak bardziej nowoczesne odpowiedniki. Algorytmy tworzenia skrótów SHA1 kryptograficznych i RIPEMD160 zapewniają mniejszy opór przed kolizją niż bardziej nowoczesne algorytmy tworzenia skrótów. Algorytm TripleDES szyfrowania zapewnia mniej bitów zabezpieczeń niż bardziej nowoczesne algorytmy szyfrowania.
Opis reguły
Słabe algorytmy szyfrowania i funkcje tworzenia skrótów są obecnie używane z wielu powodów, ale nie powinny być używane do zagwarantowania poufności chronionych danych.
Reguła jest wyzwalana, gdy znajdzie algorytmy 3DES, SHA1 lub RIPEMD160 w kodzie i zgłasza ostrzeżenie dla użytkownika.
Jak naprawić naruszenia
Użyj opcji silniejszych kryptograficznie:
W przypadku szyfrowania TripleDES użyj Aes szyfrowania.
W przypadku funkcji sha1 lub RIPEMD160 wyznaczania wartości skrótu należy użyć tych w rodzinie SHA-2 (na przykład SHA512, SHA384, i SHA256).
Kiedy pomijać ostrzeżenia
Pomiń ostrzeżenie z tej reguły, gdy poziom ochrony potrzebny dla danych nie wymaga gwarancji bezpieczeństwa.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady przykładów kodu przykładowego
W momencie pisania tego tekstu poniższy przykład pseudo-kodu ilustruje wzorzec wykryty przez tę regułę.
Naruszenie skrótu SHA-1
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
Rozwiązanie 2.
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
naruszenie skrótów RIPEMD160
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
Rozwiązanie 2.
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Naruszenie szyfrowania TripleDES
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
Rozwiązanie:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}