Sidik jari untuk data
Fungsi hash mengambil masukan apa pun (satu kata, satu dokumen, video 4 GB) dan mengubahnya menjadi deretan karakter pendek dengan panjang tetap, yang disebut hash, digest, atau checksum. Masukan yang sama selalu menghasilkan hash yang sama, dan perubahan sekecil apa pun menghasilkan hash yang sama sekali berbeda:
| Masukan | Hash SHA-256 |
hello | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
Hello | 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 |
hello! | ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b |
Satu huruf besar atau tanda seru mengubah setiap karakter hasilnya. Coba sendiri di Pembuat hash.
Ciri fungsi hash yang baik
- Deterministik: masukan yang sama menghasilkan hash yang sama di komputer mana pun.
- Satu arah: dari hash, Anda tidak bisa kembali ke masukannya.
- Tahan tabrakan: seharusnya praktis mustahil menemukan dua masukan berbeda dengan hash yang sama.
- Cepat dihitung untuk checksum, yang berguna, dan justru itu alasan hash cepat tidak cocok untuk kata sandi (lihat di bawah).
Hash bukan enkripsi
Enkripsi bekerja dua arah: dengan kuncinya, Anda mendapatkan kembali aslinya. Hash tidak punya kunci dan tidak bisa dibalik. Hash hanya menunjukkan apakah sesuatu cocok. Base64 lain lagi: hanya pengodean yang bisa didekode siapa saja.
Algoritma yang umum
| Algoritma | Panjang | Status |
| MD5 | 128 bit (32 karakter hex) | Jebol sejak 2004; hanya untuk kerusakan tidak disengaja |
| SHA-1 | 160 bit (40 karakter hex) | Jebol: tabrakan nyata pertama dipublikasikan pada 2017 |
| SHA-256 | 256 bit (64 karakter hex) | Aman; pilihan standar saat ini |
| SHA-512 | 512 bit (128 karakter hex) | Aman; sering lebih cepat daripada SHA-256 di komputer 64-bit |
Berikut kata hello dalam masing-masing:
- MD5:
5d41402abc4b2a76b9719d911017c592 - SHA-1:
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d - SHA-256:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Arti "jebol" untuk MD5 dan SHA-1
Pada MD5 dan SHA-1, peneliti bisa sengaja membuat dua file berbeda dengan hash yang sama. Penyerang bisa menukar file aman dengan file berbahaya yang checksum-nya cocok, atau memalsukan dokumen yang ditandatangani. Keduanya tidak bisa dibalik, dan kerusakan tidak disengaja tetap mengubah hash, jadi checksum MD5 masih bisa mendeteksi unduhan yang terputus. Hanya saja, checksum itu tidak bisa membuktikan bahwa tidak ada yang mengutak-atik file.
SHA-256 dan SHA-512 termasuk keluarga SHA-2, yang dipublikasikan pada 2001, dan belum ada serangan praktis yang diketahui terhadap keduanya. SHA-3, distandarkan pada 2015, adalah rancangan berbeda yang siap sebagai cadangan.
Tempat hash dipakai
- Memeriksa unduhan: pengembang memublikasikan SHA-256 file mereka; jika punya Anda cocok, filenya identik. Lihat Cara memeriksa checksum.
- Tanda tangan digital dan sertifikat HTTPS: dokumen atau sertifikat di-hash, lalu hash-nya yang ditandatangani.
- Git: setiap commit dan file dikenali lewat hash-nya. Git lama memakai SHA-1 dan kini juga mendukung SHA-256.
- Bitcoin dan blockchain lain: blok-bloknya dirantai dengan SHA-256.
- Menemukan file duplikat: dua file dengan SHA-256 yang sama adalah file yang sama.
Hash dan kata sandi
Situs seharusnya tidak pernah menyimpan kata sandi Anda, hanya hash-nya; saat login, situs meng-hash yang Anda ketik lalu membandingkannya. Namun SHA-256 bukan alat yang tepat untuk ini: terlalu cepat, sehingga penyerang dengan database yang bocor bisa mencoba miliaran tebakan per detik. Kata sandi butuh hashing lambat dengan salt yang dirancang untuk itu, seperti bcrypt, scrypt, atau Argon2. Salt adalah nilai acak yang ditambahkan ke setiap kata sandi sebelum di-hash, agar dua orang dengan kata sandi yang sama mendapat hash yang berbeda.
Coba sendiri
Pembuat hash menghitung MD5, SHA-1, SHA-256, SHA-384, dan SHA-512 dari teks atau file apa pun sekaligus, di browser Anda, dan membandingkannya dengan checksum yang dipublikasikan.