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 —
MD4 — mulai tidak aman, MD5 kemudian didesain pada tahun
1991 sebagai pengganti dari MD4 (kelemahan MD4 ditemukan oleh
Hans Dobbertin).
- MD5compress(I,X) = MD5compress(J,X)
Pada tahun
1996 Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5. Dikarenakan hal ini bukanlah serangan terhadap fungsi
hash MD5 sepenuhnya, hal ini menyebabkan para pengguna kriptografi menganjurkan pengganti seperti
WHIRLPOOL,
SHA-1 atau
RIPEMD-160.
Ukuran dari
hash — 128-bit — cukup kecil untuk terjadinya serangan
brute force birthday attack.
MD5CRK adalah proyek distribusi mulai Maret
2004 dengan tujuan untuk menunjukka kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan
brute force attack.
Pada tanggal
1 Maret 2005,
Arjen Lenstra, Xiaoyun Wang, and
Benne de Weger mendemontrasikan
[3] kunstruksi dari dua buah sertifikat
X.509 dengan
public key yang berbeda dan
hash MD5 yang sama, hasil dari demontrasi menunjukkan adanya kerusakan. Konstruksi tersebut melibatkan
private key untuk kedua
public key tersebut. Dan beberapa hari setelahnya,
Vlastimil Klima menjabarkan
[4] dan mengembangkan algortima, mampu membuat kerusakan Md5 dalam beberapa jam dengan menggunakan sebuah komputer
notebook. Hal ini menyebabkan MD5 tidak bebas dari kerusakan.
Dikarenakan MD5 hanya menggunakan satu langkah pada data, jika dua buah awalan dengan hash yang sama dapat dibangun, sebuah akhiran yang umum dapat ditambahkan pada keduanya untuk membuat kerusakan lebih masuk akal. Dan dikarenakan teknik penemuan kerusakan mengijinkan pendahuluan kondisi hash menjadi arbitari tertentu, sebuah kerusakan dapat ditemukan dengan awalan apapun. Proses tersebut memerlukan pembangkitan dua buah file perusak sebagai file templat, dengan menggunakan blok 128-byte dari tatanan data pada 64-byte batasan, file-file tersebut dapat mengubah dengan bebas dengan menggunakan algoritma penemuan kerusakan.
[sunting] Efek nyata dari kriptoanalisis
Saat ini dapat diketahui, dengan beberapa jam kerja, bagaimana proses pembangkitan kerusakan MD5. Yaitu dengan membangkitkan dua byte string dengan hash yang sama. Dikarenakan terdapat bilangan yang terbatas pada keluaran MD5 (2128), tetapi terdapat bilangan yang tak terbatas sebagai masukannya, hal ini harus dipahami sebelum kerusakan dapat ditimbulkan, tapi hal ini telah diyakini benar bahwa menemukannya adalah hal yang sulit.
Sebagai hasilnya bahwa hash MD5 dari informasi tertentu tidak dapat lagi mengenalinya secara berbeda. Jika ditunjukkan informasi dari sebuah public key, hash MD5 tidak mengenalinya secata berbeda jika terdapat public key selanjutnya yang mempunyai hash MD5 yang sama.
Bagaimanapun juga, penyerangan tersebut memerlukan kemampuan untuk memilih kedua pesan kerusakan. Kedua pesan tersebut tidak dengan mudah untuk memberikan serangan
preimage, menemukan pesan dengan
hash MD5 yang sudah ditentukan, ataupun
serangan preimage kedua, menemukan pesan dengan
hash MD5 yang sama sebagai pesan yang diinginkan.
Hash MD5 lama, yang dibuat sebelum serangan-serangan tersebut diungkap, masih dinilai aman untuk saat ini. Khususnya pada
digital signature lama masih dianggap layak pakai. Seorang user boleh saja tidak ingin membangkitkan atau mempercayai
signature baru menggunakan MD5 jika masih ada kemungkinan kecil pada teks (kerusakan dilakukan dengan melibatkan pelompatan beberapa bit pada bagian 128-byte pada masukan
hash) akan memberikan perubahan yang berarti.
Penjaminan ini berdasar pada posisi saat ini dari kriptoanalisis. Situasi bisa saja berubah secara tiba-tiba, tetapi menemukan kerusakan dengan beberapa data yang belum-ada adalah permasalahan yang lebih susah lagi, dan akan selalu butuh waktu untuk terjadinya sebuah transisi.
[sunting] Pengujian Integritas
Ringkasan MD5 digunakan secara luas dalam dunia perangkat lunak untuk menyediakan semacam jaminan bahwa file yang diambil (
download) belum terdapat perubahan. Seorang user dapat membandingkan MD5 sum yang dipublikasikan dengan
checksum dari file yang diambil. Dengan asumsi bahwa
checksum yang dipublikasikan dapat dipercaya akan keasliannya, seorang user dapat secara yakin bahwa dile tersebut adalah file yang sama dengan file yang dirilis oleh para developer, jaminan perlindungan dari
Trojan Horse dan
virus komputer yang ditambahkan pada perangkat lunak. Bagaimanapun juga, seringkali kasus yangterjadi bahwa
checksum yang dipublikasikan tidak dapat dipercaya (sebagai contoh,
checksum didapat dari channel atau lokasi yang sama dengan tempat mengambil file), dalam hal ini MD5 hanya mampu melakukan
error-checking. MD5 akan mengenali file yang didownload tidak sempurna, cacat atau tidak lengkap.
Gambar 1. Satu operasi MD5 — MD5 terdiri atas 64 operasi, dikelompokkan dalam empat putaran dari 16 operasi.
F adalah fungsi nonlinear; satu fungsi digunakan pada tiap-tiap putaran.
Mi menujukkan blok 32-bit dari masukan pesan, dan
Ki menunjukkan konstanta 32-bit, berbeda untuk tiap-tiap operasi.
s menunjukkan perputaran bit kiri oleh
s;
s bervariasi untuk tiap-tiap operasi.
menunjukan tambahan modulo 2
32. MD5 memproses variasi panjang pesan kedalam keluaran 128-bit dengan panjang yang tetap. Pesan masukan dipecah menjadi dua gumpalan blok 512-bit; Pesan ditata sehingga panjang pesan dapat dibagi 512. Penataan bekerja sebagai berikut: bit tunggal pertama, 1, diletakkan pada akhir pedan. Proses ini diikuti dengan serangkaian nol (0) yang diperlukan agar panjang pesan lebih dari 64-bit dan kurang dari kelipatan 512. Bit-bit sisa diisi dengan 64-bit integer untuk menunjukkan panjang pesan yang asli. Sebuah pesan selalu ditata setidaknya dengan 1-bit tunggal, seperti jika panjang pesan adalah kelipatan 512 dikurangi 64-bit untuk informasi panjang (panjang mod(512) = 448), sebuah blok baru dari 512-bit ditambahkan dengan 1-bit diikuti dengan 447 bit-bit nol (0) diikuti dengan panjang 64-bit.
Algoritma MD5 yang utama beroperasi pada kondisi 128-bit, dibagi menjadi empat
word 32-bit, menunjukkan
A,
B,
C dan
D. Operasi tersebut di inisialisasi dijaga untuk tetap konstan. Algoritma utama kemudian beroperasi pada masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi.Pemrosesan blok pesan terdiri atas empat tahap, batasan
putaran; tiap putasan membuat 16 operasi serupa berdasar pada fungsi non-linear
F, tambahan modular, dan rotasi ke kiri. Gambar satu mengilustrasikan satu operasi dalam putaran. Ada empat macam kemungkinan fungsi
F, berbeda dari yang digunakan pada tiap-tiap putaran:
menunjukkan operasi logikan XOR, AND, OR dan NOT.
source : http://id.wikipedia.org/wiki/MD5