Hashing adalah proses mengubah masukan berupa huruf dan karakter berukuran tidak tetap untuk menghasilkan keluaran berukuran tetap. Proses ini dilakukan dengan menggunakan rumus matematika seperti fungsi hash (diimplementasikan sebagai algoritma hash).
Meskipun tidak semua fungsi hash menggunakan kriptografi, fungsi hash kriptografi merupakan inti dari mata uang kripto. Berkat mereka, blockchain dan sistem terdistribusi lainnya dapat mencapai integritas dan keamanan data tingkat tinggi.
Baik fungsi hash tradisional maupun fungsi hash kriptografi bersifat deterministik. Determinisme berarti bahwa, selama masukan tetap konstan, algoritma hashing selalu memberikan keluaran yang sama (juga disebut representasi atau hash).
Biasanya, algoritma hashing mata uang kripto dirancang sebagai fungsi hash satu arah, yang berarti tidak dapat dengan mudah diubah kembali tanpa menghabiskan banyak waktu dan sumber daya komputasi. Dengan kata lain, mudah untuk menghasilkan output dari data input, tetapi tidak mungkin untuk mentransformasikannya ke arah sebaliknya (menemukan data input hanya dari output). Secara umum, semakin sulit menemukan data input, semakin aman algoritma hashingnya.
Bagaimana cara kerja fungsi hash?
Fungsi hash yang berbeda akan menghasilkan keluaran dengan ukuran yang berbeda, tetapi ukuran keluaran yang mungkin selalu tetap dan konstan. Misalnya, algoritma SHA-256 hanya dapat menghasilkan keluaran berukuran 256 bit, sementara algoritma SHA-1 akan selalu menghasilkan representasi 160-bit.
Sebagai ilustrasi, mari kita jalankan kata “Binance” dan “binance” melalui algoritma hash SHA-256 (algoritma yang digunakan dalam Bitcoin).
Dapat dilihat bahwa perubahan kecil (huruf kapital pada huruf pertama) menghasilkan nilai hash yang sangat berbeda. Akan tetapi, karena kami menggunakan SHA-256, keluarannya selalu berukuran tetap 256-bit (atau 64 karakter) - berapa pun ukuran data masukannya. Kedua keluaran ini tetap sama tidak peduli berapa kali kita menjalankan kedua kata ini melalui algoritma ini.
Sebaliknya, ketika kita menjalankan masukan ini melalui algoritma hash SHA-1, kita mendapatkan hasil berikut:
SHA singkatan dari Secure Hash Algorithms. Ini adalah sekumpulan fungsi hash kriptografi, termasuk fungsi hash SHA-0, SHA-1, dan keluarga fungsi hash SHA-2 dan SHA-3. SHA-256, bersama dengan SHA-512 dan fungsi hash lainnya, termasuk dalam keluarga fungsi hash SHA-2. Saat ini, hanya keluarga SHA-2 dan SHA-3 yang dianggap sebagai keluarga fungsi hash aman.
Pentingnya fungsi hash?
Fungsi hash tradisional memiliki banyak kasus penggunaan, termasuk pencarian basis data, analisis berkas besar, dan manajemen data. Di sisi lain, fungsi hash kriptografi juga banyak digunakan dalam aplikasi keamanan informasi, seperti autentikasi pesan dan sidik jari digital. Ketika digunakan dalam Bitcoin, fungsi hash kriptografi merupakan bagian penting dari proses penambangan dan juga berkontribusi pada pembuatan alamat dan kunci baru.
Hashing adalah alat yang sangat ampuh dalam memproses informasi dalam jumlah besar. Misalnya, kita dapat menjalankan berkas atau kumpulan data besar melalui fungsi hash, lalu menggunakan outputnya untuk memverifikasi keakuratan dan integritas data dengan cepat. Hal ini dimungkinkan karena sifat deterministik fungsi hash: masukan akan selalu menghasilkan keluaran yang singkat dan disederhanakan (hash). Berkat teknik ini, tidak perlu lagi menyimpan dan “mengingat” sejumlah besar informasi.
Hashing adalah proses yang sangat berguna dalam teknologi blockchain. Blockchain Bitcoin memiliki sejumlah operasi yang menggunakan proses hashing, yang sebagian besarnya berada dalam proses penambangan. Faktanya, hampir semua protokol mata uang kripto mengandalkan hashing untuk menghubungkan dan mereduksi kelompok transaksi menjadi blok dan juga untuk membuat hubungan kriptografi antara setiap blok, yang secara efektif menciptakan blockchain.
Fungsi hash kriptografi
Sekali lagi, fungsi hash yang menerapkan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, memecahkan fungsi hash kriptografi memerlukan banyak upaya brute force. Agar seseorang dapat “memulihkan” hash kriptografi, mereka perlu menebak inputnya dengan cara coba-coba hingga mereka menghasilkan output yang sesuai. Namun, ada kemungkinan juga bahwa masukan yang berbeda menghasilkan keluaran yang sama, suatu situasi yang disebut “konflik”.
Secara teknis, fungsi hash kriptografi perlu memiliki tiga properti berikut agar dianggap aman. Ketiga sifat tersebut adalah anti konflik, anti citra terbalik, dan anti citra terbalik sekunder.
Sebelum membahas masing-masing atribut, mari kita rangkum atribut-atribut ini.
Tahan terhadap benturan: dua masukan berbeda tidak dapat menghasilkan hash yang sama.
Anti-rusak pada gambar: hash tidak dapat “dipulihkan” (data masukan tidak dapat ditentukan berdasarkan keluaran).
Anti-kontradiksi gambar kedua: tidak dapat menemukan masukan kedua yang bertentangan dengan masukan yang diberikan.
Anti konflik
Sebagaimana dijelaskan, tabrakan terjadi ketika masukan yang berbeda menghasilkan hash yang sama. Oleh karena itu, fungsi hash dianggap tahan terhadap tabrakan hingga seseorang menemukan tabrakan. Perhatikan bahwa tabrakan akan selalu ada dalam fungsi hash apa pun, karena data masukannya tak terbatas, sedangkan kemungkinan keluarannya terbatas.
Dengan kata lain, fungsi hash dianggap tahan terhadap tabrakan ketika kemungkinan menemukan tabrakan sangat rendah dan dibutuhkan jutaan tahun komputasi untuk menemukan tabrakan. Jadi, meski tidak ada fungsi hash yang sepenuhnya anti-benturan, beberapa di antaranya cukup kuat untuk dianggap anti-benturan (misalnya, SHA-256).
Di antara banyak algoritma SHA, kelompok SHA-0 dan SHA-1 tidak lagi aman karena tabrakan telah ditemukan dalam kelompok ini. Saat ini, kelompok SHA-2 dan SHA-3 dianggap tahan terhadap tabrakan.
Gambar anti-terbalik
Properti anti-gambar terkait dengan konsep fungsi satu arah. Fungsi hash dianggap anti-gambar ketika kemungkinan menemukan data masukan dari keluaran yang diberikan sangat rendah.
Properti ini berbeda dari properti pertama, penyerang akan menggunakan properti ini untuk mencoba menebak data masukan berdasarkan keluaran yang diketahui. Sementara itu, konflik terjadi ketika dua masukan berbeda ditemukan yang menghasilkan keluaran yang sama, tetapi tidak masalah masukan mana yang digunakan.
Sifat anti-rusak ini penting untuk perlindungan data, karena hanya hash pesan yang dibutuhkan untuk membuktikan keasliannya, tanpa mengungkapkan informasinya. Faktanya, banyak penyedia layanan web dan aplikasi menyimpan dan menggunakan kata sandi sebagai hash, bukan sebagai teks biasa.
Gambar anti-kedua
Sederhananya, antigambar kedua terletak di antara dua properti pertama. Serangan adversarial kedua terjadi saat seseorang menemukan masukan tertentu yang menghasilkan keluaran yang identik dengan keluaran masukan lain yang telah mereka ketahui.
Dengan kata lain, serangan adversarial kedua adalah untuk menemukan tabrakan, tetapi alih-alih menemukan dua masukan acak yang menghasilkan hash yang sama, mereka menemukan masukan yang menghasilkan hash yang identik dengan hash masukan yang telah mereka ketahui.
Dengan demikian, fungsi hash apa pun yang menghindari tabrakan juga menghindari serangan inversi orde kedua, karena inversi orde kedua juga berarti bahwa tabrakan akan terjadi. Namun, masih mungkin untuk melakukan serangan gambar terbalik pada fungsi anti-terbalik, karena itu berarti menemukan masukan unik berdasarkan keluaran unik.
Menggali
Ada banyak langkah dalam Bitcoin yang menggunakan penambangan hash, seperti memeriksa saldo, menghubungkan masukan dan keluaran transaksi, dan melakukan hashing transaksi dalam satu blok untuk membentuk Pohon Merkle. Tetapi salah satu alasan mengapa blockchain Bitcoin merupakan blockchain yang aman adalah karena penambang harus membuat operasi hash yang tak terhitung jumlahnya untuk akhirnya menemukan solusi yang valid untuk blok berikutnya.
Secara khusus, seorang penambang harus mencoba sejumlah masukan yang berbeda saat menghasilkan nilai hash untuk blok potensial mereka. Intinya, penambang hanya dapat memvalidasi blok mereka jika mereka menghasilkan hash keluaran yang dimulai dengan beberapa angka nol. Jumlah angka nol menentukan tingkat kesulitan penambangan, dan tingkat kesulitan ini berubah seiring dengan laju hash jaringan.
Dalam hal ini, hash rate menunjukkan jumlah daya komputer yang digunakan untuk menambang Bitcoin. Jika laju hash jaringan meningkat, protokol Bitcoin secara otomatis menyesuaikan kesulitan penambangan sehingga waktu rata-rata yang dibutuhkan untuk menambang satu blok tetap 10 menit. Sebaliknya, jika beberapa penambang berhenti menambang, yang menyebabkan laju hash turun secara signifikan, tingkat kesulitan penambangan akan menyesuaikan, sehingga penambangan menjadi lebih mudah (sampai waktu rata-rata untuk menambang satu blok kembali menjadi 10 menit).
Perhatikan bahwa penambang tidak perlu menemukan tabrakan karena ada banyak hash yang dapat mereka hasilkan sebagai keluaran yang valid (dimulai dengan angka nol tertentu). Jadi ada beberapa solusi untuk menambang blok tertentu, dan penambang hanya perlu menemukan salah satunya - sesuai dengan ambang batas yang ditentukan oleh kesulitan penambangan.
Karena penambangan Bitcoin merupakan tugas yang mahal, penambang tidak punya alasan untuk menipu sistem karena akan mengakibatkan kerugian finansial yang signifikan. Semakin banyak penambang bergabung dalam blockchain, semakin kuat blockchain tersebut.
Menyimpulkan
Aman untuk mengatakan bahwa fungsi hash adalah alat penting dalam ilmu komputer, terutama saat menangani data dalam jumlah besar. Bila dikombinasikan dengan kriptografi, algoritma hashing dapat digunakan secara fleksibel, menyediakan keamanan dan autentikasi dalam berbagai cara. Dengan demikian, fungsi hash kriptografi memainkan peran penting dalam sebagian besar jaringan mata uang kripto. Jadi, memahami sifat-sifatnya dan cara kerjanya tentu akan bermanfaat bagi mereka yang tertarik pada teknologi blockchain.

