Apa itu fungsi hash?
Sebuah fungsi hash mengubah konten apa pun — sebuah kalimat, sebuah perangkat lunak, cadangan beberapa gigabita — menjadi rantai berpanjang tetap yang disebut hash atau digest. Tiga sifat mendefinisikannya: keluaran selalu berukuran sama berapa pun masukan, konten yang sama selalu menghasilkan hash yang sama, dan menelusuri kembali dari hash ke masukan harus mustahil dalam praktiknya. Sifat ketiga inilah yang membedakan hash kriptografis dari checksum seperti CRC32.
Secara konkret, dua kegunaan mengisi sebagian besar kebutuhan. Memeriksa integritas : penerbit mempublikasikan hash filenya, Anda menghitung ulang, kesamaan membuktikan unduhan tidak diubah. Membandingkan konten : alih-alih menyimpan dokumennya, orang menyimpan hashnya — identik berarti kontennya identik, tanpa membuka apa pun tentang isinya.
Algoritma mana yang harus dipilih hari ini?
SHA-256 adalah jawaban bawaan: distandardisasi NSA lalu diadopsi di mana mana, diimplementasikan di setiap bahasa, dan tanpa kolisi yang diketahui. SHA-512 cocok untuk volume besar ketika prosesor berbasis 64 bit, sering lebih cepat dari kerabatnya pada arsitektur semacam ini. SHA-384 tidak memberi apa pun selain varian yang lebih panjang. Untuk penandatanganan pesan dengan kunci, HMAC-SHA-256 adalah acuannya: ia menggabungkan kunci rahasia dan hash, sehingga hanya pemegang kunci yang bisa menghasilkan nilai yang sama.
Sementara MD5 dan SHA-1 tetap berguna untuk pemeriksaan non-sensitif — indeks, cache, deteksi duplikat — di mana kecepatan lebih diutamakan daripada ketahanan. Untuk CRC32, di sisi lain, bukan hash kriptografis: ia mendeteksi perubahan yang tidak disengaja, tetapi perubahan yang disengaja bisa dibuat dalam beberapa detik.
Mengapa MD5 dan SHA-1 dianggap sudah rusak?
Karena peneliti telah membuat, untuk masing-masingnya, dua dokumen berbeda dengan hash yang sama. Untuk MD5, buktinya sudah ada sejak 2004; untuk SHA-1, kolisi nyata diproduksi pada 2017 dengan nama SHAttered. Satu kolisi sudah cukup untuk mematahkan sebuah tanda tangan: jika penyerang memilih dokumennya dan penerbit hanya meng-hash-nya, penyerang dapat menyerahkan dokumen yang tampak sah, tetapi justru menandatangani konten berbeda. Itulah alasan sertifikat TLS, pembaruan perangkat lunak, dan tanda tangan paket meninggalkan algoritma-algoritma ini.
Apa yang tidak dilakukan hash
Hash bukan enkripsi: hash memang dirancang tidak dapat dibalik, tetapi hash tidak melindungi konten dengan membuatnya tidak terbaca. Hash tidak mengenkripsi apa pun, tidak menggantikan TLS maupun kunci enkripsi, dan tidak melindungi sebuah kata sandi sendirian — pekerjaan itu untuk bcrypt, scrypt, atau Argon2 yang memang dirancang lambat. Terakhir, meng-hash dua kali tidak memperkuat apa pun: menumpuk algoritma hanya menambahkan lapisan rapuh di mana satu fungsi yang belum rusak sudah cukup.
Direkomendasikan untuk
Administrator sistem dan CTO yang memeriksa checksum distribusi, pengembang yang menyegel artefak atau mengautentikasi webhook, auditor dan kepatuhan yang memeriksa integritas cadangan, jurnalis dan analis yang membandingkan dokumen tanpa menyebarkannya, mahasiswa kriptografi yang mempelajari konsep hash, kolisi, dan salt — dan siapa pun yang ingin meng-hash sebuah konten dengan cepat dan tanpa jejak, dilengkapi generator kata sandi, encoder decoder Base64, decoder JWT, penguji regex dan penghitung karakter.