Hashing mengacu pada proses menghasilkan keluaran berukuran tetap dari masukan berukuran variabel. Hal ini dilakukan dengan menggunakan rumus matematika yang dikenal sebagai fungsi hash (diimplementasikan sebagai algoritma hashing).
Meskipun tidak semua fungsi hash melibatkan penggunaan kriptografi, fungsi hash kriptografi merupakan inti dari mata uang kripto. Berkat mereka, blockchain dan sistem terdistribusi lainnya dapat mencapai tingkat integritas dan keamanan data yang signifikan.
Fungsi hash normal dan kriptografi bersifat deterministik. Determinisme artinya selama data masukan tidak berubah, algoritma hashing akan selalu menghasilkan hasil yang sama (dikenal juga sebagai intisari atau hash).
Algoritme hashing mata uang kripto biasanya dirancang sebagai fungsi satu arah, yang berarti fungsi tersebut tidak dapat dibalik tanpa banyak waktu dan sumber daya komputasi. Dengan kata lain, cukup mudah untuk menghasilkan keluaran dari suatu masukan, namun relatif sulit untuk melakukan sebaliknya (menghasilkan masukan hanya dari suatu keluaran). Secara umum, semakin sulit menemukan masukan, algoritma hashing dianggap semakin aman.
Bagaimana cara kerja fungsi hash?
Fungsi hash yang berbeda akan menghasilkan keluaran dengan ukuran berbeda, namun kemungkinan ukuran keluaran dari setiap algoritma hashing selalu konstan. Misalnya algoritma SHA-256 hanya dapat menghasilkan keluaran 256-bit, sedangkan SHA-1 akan selalu menghasilkan intisari 160-bit.
Sebagai ilustrasi, mari kita lewati kata "Binance" dan "binance" melalui algoritma hashing SHA-256 (yang digunakan dalam Bitcoin).
Perhatikan bahwa sedikit perubahan (kasus huruf pertama) menghasilkan nilai fungsi hash yang sangat berbeda. Namun karena kita menggunakan SHA-256, keluarannya akan selalu berukuran tetap yaitu 256 bit (atau 64 karakter) berapa pun ukuran masukannya. Selain itu, tidak peduli berapa kali kita menjalankan kedua kata tersebut melalui algoritme, kedua keluarannya akan tetap konstan.
Dan jika kita meneruskan input yang sama melalui algoritma hashing SHA-1, kita mendapatkan hasil sebagai berikut:
Menariknya, singkatan SHA adalah singkatan dari Secure Hash Algorithms (algoritma enkripsi aman). Ini adalah sekumpulan fungsi hash kriptografi yang mencakup algoritma SHA-0 dan SHA-1, serta grup SHA-2 dan SHA-3. SHA-256 adalah bagian dari keluarga SHA-2, bersama dengan SHA-512 dan varian lainnya. Saat ini, hanya grup SHA-2 dan SHA-3 yang dianggap aman.
Apa pentingnya teknologi ini?
Fungsi hash konvensional memiliki kegunaan yang luas, termasuk pencarian database, analisis file besar, dan manajemen data. Di sisi lain, fungsi hash kriptografi banyak digunakan dalam aplikasi keamanan informasi seperti otentikasi pesan dan sidik jari digital. Terkait Bitcoin, fungsi hash kriptografi merupakan bagian integral dari proses penambangan dan berperan dalam menghasilkan alamat dan kunci baru.
Kekuatan sebenarnya dari hashing terungkap saat bekerja dengan informasi dalam jumlah besar. Misalnya, Anda dapat menjalankan file atau kumpulan data besar melalui fungsi hash dan kemudian menggunakan outputnya untuk memeriksa keakuratan dan integritas data dengan cepat. Hal ini dimungkinkan karena sifat deterministik dari fungsi hash: masukan selalu menghasilkan keluaran yang disederhanakan dan dikompresi (hash). Metode ini menghilangkan kebutuhan untuk menyimpan dan "menghafal" data dalam jumlah besar.
Hashing sangat berguna dalam konteks teknologi blockchain. Blockchain Bitcoin memiliki beberapa operasi yang terkait dengan hashing, yang sebagian besar dilakukan dalam proses penambangan. Faktanya, hampir semua protokol mata uang kripto mengandalkan hashing untuk menghubungkan dan menggabungkan kelompok transaksi ke dalam blok, dan untuk membuat tautan kriptografi antara setiap blok, sehingga menciptakan blockchain.
Fungsi hash kriptografi
Sekali lagi, fungsi hash yang menggunakan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, memecahkan fungsi hash kriptografi memerlukan banyak upaya brute force. Untuk "membuka" fungsi hash kriptografi, Anda perlu memilih masukan melalui coba-coba hingga diperoleh keluaran yang sesuai. Namun, ada juga kemungkinan bahwa input yang berbeda akan menghasilkan hasil yang sama, sehingga terjadi “tabrakan”.
Secara teknis, fungsi hash kriptografi harus memenuhi tiga properti agar dianggap aman. Kita dapat menggambarkannya sebagai: ketahanan terhadap tabrakan, dan ketahanan terhadap serangan dalam menemukan prototipe pertama dan kedua.
Sebelum menjelaskan setiap properti, mari kita rangkum logikanya dalam tiga kalimat pendek.
Resistensi tabrakan: ketidakmungkinan menemukan dua input berbeda yang menghasilkan hash yang sama.
Kekokohan untuk menemukan pratinjau pertama: Tidak dapat "membalikkan" fungsi hash (menemukan masukan melalui keluaran tertentu).
Resistensi untuk menemukan contoh kedua: Ketidakmampuan menemukan input kedua yang memiliki hash yang sama dengan input pertama.
Resistensi tabrakan
Seperti disebutkan sebelumnya, tabrakan terjadi ketika input berbeda menghasilkan hash yang sama. Fungsi hash kemudian dianggap tahan benturan sampai seseorang menemukan tabrakan tersebut. Perhatikan bahwa tabrakan akan selalu ada untuk fungsi hash mana pun karena jumlah masukan yang tidak terbatas dan jumlah keluaran yang terbatas.
Oleh karena itu, fungsi hash bersifat tahan benturan ketika kemungkinan mendeteksi tabrakan sangat kecil sehingga memerlukan komputasi jutaan tahun. Oleh karena itu, meskipun tidak ada fungsi hash yang bebas tabrakan, beberapa di antaranya sangat kuat sehingga dapat dianggap stabil (misalnya SHA-256).
Di antara algoritma SHA yang berbeda, grup SHA-0 dan SHA-1 tidak lagi aman karena tabrakan telah terdeteksi. Saat ini, hanya grup SHA-2 dan SHA-3 yang dianggap tahan benturan.
Resistensi untuk menemukan prototipe pertama
Sifat ini erat kaitannya dengan konsep fungsi satu sisi. Fungsi hash dianggap kuat untuk menemukan pratinjau pertama selama kemungkinannya sangat rendah bahwa seseorang dapat menemukan masukan menggunakan keluaran yang dihasilkan.
Perhatikan bahwa properti ini berbeda dari yang sebelumnya karena penyerang perlu menebak masukan berdasarkan keluaran tertentu. Tabrakan semacam ini terjadi ketika seseorang menemukan dua masukan berbeda yang menghasilkan keluaran yang sama, tanpa memperhatikan masukan tertentu yang digunakan.
Properti proof-of-first-look sangat berharga untuk keamanan data, karena hash sederhana dari sebuah pesan dapat membuktikan keasliannya tanpa perlu membocorkan informasi tambahan. Dalam praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash yang dihasilkan dari kata sandi alih-alih menggunakannya dalam format teks.
Resistensi untuk menemukan prototipe kedua
Jenis stabilitas ini berada di antara dua sifat sebelumnya. Serangan menemukan prototipe kedua terdiri dari menemukan masukan spesifik yang memungkinkan untuk menghasilkan keluaran yang telah dihasilkan dengan menggunakan masukan lain yang telah diketahui sebelumnya.
Dengan kata lain, serangan pencarian kedua melibatkan deteksi tabrakan, namun alih-alih menemukan dua masukan acak yang menghasilkan hash yang sama, serangan tersebut bertujuan untuk menemukan masukan yang dapat mereproduksi hash yang telah dihasilkan oleh masukan lain.
Oleh karena itu, fungsi hash apa pun yang tahan terhadap benturan juga tahan terhadap serangan pencarian bilangan prima kedua, karena bilangan prima kedua selalu membutuhkan tumbukan. Namun, masih mungkin untuk melakukan serangan pencarian pertama dalam fungsi toleransi tabrakan, karena ini melibatkan pencarian satu masukan dengan satu keluaran.
Pertambangan
Ada banyak langkah dalam penambangan Bitcoin yang dilakukan menggunakan fungsi hash. Ini adalah pemeriksaan saldo, menghubungkan input dan output transaksi, dan hashing semua transaksi dalam satu blok untuk membentuk pohon Merkle. Namun salah satu alasan utama mengapa blockchain Bitcoin aman adalah karena penambang harus melakukan operasi hashing sebanyak mungkin untuk akhirnya menemukan solusi yang tepat untuk blok berikutnya.
Seorang penambang harus menggunakan beberapa input berbeda saat membuat hash untuk kandidat bloknya. Blok hanya dapat diverifikasi jika keluaran yang dihasilkan dengan benar dalam bentuk hash dimulai dengan sejumlah nol tertentu. Jumlah angka nol menentukan tingkat kesulitan penambangan dan bervariasi tergantung pada hashrate jaringan.
Dalam hal ini, hashrate adalah ukuran kekuatan komputer yang Anda investasikan dalam penambangan Bitcoin. Jika hashrate mulai meningkat, protokol Bitcoin akan secara otomatis menyesuaikan tingkat kesulitan penambangan sehingga rata-rata waktu yang diperlukan untuk menambang satu blok adalah sekitar 10 menit. Jika beberapa penambang memutuskan untuk menghentikan penambangan, yang mengakibatkan penurunan hashrate secara signifikan, kesulitan penambangan akan disesuaikan untuk memudahkan komputasi sementara (sampai waktu rata-rata pembentukan blok kembali ke 10 menit).
Perhatikan bahwa penambang tidak perlu mencari tabrakan karena ada beberapa hash yang dapat mereka hasilkan sebagai keluaran valid (dimulai dengan sejumlah nol tertentu). Oleh karena itu, ada beberapa kemungkinan solusi untuk blok tertentu, dan penambang harus menemukan hanya satu solusi - sesuai dengan ambang batas yang ditentukan oleh tingkat kesulitan penambangan.
Karena penambangan Bitcoin adalah tugas yang mahal, para penambang tidak mempunyai motivasi untuk menipu sistem karena akan mengakibatkan kerugian finansial yang besar. Oleh karena itu, semakin banyak penambang yang bergabung dengan blockchain, maka blockchain tersebut akan semakin besar dan kuat.
Hasil
Tidak ada keraguan bahwa fungsi hash adalah salah satu alat utama ilmu komputer, terutama ketika bekerja dengan data dalam jumlah besar. Jika dikombinasikan dengan kriptografi, algoritma hashing bisa sangat berguna, memberikan keamanan dan otentikasi dalam berbagai cara. Oleh karena itu, fungsi hash kriptografi sangat penting untuk hampir semua jaringan mata uang kripto, dan memahami properti serta mekanisme kerjanya tentu berguna bagi siapa pun yang tertarik dengan teknologi blockchain.

