Bahasa Indonesia

Alat pengembang · SHA kalkulator hash

Hash Kriptografis vs Checksum: Apa yang Tidak Dapat Dijanjikan oleh CRC32 dan xxHash

· Latar belakang

sha-256 kriptografi keamanan

Perbandingan kecepatan checksum vs kekuatan hash kriptografi pada sumbu risiko
Ilustrasi vektor ToolAcre asli

CRC32, FNV dan xxHash juga merupakan hash, namun tidak memberikan jaminan terhadap musuh. Posting ini menjelaskan apa yang membedakan hash kriptografi dari checksum dan cara memilih per kasus penggunaan.

Hash yang mana untuk pekerjaan yang mana? — pilihan antara kecepatan dan keamanan yang berlawanan

Fungsi hash terbagi dalam tiga kategori: checksum untuk mendeteksi kesalahan yang tidak disengaja, hash non-kriptografi untuk distribusi dan kinerja, dan hash kriptografi untuk keamanan. Setiap kategori memiliki jaminan yang berbeda dan trade-off yang berbeda dalam hal kecepatan dan ukuran intisari. Checksum seperti CRC32 cepat dan pendek (4 bytes, 8 karakter hex) tetapi tidak memberikan perlindungan terhadap modifikasi yang disengaja. Hash non-kriptografi seperti xxHash atau MurmurHash juga cepat dan berguna untuk tabel hash dan distribusi data, namun tidak memberikan perlindungan terhadap musuh yang ingin menyebabkan tabrakan. Hash kriptografi seperti SHA-256 lebih lambat dan menghasilkan intisari yang lebih panjang (32 bytes, 64 karakter hex), namun ia menawarkan ketahanan gambar awal dan ketahanan benturan—properti keamanan yang melindungi dari musuh.

Memilih fungsi hash yang salah untuk kasus penggunaan Anda adalah kesalahan keamanan yang umum. Menggunakan CRC32 untuk memverifikasi unduhan file dari sumber yang tidak tepercaya tidak efektif; penyerang dapat dengan mudah mengubah file dan menghitung ulang CRC32. Menggunakan SHA-256 sebagai fungsi hash cepat dalam tabel hash frekuensi tinggi adalah pemborosan; CRC32 atau hash non-kriptografi yang cepat sudah cukup dan lebih murah.

Checksum untuk kesalahan yang tidak disengaja — desain CRC untuk mendeteksi pembalikan bit dalam transmisi

Checksum dirancang untuk mendeteksi kesalahan selama transmisi atau penyimpanan, di mana kesalahan diasumsikan bersifat acak dan tidak disengaja. CRC (Pemeriksaan Redundansi Siklik) pada awalnya dirancang untuk mendeteksi pembalikan bit dalam komunikasi. CRC32 menghasilkan intisari 32-bit. Jika frame rusak karena pembalikan bit acak selama transmisi, CRC32 hampir pasti akan berubah, memperingatkan penerima untuk meminta transmisi ulang. CRC dapat mendeteksi hingga sejumlah kesalahan bit tergantung pada polinomialnya; untuk sebagian besar kasus penggunaan umum, pembalikan bit tunggal atau pembalikan beberapa bit terdeteksi dengan andal.

CRC bersifat deterministik tetapi bukan kriptografi. Dengan adanya file dan CRC32-nya, penyerang dapat memodifikasi file tersebut dan menghitung ulang CRC32 agar sesuai dengan nilai yang diharapkan. Bagi musuh yang memiliki pengetahuan tentang polinomial CRC, melakukan tabrakan sangatlah mudah. CRC tidak pernah dimaksudkan untuk menolak modifikasi yang disengaja; ini murni untuk deteksi kesalahan yang tidak disengaja. Sistem historis seperti file ZIP dan file JPEG menggunakan CRC untuk tujuan ini. Protokol modern menggunakan CRC untuk deteksi kesalahan cepat dalam saluran terenkripsi atau terautentikasi, bukan sebagai pemeriksaan integritas mandiri.

Hash non-kriptografi untuk distribusi — FNV, MurmurHash dan xxHash dalam tabel hash dan partisi

