CA5351: Bozuk Şifreleme Algoritmaları Kullanmayın
Özellik | Değer |
---|---|
Kural Kimliği | CA5351 |
Başlık | Bozuk Şifreleme Algoritmaları Kullanmayın |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Not
Bu uyarı en son Kasım 2015'te güncelleştirildi.
Neden
gibi MD5 karma işlevleri ve gibi DESRC2 şifreleme algoritmaları önemli riskler ortaya çıkarabilir ve deneme yanılma saldırıları ve karma çakışmaları gibi önemsiz saldırı teknikleri aracılığıyla hassas bilgilerin açığa çıkmasına neden olabilir.
Aşağıdaki şifreleme algoritmaları listesi bilinen şifreleme saldırılarına tabidir. Şifreleme karma algoritması MD5 karma çakışma saldırılarına tabidir. Kullanıma bağlı olarak, karma çakışması bir karma işlevinin benzersiz şifreleme çıkışını kullanan sistemlerde kimliğe bürünmeye, kurcalamaya veya diğer tür saldırılara yol açabilir. Şifreleme algoritmaları DES ve RC2 şifrelenen verilerin istenmeyen şekilde açığa çıkmasına neden olabilecek şifreleme saldırılarına tabidir.
Kural açıklaması
Bozuk şifreleme algoritmaları güvenli olarak kabul edilmez ve kullanımları önerilmez. MD5 karma algoritması bilinen çarpışma saldırılarına karşı duyarlıdır, ancak bu güvenlik açığı kullanım bağlamı temelinde farklılık gösterir. Veri bütünlüğünün (örneğin, dosya imzası veya dijital sertifika) özellikle savunmasız olmasını sağlamak için kullanılan karma algoritmalar. Bu bağlamda, saldırganlar karma değeri değiştirmeden veya ilişkili dijital imza geçersiz kılınmadan zararsız verilerin kötü amaçlı verilerle değiştirilebileceği şekilde iki ayrı veri parçası oluşturabilir.
Şifreleme algoritmaları için:
DES şifreleme küçük bir anahtar boyutu içerir ve bu boyut bir günden kısa bir süre içinde deneme yanılmayla zorlanabilir.
RC2 şifreleme, saldırganın tüm anahtar değerleri arasındaki matematiksel ilişkileri bulduğu ilgili anahtar saldırısına duyarlıdır.
Bu kural, kaynak kodunda yukarıdaki şifreleme işlevlerinden herhangi birini bulduğunda tetiklenir ve kullanıcıya bir uyarı oluşturur.
İhlalleri düzeltme
Şifreleme açısından daha güçlü seçenekleri kullanın:
MD5 için SHA-2 ailesindeki karmaları kullanın (örneğin, SHA512, SHA384, SHA256).
DES ve RC2 için şifrelemeyi kullanın Aes .
Uyarıların ne zaman bastırılması gerekiyor?
Şifreleme uzmanı tarafından gözden geçirilmediği sürece bu kuraldan gelen bir uyarıyı gizlemeyin.
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 CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
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.CA5351.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Sahte kod örnekleri
Aşağıdaki sahte kod örnekleri, bu kural tarafından algılanan deseni ve olası alternatifleri gösterir.
MD5 Karma İhlali
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
Çözüm:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RC2 Şifreleme İhlali
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
Çözüm:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
DES Şifreleme İhlali
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
Çözüm:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}