CA5385: Yeterli anahtar boyutuna sahip Rivest–Shamir–Adleman (RSA) algoritması kullanın
Özellik | Değer |
---|---|
Kural Kimliği | CA5385 |
Başlık | Yeterli anahtar boyutuna sahip Rivest–Shamir–Adleman (RSA) algoritmasını kullan |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Anahtar boyutu 2048'den küçük olan asimetrik şifreleme algoritması RSA'sını aşağıdaki yollardan biriyle kullanma:
- öğesinin alt sınıflarını System.Security.Cryptography.RSA örnekleme ve parametresini
KeySize
2048'den küçük olarak belirtme. - türü alt System.Security.Cryptography.RSAöğesi olan herhangi bir nesneyi döndürme.
- Varsayılan System.Security.Cryptography.AsymmetricAlgorithm.Create anahtar boyutu 1024 olan RSA'nın oluşturulacağı parametresiz kullanıldığında.
- Parametresini
algName
varsayılan anahtar boyutu 1024 ile olduğu gibiRSA
kullanma System.Security.Cryptography.AsymmetricAlgorithm.Create ve belirtme. - Parametresini
name
varsayılan anahtar boyutu 1024 ile olduğu gibiRSA
kullanma System.Security.Cryptography.CryptoConfig.CreateFromName ve belirtme. - parametresini
RSA
name
kullanma System.Security.Cryptography.CryptoConfig.CreateFromName ve belirtme ve anahtar boyutunu tarafından açıkça 2048'den küçük olarakargs
belirtme.
Kural açıklaması
2048 bitten küçük bir RSA anahtarı deneme yanılma saldırılarına karşı daha savunmasızdır.
İhlalleri düzeltme
Bunun yerine en az 2048 anahtar boyutu, ECDH veya ECDsa algoritması olan bir RSA'ya geçin.
Uyarıların ne zaman bastırılması gerekiyor?
Eski uygulamalar ve verilerle uyumluluk sağlamadığı sürece bu kuralın gizlenmesi önerilmez.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA5385
// The code that's violating the rule is on this line.
#pragma warning restore CA5385
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5385.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Örnek
Aşağıdaki kod parçacığı, bu kural tarafından algılanan deseni gösterir.
Ihlal:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(1024);
}
}
Çözüm:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(2048);
}
}