Fungsi hash konvensional dan hash kriptografi adalah sama: deterministik. Menjadi deterministik berarti sepanjang input tidak berubah, algoritma hashing akan selalu menghasilkan output yang sama (atau dikenal dengan digest atau hash).
Pada khususnya, algoritma hashing dari mata uang kripto didesain sebagai fungsi satu arah, artinya algoritma ini tidak bisa dibalikkan dengan mudah tanpa waktu penghitungan dan sumber daya yang sangat besar. Dengan kata lain, sangat mudah untuk menghasilkan output dari input, tetapi relatif sulit untuk melakukan sebaliknya (menghasilkan input hanya dari output). Secara umum, semakin sulit untuk menemukan input, maka akan semakin aman algorita hashing.
Bagaimana cara kerja fungsi hash?
Fungsi hash yang berbeda akan menghasilkan output-output yang berbeda ukuran, tetapi kemungkinan ukuran output dari masing-masing algoritma hashing selalu konstan. Sebagai contoh, algoritma SHA-256 hanya akan menghasilkan output-output 256 bit, sedangkan SHA-1 selalu akan menghasilkan digest 160-bit.
Untuk menggambarkannya, mari kita menjalankan kata “Binance” dan “binance” melalui algoritma hashing SHA-256 (yang digunakan di Bitcoin).
SHA-265 | |
Input | Output (256 bit) |
Binance | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 |
binance | 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2 |
Catat bahwa perubahan kecil (Ukuran huruf pertama) menghasilkan nilai hash yang sangat berbeda. Tetapi karena kita menggunakan SHA-256, output akan selalu memiliki ukuran tetap 256-bit (atau 64 karakter) - tanpa melihat ukuran input. Juga, tidak masalah berapa kali kita menjalankan kedua kata ini melalui algoritma, kedua output akan selalu konstan.
Sebaliknya, jika kita menjalankan input-input melalui algoritma hashing SHA-1, kita akan memiliki hasi di bawah ini:
SHA-1 | |
Input | Output (160 bit) |
Binance | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 |
binance | e58605c14a76ff98679322cca0eae7b3c4e08936 |
Secara khusus, akronim SHA memiliki arti Secure Hash Algorithms. Ini mengacu pada sebuah set fungsi hash kriptografi yang mencakup algoritma SHA-0 dan SHA-1 bersamaan dengan grup SHA-2 dan SHA-3. SHA-256 adalah bagian dari grup SHA-2, bersamaan dengan SHA-512 dan varian-varian lainnya. Saat ini, hanya grup SHA-2 dan SHA-3 yang dianggap aman.
Mengapa hal ini penting?
Kemampuan hash yang sebenarnya terlihat ketika menangani informasi dengan jumlah yang sangat besar. Sebagai contoh, seseorang dapat menjalankan berkas yang besar atau set data melalui fungsi hash dan kemudian menggunakan outputnya untuk memverifikasi keakuratan dan integritas data dengan cepat. Ini memungkinkan dikarenakan oleh sifat alami fungsi-fungsi hash yang deterministik: input selalu menghasilkan output (hash) yang sederhana dan ringkas. Teknik seperti ini menghilangkan kebutuhan untuk menyimpan dan “mengingat” data dengan jumlah yang sangat besar.
Secara khusus, hashing sangat berguna dalam teknologi blockchain. Blockchain Bitcoin mempunyai beberapa pengerjaan yang melibatkan hashing, sebagian besar ada dalam proses penambangan. Bahkan, hampir semua protokol mata uang kripto mengandalkan hashing untuk menyambungkan grup-grup transaksi yang ringkas ke dalam blok-blok, dan juga untuk menghasilkan tautan-tautan kriptografi di antara masing-masing blok, membuat blockchain secara efektif.
Fungsi-fungsi hash kriptografi
Sekali lagi, sebuah fungsi hash yang menyebarkan teknik-teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, melanggar fungsi hash kriptografi membutuhkan segudang upaya brute-force. Jika seseorang ingin “membalik” fungsi hash kriptografi, maka dia harus menebak apa inputnya dengan cara trial and error sampai output yang sesuai dihasilkan. Namun, ada juga kemungkinan input yang berbeda menghasilkan output yang persis sama, maka dalam kasus ini, “benturan” terjadi.
Secara teknis, sebuah fungsi hash kriptografi harus mengikuti tiga sifat agar bisa dianggap aman dan efektif. Kita dapat menggambarkan ini sebagai collision resistance, preimage resistance, dan preimage resistance kedua.
Sebelum mendiskusikan masing-masing sifat, mari kita ringkas logika ini dalam tiga kalimat pendek.
Collision resistance: tidak mudah menemukan dua input yang berbeda yang menghasilkan hash yang sama sebagai output.
Preimage resistance: tidak mudah untuk“membalikkan” fungsi hash (menemukan input dari output yang tersedia).
Preimage resistance kedua: tidak mudah menemukan input kedua yang berbenturan dengan input yang ditentukan.
Collision resistance
Seperti telah disebutkan, sebuah collision/benturan terjadi ketika input-input yang berbeda menghasilkan hash yang sama. Jadi, fungsi hash dianggap tahan benturan sampai saat dimana seseorang menemukan sebuah benturan. Harap dicatat bahwa benturan-benturan ini akan selalu ada untuk setiap fungsi hash karena kemungkinan input tidak terbatas, sedangkan kemungkinan output terbatas.
Dengan kata lain, sebuah fungsi hash dikatakan tahan benturan ketika kemungkinan menemukan benturan itu sangat kecil, karena membutuhkan jutaan tahun penghitungan. Jadi terlepas dari kenyataan bahwa tidak ada fungsi hash bebas benturan, beberapa darinya sangat kuat dan dapat dianggap tahan (contoh: SHA-256).
Preimage resistance
Sifat preimage resistance berhubungan dengan konsep fungsi-fungsi satu arah. Sebuah fungsi hash dianggap preimage-resistant ketika kemungkinan seseorang menemukan input yang dihasilkan dari output tertentu sangat kecil.
Harap dicatat bahwa sifat ini berbeda dengan yang sebelumnya karena penyerang akan mencoba menebak apa inputnya dengan melihat output yang tersedia. Sebuah benturan, di sisi lain, terjadi ketika seseorang menemukan dua input yang berbeda yang menghasilkan output yang sama, tetapi tidak mempermasalahkan input mana yang digunakan.
Sifat preimage resistance sangat berguna untuk melindungi data karena satu hash sederhana dari pesan dapat membuktikan keaslian, tanpa harus membuka informasi. Pada praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash-hash yang dihasilkan dari kata sandi daripada kata sandi dalam teks biasa.
Preimage resistance kedua
Sederhananya, kita dapat mengatakan bahwa Preimage resistance kedua ini berada di antara kedua sifat yang sudah dibahas sebelumnya. Serangan preimage kedua terjadi ketika seseorang mampu menemukan input tertentu yang menghasilkan output yang sama dengan output lain dari input yang berbeda yang sudah diketahui.
Dengan kata lain, serangan preimage kedua adalah dengan menemukan benturan, tetapi alih-alih mencari dua input acak yang menghasilkan hash yang sama, mereka mencari input yang menghasilkan hash yang sama yang dihasilkan oleh input spesifik lainnya.
Karena itu, setiap fungsi hash yang tahan benturan adalah juga tahan serangan preimage kedua. Namun, seseorang masih dapat melakukan serangan preimage pada fungsi yang tahan benturan karena ini juga berarti menemukan input tunggal dari output tunggal.
Penambangan
Dalam hal ini, tingkat hash mewakili berapa besar energi komputer yang dipakai untuk penambangan Bitcoin. Jika tingkat hash jaringan meningkat, protokol Bitcoin akan menyesuaikan tingkat kesulitan menambang secara otomatis, sehingga rata-rata waktu yang dibutuhkan untuk menambang satu blok tersisa mendekati 10 menit. Sebaliknya, jika beberapa penambang memutuskan untuk berhenti menambang, ini menyebabkan tingkat hash menurun secara drastis, tingkat kesulitan menambang akan menyesuaikan, sehingga menjadi lebih mudah (sampai waktu blok rata-rata kembali ke 10 menit).
Harap dipahami bahwa para penambang tidak harus menemukan benturan (collision) karena ada banyak hash yang dapat mereka hasilkan sebagai output yang valid (dimulai dengan sejumlah tertentu angka nol). Jadi ada beberapa solusi yang memungkinkan pada blok tertentu, dan para penambang hanya perlu menemukan satu solusi tergantung pada threshold yang ditentukan oleh tingkat kesulitan menambang.
Karena penambangan Bitcoin adalah pekerjaan yang membutuhkan banyak biaya, para penambang tidak memiliki alasan untuk mengakali sistim, ini akan menyebabkan kerugian finansial yang signifikan. Semakin banyak penambang yang bergabung di blockchain, maka itu akan semakin besar dan kuat juga.
Ide penutup
Tidak diragukan lagi bahwa fungsi-fungsi hash adalah alat yang sangat penting dalam ilmu komputer, terutama ketika berhadapan dengan data dalam jumlah yang besar. Ketika digabungkan dengan kriptografi, algoritma hashing dapat menjadi serba guna, menawarkan keamanan dan keaslian dalam berbagai cara. Dengan demikian, fungsi-fungsi hash kriptografi sangat penting untuk hampir semua jaringan mata uang kripto, jadi dengan memahami sifat-sifat dan cara kerjanya adalah sesuatu yang sangat berguna untuk setiap orang yang tertarik dengan teknologi blockchain.