Apa itu Rainbow Table?
Rainbow table adalah alat peretasan kata sandi yang menggunakan tabel hash kata sandi terbalik yang telah dihitung sebelumnya untuk meretas kata sandi dalam basis data. Meskipun rainbow tables memberikan administrator keamanan cara untuk menguji standar keamanan kata sandi, mereka juga memberikan peretas cara untuk dengan cepat meretas kata sandi dan mendapatkan akses tidak sah ke sistem komputer.
Rainbow merujuk pada berbagai warna yang digunakan dalam tabel untuk menunjukkan berbagai fungsi dan langkah hash serta reduksi. Dengan setiap fungsi reduksi memiliki warna yang berbeda, teks asli dan hash akhirnya akan terlihat seperti pelangi.
Kata sandi biasanya tidak disimpan sebagai teks biasa yang dapat dibaca atau plaintext. Sebagai gantinya, mereka dienkripsi menggunakan hash. Fungsi hash mengubah string karakter yang diberikan menjadi nilai lain. Setelah pengguna memasukkan kata sandi, kata sandi tersebut diubah menjadi hash. Hasilnya dibandingkan dengan hash yang disimpan untuk mencari kecocokan. Jika hash cocok, maka pengguna akan terautentikasi.
Rainbow tables adalah daftar nilai hash kata sandi untuk setiap karakter plaintext yang digunakan selama proses otentikasi. Pelaku ancaman bisa membuat daftar besar hash yang sesuai dengan kata sandi umum atau mendapatkan akses ke daftar hash kata sandi. Ini berarti mereka dapat dengan cepat menyusup ke dalam sistem tanpa mengetahui kata sandi aslinya.
Rainbow tables tidak lagi menjadi ancaman sebesar dulu karena adanya proses yang disebut salting. Salting menambahkan nilai acak tambahan ke kata sandi yang telah di-hash, menjadikan hash yang sama memiliki nilai hash yang berbeda.
Bagaimana serangan rainbow table bekerja?
Rainbow tables menghitung fungsi hash dari setiap string yang ditempatkan dalam tabel. Sebuah rainbow table dibangun menggunakan rantai dari fungsi hash dan reduksi. Kata sandi plaintext yang umum secara berulang kali diteruskan melalui rantai operasi ini dan kemudian disimpan dalam tabel di samping hash yang sesuai.
Untuk meretas kata sandi, atau untuk serangan rainbow table, sejumlah besar hash dijalankan melalui dataset dan kemudian melalui beberapa tahap reduksi untuk membaginya menjadi komponen-komponen kecil yang terkait dengan karakter plaintext. Kata sandi plaintext kemudian disimpan dalam tabel di samping hash mereka.
Program pemecah kata sandi kemudian membandingkan daftar hash potensial dari rainbow table dengan kata sandi yang telah di-hash dalam basis data. Jika ada kecocokan, plaintext yang menghasilkan hash akan diambil dan proses dihentikan. Dengan hash yang benar, pelaku ancaman sekarang dapat mengakses perangkat dengan sukses — mereka telah meretas proses otentikasi.
Keuntungan dan kerugian rainbow tables
Rainbow tables memberikan keuntungan berikut:
- Mereka membuat peretasan kata sandi jauh lebih cepat daripada metode sebelumnya, seperti serangan brute-force dan serangan kamus.
- Prosesnya disederhanakan sebagai operasi pencarian-dan-perbandingan, karena semua nilai dalam rainbow table seharusnya sudah dihitung sebelumnya.
- Kata sandi yang tepat tidak perlu diketahui. Otentikasi mungkin dilakukan selama hash cocok.
Kerugian dari rainbow tables termasuk:
- Mereka memerlukan ruang penyimpanan yang besar untuk membuat serangan dapat diselesaikan dalam waktu yang realistis.
- Jika hash yang coba dipecahkan oleh penyerang tidak ada dalam tabel, serangan menjadi jauh kurang mungkin berhasil.
- Serangan rainbow semakin jarang terjadi karena penggunaan fungsi hash kriptografis modern, yakni kata sandi yang di-salt.
Melindungi terhadap serangan rainbow table
Untuk melindungi terhadap serangan menggunakan rainbow tables, administrator sistem harus menambahkan langkah-langkah keamanan berikut:
- Salting. Teknik ini menambahkan string karakter acak ke kata sandi sebelum mengenkripsinya. Serangan rainbow table bekerja dengan asumsi bahwa sebuah string teks memiliki satu nilai hash yang spesifik; karakter tambahan yang dihasilkan mengubah nilai hash yang diharapkan.
- Autentikasi biometrik. Serangan rainbow table tidak berfungsi terhadap kata sandi biometrik, yang memverifikasi identitas pengguna. Mereka tidak dapat diketik seperti kata sandi dan bersifat unik untuk individu tersebut.
- Pemanjangan kunci (key stretching). Dalam metode ini, kata sandi, salt, dan nilai hash perantara dijalankan melalui fungsi hash beberapa kali untuk meningkatkan waktu komputasi untuk serangan.
- Pemantauan server. Perangkat lunak keamanan server dirancang untuk mendeteksi serangan sebelum pelaku ancaman menemukan basis data kata sandi.
- Fungsi hash yang aman. Organisasi harus menghentikan penggunaan algoritma hash yang usang seperti message-digest algorithm atau Secure Hash Algorithm 1. Sebagai gantinya, mereka harus mempertimbangkan menggunakan SHA-3, yang lebih aman.
Masa depan rainbow tables
Sejak teknik salting mulai digunakan, prevalensi dan ancaman dari serangan rainbow table telah menurun secara dramatis. Misalnya, Unix, Linux, dan Berkley Software Distribution menggunakan hash yang di-salt. Bahkan Apple Keychain, sistem manajemen kata sandi Apple di macOS, menggunakan salt. Meskipun sistem Windows tidak menggunakan salt, mereka masih dapat mengenkripsi hash yang disimpan menggunakan kunci sistem atau utilitas Syskey utility. Namun, serangan rainbow table masih mungkin terjadi di Windows untuk kata sandi New Technology LAN Manager delapan dan sembilan karakter.
Serangan brute force berbasis GPU telah menjadi lebih praktis dibandingkan dengan serangan rainbow table. Serangan brute-force berbasis GPU mirip dengan serangan brute force biasa, tetapi unit pemrosesan grafis dari PC mencari kata sandi. Dibandingkan dengan serangan rainbow table, serangan brute-force berbasis GPU lebih cepat, lebih dapat diskalakan, dan lebih umum digunakan.