Friday, February 11, 2011

Algoritma hash MD5

Dalam ilmu kriptografi, MD5 (Message Digest Algorithm version 5) adalah salah satu algoritma hash yang paling populer. Hash atau hashing sendiri adalah proses perubahan suatu data menjadi data lain dengan panjang tertentu, sedemikian sehingga data itu tidak dapat dipulihkan kembali. Teknik ini biasa digunakan dalam enkripsi data, misalnya untuk menyimpan password agar tidak ada yang dapat mengetahuinya meskipun dia dapat melihat hash dari password itu.

Sebenarnya istilah “enkripsi” tidaklah tepat karena jika data itu dienkripsi, pastilah ada cara untuk dekripsi untuk mendapatkan kembali data yang disembunyikan itu. Sedangkan hash, seperti disebutkan di atas, adalah proses yang irreversibel (tidak ada istilah de-hash atau un-hash). Artinya data yang sudah di-hash tidak dapat dipulihkan kembali menjadi seperti data awal. Ibaratnya, jika data dianggap sebagai kayu, maka algoritma hash adalah proses membakar kayu itu menjadi abu. Tentu saja kita tidak dapat mengubah abu itu menjadi kayu kembali.

Algoritma hash MD5 sendiri menerima input berupa data dengan panjang bebas, dan menghasilkan output heksadesimal sepanjang 32 karakter. Jadi, seberapapun panjang data input, output yang dihasilkan akan selalu sepanjang 32 karakter. Perubahan sedikit saja di input akan mengubah output dengan drastis. Sebagai contoh:

Input: Test
Output: 0cbc6611f5540bd0809a388dc95a615b

Misalkan kita ubah input dengan huruf kecil:

Input: test
Output: 098f6bcd4621d373cade4e832627b4f6

Terlihat bahwa perubahan input sedikit saja akan mengubah output secara keseluruhan. Karena sifat ini, algoritma ini sering dimanfaatkan untuk mengecek integritas atau keutuhan suatu data. Mungkin saat kita hendak men-download file-file besar sering juga disertai “MD5 checksum” dari file itu. Ya, dengan mengecek MD5 hash dari file yang kita download, kita dapat mengetahui apakah file yang kita peroleh sempurna atau rusak, karena kerusakan paling kecil saja akan mengubah MD5 checksum dari file itu.

Manfaat lainnya adalah dalam penyimpanan password. Seperti disebutkan di awal, bahwa MD5 sudah menjadi standar de facto untuk pengamanan password. Password yang tersimpan di database adalah dalam bentuk MD5 hash-nya, sehingga meskipun seseorang bisa menerobos masuk ke database untuk mencuri password, mereka tidak dapat melihat password aslinya karena yang mereka dapatkan hanyalah hash-nya.

Namun demikian, algoritma ini bukanlah yang paling aman. Beberapa sumber menyebutkan bahwa algoritma ini dapat ditembus (walaupun tidak dengan mudah) dengan metode collision dengan rainbow table. Saya juga tidak tahu persis, yang jelas dengan cara ini seseorang dapat mencari data lain yang memiliki nilai hash yang sama. Karena itu, sekarang dikembangkan algoritma hashing baru yang disebut SHA (Secure Hash Algorithm). Namun, bagaimanapun juga, MD5 tetap yang paling banyak digunakan saat ini.

Sejarah
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).

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 birthday attack. MD5CRK adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukka kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute force attack.

info lebih lanjut buisa merujuk kesini
Share:

1 comments:

  1. pake SHA-512 aja :)

    sedikit bertanya ya om, diatas kan menurut om miftah (tidak ada istilah de-hash atau un-hash)nah bagaimana dalam konsep vpn? :) apakah hash yang dikirim node A melalui enkapsulasi menuju node B tidak di de-has atau un-hash kah? :)

    sedikit bertanya sebagai media diskusi ya :)

    ReplyDelete

Followers

Total Pageviews

Definition List

Unordered List

Support