CA5351: Bozuk Şifreleme Algoritmaları Kullanmayın

Özellik Değer
Kural Kimliği CA5351
Başlık Bozuk Şifreleme Algoritmaları Kullanmayın
Kategori Güvenlik
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Not

Bu uyarı en son Kasım 2015'te güncelleştirildi.

Neden

Hashing işlevleri, örneğin MD5, ve şifreleme algoritmaları, örneğin DES ve RC2, önemli riskler ortaya çıkarabilir ve brute force saldırıları ve karma çakışmaları gibi basit 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, bir karma işlevinin benzersiz şifreleme çıktısına bağlı olan sistemlerde, karma çakışması kimlik sahtekarlığına, verilerin kurcalanmasına 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ü sağlamak için kullanılan karma algoritmaları (örneğin, dosya imzası veya dijital sertifika) özellikle savunmasızdır. 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 kullanır ve bu boyut bir günden kısa bir süre içinde kırılabilir.

  • 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 Karmalama İ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())
{
  ...
}