Hashing mengacu pada proses membuat keluaran berukuran tetap dari masukan berukuran variabel. Hal ini dilakukan melalui penggunaan rumus matematika yang dikenal sebagai fungsi hash (diimplementasikan sebagai algoritma hash). 

Meskipun tidak semua fungsi hash menggunakan kriptografi, fungsi hash kriptografi adalah inti dari mata uang digital. Berkat mereka, blockchain dan sistem terdistribusi lainnya mampu mencapai tingkat integritas dan keamanan data yang signifikan.

Baik fungsi hash tradisional maupun kriptografi bersifat deterministik. Ini berarti bahwa selama input (masukan) tidak berubah, algoritma hash akan selalu menghasilkan output yang sama (juga dikenal sebagai Digest atau Hash).

Algoritma hashing untuk mata uang digital biasanya dirancang sebagai fungsi satu arah, yang berarti bahwa tidak dapat dengan mudah dibalik tanpa sejumlah besar waktu dan sumber daya komputasi. Dengan kata lain, sangat mudah untuk mendapatkan output dari input, tetapi relatif sulit untuk melakukan sebaliknya (mendapatkan input dari output saja). Secara umum, semakin sulit menemukan input, semakin aman algoritma hash tersebut.


Bagaimana cara kerja fungsi hash?

Fungsi hash yang berbeda menghasilkan output dengan ukuran yang berbeda, tetapi ukuran output yang mungkin untuk setiap algoritma hashing selalu tetap. Misalnya, algoritma SHA-256 hanya dapat menghasilkan output dengan ukuran 256 bit, sementara SHA-1 selalu menghasilkan ringkasan yang terdiri dari 160 bit.

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

SHA-256

Input

