Hashing mengacu pada proses menghasilkan keluaran berukuran tetap dari masukan berukuran variabel. Hal ini dilakukan melalui penggunaan 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 mampu mencapai tingkat integritas dan keamanan data yang signifikan.

Fungsi hash konvensional dan kriptografi bersifat deterministik. Bersifat deterministik artinya selama masukan tidak berubah, algoritma hashing akan selalu menghasilkan keluaran yang sama (dikenal juga dengan sebutan intisari atau hash).

Biasanya, algoritme hashing mata uang kripto dirancang sebagai fungsi satu arah, yang berarti algoritme tersebut tidak dapat dikembalikan dengan mudah tanpa waktu dan sumber daya komputasi yang besar. Dengan kata lain, cukup mudah untuk menghasilkan keluaran dari masukan tersebut, namun relatif sulit untuk mencapai arah yang berlawanan (untuk menghasilkan masukan dari keluaran saja). Secara umum, semakin sulit menemukan masukan, algoritma hashing dianggap semakin aman.


Bagaimana cara kerja fungsi hash?

Fungsi hash yang berbeda akan menghasilkan output dengan ukuran berbeda, namun kemungkinan ukuran output untuk setiap algoritma hashing selalu konstan. Misalnya, algoritma SHA-256 hanya dapat menghasilkan keluaran sebesar 256 bit, sedangkan SHA-1 akan selalu menghasilkan intisari 160-bit.

Sebagai ilustrasi, mari kita jalankan kata “Binance” dan “binance” melalui algoritma hashing SHA-256 (yang digunakan dalam Bitcoin).

SHA-256

Memasukkan

Keluaran (256 bit)

binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Perhatikan bahwa perubahan kecil (huruf pertama) menghasilkan nilai hash yang sangat berbeda. Namun karena kita menggunakan SHA-256, output akan selalu memiliki ukuran tetap 256-bit (atau 64 karakter) - berapa pun ukuran inputnya. Selain itu, tidak peduli berapa kali kita menjalankan kedua kata tersebut melalui algoritme, kedua keluarannya akan tetap konstan.

Sebaliknya, jika kita menjalankan input yang sama melalui algoritma hashing SHA-1, kita akan mendapatkan hasil sebagai berikut:

SHA-1

Memasukkan

Keluaran (160 bit)

binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Khususnya, akronim SHA adalah singkatan dari Secure Hash Algorithms. Ini mengacu pada serangkaian fungsi hash kriptografi yang mencakup algoritma SHA-0 dan SHA-1 bersama dengan grup SHA-2 dan SHA-3. SHA-256 adalah bagian dari grup SHA-2, bersama dengan SHA-512 dan varian lainnya. Saat ini, hanya grup SHA-2 dan SHA-3 yang dianggap aman.


Mengapa hal itu penting?

Fungsi hash konvensional memiliki beragam kasus penggunaan, 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 penting dari proses penambangan dan juga berperan dalam pembuatan alamat dan kunci baru.

Kekuatan sebenarnya dari hashing muncul ketika berhadapan dengan informasi dalam jumlah besar. Misalnya, seseorang dapat menjalankan file atau kumpulan data besar melalui fungsi hash dan kemudian menggunakan outputnya untuk memverifikasi keakuratan dan integritas data dengan cepat. Hal ini dimungkinkan karena sifat deterministik dari fungsi hash: masukan akan selalu menghasilkan keluaran (hash) yang disederhanakan dan diringkas. Teknik seperti ini menghilangkan kebutuhan untuk menyimpan dan “mengingat” data dalam jumlah besar.

Hashing sangat berguna dalam konteks teknologi blockchain. Blockchain Bitcoin memiliki beberapa operasi yang melibatkan hashing, sebagian besar dalam proses penambangan. Faktanya, hampir semua protokol mata uang kripto mengandalkan hashing untuk menghubungkan dan memadatkan kelompok transaksi menjadi blok-blok, dan juga untuk menghasilkan tautan kriptografi antara setiap blok, yang secara efektif menciptakan sebuah blockchain.


Fungsi hash kriptografi

Sekali lagi, fungsi hash yang menyebarkan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, memecahkan fungsi hash kriptografi memerlukan banyak sekali upaya brute force. Agar seseorang dapat “mengembalikan” fungsi hash kriptografi, mereka perlu menebak masukan apa yang ada dengan cara coba-coba hingga keluaran yang sesuai dihasilkan. Namun, ada juga kemungkinan input yang berbeda menghasilkan output yang sama persis, sehingga terjadi “tabrakan”.

Secara teknis, fungsi hash kriptografi harus mengikuti tiga properti agar dianggap aman secara efektif. Kita dapat menggambarkannya sebagai resistensi tabrakan, resistensi preimage, dan resistensi preimage kedua.

Sebelum membahas setiap properti, mari kita rangkum logikanya dalam tiga kalimat pendek.

  • Ketahanan benturan: tidak mungkin menemukan dua masukan berbeda yang menghasilkan hash yang sama dengan keluaran.

  • Resistensi gambar awal: tidak mungkin untuk “mengembalikan” fungsi hash (menemukan masukan dari keluaran tertentu).

  • Resistensi gambar awal kedua: tidak mungkin menemukan masukan kedua yang bertabrakan dengan masukan tertentu.


Resistensi tabrakan

Seperti disebutkan, tabrakan terjadi ketika input berbeda menghasilkan hash yang sama persis. Dengan demikian, fungsi hash dianggap tahan benturan hingga seseorang menemukan tabrakan. Perhatikan bahwa tabrakan akan selalu ada untuk fungsi hash apa pun karena kemungkinan masukannya tidak terbatas, sedangkan kemungkinan keluarannya terbatas.

