Apa itu Hashing?
Anda mungkin kerap mendengar istilah hash atau hashing ketika membaca artikel terkait teknologi blockchain. Dalam terminologi sederhana, hashing adalah proses menghasilkan data keluaran (output data) yang panjangnya tetap dan sama, dari data masukan (input data) yang panjangnya berbeda-beda. Dalam konteks Bitcoin, hashing data masukan menggunakan algoritma hashing Secure Hash Algorithm (SHA)-256, yang merupakan varian dari standar umum SHA-2. Gunanya adalah untuk pengamanan data dengan metode penyandian (enkripsi).
SHA-256 dirancang oleh National Security Agency (NSA) Amerika Serikat (AS) dan dipatenkan pada tahun 2004 oleh National Institute of Standards and Technology (NIST). Kemudian oleh Pemerintah federal AS varian dari SHA-2, termasuk SHA-256, paten itu dilensikan kepada publik tanpa royalti, pada tahun 2001.
Anda bisa merasakan sendiri bagaimana prosesnya. Silahkan buka website ini. Ke dalam kotak yang tersedia silahkan ketik karakter apa saja. Misalnya saya ketikkan “Triv” (tanpa tanpa petik). Seketika di bagian bawah hasil hash-nya muncul. Berapun jumlah karakter yang Anda masukkan (input), panjang karakter output-nya tetap sama, yakni 64 karakter, termasuk ada perbedaan output antara input “t” dengan input “T”. Silahkan coba sendiri dengan memasukkan data sepanjang 64 karakter atau lebih. Hasilnya tetap 64 karakter dan SHA-256. Jikalau antar kata ada spasi, itu juga dihitung.
Output | Hash |
Triv | A3B56C052D0CB495237B951B77D1271BE03E09E775E28FB6AA11465F77C129E8 |
t | E3B98A4DA31A127D4BDE6E43033F66BA274CAB0EB7EB1C70EC41402BF6273DD8 |
T | E632B7095B0BF32C260FA4C539E9FD7B852D0DE454E9BE26F24D0D6F91D069D3 |
Hash | A91069147F9BD9245CDACAEF8EAD4C3578ED44F179D7EB6BD4690E62BA4658F2 |
Bitcoin | B4056DF6691F8DC72E56302DDAD345D65FEAD3EAD9299609A826E2344EB63AA4 |
Silahkan coba sendiri | 424E4736C989808E96476FEE28E919E03639E611CA8AF57C2308966818A3A656 |
[1 kali SPASI] | 36A9E7F1C95B82FFB99743E0C5C4CE95D83C9A430AAC59F84EF3CBFAB6145068 |
[10 kali SPASI] | E91772CCB5E6CE5F932D6417EACD9A1E031B957101CDB68BE76D417DEFA7FD28 |
Dari sini kita sudah tahu manfaatnya. Daripada kita mengingat data masukan yang berjumlah besar, kita cukup merekam hash-nya saja, sehingga memudahkan proses pelacakan data. Tetapi, bukan berarti data keluaran dapat menentukan data masukan, karena SHA bersifat deterministik (tujuan tunggal atau linear).
Nah, jikalau hashing dapat menciptakan karakter yang unik dari setiap data masukan, berapa banyak kombinasi hashing yang bisa terbentuk? Nah satuan ukuran data di dunia komputer disebut bit, maka ada dua kemungkinan dalam bilangan binari, yakni 0 dan 1 (basis 2). Kalau misalnya angka binari 1001011, ia memiliki panjang 7 bit. Jadi, pada SHA-256 ada 2256 (2 pangkat 256) kemungkinan kombinasi!
Artinya, peretas perlu kombinasi kata sandi sebanyak itu mencuri data di dalam sebuah sistem. Oleh komputer super yang ada saat ini pun mustahil dilakukan. Nah, dalam sistem Bitcoin, kemustahilan itu diperkuat dengan pendistribusian data identik di setiap simpul jaringan (node), di mana setiap simpul yang jumlahnya ribuan bisa berperan sebagai server sekaligus client.
Jadi, katakanlah ada 10 ribu node, maka peretas perlu merusak semua data di 100 ribu node itu pada saat yang bersamaan. Semakin lampau data yang ingin diretas, maka semakin sulit data dipecahkan, karena semua data dalam blok saling terkait. [vins]