Dokumen ini membahas tentang MD5 (Message-Digest algorithm 5) yang merupakan algoritma hash satu arah yang digunakan untuk mengamankan password, verifikasi integritas file, digital signature, dan aplikasi keamanan lainnya. Dokumen ini juga membahas kelemahan MD5 yaitu kolisi di mana dua input yang berbeda dapat menghasilkan nilai hash yang sama.
2. MD5 adalah salah satu dari serangkaian algortima
message digest yang didesain oleh Profesor Ronald
Rivest dari MIT (Rivest, 1994).
Saat kerja analitik menunjukkan bahwa pendahulu
MD5 yaitu MD4 mulai tidak aman, MD5 kemudian
didesain pada tahun 1991 sebagai pengganti dari MD4
(kelemahan MD4 ditemukan oleh Hans Dobbertin).
Dalam kriptografi, MD5 (Message-Digest algortihm 5)
ialah fungsi hash kriptografik yang digunakan secara
luas dengan hash value 128-bit.
Pada standart Internet (RFC 1321), MD5 telah
dimanfaatkan secara bermacam-macam pada aplikasi
keamanan, dan MD5 juga umum digunakan untuk
melakukan pengujian integritas sebuah file.
3. Sistem keamanan dalam sebuah aplikasi
komputer berbasis web salah satu yang
dipakai adalah metode hashing MD5. MD5
merupakan metode one way yang merubah
suatu plain text berubah menjadi bentuk
enkripsi atau yang disebut dengan
chypertext. Penggunaannya seringkali untuk
merahasiakan password user maupun
admin, nomor PIN, dan lainnya yang
berhubungan dengan akun seseorang
4. Verifying file integrity
Karena setiap file yang berbeda memiliki nilai hash yang
berbeda, maka fungsi hash dimanfaatkan untuk verifikasi
integritas file. Yang dimaksud dengan intergritas file
adalah keaslian file, apakah file sudah diubah atau belum.
Bila sebuah file berubah walaupun satu bit saja, maka nilai
hashnya akan berbeda sehingga orang bisa menyadari
bahwa file tersebut sudah tidak asli lagi. Kalau anda sering
download file dari internet anda akan diberikan nilai MD5
yang bisa anda pakai untuk memverifikasi apakah file yang
anda download masih asli atau tidak.
MD5 juga dipakai untuk mendeteksi perubahan file, salah
satu contonya adalah Tripwire di Linux. Ini adalah bagian
dari Intrusion Detection System, bila ada file yang berubah
nilai hashnya, maka IDS akan menyalakan alarm bahwa
telah terjadi perubahan file.
5. Storing Password
MD5 sering juga dipakai untuk menyimpan password di
database. Daripada menyimpan password dalam bentuk
plain-text, lebih baik yang disimpan bukan password tapi
hash dari password itu. Ketika pengguna memasukkan
password maka password tersebut akan dihitung nilai
hashnya. Nilai hash dari password yang dimasukkan
pengguna ketika login dibandingkan dengan nilai hash yang
di database. Bila cocok, maka authentication sukses.
Ketika user mendaftar, password dia akan dihitung nilai
hashnya dan disimpan dalam database. Contohnya bila dia
mendaftar dengan password “rahasia” maka nilai hashnya
adalah ac43724f16e9241d990427ab7c8f4228 dan disimpan
dalam database. Bila kemudian dia login dengan password
yang lain, maka nilai hashnya akan tidak cocok dengan
yang di database sehingga authentication gagal.
6. Digital signature
Digital signature tidak lain adalah nilai hash yang ter-
enkrip dengan kunci private pembuat dokumen. Penerima
dokumen bisa memverifikasi signature ini dengan cara
menghitung nilai hash dokumen yang dia terima. Kemudian
men-dekrip digital signature dengan kunci publik pembuat
dokumen sehingga kembali menjadi hash. Kedua nilai hash
ini lalu dibandingkan, hasil dekrip dan hasil perhitungan,
jika sama maka signature valid.
Digital signature ini dipakai juga untuk membuat
certifikate SSL. Certificate SSL sangat vital peranannnya
menjaga confidentiality dan authentication ketika
seseorang mengakses web. Browser sudah memiliki daftar
trusted Certificate Authority, jadi setiap browser
mengakses situs dengan https akan diperiksa apakah
certificate server tersebut ditanda-tangani oleh salah satu
dari CA yang dipercaya browser.
7. Collision Vulnerability
Salah satu masalah yang mungkin terjadi dari fungsi hash
adalah collision. Maksudnya adalah ada 2 atau lebih teks
yang menghasilkan nilai hash yang sama. Anda sendiri telah
melihat dengan MD5 bahwa masukan sepanjang
berapapun, akan menghasilkan nilai hash sepanjang 128
bit. Itu artinya kemungkinan inputnya sangat banyak
jumlahnya, tak terhingga, namun kemungkinan nilai
hashnya hanya sejumlah 2^128. Sebagai
ilustrasi, bayangkan apa yang terjadi bila dalam suatu
negara jumlah wanitanya sangat banyak, hingga 5 kali lipat
jumlah pria. Maka kemungkinan akan ada 2 atau lebih
wanita yang memiliki suami yang sama. Inilah yang disebut
collision. Ada 2 atau lebih input teks yang memiliki nilai
hash yang sama.
MD5 memiilki kelemahan yang memungkinkan dicari 2 file
yang memiliki nilai hash yang sama dengan waktu yang
singkat.
8. Executables File Collision
MD5 digunakan untuk menjaga integritas file
contohnya ketika memverifikasi hasil
download atau dalam Tripwire IDS. Fungsi
hash digunakan untuk menjaga integrity
karena perubahan pada file 1 bit saja akan
mengubah nilai hashnya. Namun bila terjadi
collision seperti pada MD5, maka file
integrity tidak lagi bisa terjamin.
9. Postscript File Collision
Postscript sebenarnya adalah bahasa
pemrograman/script yang ditujukan khusus
untuk membuat dokumen yang akan dicetak
mirip sekali dengan PDF. Biasanya scriptnya
tidak ditulis manual, namun orang menulis
dokumen menggunakan editor WYSIWYG
seperti microsoft word, kemudian program
yang akan menulis scriptnya.
10. SSL Certificate Collision
SSL certificate sangat vital untuk keamanan
mengakses situs yang sensitif seperti situs
belanja dan internet banking. Dengan
menunjukkan certificate SSL yang valid, suatu
server membuktikan dirinya pada browser bahwa
dia adalah situs yang sah, browser yakin sedang
berbicara dengan situs yang benar dan dengan
certificate browser yakin akan public key server
itu.
Bila attacker berhasil membuat certificate palsu,
maka attacker bisa melakukan man in the middle
attack (mitm) dan menyadap semua komunikasi
antara browser dan server.