Output (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Perhatikan bahwa perubahan kecil (dalam bentuk 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) terlepas dari ukuran input. Juga tidak masalah berapa kali kita menjalankan kedua kata tersebut melalui algoritma karena kedua output akan tetap sama.

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

SHA-1

Input

Output (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Perlu dicatat bahwa istilah SHA adalah singkatan dari algoritma Secure Hash. Ini merujuk pada sekumpulan fungsi hash kriptografi yang mencakup algoritma SHA-0 dan SHA-1 bersama dengan kelompok SHA-2 dan SHA-3. SHA-256 merupakan bagian dari kelompok SHA-2 selain SHA-512 dan variasi lainnya. Saat ini, hanya kelompok SHA-2 dan SHA-3 yang dianggap aman.


Mengapa ini penting?

Fungsi hash tradisional memiliki berbagai macam kasus penggunaan termasuk pencarian dalam database, analisis file besar, dan manajemen data. Di sisi lain, fungsi hash kriptografi digunakan secara luas dalam aplikasi keamanan informasi seperti otentikasi pesan dan sidik jari digital. Untuk Bitcoin, fungsi hash kriptografi adalah bagian penting dari proses penambangan dan juga berperan dalam pembuatan alamat dan kunci baru.

Kekuatan sejati dari hashing datang ketika berhadapan dengan jumlah informasi yang sangat besar. Misalnya, file besar atau kumpulan data dapat diproses melalui fungsi hash dan kemudian hasilnya digunakan untuk memverifikasi dengan cepat akurasi dan integritas data. Ini dimungkinkan karena sifat deterministik dari fungsi hash: di mana input selalu menghasilkan output yang disederhanakan dan terkonsentrasi (hash). Teknik ini menghilangkan kebutuhan untuk menyimpan dan mengingat jumlah data yang besar.

Hashing sangat berguna dalam konteks teknologi blockchain. Blockchain Bitcoin memiliki banyak operasi yang melibatkan hashing, sebagian besar terjadi dalam proses penambangan. Faktanya, hampir semua protokol mata uang digital bergantung pada hashing untuk menghubungkan dan mengkonsolidasikan kumpulan transaksi dalam blok. Juga untuk membuat tautan terenkripsi antara setiap blok, yang secara efektif menciptakan blockchain.


Fungsi hash kriptografi

Sekali lagi, fungsi hash (hashing) yang menggunakan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Untuk meretas fungsi hash kriptografi, diperlukan jumlah tak terhitung dari upaya serangan brute-force. Agar fungsi hash kriptografi dapat dibalik, mereka harus menebak apa inputnya melalui percobaan dan kesalahan hingga menghasilkan output yang sesuai. Namun, juga mungkin untuk menghasilkan input yang berbeda dengan output yang sama, dan dalam hal ini terjadi 'tabrakan' atau collision.

Secara teknis, fungsi hash kriptografi perlu memenuhi tiga sifat agar dapat dianggap aman secara efektif. Kami dapat menggambarkan sifat-sifat tersebut sebagai berikut: collision resistance, preimage resistance, dan second preimage resistance.

Sebelum membahas setiap sifat, mari kita ringkas logika mereka dalam tiga kalimat singkat.

  • Collision resistance (resistensi terhadap tabrakan): Tidak ada dua input berbeda yang dapat menghasilkan hash (output) yang sama.

  • Preimage resistance: Tidak mungkin 'membalikkan' fungsi hash (mencari input dari output tertentu).

  • Second-preimage resistance: Tidak mungkin menemukan input kedua yang bertabrakan dengan input tertentu.


Collision resistance

Seperti yang telah disebutkan sebelumnya, tabrakan terjadi ketika input yang berbeda menghasilkan hash yang sama persis. Oleh karena itu, fungsi hash dianggap tahan terhadap tabrakan sampai seseorang menemukan tabrakan. Perhatikan bahwa tabrakan akan selalu ada untuk fungsi hash mana pun karena input yang mungkin tidak terbatas, sedangkan output yang mungkin terbatas.

Dengan kata lain, fungsi hash dikatakan tahan terhadap tabrakan ketika kemungkinan menemukan tabrakan sangat rendah sehingga memerlukan jutaan tahun perhitungan. Oleh karena itu, meskipun tidak ada fungsi hash yang sepenuhnya bebas dari tabrakan, beberapa cukup kuat untuk dianggap tahan (misalnya SHA-256).

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


Preimage resistance

Sifat preimage resistance terkait dengan konsep fungsi satu arah. Fungsi hash dianggap preimage-resistant ketika ada kemungkinan yang sangat kecil bahwa seseorang menemukan input yang menghasilkan output tertentu.

Dengan mempertimbangkan bahwa sifat ini berbeda dari yang sebelumnya, karena seorang penyerang akan mencoba menebak apa inputnya dengan melihat output tertentu. Sebaliknya, tabrakan terjadi ketika seseorang menemukan input berbeda yang menghasilkan output yang sama, tetapi tidak masalah input mana yang digunakan.

Sifat preimage resistance sangat berharga dalam melindungi data karena hash sederhana dari pesan dapat membuktikan keasliannya tanpa perlu mengungkapkan informasi apapun. Dalam praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash yang dihasilkan dari kata sandi daripada kata sandi dalam teks biasa.


Second-preimage resistance

Untuk menyederhanakan, kita bisa mengatakan bahwa second-preimage resistance terletak di antara sifat-sifat lainnya. Serangan second-preimage terjadi ketika seseorang dapat menemukan input tertentu yang menghasilkan output yang sama dengan input lain yang sudah diketahui.

Dengan kata lain, serangan second-preimage melibatkan menemukan tabrakan, tetapi alih-alih mencari dua input acak yang menghasilkan hash yang sama sebagai output, mereka mencari input yang menghasilkan hash yang dihasilkan oleh input tertentu yang sudah dikenal.

Oleh karena itu, setiap fungsi hash yang tahan terhadap tabrakan juga tahan terhadap serangan second-preimage karena yang terakhir akan selalu berarti terjadi tabrakan. Namun, penyerang masih bisa melakukan serangan awal pada fungsi yang tahan terhadap tabrakan karena ini melibatkan menemukan satu input dari satu output.


Penambangan

Ada banyak langkah dalam proses penambangan Bitcoin yang melibatkan fungsi hash seperti memverifikasi saldo, menghubungkan input dan output dalam transaksi, dan menghash transaksi dalam blok untuk membentuk Merkle Tree. Namun, salah satu alasan utama mengapa blockchain Bitcoin aman adalah kenyataan bahwa para penambang membutuhkan jumlah tak terhitung dari hash untuk menemukan solusi yang valid untuk blok berikutnya.

Secara spesifik, penambang harus mencoba beberapa input berbeda ketika membuat nilai hash untuk blok kandidat mereka. Pada dasarnya, mereka hanya akan dapat memvalidasi blok mereka jika mereka membuat hash yang dihasilkan dimulai dengan sejumlah nol tertentu. Jumlah nol tersebut menentukan kesulitan penambangan dan bervariasi sesuai dengan tingkat hash yang ditetapkan untuk jaringan.

Dalam hal ini, tingkat hash mewakili jumlah daya komputasi yang diinvestasikan dalam penambangan Bitcoin. Jika tingkat hash jaringan meningkat, protokol Bitcoin secara otomatis akan menyesuaikan kesulitan penambangan agar waktu rata-rata yang diperlukan untuk menambang blok tetap sekitar 10 menit. Sebaliknya, jika banyak penambang memutuskan untuk berhenti menambang, yang akan menyebabkan tingkat hash menurun secara signifikan, kesulitan penambangan akan disesuaikan sehingga memudahkan proses penambangan (sampai waktu rata-rata penambangan blok kembali ke 10 menit).

Perhatikan bahwa penambang tidak perlu menemukan tabrakan karena ada banyak hash yang dapat mereka hasilkan sebagai output yang valid (dimulai dengan sejumlah nol tertentu). Oleh karena itu, ada banyak solusi yang mungkin untuk blok tertentu, dan penambang tidak perlu menemukan salah satunya sesuai dengan awalan yang ditentukan oleh kesulitan penambangan.

Karena proses penambangan Bitcoin sangat mahal, para penambang tidak memiliki alasan yang cukup untuk menipu sistem karena ini akan mengakibatkan kerugian finansial yang besar. Semakin banyak penambang yang bergabung dengan blockchain, semakin kuat.


Pemikiran Penutup

Tidak ada keraguan bahwa fungsi hash adalah alat penting dalam ilmu komputer, terutama ketika berurusan dengan jumlah data yang besar. Algoritma hash dapat menjadi sangat fleksibel ketika dikombinasikan dengan enkripsi, memberikan keamanan dan otentikasi dengan berbagai cara. Dengan demikian, fungsi hash kriptografi sangat penting untuk hampir semua jaringan mata uang digital. Oleh karena itu, memahami sifat-sifatnya dan mekanisme kerjanya pasti bermanfaat bagi siapa saja yang tertarik dengan teknologi blockchain.