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 9 | No |
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:
Untuk MD5, gunakan hash dalam keluarga SHA-2 (misalnya, , SHA512SHA384, SHA256).
Untuk DES dan RC2, gunakan Aes enkripsi.
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())
{
...
}