Friday, July 31, 2015

MD5 - Cyrptrography (part-1)

MD5

Dalam kriptografi, dikenal istilah hashing. Hashing adalah men-identifikasi suatu objek dengan cara mengambil informasi dari objek tsb baik sebagian atau seluruhnya.

Mengambil sebagian, contohnya begini. Misal kita diberikan sebuah film lama oleh teman berjudul "Samson Betawi". Saat menerima kita ragu apakah DVD yang diberikan benar film Samson. Teman kita berkata: "Benar. Kamu ingat kan ada adegan cabut bulu ketek?" Lalu kita ingat. "Oh iya benar di film itu ada adegan tsb". Nah, antara teman dan kita tercapai satu keyakinan bahwa, benar DVD tsb adalah Samson, walau identifikasinya hanya dengan sepotong adegan dalam film tsb.

Mengambil seluruhnya, contohnya begini. Password user-user di sebuh mail server atau web server di simpan setelah di lakukan hashing.

Gambar nya sebagai berikut.

Waktu mendaftar di server mail atau web tsb username: roger, password: jakarta. Nah password jakarta tsb di simpan dalam server dalam format hasing MD5.

jadi kata "jakarta" identik dengan "629ab14fab772d78a58eea752bdfc0dc"

username dan hashed password tsb di simpan dalam file "password.txt".

Waktu user login, user akan memasukkan data username: roger, password: jakarta, lalu server akan melakukan proses hashing "jakarta" ini kembali. Hasil hasing adalah string "629ab14fab772d78a58eea752bdfc0dc". String ini dibandingkan dengan string yang tersimpan dalam file "password.txt" apabila hasilnya sama maka, user di kasih hak akses. Apabila beda, berarti user bukan memasukkan "jakarta" sebagai passwordnya, dan user akan tidak di kasih hak akses.

Bagaimana kalau file "password.txt" di hack?

Apabila hacker mendapatkan file password.txt maka hacker tidak bisa tahu password "roger" adalah "jakarta". Karena proses hashing adalah satu arah. Artinya hashed password "629ab14fab772d78a58eea752bdfc0dc" tidak mungkin di proses ulang sehingga ditemukan kata "jakarta".

Cara satu-satunya bagi hacker adalah melakukan hashing terhadap kamus bahasa Indonesia. Semua kata di hashing, hasilnya dibandingkan dengan "629ab14fab772d78a58eea752bdfc0dc". Mulai dari kata "a", "abi", "ali", "alamat", ..., "jaka", "jakarta", dst. Saat hashing dilakukan terhadap "a" hasilnya di bandingkan dengan "629ab14fab772d78a58eea752bdfc0dc", tidak cocok, lanjut ke "abi".

Sebagai contoh:

a            :0cc175b9c0f1b6a831c399e269772661
abi          :19a9228dbbbe3b613190002e54dc3429
jaka         :9d83066da00b7c7fa9de34117f488653
jakarta      :629ab14fab772d78a58eea752bdfc0dc

Jadi hacker membutuhkan waktu untuk mencari tahu password dengan username "rough".

Akan tetapi apabila semua kata dalam kamus sudah di buatkan daftar hasil hashing MD-5 nya maka hacker tinggal melakukan iterasi. Dan kemungkinan ketemu (password ke hack) jadi tinggi. Hasil hasing kamus ini sering disebut Rainbow Tables.

Untuk mempersulit hacker (shg Rainbow Tables tidak bisa di pakai) maka perlu dilakukan proses Salting (dibahas pada artikel selanjutnya).

No comments: