• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

2.5 Message Digest 5 (MD5)

MD5 ini merupakan salah satu fungsi hash yang merupakan kelanjutan dari MD4, dan dikembangkan oleh Profesor Ronald Rivest pada tahun 1991. MD5 ini merupakan perbaikan dari MD4 karena MD4 dianggap tidak aman lagi setelah adanya serangan yang dapat melemahkan algoritma tersebut. MD5 menerima masukan pesan dengan ukuran sembarangan dan mengkonversi pesan tersebut dengan algoritma hash menjadi message digest

berukuran 128 bit, yang merupakan rangkaian 32 digit karakter hexadesimal. Dengan demikian MD5 bekerja pada satuan blok-blok masukan berukuran 512 bit yang diproses secara berulang.

Langkah pemrosesan pesan menjadi message digest menggunakan algoritma MD5 ini yaitu :

1. Menambah bit-bit pengganjal

Menambahkan bit-bit pengganjal pada pesan masukan agar memiliki panjang kelipatan 512 bit dikurang 64 bit.

Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan kongruen dengan 448 bit modulo 512, artinya panjang pesan setelah ditambahi bit-bit pengganjal adalah 64 bit kurang dari kelipatan 512, seperti yang sudah disebutkan sebelumnya. Hal ini berlaku juga untuk pesan dengan panjang 448 bit, dimana pesan tersebut harus ditambahi bit-bit pengganjal sebanyak 512 bit menjadi 960 bit.Dari peristiwa khusus tersebut, dapat dilihat bahwa panjang bit-bit pengganjal yang diperbolehkan adalah 1 sampai 512 bit. Penambahan bit-bit pengganjal tersebut dilakukan dengan prosedur tersendiri, yaitu diawali dengan satu buah bit 1 pada akhir pesan dan selanjutnya menambahkan bit-bit 0 sampai memenuhi syarat jumlah 64 bit kurang dari kelipatan 512.

2. Penambahan panjang pesan

Mengisi sisa ruang 64 bit tersebut dengan informasi panjang pesan semula. Pesan yang sudah diberi bit-bit pengganjal, seharusnya berukuran 64 bit kurang dari kelipatan 512, selanjutnya ditambah dengan 64 bit yang menyatakan informasi panjang pesan semula sehingga panjang pesan menjadi tepat kelipatan 512 bit. Jika panjang pesan lebih besar dari 264 maka dilakukan proses modulo 264 terhadap panjang tersebut, baru kemudian ditambahkan pada pesan. Dengan kata lain, jika panjang pesan semula adalah n bit maka 64 bit yang ditambahkan menyatakan n modulo 264

3. Inisialisasi penyangga MD5

Menginisialisasi penyangga untuk memroses pesan. Untuk melakukan proses hashing, MD5 membutuhkan empat buah penyangga (buffer) yang masing-masing panjangnya 32 bit sehingga totalnya 128 bit. Penyangga-penyangga tersebut berfungsi sebagai penampung hasil antara dan hasil akhir selama menjalankan algoritma hash. Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan pengisian nilai-nilai dalam notasi heksadesimal sebagai berikut:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

4. Pengolahan Pesan dalam Blok Berukuran 512 bit

Setiap blok berukuran 512 bit diproses bersama dengan penyangga MD menjadi keluaran 128 bit. Proses ini terdiri dari 4 buah putaran dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali. Setiap operasi dasar memakai sebuah elemen T secara spesifik, yang akan

