CA5385: Użyj algorytmu Rivest–Shamir-Adleman (RSA) z wystarczającą ilością klucza
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5385 |
Tytuł | Użyj algorytmu Rivest-Shamir-Adleman (RSA) z wystarczającym rozmiarem klucza |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Użycie algorytmu szyfrowania asymetrycznego RSA z rozmiarem klucza mniejszym niż 2048 w jeden z następujących sposobów:
- Utworzenie wystąpienia wszystkich klas potomnych i określenie parametru System.Security.Cryptography.RSA
KeySize
jako mniejszego niż 2048. - Zwracanie dowolnego obiektu, którego typ jest elementem podrzędnym System.Security.Cryptography.RSA.
- Użycie System.Security.Cryptography.AsymmetricAlgorithm.Create bez parametru, który tworzy rsA z domyślnym rozmiarem klucza 1024.
- Używanie System.Security.Cryptography.AsymmetricAlgorithm.Create i określanie parametru
algName
tak jakRSA
w przypadku domyślnego rozmiaru klucza 1024. - Używanie System.Security.Cryptography.CryptoConfig.CreateFromName i określanie parametru
name
tak jakRSA
w przypadku domyślnego rozmiaru klucza 1024. - Użycie System.Security.Cryptography.CryptoConfig.CreateFromName i określenie parametru jako
RSA
i określenie rozmiaruname
klucza jako mniejszego niż 2048 jawnie przezargs
.
Opis reguły
Klucz RSA mniejszy niż 2048 bitów jest bardziej podatny na ataki siłowe.
Jak naprawić naruszenia
Przełącz się do algorytmu RSA z co najmniej 2048 rozmiarem klucza, algorytmem ECDH lub ECDsa.
Kiedy pomijać ostrzeżenia
Nie zaleca się pomijania tej reguły, chyba że ze względu na zgodność ze starszymi aplikacjami i danymi.
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 CA5385
// The code that's violating the rule is on this line.
#pragma warning restore CA5385
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5385.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykład
Poniższy fragment kodu ilustruje wzorzec wykryty przez tę regułę.
Naruszenie:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(1024);
}
}
Rozwiązanie:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(2048);
}
}