0
Comments
MD5 itu berbahaya

Heran! Sudah lama MD5 terbukti memiliki kelemahan serius, namun hingga kini masih banyak orang yang memakainya.

MD5 adalah salah satu fungsi hash yang sangat populer. Di usianya yang mencapai sweet seventeen, semakin banyak serangan yang makin efektif terhadap MD5. Kalau dulu di tahun 1995 ilmuwan hanya sebatas mempublikasikan kelemahan di tataran teoretis, kini semakin banyak orang yang mampu meng-exploit kelemahan itu dengan sangat efektif. Sudah saat MD5 dijauhi sebagai sesuatu yang berbahaya, jangan ditunda lagi!

Cryptographic Hash Basics
Untuk mudahnya anggap saja cryptographic hash sebagai semacam signature atau segel yang unik dari sebuah file. Setiap file yang berbeda akan memiliki signature yang berbeda. Perbedaan satu bit saja pada file akan menghasilkan signature yang berbeda. Sehingga dua file yang identik (seluruh bitnya sama), akan memiliki signature yang sama.
Sebelumnya mari kita lihat bagaimana fungsi hash MD5 in action. Input:

""
Bayangkan dalam satu pesawat umum terdapat dua kelas penumpang, 
yaitu kelas VIP dan kelas ekonomi. Prosedur dan proses security harus menjamin
agar penumpang menempati tempat duduk sesuai haknya. Untuk itu penumpang harus
menunjukkan bukti berupa tiket yang di situ tertera namanya. Kemudian dari 
daftar penumpang pramugari akan tahu bahwa anda berhak duduk di kelas VIP 
atau ekonomi. Bila anda memegang tiket ekonomi mencoba duduk di kelas VIP maka 
pramugari akan menolak anda. Apalagi bila anda tidak memegang tiket, mencoba 
naik pesawat itu, sudah pasti anda akan ditendang""
 
 
Input paragraf tersebut memiliki nilai hash: 
Hexa:11ee98b599338ae66458f9b86ab4a6fb
Binary:00010001 11101110 10011000 10110101 10011001 00110011 10001010 11100110 
01100100 01011000 11111001 10111000 01101010 10110100 10100110 11111011
 
Input di atas adalah teks sepanjang 578 karakter, sedangkan outputnya hanya 32 karakter, sangat timpang bukan? Mari kita lihat kalau inputnya hanya satu karakter saja, ‘X’, maka nilai hashnya adalah 02129bb861061d1a052c592e2dc6b383 atau dalam binary 00000010 00010010 10011011 10111000 01100001 00000110 00011101 00011010 00000101 00101100 01011001 00101110 00101101 11000110 10110011 10000011. Terlihat kan inputnya berapapun panjangnya, nilai hashnya tetap 128 bit atau 32 karakter hexa. Bahkan string kosong “” memiliki nilai hashnya sendiri sepanjang 32 karakter, yaitu 02129bb861061d1a052c592e2dc6b383.
MD5 bukan Enkripsi!
Seringkali orang menganggap MD5 sebagai enkripsi. Memang MD5 dipakai dalam kriptografi, namun MD5 bukanlah algoritma enkripsi. Enkripsi mengubah plain-text menjadi ciphertext yang ukurannya berbanding lurus dengan ukuran file aslinya. Semakin panjang plain-text maka hasil enkripsinya juga semakin panjang. Hasil enkripsi bisa dikembalikan ke plain-text semula dengan proses dekripsi. Jadi enkripsi adalah fungsi dua arah dan reversible. Selain itu dalam enkripsi dibutuhkan kunci, tanpa kunci itu namanya bukan enkripsi, melainkan hanya encoding/decoding.
Berbeda dengan enkripsi, fungsi hash tidak butuh kunci dan sifatnya hanya satu arah, yaitu dari teks masukan menjadi nilai hash yang panjangnya selalu sama. Setelah menjadi nilai hash, tidak ada fungsi yang bisa mengembalikan nilai hash itu menjadi teks semula.