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 8'de varsayılan olarak etkin Hayır

Dekont

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:

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 noneolarak 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())
{
  ...
}