CA5350: Jangan Gunakan Algoritma Kriptografis yang Lemah
Properti | Nilai |
---|---|
ID Aturan | CA5350 |
Judul | Jangan Gunakan Algoritma Kriptografi yang Lemah |
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
Algoritma enkripsi seperti TripleDES dan algoritma hashing seperti SHA1 dan RIPEMD160 dianggap lemah.
Algoritma kriptografi ini tidak memberikan jaminan keamanan sebanyak rekan-rekan yang lebih modern. Algoritma SHA1 hashing kriptografi dan RIPEMD160 memberikan lebih sedikit ketahanan tabrakan daripada algoritma hashing yang lebih modern. Algoritma TripleDES enkripsi menyediakan lebih sedikit bit keamanan daripada algoritma enkripsi yang lebih modern.
Deskripsi aturan
Algoritma enkripsi yang lemah dan fungsi hashing digunakan saat ini karena sejumlah alasan, tetapi tidak boleh digunakan untuk menjamin kerahasiaan data yang mereka lindungi.
Aturan ini memicu ketika menemukan algoritma 3DES, SHA1, atau RIPEMD160 dalam kode dan melemparkan peringatan kepada pengguna.
Cara memperbaiki pelanggaran
Gunakan opsi yang lebih kuat secara kriptografis:
Untuk enkripsi TripleDES, gunakan Aes enkripsi.
Untuk fungsi hashing SHA1 atau RIPEMD160, gunakan fungsi dalam keluarga SHA-2 (misalnya, SHA512, SHA384, dan SHA256).
Kapan harus menekan peringatan
Menekan peringatan dari aturan ini ketika tingkat perlindungan yang diperlukan untuk data tidak memerlukan jaminan keamanan.
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 CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh kode semu
Pada saat penulisan ini, sampel kode pseudo berikut mengilustrasikan pola yang terdeteksi oleh aturan ini.
Pelanggaran Hash SHA-1
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
Solusi:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RIPEMD160 Pelanggaran Hashing
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
Solusi:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
Pelanggaran Enkripsi TripleDES
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
Solusi:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk