Bagikan melalui


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:

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