Kamis, 03 Juli 2014

Mengenal Algoritma Hash MD5

Pendahuluan
Akhir-akhir ini inbox e-mail kita semakin penuh dengan pesan, baik pesan penting dari keluarga, sahabat, rekan kerja, atau sekedar pesan sampah (spam). Namun, pernahkan anda membayangkan bagaimana jika ada seseorang yang berhasil menyadap percakapan anda dengan rekan anda melalui email, dan tanpa anda ketahui ternyata email yang dikirim oleh rekan anda sudah disadap dan dimodifikasi sebelumnya oleh si penyadap (sniffer)?

Di dalam keamanan informasi, otentikasi dan integritas pesan merupakan suatu hal yang sangat  penting. Tanpa diketahui siapakah pengirim pesan yang sebenarnya dan apakah pesan benar-benar  asli dari si pengirim, tentu informasi menjadi tidak valid. Oleh karena itu, di dalam kriptografi terdapat fungsi hash satu arah yang biasa digunakan untuk mengecek otentikasi dan integritas pesan. Fungsi hash satu arah ini bekerja dengan menerima input pesan dengan panjang pesan sembarang dan mengkonversinya menjadi kumpulan string dengan panjang fixed (tidak berubah), umumnya berukuran lebih kecil daripada ukuran string pesan asli. Kumpulan string hasil konversi ini biasa disebut message digest.
Di dalam fungsi hash satu arah sendiri dikenal berbagai macam algoritma untuk membuat message digest dari suatu pesan, diantaranya sebagai berikut yang saya ambil dari buku "Kriptografi" karangan Rinaldi Munir:
+----------------+-----------+------+-----------+
|   Algoritma    | MDS (bit) | MBS  |   Kolisi  |
+----------------+-----------+------+-----------+
| MD2            |    128    | 128  |     Ya    |
| MD4            |    128    | 512  |   Hampir  |
| MD5            |    128    | 512  |     Ya    |
| RIPEMD         |    128    | 512  |     Ya    |
| RIPEMD-128/256 |  128/256  | 512  |    Tidak  |
| RIPEMD-160/320 |  160/320  | 512  |    Tidak  |
| SHA-0          |    160    | 512  |     Ya    |
| SHA-1          |    160    | 512  | Ada cacat |
| SHA-256/224    |  256/224  | 512  |    Tidak  |
| SHA-512/384    |  512/384  | 1024 |    Tidak  |
| WHIRPOOL       |    512    | 512  |    Tidak  |
+----------------+-----------+------+-----------+

Keterangan:
MDS = Message Digest Size (ukuran message digest)
MBS = Message Block Size (ukuran blok pesan)
Kolisi = Tabrakan, ada pesan input berbeda yang memiliki message digest yang sama.

Sebagai contoh, misalkan saya memiliki pesan dengan isi (tanpa tanda petik) "Teknik Informatika UIN Sunan Kalijaga Yogyakarta",  maka  nilai hash dari pesan tersebut adalah:

+-------+     +-----+     +----------------------------------+
| pesan | --> | MD2 | --> | 411A1EE452D7DD64ADEF3672FA917E2A |
+-------+     +-----+     +----------------------------------+

+-------+     +-----+     +----------------------------------+
| pesan | --> | MD4 | --> | 96B5C79B3B906FCFF6C08E5E333312B5 |
+-------+     +-----+     +----------------------------------+

+-------+     +-----+     +----------------------------------+
| pesan | --> | MD5 | --> | B7D64968D70061B781D1E9EF8B941AF5 |
+-------+     +-----+     +----------------------------------+

+-------+     +----------------+     +-----------------------+
| pesan | --> | RIPEMD-160/320 | --> | 7A44805B8A7BEDAACACD4 |
+-------+     +----------------+     | A5BC2161DA4A3B693A8   |
                                     +-----------------------+

+-------+     +-------+     +--------------------------------+
| pesan | --> | SHA-1 | --> | 9C524259D364A56BA5623C60B228AB |
+-------+     +-------+     | 5624609C2B                     |
                            +--------------------------------+

