Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA5351 |
| Tytuł | Nie używaj uszkodzonych algorytmów kryptograficznych |
| Kategoria | Bezpieczeństwo |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
| Zastosowane języki | C# i Visual Basic |
Uwaga
To ostrzeżenie zostało ostatnio zaktualizowane w listopadzie 2015 r.
Przyczyna
Funkcje tworzenia skrótów, takie jak MD5 i algorytmy szyfrowania, takie jak DES i RC2 , mogą powodować znaczne ryzyko i mogą powodować narażenie poufnych informacji za pomocą trywialnych technik ataku, takich jak ataki siłowe i kolizje skrótów.
Poniższa lista algorytmów kryptograficznych podlega znanym atakom kryptograficznym. Algorytm MD5 skrótu kryptograficznego podlega atakom polegającym na kolizji skrótów. W zależności od użycia, kolizja skrótu może prowadzić do podszywania się, manipulowania lub innych rodzajów ataków na systemy, które opierają się na unikatowych kryptograficznych danych wyjściowych funkcji haszującej. Algorytmy szyfrowania i DES podlegają atakom RC2 kryptograficznym, które mogą spowodować niezamierzone ujawnienie zaszyfrowanych danych.
Opis reguły
Uszkodzone algorytmy kryptograficzne nie są uważane za bezpieczne, a ich użycie powinno być zniechęcane. Algorytm skrótu MD5 jest podatny na znane ataki kolizyjne, chociaż określona luka w zabezpieczeniach będzie się różnić w zależności od kontekstu użycia. Algorytmy tworzenia skrótów używane do zapewnienia integralności danych (na przykład podpisu pliku lub certyfikatu cyfrowego) są szczególnie narażone. W tym kontekście osoby atakujące mogą wygenerować dwa oddzielne fragmenty danych, tak aby nieszkodliwe dane mogły zostać zastąpione danymi złośliwymi, bez zmiany wartości skrótu lub unieważnienia powiązanego podpisu cyfrowego.
W przypadku algorytmów szyfrowania:
DES Szyfrowanie używa małego klucza szyfrowania, który może zostać złamany w mniej niż dzień.
RC2 szyfrowanie jest podatne na atak związany z kluczem, w którym atakujący znajduje relacje matematyczne między wszystkimi wartościami klucza.
Ta reguła jest wyzwalana, gdy znajdzie dowolną z powyższych funkcji kryptograficznych w kodzie źródłowym i zgłasza ostrzeżenie użytkownikowi.
Jak naprawić naruszenia
Użyj opcji silniejszych kryptograficznie:
W przypadku rozwiązania MD5 użyj skrótów w rodzinie SHA-2 (na przykład SHA512, , SHA384SHA256).
W przypadku des i RC2 użyj Aes szyfrowania.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżenia przed tą regułą, chyba że została sprawdzona przez eksperta kryptograficznego.
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 CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady pseudokodu
Poniższe przykłady pseudo-kodu ilustrują wzorzec wykryty przez tę regułę i możliwe alternatywy.
Naruszenie zasady MD5
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Rozwiązanie 2.
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Naruszenie szyfrowania RC2
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Rozwiązanie 2.
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
Naruszenie szyfrowania DES
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Rozwiązanie 2.
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}