Hashing adalah proses yang mengubah data dari ukuran berapa pun menjadi string dengan panjang tetap. Prosedur ini dilakukan melalui rumus matematis yang dikenal sebagai fungsi hash, yang diimplementasikan sebagai algoritma.
Meskipun tidak semua fungsi hash melibatkan kriptografi, yang disebut fungsi hash kriptografis sangat penting di dunia cryptocurrency. Berkat fungsi ini, blockchain dan sistem desentralisasi lainnya mencapai tingkat integritas dan keamanan data yang tinggi.
Fungsi hash, baik konvensional maupun kriptografi, bersifat deterministik. Ini berarti bahwa, selama input tidak berubah, algoritma akan selalu menghasilkan output yang sama ( juga disebut digest atau hash).
Umumnya, algoritma hash dalam cryptocurrency dirancang sebagai fungsi satu arah, yang berarti bahwa mereka tidak dapat dibalik dengan mudah tanpa sejumlah besar waktu dan sumber daya komputasi. Dengan kata lain, relatif mudah untuk menghasilkan output dari input, tetapi sangat kompleks untuk melakukan sebaliknya. Secara umum, semakin sulit untuk menemukan input asli, semakin aman algoritma hash dianggap.
Cara Kerja Fungsi Hash
Fungsi hash yang berbeda menghasilkan hasil dengan ukuran yang berbeda, tetapi ukuran output yang mungkin untuk setiap algoritma hash selalu konstan. Misalnya, algoritma SHA-256 hanya dapat menghasilkan hasil 256 bit, sementara SHA-1 akan selalu menghasilkan digest 160 bit.
Untuk mengilustrasikan, mari kita masukkan kata-kata "Gate" dan "Gate" ke dalam algoritma hash SHA-256 ( yang digunakan di Bitcoin).
Perhatikan bahwa perubahan minimum (huruf besar dari huruf pertama) menghasilkan nilai hash yang sama sekali berbeda. Namun, ketika menggunakan SHA-256, keluaran selalu memiliki ukuran tetap 256 bit (atau 64 karakter), terlepas dari ukuran input. Selain itu, tidak masalah berapa kali kita menjalankan kedua kata melalui algoritma, kedua keluaran akan tetap konstan.
Sebaliknya, jika kita menjalankan masukan yang sama melalui algoritma hash SHA-1, kita akan mendapatkan hasil berikut:
SHA-1
Masuk
Salida (160 bits)
Gerbang
3a7bd3e2360a3d29eea436fcfb7e44c735d117c4
Gerbang
5df9954f1ca26eabf18c663cc9258ba7f7712c45
Penting untuk menyebutkan bahwa SHA berarti Secure Hash Algorithms. 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 adalah bagian dari kelompok SHA-2, bersama dengan SHA-512 dan variasi lainnya. Saat ini, hanya kelompok SHA-2 dan SHA-3 yang dianggap aman.
Pentingnya hashing
Fungsi hash konvensional memiliki berbagai aplikasi, termasuk pencarian di basis data, analisis file besar, dan manajemen data. Di sisi lain, fungsi hash kriptografi digunakan secara luas dalam aplikasi keamanan informasi, seperti otentikasi pesan dan pembuatan sidik jari. Dalam konteks Bitcoin, fungsi hash kriptografi merupakan bagian penting dari proses penambangan dan juga memainkan peran krusial dalam pembuatan alamat dan kunci baru.
Kekuatan sejati dari hashing terwujud ketika berhadapan dengan sejumlah besar informasi. Misalnya, Anda dapat menjalankan file atau kumpulan data besar melalui fungsi hash dan kemudian menggunakan outputnya untuk memverifikasi dengan cepat akurasi dan integritas data. Ini mungkin karena sifat deterministik dari fungsi hash: input selalu menghasilkan output yang disederhanakan dan dikondensasi (hash). Teknik ini menghilangkan kebutuhan untuk menyimpan dan "mengingat" sejumlah besar data.
Hashing sangat berguna dalam konteks teknologi blockchain. Rantai blok Bitcoin memiliki beberapa operasi yang melibatkan hash, sebagian besar di dalam proses penambangan. Faktanya, hampir semua protokol cryptocurrency didasarkan pada hash untuk menghubungkan dan mengkondensasi kumpulan transaksi ke dalam blok, dan juga untuk menghasilkan tautan kriptografi antara setiap blok, secara efektif menciptakan rantai blok.
Fungsi hash kriptografi
Fungsi hash yang menerapkan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, meretas fungsi hash kriptografi memerlukan upaya tak terhitung untuk brute force. Agar seseorang dapat "membalikkan" fungsi hash kriptografi, mereka harus menebak apa inputnya melalui percobaan dan kesalahan hingga menghasilkan output yang sesuai. Namun, ada juga kemungkinan bahwa input yang berbeda menghasilkan hasil yang persis sama, di mana kasus tersebut disebut "tabrakan".
Secara teknis, sebuah fungsi hash kriptografis harus memenuhi tiga properti untuk dianggap aman secara efektif. Kita dapat menggambarkannya sebagai ketahanan terhadap tabrakan, ketahanan terhadap preimage, dan ketahanan terhadap preimage kedua.
Sebelum menganalisis setiap properti, mari kita ringkaskan logikanya dalam tiga kalimat pendek:
Ketahanan terhadap tabrakan: tidak mungkin menemukan dua entri berbeda yang menghasilkan hash yang sama sebagai output.
Resistensi sebelumnya terhadap gambar: tidak mungkin untuk "mengembalikan" fungsi hash ( untuk menemukan input dari output tertentu ).
Ketahanan terhadap preimage kedua: tidak mungkin menemukan input kedua yang bertabrakan dengan input tertentu.
Resistensi terhadap tabrakan
Sebuah kolisi terjadi ketika berbagai input menghasilkan hash yang persis sama. Oleh karena itu, sebuah fungsi hash dianggap tahan kolisi sampai saat seseorang menemukan sebuah kolisi. Penting untuk dicatat bahwa akan selalu ada kolisi untuk fungsi hash mana pun karena kemungkinan input adalah tak terhingga, sedangkan kemungkinan output adalah terbatas.
Dengan kata lain, fungsi hash tahan terhadap tabrakan ketika kemungkinan menemukan tabrakan sangat rendah sehingga memerlukan jutaan tahun perhitungan. Jadi, meskipun tidak ada fungsi hash yang bebas dari 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 dianggap aman karena telah ditemukan kolisi. Saat ini, grup SHA-2 dan SHA-3 dianggap tahan terhadap kolisi.
Resistansi sebelumnya terhadap gambar
Kepemilikan ketahanan terhadap preimage terkait dengan konsep fungsi satu arah. Sebuah fungsi hash dianggap tahan terhadap preimage ketika ada kemungkinan yang sangat rendah bahwa seseorang menemukan input yang menghasilkan output tertentu.
Penting untuk dicatat bahwa properti ini berbeda dari yang sebelumnya karena seorang penyerang akan mencoba menebak input mana yang digunakan dengan mengamati output tertentu. Sebuah tabrakan, di sisi lain, terjadi ketika seseorang menemukan dua input berbeda yang menghasilkan output yang sama, tetapi tidak peduli input mana yang digunakan.
Kepemilikan resistensi terhadap preimage sangat berharga untuk melindungi data karena sebuah hash sederhana dari sebuah pesan dapat membuktikan keasliannya, tanpa perlu mengungkapkan informasi tersebut. Dalam praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash yang dihasilkan dari kata sandi daripada kata sandi dalam teks biasa.
Ketahanan terhadap preimage kedua
Untuk menyederhanakan, kita bisa mengatakan bahwa resistensi preimage kedua berada di suatu titik tengah antara dua properti lainnya. Serangan preimage kedua terjadi ketika seseorang mampu menemukan masukan tertentu yang menghasilkan keluaran yang sama dari masukan lain yang sudah diketahui.
Dengan kata lain, serangan preimage kedua melibatkan menemukan tabrakan, tetapi alih-alih mencari dua input acak yang menghasilkan hash yang sama, mereka mencari satu input yang menghasilkan hash yang sama yang dihasilkan oleh input tertentu lainnya.
Oleh karena itu, fungsi hash yang tahan terhadap kolisi juga akan tahan terhadap serangan preimage kedua, karena yang terakhir selalu melibatkan kolisi. Namun, serangan preimage masih dapat dilakukan pada fungsi yang tahan kolisi, karena melibatkan menemukan satu input dari satu output.
Penambangan dan hashing
Proses penambangan Bitcoin melibatkan banyak operasi hash, seperti verifikasi saldo, pengikatan input dan output transaksi, dan hashing transaksi di dalam sebuah blok untuk membentuk pohon Merkle. Namun, salah satu alasan utama mengapa blockchain Bitcoin aman adalah fakta bahwa para penambang perlu melakukan sejumlah besar operasi hash untuk akhirnya menemukan solusi yang valid untuk blok berikutnya.
Secara spesifik, seorang penambang harus menguji beberapa input yang berbeda saat membuat nilai hash untuk blok kandidatnya. Pada dasarnya, mereka hanya dapat memvalidasi blok mereka jika mereka menghasilkan hash output yang dimulai dengan sejumlah nol tertentu. Jumlah nol tersebut menentukan tingkat kesulitan penambangan dan bervariasi tergantung pada tingkat hash yang didedikasikan untuk jaringan.
Dalam konteks ini, tingkat hash mewakili seberapa banyak daya komputasi yang diinvestasikan dalam penambangan Bitcoin. Jika tingkat hash jaringan meningkat, protokol Bitcoin akan secara otomatis menyesuaikan kesulitan penambangan agar waktu rata-rata yang diperlukan untuk menambang satu blok tetap mendekati 10 menit. Sebaliknya, jika beberapa penambang memutuskan untuk berhenti menambang, yang menyebabkan tingkat hash jatuh secara signifikan, kesulitan penambangan akan disesuaikan, membuatnya lebih mudah untuk menambang ( hingga waktu rata-rata blok kembali ke 10 menit ).
Penting untuk dicatat bahwa para penambang tidak perlu menemukan kolisi karena ada banyak hash yang dapat dihasilkan sebagai output yang valid ( yang dimulai dengan sejumlah nol tertentu ). Oleh karena itu, ada beberapa solusi yang mungkin untuk blok tertentu, dan para penambang hanya perlu menemukan salah satunya, sesuai dengan ambang yang ditentukan oleh kesulitan penambangan.
Karena penambangan Bitcoin adalah tugas yang mahal, para penambang tidak memiliki alasan untuk menipu sistem, karena itu akan menyebabkan kerugian finansial yang signifikan. Semakin banyak penambang yang bergabung dengan sebuah blockchain, semakin besar dan kuat blockchain tersebut.
Refleksi Akhir
Tanpa diragukan lagi, fungsi hash adalah alat dasar dalam komputer, terutama ketika berhadapan dengan volume data yang besar. Ketika dikombinasikan dengan kriptografi, algoritma hash bisa sangat serbaguna dan menawarkan keamanan serta otentikasi dengan berbagai cara yang berbeda. Oleh karena itu, fungsi hash kriptografi sangat penting untuk hampir semua jaringan cryptocurrency, sehingga memahami properti dan mekanisme kerjanya pasti berguna bagi siapa saja yang tertarik pada teknologi blockchain.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Hash: Konsep dasar dalam kriptografi dan blockchain
Hashing adalah proses yang mengubah data dari ukuran berapa pun menjadi string dengan panjang tetap. Prosedur ini dilakukan melalui rumus matematis yang dikenal sebagai fungsi hash, yang diimplementasikan sebagai algoritma.
Meskipun tidak semua fungsi hash melibatkan kriptografi, yang disebut fungsi hash kriptografis sangat penting di dunia cryptocurrency. Berkat fungsi ini, blockchain dan sistem desentralisasi lainnya mencapai tingkat integritas dan keamanan data yang tinggi.
Fungsi hash, baik konvensional maupun kriptografi, bersifat deterministik. Ini berarti bahwa, selama input tidak berubah, algoritma akan selalu menghasilkan output yang sama ( juga disebut digest atau hash).
Umumnya, algoritma hash dalam cryptocurrency dirancang sebagai fungsi satu arah, yang berarti bahwa mereka tidak dapat dibalik dengan mudah tanpa sejumlah besar waktu dan sumber daya komputasi. Dengan kata lain, relatif mudah untuk menghasilkan output dari input, tetapi sangat kompleks untuk melakukan sebaliknya. Secara umum, semakin sulit untuk menemukan input asli, semakin aman algoritma hash dianggap.
Cara Kerja Fungsi Hash
Fungsi hash yang berbeda menghasilkan hasil dengan ukuran yang berbeda, tetapi ukuran output yang mungkin untuk setiap algoritma hash selalu konstan. Misalnya, algoritma SHA-256 hanya dapat menghasilkan hasil 256 bit, sementara SHA-1 akan selalu menghasilkan digest 160 bit.
Untuk mengilustrasikan, mari kita masukkan kata-kata "Gate" dan "Gate" ke dalam algoritma hash SHA-256 ( yang digunakan di Bitcoin).
SHA-256
Masuk
Keluar (256 bits)
Gerbang
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Gate
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Perhatikan bahwa perubahan minimum (huruf besar dari huruf pertama) menghasilkan nilai hash yang sama sekali berbeda. Namun, ketika menggunakan SHA-256, keluaran selalu memiliki ukuran tetap 256 bit (atau 64 karakter), terlepas dari ukuran input. Selain itu, tidak masalah berapa kali kita menjalankan kedua kata melalui algoritma, kedua keluaran akan tetap konstan.
Sebaliknya, jika kita menjalankan masukan yang sama melalui algoritma hash SHA-1, kita akan mendapatkan hasil berikut:
SHA-1
Masuk
Salida (160 bits)
Gerbang
3a7bd3e2360a3d29eea436fcfb7e44c735d117c4
Gerbang
5df9954f1ca26eabf18c663cc9258ba7f7712c45
Penting untuk menyebutkan bahwa SHA berarti Secure Hash Algorithms. 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 adalah bagian dari kelompok SHA-2, bersama dengan SHA-512 dan variasi lainnya. Saat ini, hanya kelompok SHA-2 dan SHA-3 yang dianggap aman.
Pentingnya hashing
Fungsi hash konvensional memiliki berbagai aplikasi, termasuk pencarian di basis data, analisis file besar, dan manajemen data. Di sisi lain, fungsi hash kriptografi digunakan secara luas dalam aplikasi keamanan informasi, seperti otentikasi pesan dan pembuatan sidik jari. Dalam konteks Bitcoin, fungsi hash kriptografi merupakan bagian penting dari proses penambangan dan juga memainkan peran krusial dalam pembuatan alamat dan kunci baru.
Kekuatan sejati dari hashing terwujud ketika berhadapan dengan sejumlah besar informasi. Misalnya, Anda dapat menjalankan file atau kumpulan data besar melalui fungsi hash dan kemudian menggunakan outputnya untuk memverifikasi dengan cepat akurasi dan integritas data. Ini mungkin karena sifat deterministik dari fungsi hash: input selalu menghasilkan output yang disederhanakan dan dikondensasi (hash). Teknik ini menghilangkan kebutuhan untuk menyimpan dan "mengingat" sejumlah besar data.
Hashing sangat berguna dalam konteks teknologi blockchain. Rantai blok Bitcoin memiliki beberapa operasi yang melibatkan hash, sebagian besar di dalam proses penambangan. Faktanya, hampir semua protokol cryptocurrency didasarkan pada hash untuk menghubungkan dan mengkondensasi kumpulan transaksi ke dalam blok, dan juga untuk menghasilkan tautan kriptografi antara setiap blok, secara efektif menciptakan rantai blok.
Fungsi hash kriptografi
Fungsi hash yang menerapkan teknik kriptografi dapat didefinisikan sebagai fungsi hash kriptografi. Secara umum, meretas fungsi hash kriptografi memerlukan upaya tak terhitung untuk brute force. Agar seseorang dapat "membalikkan" fungsi hash kriptografi, mereka harus menebak apa inputnya melalui percobaan dan kesalahan hingga menghasilkan output yang sesuai. Namun, ada juga kemungkinan bahwa input yang berbeda menghasilkan hasil yang persis sama, di mana kasus tersebut disebut "tabrakan".
Secara teknis, sebuah fungsi hash kriptografis harus memenuhi tiga properti untuk dianggap aman secara efektif. Kita dapat menggambarkannya sebagai ketahanan terhadap tabrakan, ketahanan terhadap preimage, dan ketahanan terhadap preimage kedua.
Sebelum menganalisis setiap properti, mari kita ringkaskan logikanya dalam tiga kalimat pendek:
Ketahanan terhadap tabrakan: tidak mungkin menemukan dua entri berbeda yang menghasilkan hash yang sama sebagai output.
Resistensi sebelumnya terhadap gambar: tidak mungkin untuk "mengembalikan" fungsi hash ( untuk menemukan input dari output tertentu ).
Ketahanan terhadap preimage kedua: tidak mungkin menemukan input kedua yang bertabrakan dengan input tertentu.
Resistensi terhadap tabrakan
Sebuah kolisi terjadi ketika berbagai input menghasilkan hash yang persis sama. Oleh karena itu, sebuah fungsi hash dianggap tahan kolisi sampai saat seseorang menemukan sebuah kolisi. Penting untuk dicatat bahwa akan selalu ada kolisi untuk fungsi hash mana pun karena kemungkinan input adalah tak terhingga, sedangkan kemungkinan output adalah terbatas.
Dengan kata lain, fungsi hash tahan terhadap tabrakan ketika kemungkinan menemukan tabrakan sangat rendah sehingga memerlukan jutaan tahun perhitungan. Jadi, meskipun tidak ada fungsi hash yang bebas dari 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 dianggap aman karena telah ditemukan kolisi. Saat ini, grup SHA-2 dan SHA-3 dianggap tahan terhadap kolisi.
Resistansi sebelumnya terhadap gambar
Kepemilikan ketahanan terhadap preimage terkait dengan konsep fungsi satu arah. Sebuah fungsi hash dianggap tahan terhadap preimage ketika ada kemungkinan yang sangat rendah bahwa seseorang menemukan input yang menghasilkan output tertentu.
Penting untuk dicatat bahwa properti ini berbeda dari yang sebelumnya karena seorang penyerang akan mencoba menebak input mana yang digunakan dengan mengamati output tertentu. Sebuah tabrakan, di sisi lain, terjadi ketika seseorang menemukan dua input berbeda yang menghasilkan output yang sama, tetapi tidak peduli input mana yang digunakan.
Kepemilikan resistensi terhadap preimage sangat berharga untuk melindungi data karena sebuah hash sederhana dari sebuah pesan dapat membuktikan keasliannya, tanpa perlu mengungkapkan informasi tersebut. Dalam praktiknya, banyak penyedia layanan dan aplikasi web menyimpan dan menggunakan hash yang dihasilkan dari kata sandi daripada kata sandi dalam teks biasa.
Ketahanan terhadap preimage kedua
Untuk menyederhanakan, kita bisa mengatakan bahwa resistensi preimage kedua berada di suatu titik tengah antara dua properti lainnya. Serangan preimage kedua terjadi ketika seseorang mampu menemukan masukan tertentu yang menghasilkan keluaran yang sama dari masukan lain yang sudah diketahui.
Dengan kata lain, serangan preimage kedua melibatkan menemukan tabrakan, tetapi alih-alih mencari dua input acak yang menghasilkan hash yang sama, mereka mencari satu input yang menghasilkan hash yang sama yang dihasilkan oleh input tertentu lainnya.
Oleh karena itu, fungsi hash yang tahan terhadap kolisi juga akan tahan terhadap serangan preimage kedua, karena yang terakhir selalu melibatkan kolisi. Namun, serangan preimage masih dapat dilakukan pada fungsi yang tahan kolisi, karena melibatkan menemukan satu input dari satu output.
Penambangan dan hashing
Proses penambangan Bitcoin melibatkan banyak operasi hash, seperti verifikasi saldo, pengikatan input dan output transaksi, dan hashing transaksi di dalam sebuah blok untuk membentuk pohon Merkle. Namun, salah satu alasan utama mengapa blockchain Bitcoin aman adalah fakta bahwa para penambang perlu melakukan sejumlah besar operasi hash untuk akhirnya menemukan solusi yang valid untuk blok berikutnya.
Secara spesifik, seorang penambang harus menguji beberapa input yang berbeda saat membuat nilai hash untuk blok kandidatnya. Pada dasarnya, mereka hanya dapat memvalidasi blok mereka jika mereka menghasilkan hash output yang dimulai dengan sejumlah nol tertentu. Jumlah nol tersebut menentukan tingkat kesulitan penambangan dan bervariasi tergantung pada tingkat hash yang didedikasikan untuk jaringan.
Dalam konteks ini, tingkat hash mewakili seberapa banyak daya komputasi yang diinvestasikan dalam penambangan Bitcoin. Jika tingkat hash jaringan meningkat, protokol Bitcoin akan secara otomatis menyesuaikan kesulitan penambangan agar waktu rata-rata yang diperlukan untuk menambang satu blok tetap mendekati 10 menit. Sebaliknya, jika beberapa penambang memutuskan untuk berhenti menambang, yang menyebabkan tingkat hash jatuh secara signifikan, kesulitan penambangan akan disesuaikan, membuatnya lebih mudah untuk menambang ( hingga waktu rata-rata blok kembali ke 10 menit ).
Penting untuk dicatat bahwa para penambang tidak perlu menemukan kolisi karena ada banyak hash yang dapat dihasilkan sebagai output yang valid ( yang dimulai dengan sejumlah nol tertentu ). Oleh karena itu, ada beberapa solusi yang mungkin untuk blok tertentu, dan para penambang hanya perlu menemukan salah satunya, sesuai dengan ambang yang ditentukan oleh kesulitan penambangan.
Karena penambangan Bitcoin adalah tugas yang mahal, para penambang tidak memiliki alasan untuk menipu sistem, karena itu akan menyebabkan kerugian finansial yang signifikan. Semakin banyak penambang yang bergabung dengan sebuah blockchain, semakin besar dan kuat blockchain tersebut.
Refleksi Akhir
Tanpa diragukan lagi, fungsi hash adalah alat dasar dalam komputer, terutama ketika berhadapan dengan volume data yang besar. Ketika dikombinasikan dengan kriptografi, algoritma hash bisa sangat serbaguna dan menawarkan keamanan serta otentikasi dengan berbagai cara yang berbeda. Oleh karena itu, fungsi hash kriptografi sangat penting untuk hampir semua jaringan cryptocurrency, sehingga memahami properti dan mekanisme kerjanya pasti berguna bagi siapa saja yang tertarik pada teknologi blockchain.