+-------+     +-------------+     +--------------------------+
| pesan | --> | SHA-256/224 | --> | C2D731BDE7EB5F033BD477D0 |
+-------+     +-------------+     | 04E0A28DCC2CF8A0E47C4102 |
                                  | 055BF33AE16A3736         |
                                  +--------------------------+

Dalam contoh di atas terlihat bahwa message digest yang dihasilkan oleh masing-masing fungsi hash berbeda-beda. Message digest yang dihasilkan terdiri dari huruf-huruf tersusun acak. Perlu diketahui, bahwa message digest bukanlah hasil pengenkripsian suatu pesan. Bukan hasil enkripsi suatu pesan  karena, tidak ada algortima yang bisa mengembalikan bentuk message digest ke dalam bentuk pesan aslinya (plain text). Fungsi hash satu arah juga dikenal dengan fungsi kompresi (compression function), fingerprint, cryptographic checksum, message integrity check, manipulation detection code.

Contoh Skema Algoritma MD5
Selanjutnya, saya hanya akan membahas algoritma hash MD5 saja. Algoritma ini sudah sangat umum digunakan sebagai standar untuk otentikasi pesan dan mengecek integritas pesan. MD5 dibuat oleh  Ronald Rivest pada tahun 1991. Algoritma MD5 merupakan penyempurnaan dari algoritma hash MD4 setelah diketahui bahwa MD4 berhasil diserang oleh kriptanalisis. Meskipun MD5 lebih lambat dari MD4, tetapi MD5 lebih konservatif dalam desainnya.

Deskripsi Algoritma MD5
Pembuatan message diggest dengan algoritma MD5 diperlihatkan dalam skema berikut
Sederhananya seperti ini:
  1. Appending padding bits (menambahkan bit-bit pengganjal),
  2. Appending length (menambahkan nilai panjang pesan awal),
  3. Initializing MD buffer (menginisialisasi penyangga MD)
  4. Processing message in 16-words blocks (memproses pesan dalam blok 16-words).
Masing-masing akan dijelaskan secara rinci di bawah ini.
1. Appending Padding Bits (Menambahkan Bit-bit Pengganjal)
Pesan dipanjangkan dengan menambahkan bit-bit pengganjal sehingga memiliki panjang (dalam bit) sama dengan 448, modulo 512. Sehingga, panjang pesan setelah ditambahkan bit-bit pengganjal adalah 64 bit kurang dari kelipatan 512. Penambahan bit-bit pengganjal ini selalu dilakukan sebagai langkah pertama, meskipun dalam kondisi awal pun pesan sudah memiliki panjang sama dengan 448, modulo 512.

Penambahan ini dilakukan dengan cara seperti berikut: satu bit tunggal ditambahkan ke pesan, kemudian ditambahkan bit nol sehingga pesan yang sudah diganjal menjadi sama dengan 448, modulo  512.

Secara keseluruhan, paling tidak terjadi penambahan satu bit saja dan paling banyak terjadi penambahan sampai 512 bit.

2. Appending Length (Menambahkan Nilai Panjang Pesan Awal)
B merupakan panjang pesan sebelum diberi bit-bit pengganjal yang dinyatakan dengan panjang 64 bit. Kemudian ditambahkan dengan hasil pada langkah pertama. Jika panjang pesan lebih dari 2^64,  maka yang diambil adalah panjangnya dalam modulo 2^64. Bit-bit ini ditambahkan sebagai 2 buah 32 bit words dan ditambahkan word semula sesuai dengan aturan pertama.

Pada poin ini, pesan yang dihasilkan (setelah ditambahkan dengan bit pengganjal dan B) memiliki panjang yang merupakan kelipatan dari 512 bit. Bisa dikatakan, pesan ini memiliki sebuah nilai panjang yang merupakan kelipatan dari 16 (32 bit) words.

Keyword: md5, algoritma md5, pengertian md5, contoh md5, manfaat md5, message digest, fungsi hash, algoritma hash md5, macam-macam algoritma hash, kelemahan md5,

Tidak ada komentar:

Posting Komentar