Hash non-kriptografi seperti FNV-1a, MurmurHash, dan xxHash dirancang untuk kecepatan dan keseragaman dalam tabel hash dan partisi data. Mereka memiliki latensi yang sangat rendah dan digunakan dalam situasi di mana Anda perlu mempartisi data di seluruh server atau bucket tanpa mempedulikan properti keamanan. Jika Anda membuat cache dan perlu memetakan kunci ke nomor keranjang, hash cepat adalah pilihan yang tepat. MurmurHash dirancang secara eksplisit untuk penggunaan tabel hash dan lebih cepat dari SHA pada sebagian besar perangkat keras. xxHash lebih baru dan dioptimalkan untuk CPU modern dengan cache dan vektorisasi yang besar.

Hash ini bukan kriptografi karena tidak tahan terhadap serangan preimage (menemukan masukan yang menghasilkan intisari tertentu) atau serangan tabrakan (menemukan dua masukan berbeda yang menghasilkan intisari yang sama). Seorang penyerang dapat menghitung algoritma hash dan menemukan masukan yang bertabrakan atau yang menghasilkan keluaran target. Dalam lingkungan tepercaya (kluster tempat semua node berada di bawah kendali Anda), hal itu dapat diterima. Jika pengguna yang tidak dipercaya dapat mengontrol input, hash non-kriptografi rentan terhadap serangan tabrakan yang menurunkan kinerja (kasus terburuk tabel hash adalah pencarian linier ketika semua kunci bertabrakan) atau menghasilkan efek samping lainnya.

Apa yang ditambahkan oleh hash kriptografi — ketahanan terhadap gambar awal dan benturan terhadap penyerang yang disengaja

Hash kriptografi seperti SHA-256, SHA-384, dan SHA-512 memberikan resistensi pra-gambar: dengan adanya intisari, secara komputasi tidak mungkin menemukan masukan apa pun yang menghasilkan intisari tersebut. Mereka juga memberikan ketahanan terhadap benturan: secara komputasi tidak mungkin menemukan dua masukan berbeda yang menghasilkan intisari yang sama. Properti ini melindungi dari musuh yang ingin memalsukan unduhan, membuat sertifikat palsu, atau merusak pesan. Biayanya adalah kecepatan: SHA-256 lebih lambat dari CRC32 dan lebih lambat dari xxHash pada sebagian besar perangkat keras.

SHA-1 rusak secara kriptografis (tabrakan bersifat praktis) dan tidak boleh digunakan untuk tujuan keamanan baru, namun masih dihitung untuk kompatibilitas lama. SHA-256, SHA-384 dan SHA-512 tetap kuat dan merupakan pilihan standar untuk hashing kriptografi. "2" di SHA-2 menunjukkan keluarga kedua dari algoritma SHA (yang pertama adalah SHA-1 asli; SHA-3 adalah keluarga yang lebih baru tetapi jarang digunakan untuk tujuan ini).

Hash kriptografi menambahkan properti permusuhan; artikel ini menghindari klaim kecepatan relatif yang tidak didukung

Mencocokkan lima skenario dengan keluarga hash yang tepat: Pertama, frame jaringan yang dikirimkan melalui saluran andal yang dienkripsi dengan AES: CRC32 sudah tepat. Enkripsi melindungi terhadap modifikasi, dan CRC mendeteksi kerusakan yang tidak disengaja. Kedua, tabel hash atau hashing yang konsisten untuk penyeimbangan beban: hash non-kriptografi seperti xxHash sudah sesuai. Kecepatan itu penting, dan lingkungan dipercaya. Ketiga, diperlukan verifikasi integritas unduhan dari sumber yang tidak tepercaya: SHA-256. Penyerang dapat mengubah file dan checksum, tetapi tidak dapat mengubah hash kriptografi tanpa merusak SHA-256.

Keempat, tanda tangan dan sertifikat digital: SHA-256 diperlukan dan dikombinasikan dengan algoritma asimetris seperti RSA atau ECDSA. Tanda tangan tersebut membuktikan bahwa hash tidak diubah setelah penandatanganan. Kelima, penghapusan duplikat file yang diunggah pengguna: SHA-256 diperlukan karena pengguna dapat dengan sengaja mengunggah file yang dirancang untuk bertabrakan dengan file yang ada dalam hash non-kriptografi. Jika deduplikasi didasarkan pada xxHash, penyerang dapat mengunggah file dengan hash yang sama dengan file lain tetapi kontennya berbeda, menyebabkan sistem membuang unggahan tersebut secara tidak benar.

Contoh praktis - mencocokkan lima skenario (bingkai jaringan, peta hash, verifikasi unduhan, tanda tangan, deduplikasi unggahan pengguna) ke kelompok yang tepat

