Bagikan melalui


CA5351 Jangan Gunakan Algoritma Kriptografis yang Rusak

Properti Nilai
ID Aturan CA5351
Judul Jangan Gunakan Algoritma Kriptografi yang Rusak
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Catatan

Peringatan ini terakhir diperbarui pada November 2015.

Penyebab

Fungsi hashing seperti MD5 dan algoritma enkripsi seperti DES dan RC2 dapat mengekspos risiko yang signifikan dan dapat mengakibatkan paparan informasi sensitif melalui teknik serangan sepele, seperti serangan brute force dan tabrakan hash.

Daftar algoritma kriptografi di bawah ini tunduk pada serangan kriptografi yang diketahui. Algoritma MD5 hash kriptografi tunduk pada serangan tabrakan hash. Tergantung pada penggunaannya, tabrakan hash dapat menyebabkan peniruan, perubahan, atau jenis serangan lainnya pada sistem yang mengandalkan output kriptografi unik dari fungsi hashing. Algoritma DES enkripsi dan RC2 tunduk pada serangan kriptografi yang dapat mengakibatkan pengungkapan data terenkripsi yang tidak diinginkan.

Deskripsi aturan

Algoritma kriptografi yang rusak tidak dianggap aman dan penggunaannya harus disarankan. Algoritma hash MD5 rentan terhadap serangan tabrakan yang diketahui, meskipun kerentanan tertentu akan bervariasi berdasarkan konteks penggunaan. Algoritma hashing yang digunakan untuk memastikan integritas data (misalnya, tanda tangan file atau sertifikat digital) sangat rentan. Dalam konteks ini, penyerang dapat menghasilkan dua bagian data terpisah, sehingga data jinak dapat diganti dengan data berbahaya, tanpa mengubah nilai hash atau membatalkan tanda tangan digital terkait.

Untuk algoritma enkripsi:

  • DES enkripsi berisi ukuran kunci kecil, yang dapat dipaksa secara brute dalam waktu kurang dari satu hari.

  • RC2 enkripsi rentan terhadap serangan kunci terkait, di mana penyerang menemukan hubungan matematika antara semua nilai kunci.

Aturan ini memicu ketika menemukan salah satu fungsi kriptografi di atas dalam kode sumber dan melemparkan peringatan kepada pengguna.

Cara memperbaiki pelanggaran

Gunakan opsi yang lebih kuat secara kriptografis:

Kapan harus menekan peringatan

Jangan menekan peringatan dari aturan ini, kecuali telah ditinjau oleh pakar kriptografi.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

Sampel pseudo-code berikut menggambarkan pola yang terdeteksi oleh aturan ini dan kemungkinan alternatif.

Pelanggaran Hashing MD5

using System.Security.Cryptography;
...
var hashAlg = MD5.Create();

Solusi:

using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();

Pelanggaran Enkripsi RC2

using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();

Solusi:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}

Pelanggaran Enkripsi DES

using System.Security.Cryptography;
...
DES encAlg = DES.Create();

Solusi:

using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
  ...
}