CA5385: Använd algoritmen Rivest–Shamir–Adleman (RSA) med tillräcklig nyckelstorlek
Property | Värde |
---|---|
Regel-ID | CA5385 |
Title | Använd algoritmen Rivest–Shamir–Adleman (RSA) med tillräcklig nyckelstorlek |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Använda asymmetrisk krypteringsalgoritm RSA med nyckelstorlek mindre än 2048 på något av följande sätt:
- Instansiera eventuella underordnade klasser av System.Security.Cryptography.RSA och ange parametern
KeySize
som mindre än 2048. - Returnerar alla objekt vars typ är underordnade System.Security.Cryptography.RSA.
- Använda System.Security.Cryptography.AsymmetricAlgorithm.Create utan parameter som skulle skapa RSA med standardnyckelstorleken 1024.
- Använda System.Security.Cryptography.AsymmetricAlgorithm.Create och ange parametern
algName
somRSA
med standardnyckelstorleken 1024. - Använda System.Security.Cryptography.CryptoConfig.CreateFromName och ange parametern
name
somRSA
med standardnyckelstorleken 1024. - Använda System.Security.Cryptography.CryptoConfig.CreateFromName och ange parametern
name
somRSA
och ange nyckelstorleken som mindre än 2048 explicit avargs
.
Regelbeskrivning
En RSA-nyckel som är mindre än 2 048 bitar är mer sårbar för råstyrkeattacker.
Så här åtgärdar du överträdelser
Växla till en RSA med minst 2048 nyckelstorlek, ECDH- eller ECDsa-algoritm i stället.
När du ska ignorera varningar
Vi rekommenderar inte att du utelämnar den här regeln om det inte gäller kompatibilitet med äldre program och data.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5385
// The code that's violating the rule is on this line.
#pragma warning restore CA5385
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5385.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel
Följande kodfragment illustrerar det mönster som identifieras av den här regeln.
Kränkning:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(1024);
}
}
Lösning:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(2048);
}
}