Apa itu Hash?
Hash adalah fungsi matematika yang mengubah input dengan panjang yang berubah-ubah menjadi output terenkripsi dengan panjang yang tetap. Jadi, terlepas dari jumlah data asli atau ukuran file yang terlibat, hash uniknya akan selalu berukuran sama. Selain itu, hash yang aman tidak dapat “direkayasa ulang” untuk mendapatkan input dari output yang di-hash, setidaknya dengan teknologi saat ini.
Jika Anda menggunakan fungsi tertentu pada data yang sama, hash-nya akan identik, sehingga Anda dapat memvalidasi bahwa data tersebut sama (yakni, tidak diubah) jika Anda sudah mengetahui hash-nya. Fungsi yang berbeda akan menghasilkan hash yang berbeda.
Hashing sangat penting untuk keamanan mata uang kripto dan blockchain.
Cara Kerja Hash
Fungsi hash yang umum mengambil input dengan panjang variabel untuk mengembalikan output dengan panjang tetap. Fungsi hash kriptografi menggabungkan kemampuan pengiriman pesan dari fungsi hash dengan properti keamanan. Fungsi hash adalah algoritma yang menentukan bagaimana informasi dienkripsi.
Misalnya, Secure Hashing Algorithm 256 (SHA-256) menjalani proses untuk mengenkripsi input yang diterimanya dengan:
- Mengonversinya ke biner
- Membuat nilai hash
- Menginisialisasi konstanta
- Membagi data menjadi bit
- Membuat jadwal pesan
- Menjalankan loop kompresi
- Mengubah nilai akhir
Dengan menggunakan SHA-256, kata “Hello” akan menghasilkan output yang jumlah karakternya sama (64) dengan “Hello world” dan “Hello John.” Akan tetapi, hash akan sangat berbeda untuk ketiganya—perlu diingat bahwa huruf kapital juga mengubah hash:
- Hello: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
- Hello world: 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
- Hello John: a8119595d77342cc73c93697a7f70920d3f4ded5d458e31907607e997ff76868
Fungsi yang digunakan untuk menghasilkan hash bersifat deterministik, artinya fungsi ini akan menghasilkan hasil yang sama setiap kali input yang sama digunakan. Meskipun SHA 256 dapat menghasilkan output hash dalam hitungan milidetik dengan daya komputasi yang sangat sedikit, fungsi ini membuat penentuan input menjadi sulit.
Hal ini membuat hashing ideal untuk mengamankan mata uang kripto karena akan memakan waktu ribuan tahun untuk membalikkan enkripsi guna menentukan input asli dengan teknologi modern.
Fungsi hash umumnya digunakan sebagai struktur data dalam sistem komputasi untuk tugas-tugas seperti memeriksa integritas pesan dan mengautentikasi informasi. Fungsi hash kriptografi menambahkan fitur keamanan, sehingga pendeteksian isi pesan atau informasi menjadi lebih sulit.
Secara khusus, fungsi hash kriptografi menunjukkan tiga properti ini:
- Bebas benturan: Ini berarti tidak ada dua hash masukan yang berbeda yang dapat dipetakan ke hash keluaran yang sama.
- Dapat disembunyikan: Sulit untuk menebak nilai masukan untuk fungsi hash dari keluarannya.
- Harus mudah dipecahkan: Sulit untuk memilih masukan yang menyediakan keluaran yang telah ditentukan sebelumnya. Jadi, masukan harus dipilih dari distribusi yang seluas mungkin.
Karena fitur hash, hash digunakan secara luas dalam keamanan daring—mulai dari melindungi kata sandi hingga mendeteksi pelanggaran data hingga memeriksa integritas file yang diunduh.
Hashing dan Blockchain
Tulang punggung mata uang kripto adalah blockchain, yang merupakan buku besar terdistribusi secara global yang dibentuk dengan menghubungkan blok-blok (berkas) data dan informasi transaksi melalui hashing.
Blockchain hanya berisi transaksi yang divalidasi. Validasi diselesaikan dengan membandingkan hash, yang mencegah transaksi penipuan dan pengeluaran ganda.
Bitcoin Hashing
Mata uang kripto menggunakan hash dengan berbagai cara. Misalnya, penambang memecahkan masalah hash Bitcoin dengan menggunakan data dalam blok sebagai input dan menghasilkan hash.
Tujuannya adalah menghasilkan hash yang sama dengan atau kurang dari hash target jaringan. Program penambangan menyesuaikan angka variabel hingga menghasilkan hash yang kurang dari atau sama dengan hash target.
Setelah masalah terpecahkan, setiap node membandingkan header blok dengan melakukan hash dua kali dan membandingkan hasilnya dengan hash blok baru.