MESSAGE DIGEST 5 (MD 5) -1-

MD5 ialah fungsi hash kriptografi yang digunakan secara luar dengan nilai hash 128-bit. Pada standard internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file. MD5 adalah salah satu dari serangkaian algortima message digest yang didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994).

Algoritma MD5 menerima sebuah input/pesan dengan panjang sebarang dan akan menghasilkan sebuah output dengan panjang tertentu, yaitu 128-bit, “fingerprint” atau “message digest” dari input.  Secara komputasional, diduga sangat tidak mungkin untuk menghasilkan message digest yang sama dari dua pesan yang berbeda, ataupun mendapatkan pesan asli dari sebuah message digest. Algoritma MD5 dimaksudkan untuk aplikasi digital signature, dimana sebuah file besar “dikompres” secara terstruktur, sebelum dienkripsi dengan metode enkripsi yang ada, umumnya public-key cryptosystem seperti RSA. Algoritma MD5 didesain agar cepat pada komputer 32-bit. Selain itu, MD5 juga tidak memerlukan tabel substitusi yang besar sehingga algoritma ini dapat dikodekan secara ringkas.

Algoritma MD5 adalah pengembangan dari algoritma MD4. MD5 lebih lambat dari MD4, namun lebih “konservatif”dari segi desain. MD5 didesain karena MD4 dirasa sudah berada pada batas akan dapat dibobol dengan serangan cryptanalytic. MD5 mengorbankan sedikit kecepatan untuk keamanan yang jauh lebih baik. Banyak reviewer yang memberikan saran-saran terutama pada sisi optimisasi. Algoritma MD5 diberikan secara terbuka kepada publik untuk direview dan dapat juga diadopsi untuk dijadikan sebuah standar.


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).  Pada tahun 1993, den Boer dan Bosselaers memberikan awal, bahkan terbatas, hasil dari penemuan pseudo-collision dari fungsi kompresi MD5. Dua vektor inisialisasi berbeda I dan J dengan beda 4-bit diantara keduanya.

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.. MD5CRK adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukkan kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute force attack. Bagaimanapun juga, MD5CRK berhenti pada tanggal 17 Agustus 2004, saat kerusakan hash pada MD5 diumumkan oleh Xiaoyun Wang, Dengguo Feng, Xuejia Lai dan Hongbo Yu. Serangan analitik mereka dikabarkan hanya memerlukan satu jam dengan menggunakan IBM P690 cluster.

Pada tanggal 1 Maret 2005, Arjen Lenstra, Xiaoyun Wang, and Benne de Weger mendemontrasikan 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 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 template, dengan menggunakan blok 128-byte dari tatanan data pada 64-byte batasan, file-file tersebut dapat mengubah dengan bebas dengan menggunakan algoritma penemuan kerusakan.

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 secara 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.

Kelebihan :
  • Untuk memeriksa integritas file dalam berbagai situasi.
  • Sebagai fungsi enkripsi sertifikat SSL
  • Menghasilkan tanda tangan digital sepanjang 32 karakter, tanpa tergantung panjang input.
  • Hasil output tidak akan sama untuk input yang berbeda.
  • Sulit untuk dipecahkan walaupun dengan serangan brute force, tingkat keamanan MD5 adalah salah satu yang terbaik, tidak bisa diubah kembali (Irreversible)
Kelemahan :
  • Serangan Collision
Seperti telah dibahas di atas, proses MD5 akan menghasilkan keluaran yang ukurannya selalu 128 bit. Ini berarti bahwa untuk kemungkinan panjang masukan yang tak terhingga, hanya akan ada 2128 kemungkinan nilai hash yang akan dihasilkan MD5. Bahkan untuk nilai kosong :
 
X = “    



Dalam kasus MD5 (128 bit), maka dari itu, jumlah percobaan yang diperlukan bukan 2128 kali, namun hanya setengah pangkatnya dari ini (264 kali). Jumlah percobaan 2n/2 ini disebut birthday bound dan merupakan batasan bawah keamanan ideal dari fungsi kriptografik secara probabilitas
  • Kriptanalisis lebih lanjut tehadap MD5
Dalam kasus MD5, kriptanalisis lebih lanjut menunjukkan bahwa MD5 jauh lebih lemah daripada probabilitas teoritis ini. Secepat tahun 1996, sekitar 5 tahun setelah peluncurannya, collision sudah mampu ditemukan pada sistem kompresi MD5 oleh H.Dobbertin. Walaupun collision yang ditemukan ini adalah pseudocollision dalam arti suatu collision dengan nilai awal tertentu dan merupakan suatu peristiwa terisolasi, peringatan kemudian dikeluarkan untuk tidak mengandalkan MD5 untuk kegunaan-kegunaan yang memerlukan ketahanan terhadap collision.

Masukan yang sama sekali berbeda isinya pun dapat dengan relatif mudah disesuaikan sehingga nilai hash-nya sama dengan suatu pesan lain, asalkan terdapat potongan dari kedua pesan itu yang collision-nya sudah ditemukan.

  • Preimage Attack
Preimage attack merupakan serangan terhadap fungsi hash yang menyerupai collision attack, namun dengan tujuan mencari masukan m2 apabila masukan m1 sudah diketahui, sehingga f(m1) = f(m2). Tidak seperti collision attack di mana tujuannya adalah mencari kedua masukan m1 dan m2. Serangan preimage pada umumnya lebih kompleks dibandingkan serangan collision dan tidak jarang alternatif satu-satunya untuk melakukan serangan ini adalah dengan menggunakan brute force. 
  • Proses perubahan data asli menjadi MD5 perlu waktu relatif lama (resource hardware)
Perbandingan MD5 dan MD2
  1. Pada MD2 ukuran padding byte paling sedikit 1 byte sampai 16 byte, sedangkan MD5 antara 1 sampai 512 byte.
  2. Panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512, sedangkan MD2, panjang pesan kongruen dengan 0 modulo 16.
  3. Penambahan checksum pada MD2 sebanyak 16 byte, pada MD5 sebenyak 64 bit dari pesan semula.
  4. Inisialisasi penyangga pada MD2 dengan nilai 0 (nol), sedangkan MD5 diinisialisasi dengan nilai-nilai dalam HEX.
Perbandingan MD5 dan MD4
  1. MD5 memiliki empat putaran, sedangkan MD4 hanya tiga. Akibatnya, fungsi kompresi MD5 meliputi 64 langkah, sedangkan fungsi kompresi MD4 memiliki 48 langkah.
  2. Setiap langkah MD5 memiliki konstanta tambahan yang unik, sedangkan setiap putaran dari MD4 menggunakan konstan yang tetap.
  3. Fungsi G di putaran kedua MD5 kurang simetris daripada fungsi G MD4.
  4. Setiap langkah MD5 menambahkan hasil dari langkah sebelumnya, yang tidak terjadi di MD4. Tujuan modifikasi ini adalah untuk menghasilkan avalanche effect yang lebih cepat.
  5. Pada MD5, urutan input words diakses pada putaran kedua dan ketiga yang kurang mirip satu sama lain     daripada yang terjadi di MD4.
  6. Diklaim bahwa di MD5, “jumlah pergeseran dalam     setiap     putaran telah kira-kira dioptimalkan, untuk hasil ‘avalanche effect‘ yang lebih cepat”. Selain itu,     pergeseran bekerja di masing-masing putaran MD5 yang  berbeda, yang tidak terjadi di MD4.


Leave a Reply