ditampilkan nanti. Jadi setiap putaran memakai 16 elemen tabel T, dan jumlah total putaran proses yang dilakukan adalah 64 buah. Proses tersebut diperlihatkan dalam gambar

]) 16 .. 1 [ , , (ABCD Y T f ABCD F q ]) 32 .. 17 [ , , (ABCD Y T f ABCD G q ]) 48 .. 33 [ , , (ABCD Y T f ABCD H q ]) 64 .. 49 [ , , (ABCD Y T f ABCD I q A B C D A B C D A B C D + + + + MDq MDq + 1 128 Yq 512

Gambar 2.21 Proses setiap putaran pengolahan pesan dalam blok 512 bit

Proses HMD5 terdiri dari 4 buah putaran, dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali dan setiap operasi dasar memakai sebuah elemen T. Jadi setiap putaran memakai 16 elemen Tabel T.Pada Gambar 4, Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai message digest 128-bit dari proses HMD5 ke-q.

fungsi fF, fG, fH, dan fI masing-masing berisi 16 kali operasi dasar terhadap masukan, setiap operasi dasar menggunakan elemen Tabel T. Operasi dasar MD5 diperlihatkan pada Gambar

a b c d g + + + CLS s + X[k] T[i]

Gambar 2.22 Operasi dasar proses pengolahan pesan dalam blok 512 bit

Operasi dasar MD5 yang diperlihatkan pada Gambar diatas dapat ditulis dengan sebuah persamaan sebagai berikut:

ab + CLSs(a + g(b, c, d) + X[k] + T[i]) yang dalam hal ini,

a, b, c, d = empat buah peubah penyangga 32-bit (berisi nilai penyangga A, B, C, D)

g = salah satu fungsi F, G, H, I

CLSs = circular left shift sebanyak s bit

X[k] = kelompok 32-bit ke-k dari blok 512 bit message ke

q. Nilai k = 0 - 15.

T[i] = elemen Tabel T ke-i (32 bit) + = operasi penjumlahan modulo 232

Fungsi fF, fG, fH, dan fI adalah fungsi untuk memanipulasi masukan a, b,

c, dan d dengan ukuran 32-bit. Masing-masing fungsi dapat dilihat pada Tabel 2.2.

Tabel 2.2 Fungsi-fungsi dasar MD5

Nama Notasi g(a, b, c, d)

fF F(b, c, d) (bc) ∨ (~bd)

fG G(b, c, d) (bd) ∨ (c ∧ ~d)

fH H(b, c, d) bcd

fI I(b, c, d) c ⊕ (b ∧ ~ d)

Catatan: operator logika AND, OR, NOT, XOR masing-masing dilambangkan dengan ∧, ∨, ~, ⊕

Dari persamaan operasi dasar MD5 dapat dilihat bahwa masing-masing fungsi fF, fG, fH, dan fI melakukan 16 kali operasi dasar.

Bila Mj menyatakan pesan sub-blok ke-j (l bernilai mulai 0 sampai dengan 15), dan <<<s menyatakan pergeseran ke kiri sebanyak s bit, 4 operasi yang dijalankan yaitu :

ff(a,b,c,d,Mj,s,ti) menyatakan a = b + ((a + f(b,c,d) + Mj + ti) <<<s) gg(a,b,c,d,Mj,s,ti) menyatakan a = b + ((a + g(b,c,d) + Mj + ti) <<<s) hh(a,b,c,d,Mj,s,ti) menyatakan a = b + ((a + h(b,c,d) + Mj + ti) <<<s) ii(a,b,c,d,Mj,s,ti) menyatakan a = b + ((a + i(b,c,d) + Mj + ti) <<<s)

Gambar 2.23 Empat tahapan MD5

Berikut ini proses dari 4 round yang di hasilkan : Round 1 : ff(a, b, c, d, M0, 7, 0xd76aa478) ff(d, a, b, c, M1, 12, 0xe8c7b756) ff(c, d, a, b, M2, 17, 0x242070db) ff(b, c, d, a, M3, 22, 0xc1bdceee) ff(a, b, c, d, M4, 7, 0xf57c0faf) ff(d, a, b, c, M5, 12,0x4787c62a) ff(c, d, a, b, M6, 17, 0xa8304613) ff(b, c, d, a, M7, 22, 0xfd469501) ff(a, b, c, d, M8, 7, 0x698098d8) ff(d, a, b, c, M9, 12, 0x8b44f7af)

ff(c, d, a, b, M10, 17, 0xffff5bb1) ff(b, c, d, a, M11, 22, 0x895cd7be) ff(a, b, c, d, M12, 7, 0x6b901122) ff(d, a, b, c, M13, 12, 0xfd987193) ff(c, d, a, b, M14, 17, 0xa679438e) ff(b, c, d, a, M15, 22, 0x49b40821) Round 2 : gg (a, b, c, d, M1, 5, 0xf61e2562) gg(d, a, b, c, M6, 9, 0xc040b340) gg(c, d, a, b, M11, 14, 0x265e5a51) gg(b, c, d, a, M0, 20, 0xe9b6c7aa) gg(a, b, c, d, M5, 5, 0xd62f105d) gg(d, a, b, c, M10, 9,0x02441453) gg(c, d, a, b, M15, 14, 0xd8a1e681) gg(b, c, d, a, M4, 20, 0xe7d3fbc8) gg(a, b, c, d, M9, 5, 0x21e1cde6) gg(d, a, b, c, M14, 9, 0xc33707d6) gg(c, d, a, b, M3, 14, 0xf4d50d87) gg(b, c, d, a, M8, 20, 0x455a14ed) gg(a, b, c, d, M13, 5, 0xa9e3e905) gg(d, a, b, c, M2, 9, 0xfcefa3f8) gg(c, d, a, b, M7, 14, 0x676f02d9) gg(b, c, d, a, M12, 20, 0x8d2a4c8a) Round 3 : hh (a, b, c, d, M5, 4, 0xfffa3942) hh(d, a, b, c, M8, 11, 0x8771f681)

hh(b, c, d, a, M14, 23, 0fde5380c) hh(a, b, c, d, M1, 4, 0xa4beea44) hh(d, a, b, c, M4, 11,0x4bdecfa9) hh(c, d, a, b, M7, 16, 0xf6bb4b60) hh(b, c, d, a, M10, 23, 0xbebfbc70) hh(a, b, c, d, M13, 4, 0x289b7ec6) hh(d, a, b, c, M0, 11, 0xeaa127fa) hh(c, d, a, b, M3, 16, 0xd4ef3085) hh(b, c, d, a, M6, 23, 0x04881d05) hh(a, b, c, d, M9, 4, 0xd9d4d039) hh(d, a, b, c, M12, 11, 0xe6db99e5) hh(c, d, a, b, M15, 16, 0x1fa27cf8) hh(b, c, d, a, M2, 23, 0xc4ac5665) Round 4 : ii(a, b, c, d, M0, 6, 0xf4292244) ii(d, a, b, c, M7, 10, 0x432aff97) ii(c, d, a, b, M14, 15, 0xab9423a7) ii(b, c, d, a, M5, 21, 0xfc93a039) ii(a, b, c, d, M12, 6, 0x655b59c3) ii(d, a, b, c, M3, 10,0x8f0ccc92) ii(c, d, a, b, M10, 15, 0xffeff47d) ii(b, c, d, a, M1, 21, 0x85845dd1) ii(a, b, c, d, M8, 6, 0x6fa87e4f) ii(d, a, b, c, M15, 10, 0xfe2ce6e0) ii(c, d, a, b, M6, 15, 0xa3014314) ii(b, c, d, a, M13, 21, 0x4e0811a1) ii(a, b, c, d, M4, 6, 0xf7537e82) ii(d, a, b, c, M , 10, 0xbd3af235)

ii(c, d, a, b, M2, 15, 0x2ad7d2bb) ii(b, c, d, a, M9, 21, 0xeb86d391)

Konstanta ti diperoleh dari :

Pada langkah ke-i, ti adalah bagian integer dari 232 x abs(sin i) dimana i dalam satuan radian.

Setelah semua pesan dimasukkan ke dalam MD5, keluaran akhir merupakan gabungan dari a, b, c, dan d.

2.5.1 Kelemahan (Vulnerability) MD5

Algoritma kriptografis manapun sampai saat ini belum ada yang benar-benar sempurna. Selalu ada kemungkinan serangan berhasil yang ditujukan pada suatu algoritma. Hal ini juga berlaku pada algoritma MD5. MD5 telah menjadi sorotan publik

kriptografi sejak pertama kali dipublikasikan. Pada tahun 2004, hampir semua riset serangan terhadap MD5 hanya dapat menunjukkan kelemahan – kelemahan kecil pada desain algoritmanya. Meskipun ada 3 serangan yang dapat menunjukkan adanya permasalahan serius pada desain. Tiga serangan tersebut dengan properti L adalah panjang nilai hash, yaitu:

1. Serangan terhadap properti Collision Resistant, yaitu

Collision Attack, yang artinya usaha menemukan dua pesan M1 dan M2 yang memiliki nilai hash yang sama dengan percobaan sebanyak kurang dari 2L/2

2. Serangan terhadap properti satu arah, yaitu First Preimage Attack, yang berarti usaha untuk menemukan pesan masukan jika diketahui nilai hashnya dalam percobaan sejumlah kurang dari 2L

3. Serangan kedua terhadap properti satu arah, yaitu Second Preimage Attack, yang berarti usaha untuk menemukan pesan masukan M2 jika diketahui pesan M1 yang memiliki nilai hash yang sama dalam percobaan sejumlah kurang dari 2L

2.5.2 Pemecahan Masalah Serangan Md5

Dihasilkannya suatu kolisi dalam algoritma MD5 dengan sangat cepat seperti yang telah disebutkan sebelumnya adalah masalah besar bagi administrator sistem. Untuk menangani permasalahan tersebut yang dianggap cukup sulit untuk dipecahkan, administrator harus memodifikasi algoritma MD5 yang digunakan dengan fungsi hash yang jauh lebih rumit, dengan tingkat pemecahannya yang jauh lebih tinggi. Salah satu caranya adalah dengan menambahkan beberapa bit (challenge) untuk kemudian disambungkan dengan nilai hash pesan tersebut. Hal ini digunakan sebagai penanda jumlah panjang karakter pesan asli yang akan dihitung nilai hashnya. Dengan disambungnya

challenge dengan pesan asli (password) yang sudah di hash, maka kemungkinan brute force menemukan pesan asli = 1032 (panjang password yang sudah di hash) + 106 (panjang challenge). Dalam Tugas Akhir ini juga terdapat pengamanan One Time Password, dan kemungkinan terjadinya untuk menemukan pesan sama yaitu sebanyak 264 attemps (usaha).

2.5.3 Kelebihan dan Kekurangan MD5

Kelebihan algoritma MD5:

1. MD5 ada 4 pass pada setiap message yang berukuran 16 word (1 word = 32-bit).

2. Akan butuh mencoba menghash 2128 dokumen untuk mendapatkan sebuah dokumen yang menghasilkan suatu message digest tertentu.

3. Akan butuh mencoba menghash 264 dokumen untuk mendapatkan 2 dokumen yang memiliki hash yang sama. 4. Keamanan terhadap kriptanalisis. Penggunaan bilangan

random sebagai challenge yang selalu berubah-ubah. Hal ini dapat dilihat dari penggunaan bilangan random yang sifatnya One Time Password (OTP), sehingga sekali login

client mengalami kegagalan maka sistem akan memberi

challenge baru terhadap client tersebut

5. Simplicity. Algoritma MD5 ini simple dan mudah untuk diimplementasikan, karena tidak membutuhkan program yang besar dan table substitusi yang besar pula.

Kekurangan algoritma MD5 :

1. Keamanan terhadap brute force. Dalam hal ini MD5 menghasilkan digest 32 bit lebih pendek dibandingkan dengan fungsi hash lainnya.

2. Kecepatan. Algoritma ini menggunakan arsitektur 32 bit. MD5 ini mempunyai 64 langkah dibandingkan dengan algoritma-algoritma yang lain. Algoritma ini juga harus memproses 128 bit buffer.

Dokumen terkait