Apa itu Hash?
Beranda
Artikel
Apa itu Hash?

Apa itu Hash?

Tingkat Lanjut
Diterbitkan Jul 29, 2019Diperbarui Jan 31, 2023
7m
Proses Hash mengacu pada proses menghasilkan output berukuran tetap dari input berukuran berbeda. Hal ini dilakukan melalui penggunaan rumus matematika yang dikenal sebagai fungsi hash (diimplementasikan sebagai hashing  algoritma ). 
Walaupun tidak semua fungsi hash terkait dengan penggunaan  kriptografi, yang dikenal dengan fungsi kriptografi hash ada pada inti mata uang kripto. Berkat hal itu, blockchain dan sistim-sistim terdistribusi lainnya mampu mencapai level  integritas data dan keamanan yang signifikan.

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?

Fungsi-fungsi hash konvensional memiliki berbagai macam use case, termasuk pencarian basis data, analisis data berukuran besar, dan manajemen data. Di sisi lain, fungsi-fungsi hash kriptografi sangat luas dipakai di aplikasi-aplikasi keamanan informasi, seperti autentikasi pesan dan sidik jari digital. Ketika berbicara tentang Bitcoin, fungsi-fungsi hash kriptografi adalah bagian penting dari proses penambangan dan berperan pada pembuatan alamat dan kunci baru.

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).

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


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

Ada banyak langkah dalam penambangan bitcoin yang melibatkan fungsi-fungsi hash, seperti memeriksa saldo, menghubungkan input dan output transaksi, dan transaksi-transaksi hashing di dalam satu blok untuk membentuk sebuah  Merkle Tree. Tetapi satu dari alasan utama blockchain Bitcoin aman adalah fakta bahwa para penambang harus melakukan operasi hashing yang banyak sekali untuk pada akhirnya menemukan solusi yang tepat pada blok selanjutnya.
Secara khusus, seorang penambang harus mencoba beberapa input berbeda ketika membuat nilai hash untuk kandidat bloknya. Intinya, dia hanya dapat memvalidasi bloknya jika dia menghasilkan hash output yang dimulai dengan sejumlah tertentu angka nol. Jumlah angka nol menentukan kesulitan menambang, dan ini berbeda-beda tergantung pada tingkat hash yang dikhususkan untuk jaringan.

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.