Fungsi hash kriptografis (CHF) adalah algoritma yang dapat dijalankan pada data seperti file individual atau kata sandi untuk menghasilkan nilai yang disebut checksum.
Kegunaan utama CHF adalah untuk memverifikasi keaslian sepotong data. Dua file dapat dianggap identik hanya jika checksum yang dihasilkan dari setiap file, menggunakan fungsi hash kriptografik yang sama, adalah identik.
Beberapa fungsi hash kriptografi yang umum digunakan termasuk MD5 dan SHA-1, meskipun banyak yang lain juga ada. Ini sering disebut sebagai "fungsi hash," tapi itu tidak benar secara teknis. Fungsi hash adalah istilah umum yang mencakup CHF bersama dengan jenis algoritma lain seperti pemeriksaan redundansi siklik.
Fungsi Hash Kriptografis: Kasus Penggunaan
Katakanlah Anda mengunduh versi terbaru peramban Firefox. Untuk beberapa alasan, Anda perlu mengunduhnya dari situs selain Mozilla. Karena tidak dihosting di situs yang telah Anda percayai, Anda ingin memastikan file instalasi yang baru saja Anda unduh sama persis dengan yang ditawarkan Mozilla.
Menggunakan kalkulator checksum, Anda menghitung checksum menggunakan fungsi hash kriptografik tertentu, seperti SHA-2, lalu membandingkannya dengan yang dipublikasikan di situs Mozilla. Jika sama, Anda dapat yakin bahwa unduhan yang Anda miliki adalah unduhan yang diinginkan Mozilla untuk Anda.
Dapatkah Fungsi Hash Kriptografi Dibalik?
Fungsi hash kriptografi dirancang untuk mencegah kemampuan membalikkan checksum yang mereka buat kembali ke teks aslinya. Namun, meskipun hampir tidak mungkin untuk dibalik, mereka tidak dijamin 100 persen untuk melindungi data.
Peretas dapat menggunakan tabel pelangi untuk mengetahui teks biasa dari sebuah checksum. Tabel pelangi adalah kamus yang mencantumkan ribuan, jutaan, atau bahkan miliaran checksum di samping nilai teks biasa yang sesuai.
Meskipun ini tidak secara teknis membalikkan algoritma hash kriptografi, mungkin juga, mengingat ini sangat mudah dilakukan. Pada kenyataannya, karena tidak ada tabel pelangi yang dapat mencantumkan setiap kemungkinan checksum yang ada, tabel tersebut biasanya hanya berguna untuk frasa sederhana seperti kata sandi yang lemah.
Berikut adalah versi sederhana dari tabel pelangi untuk menunjukkan bagaimana seseorang akan bekerja saat menggunakan fungsi hash kriptografi SHA-1:
Contoh Tabel Pelangi | |
---|---|
Plaintext | SHA-1 Checksum |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
sandi1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Seorang peretas harus mengetahui algoritma hash kriptografi mana yang digunakan untuk menghasilkan checksum untuk mengetahui nilainya.
Untuk perlindungan tambahan, beberapa situs web yang menyimpan kata sandi pengguna melakukan fungsi tambahan pada algoritme hash kriptografis setelah nilai dihasilkan tetapi sebelum disimpan. Proses ini menghasilkan nilai baru yang hanya dipahami oleh server web dan tidak cocok dengan checksum asli.
Misalnya, setelah kata sandi dimasukkan dan checksum dibuat, mungkin akan dipisahkan menjadi beberapa bagian dan disusun ulang sebelum disimpan dalam basis data kata sandi, atau karakter tertentu dapat ditukar dengan yang lain. Saat mencoba mengautentikasi saat berikutnya pengguna masuk, server membalikkan fungsi tambahan ini, dan checksum asli dibuat lagi untuk memverifikasi bahwa kata sandi pengguna valid.
Mengambil langkah-langkah ini membatasi kegunaan peretasan di mana semua checksum dicuri. Idenya adalah untuk melakukan fungsi yang tidak diketahui, jadi jika peretas mengetahui algoritme hash kriptografis tetapi bukan yang khusus, maka mengetahui checksum kata sandi tidak membantu.
Kata Sandi dan Fungsi Hash Kriptografi
Database menyimpan kata sandi pengguna dengan cara yang mirip dengan tabel pelangi. Ketika kata sandi Anda dimasukkan, checksum dibuat dan dibandingkan dengan yang tercatat dengan nama pengguna Anda. Anda kemudian diberikan akses jika keduanya identik.
Mengingat bahwa CHF menghasilkan checksum yang tidak dapat dibalik, apakah aman bagi Anda untuk membuat kata sandi Anda sesederhana 12345, alih-alih 12@34 $5, hanya karena checksum itu sendiri tidak dapat dipahami? Tidak, dan inilah alasannya.
Kedua kata sandi ini sama-sama tidak mungkin diuraikan hanya dengan melihat checksum:
MD5 untuk 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 untuk 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Pada pandangan pertama, Anda mungkin berpikir bahwa menggunakan salah satu dari kata sandi ini tidak masalah. Ini benar jika penyerang mencoba mencari tahu kata sandi Anda dengan menebak checksum MD5, yang tidak dilakukan siapa pun, tetapi tidak benar jika serangan brute force atau kamus dilakukan, yang merupakan taktik umum.
Serangan brute force terjadi ketika beberapa tusukan acak diambil saat menebak kata sandi. Dalam hal ini, akan mudah untuk menebak 12345, tetapi cukup sulit untuk menebak yang lain secara acak. Serangan kamus serupa karena penyerang dapat mencoba setiap kata, angka, atau frasa dari daftar kata sandi umum (dan tidak terlalu umum), dan 12345 adalah salah satu yang umum kata sandi.
Meskipun fungsi hash kriptografi menghasilkan checksum yang sulit ditebak, Anda tetap harus menggunakan kata sandi yang rumit untuk semua akun pengguna online dan lokal Anda.
Informasi Lebih Lanjut tentang Fungsi Hash Kriptografi
Sepertinya fungsi hash kriptografi terkait dengan enkripsi, tetapi keduanya bekerja dengan cara yang berbeda.
Enkripsi adalah proses dua arah di mana sesuatu dienkripsi menjadi tidak dapat dibaca dan kemudian didekripsi untuk digunakan kembali secara normal. Anda dapat mengenkripsi file yang telah Anda simpan sehingga siapa pun yang mengaksesnya tidak dapat menggunakannya, atau Anda dapat menggunakan enkripsi transfer file untuk mengenkripsi file yang bergerak melalui jaringan, seperti yang Anda unggah atau unduh secara online.
Fungsi hash kriptografi bekerja secara berbeda, karena checksum tidak dimaksudkan untuk dibalik dengan kata sandi dehashing khusus. Satu-satunya tujuan CHF adalah untuk membandingkan dua bagian data, seperti saat mengunduh file, menyimpan kata sandi, dan menarik data dari database.
Ini mungkin untuk fungsi hash kriptografi untuk menghasilkan checksum yang sama untuk bagian data yang berbeda. Ketika ini terjadi, itu disebut tabrakan, yang merupakan masalah besar mengingat seluruh inti dari fungsi ini adalah membuat checksum unik untuk setiap input data ke dalamnya.
Tabrakan dapat terjadi karena setiap CHF menghasilkan nilai dengan panjang yang tetap terlepas dari input data. Misalnya, fungsi hash kriptografi MD5 menghasilkan 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983, dan e10adc3949ba59abbe56e057f20f883e untuk tiga blok data yang sama sekali berbeda.
Checksum pertama berasal dari 12345. Yang kedua dihasilkan dari lebih dari 700 huruf dan angka, dan yang ketiga dari 123456. Ketiga input memiliki panjang yang berbeda, tetapi hasilnya selalu hanya 32 karakter, karena checksum MD5 digunakan.
Tidak ada batasan jumlah checksum yang dapat dibuat karena setiap perubahan kecil pada input seharusnya menghasilkan checksum yang sama sekali berbeda. Karena ada batasan jumlah checksum yang dapat dihasilkan oleh satu CHF, selalu ada kemungkinan Anda akan mengalami tabrakan.
Inilah mengapa fungsi hash kriptografik lainnya telah dibuat. Sementara MD5 menghasilkan nilai 32 karakter, SHA-1 menghasilkan 40 karakter dan SHA-2 (512) menghasilkan 128. Semakin besar jumlah karakter yang dimiliki checksum, semakin kecil kemungkinan tabrakan akan terjadi.