Dengan kata lain, fungsi hash bersifat tahan benturan ketika kemungkinan menemukan tumbukan sangat rendah sehingga memerlukan komputasi jutaan tahun. Jadi, meskipun tidak ada fungsi hash yang bebas tabrakan, beberapa di antaranya cukup kuat untuk dianggap tahan (misalnya, SHA-256).

Di antara berbagai algoritma SHA, grup SHA-0 dan SHA-1 tidak lagi aman karena ditemukan tabrakan. Saat ini, grup SHA-2 dan SHA-3 dianggap tahan terhadap benturan.


Resistensi pra-gambar

Sifat resistensi pragambar berkaitan dengan konsep fungsi satu arah. Fungsi hash dianggap tahan terhadap preimage ketika kemungkinan seseorang menemukan masukan yang menghasilkan keluaran tertentu sangatlah kecil.

Perhatikan bahwa properti ini berbeda dari yang sebelumnya karena penyerang akan mencoba menebak masukan dengan melihat keluaran yang diberikan. Sebaliknya, tabrakan terjadi ketika seseorang menemukan dua masukan berbeda yang menghasilkan keluaran yang sama, namun tidak menjadi masalah masukan mana yang digunakan.

Properti resistensi preimage sangat berharga untuk melindungi data karena hash sederhana dari sebuah pesan dapat membuktikan keasliannya, tanpa perlu mengungkapkan informasinya. Dalam praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash yang dihasilkan dari kata sandi, bukan kata sandi dalam teks biasa.


Resistensi preimage kedua

Untuk menyederhanakannya, kita dapat mengatakan bahwa resistansi preimage kedua berada di antara dua properti lainnya. Serangan second-preimage terjadi ketika seseorang dapat menemukan masukan tertentu yang menghasilkan keluaran yang sama dari masukan lain yang sudah mereka ketahui.

Dengan kata lain, serangan second-preimage melibatkan penemuan tabrakan, namun alih-alih mencari dua masukan acak yang menghasilkan hash yang sama, mereka mencari masukan yang menghasilkan hash yang sama dengan yang dihasilkan oleh masukan spesifik lainnya.

Oleh karena itu, fungsi hash apa pun yang tahan terhadap benturan juga tahan terhadap serangan preimage kedua, karena serangan preimage kedua akan selalu menyiratkan benturan. Namun, seseorang masih dapat melakukan serangan preimage pada fungsi tahan tabrakan karena ini berarti menemukan satu masukan dari satu keluaran.


Pertambangan

Ada banyak langkah dalam penambangan Bitcoin yang melibatkan fungsi hash, seperti memeriksa saldo, menghubungkan input dan output transaksi, dan melakukan hashing transaksi dalam satu blok untuk membentuk Pohon Merkle. Namun salah satu alasan utama mengapa blockchain Bitcoin aman adalah kenyataan bahwa penambang perlu melakukan berbagai operasi hashing agar akhirnya dapat menemukan solusi valid untuk blok berikutnya.

Secara khusus, seorang penambang harus mencoba beberapa masukan berbeda saat membuat nilai hash untuk blok kandidatnya. Intinya, mereka hanya akan dapat memvalidasi blok mereka jika mereka menghasilkan hash keluaran yang dimulai dengan sejumlah nol tertentu. Jumlah angka nol inilah yang menentukan tingkat kesulitan penambangan, dan jumlahnya bervariasi sesuai dengan tingkat hash yang dikhususkan untuk jaringan.

Dalam hal ini, tingkat hash menunjukkan berapa banyak daya komputer yang diinvestasikan dalam penambangan Bitcoin. Jika tingkat hash jaringan meningkat, protokol Bitcoin akan secara otomatis menyesuaikan kesulitan penambangan sehingga waktu rata-rata yang dibutuhkan untuk menambang satu blok tetap mendekati 10 menit. Sebaliknya, jika beberapa penambang memutuskan untuk menghentikan penambangan, menyebabkan tingkat hash turun secara signifikan, kesulitan penambangan akan disesuaikan, sehingga lebih mudah untuk menambang (hingga waktu blok rata-rata kembali ke 10 menit).

Perhatikan bahwa penambang tidak perlu menemukan tabrakan karena ada beberapa hash yang dapat mereka hasilkan sebagai keluaran yang valid (dimulai dengan sejumlah nol tertentu). Jadi ada beberapa kemungkinan solusi untuk blok tertentu, dan penambang hanya perlu menemukan salah satunya - sesuai dengan ambang batas yang ditentukan oleh kesulitan penambangan.

Karena penambangan Bitcoin adalah tugas yang memakan banyak biaya, para penambang tidak punya alasan untuk menipu sistem karena akan menyebabkan kerugian finansial yang signifikan. Semakin banyak penambang yang bergabung dengan blockchain, semakin besar dan kuat blockchain tersebut.


Tidak ada keraguan bahwa fungsi hash adalah alat penting dalam ilmu komputer, terutama ketika menangani data dalam jumlah besar. Jika dikombinasikan dengan kriptografi, algoritme hashing bisa sangat serbaguna, menawarkan keamanan dan autentikasi dalam berbagai cara. Oleh karena itu, fungsi hash kriptografi sangat penting untuk hampir semua jaringan mata uang kripto, sehingga memahami properti dan mekanisme kerjanya tentu sangat membantu bagi siapa pun yang tertarik dengan teknologi blockchain.