Biaya pemilihan hash kriptografi untuk setiap kasus penggunaan adalah overhead kinerja. SHA-256 lebih lambat dari CRC dan lebih lambat dari xxHash. Dalam hot loop—sepotong kode yang dieksekusi jutaan kali per detik—overhead tersebut terlihat jelas. Dalam fase penyiapan atau operasi batch, hal ini dapat diabaikan. Kerangka pengambilan keputusannya adalah: apakah pihak lawan mempunyai insentif untuk menimbulkan konflik? Jika ya, gunakan SHA-256. Jika tidak, dan jika kecepatan itu penting, gunakan hash yang lebih cepat. Jika keamanan lebih penting daripada kecepatan, gunakan SHA-256 apa pun.

Kesalahan umum adalah menggunakan MD5, hash kriptografi lama yang sekarang rusak. MD5 dirancang di 1992 dan tabrakan ditunjukkan di 2004. Menggunakan MD5 untuk tujuan keamanan apa pun tidak aman. Kadang-kadang terlihat dalam sistem lama dan dalam situasi di mana kecepatan diprioritaskan, namun tidak ada skenario di mana MD5 adalah pilihan yang tepat saat ini: jika Anda membutuhkan kecepatan, gunakan xxHash; jika Anda membutuhkan keamanan, gunakan SHA-256. Jangan pernah menggunakan MD5.

Pemetaan skenario tetap bersifat kualitatif karena throughput dan perilaku tabrakan memerlukan bukti spesifik implementasi

Hashing kata sandi adalah kategori keempat, berbeda dari checksum dan hash kriptografi tujuan umum. Jangan gunakan SHA-256 untuk meng-hash kata sandi. Sebagai gantinya, gunakan fungsi hashing kata sandi seperti bcrypt, scrypt atau Argon2, yang sengaja dibuat lambat dan menyertakan garam. Hash kriptografi yang cepat seperti SHA-256 membuat tebakan kata sandi menjadi murah: penyerang dapat mencoba jutaan tebakan per detik. Fungsi hashing kata sandi dirancang untuk membuat setiap tebakan mahal dalam CPU dan memori, sehingga menebak kata sandi yang kuat masih membutuhkan waktu lebih lama daripada yang bisa ditunggu oleh penyerang mana pun. Hashing kata sandi adalah kasus penggunaan khusus dengan persyaratannya sendiri.

Kalkulator hash ToolAcre SHA tidak mendukung hashing kata sandi dan sengaja tidak menawarkan MD5, tidak ada parameter khusus, dan tidak ada hash cepat. Ini adalah alat untuk menghitung intisari SHA standar untuk verifikasi dan pemeriksaan integritas, bukan untuk autentikasi atau penyimpanan kata sandi.

Kesimpulan: musuh atau tanpa musuh — gunakan kalkulator hash ToolAcre SHA ketika seseorang mungkin merusak data

Pilihan algoritma hash adalah keputusan mendasar yang mempengaruhi kinerja dan keamanan seluruh sistem. Intisari hanya dapat dipercaya jika algoritma yang menghasilkannya. Jika Anda memilih CRC32 untuk verifikasi file, intisari tidak memberikan perlindungan terhadap modifikasi yang disengaja. Jika Anda memilih SHA-256 untuk tabel hash, Anda membuang-buang sumber daya. Mengetahui properti dan trade-off dari setiap kategori memungkinkan Anda memilih dengan benar.

Kalkulator hash ToolAcre SHA menyediakan SHA-1 hingga SHA-512, yang mencakup hash kriptografi yang penting bagi sebagian besar kasus penggunaan. Ia tidak menawarkan CRC32, xxHash atau MD5 karena masing-masingnya adalah pilihan yang tepat dalam konteks tertentu (CRC untuk deteksi kesalahan di saluran tepercaya, xxHash untuk kinerja dalam lingkungan terkendali, tidak ada untuk MD5), dan menawarkannya tanpa menekankan kapan menggunakan masing-masing akan mendorong kesalahan. Kalkulator ini untuk menghitung intisari kriptografi standar. Gunakan baris perintah dengan `crc32`, `xxh64` atau alat serupa jika Anda memerlukan hash tersebut. Untuk verifikasi pengunduhan, sidik jari sertifikat, git commit, dan kasus penggunaan serupa di mana musuh mungkin merusak data, hubungi SHA-256 melalui kalkulator hash ToolAcre SHA.