MAKALAH KEAMANAN SISTEM INFORMASI
SKEMA PROSES MD5
Nama : Muhammad Rachman Nurhakim
TI - 3B
UNIVERSITAS NASIONAL PASIM BANDUNG
2012
1
Daftar Isi
Daftar Isi ... 1 1. Pendahuluan ... 2 2. Latar belakang MD5 ... 3 3. Algoritma MD5 ... 43.1. Penambahan Panjang Bit ... 4
3.2. Penambahan Panjang Pesan Total ... 4
3.3. Inisialisasi Buffer MD ... 4
3.4. Pemrosesan Pesan dalam blok 16-word ... 5
3.5. Output ... 8
2
1. Pendahuluan
MD2, MD4, dan MD5 termasuk ke dalam algoritma message-digest, atau kadang juga dikenal dengan hash function. Definisi dari hash function, diambil dari salah satu buletin RSA [11] adalah sebagai berikut, “suatu hash function, atau lebih tepatnya cryptographic hash function, atau juga algoritma message digest, beroperasi pada sebuah string input
dengan panjang tidak tentu, dan menghasilkan string output dengan panjang yang sudah ditentukan. Output ini biasa dikenal dengan sebuatn hash value, atau message digest.
Secara umum, algoritma dari sebuah hash function adalah sebagai berikut :
gambar 1. Skema umum suatu hash function
Hash function memiliki struktur berupa pengulangan fungsi yang sama, yang biasa disebut fungsi kompresi. Pada awal algoritma, digunakan sebuah nilai tertentu yang disebut
initial value. Fungsi kompresi ini kemudian digunakan untuk mengupdate nilai ini dengan cara tertentu berdasarkan pesan yang sedang dienkripsi. Proses ini diulangterus menerus, sampai seluruh bagian dari pesan digunakan. Hasil akhir dari nilai ini kemudian menjadi nilai akhir, atau yang disebut hash value.
MD 4 banyak digunakan sebagai dasar dari banyak desain fungsi enkripsi, termasuk MD5, SHA-1, dan RIPEMD. MD 5 merupakan salah satu yang banyak digunakan saat ini. Salah satu implementasinya adalah pada bahasa pemrograman PHP. Dalam PHP sendiri terdapat fungsi built-in untuk enkripsi MD5. Pada PHP, fungsi ini seringkali digunakan untuk pengamanan password pada halaman website yang memerlukan otentifikasi pengguna untuk aksesnya.
3
2. Latar belakang MD5
Algoritma MD5 disusun oleh Profesor Ronald L. Rivest, dari MIT. Pada RFC 1321, Prof. Ron Rivest memberikan penjelasan awal mengenai MD5, yaitu suatu algoritma yang inputnya berupa sebuah pesan yang panjangnya tidak tertentu, dan menghasilkan keluaran sebuah message digest dari pesan inputnya dengan panjang tepat 128 bit.
Diperkirakan (conjectured) tidak mungkin untuk menghasilkan dua pesan dengan
message digest yang sama. Algoritma MD5 dimaksudkan untuk aplikasi tanda tangan digital (digital signature), dimana sebuah pesan yang besar harus dipadatkan / di compress dengan cara yang aman sebelum di enkripsi dengan private key dalam sebuah sistem key seperti RSA1 [1].
Pada intinya, MD5 adalah sebuah cara untuk melakukan verifikasi integritas data, dan dapat lebih diandalkan daripada metode yang lebih umum digunakan, seperti checksum. RFC 1321 dikeluarkan pada bulan April 1992, namun MD5 sendiri sebenarnya sudah mulai dikenal pada tahun 1991. MD5 sebenarnya merupakan perbaikan dari pendahulunya, yaitu MD4. Terdapat 6 perbedaan utama antara MD5 dan MD4 [5], yaitu :
Penambahan tahap ke-empat
Fungsi pada tahap ke-dua diubah dari XY v XZ v YZ menjadi XZ v YZ’
Urutan pembacaan input pada tahap ke-dua dan ke-tiga diubah
Jumlah pergeseran bit pada setiap tahap tidak ada yang sama
Setiap tahap memiliki penambahan konstanta yang unik
Untuk mendapatkan hasil akhir, output dari setiap tahap ditambahkan ke tahap setelahnya
Penjelasan lebih khusus mengenai tahapan yang dilakukan pada enkripsi menggunakan MD5 dijelaskan pada bab berikutnya, yaitu mengenai algoritma MD5.
Empat perubahan pertama merupakan solusi yang ditawarkan berdasarkan serangan yang terjadi pada metode enkripsi MD4, sedangkan dua perubahan yang terakhir merupakan suatu cara untuk meningkatkan tingkat keamanan enkripsi MD5.
Perubahan yang terakhir memiliki efek yang cukup serius [5], penambahan hasil dari tahap sebelumnya memungkinkan terjadinya collision untuk fungsi kompresi MD5. Dalam makalahnya, den Boer dan Bosselaers [5] memberikan penjelasan mengenai hal ini. Namun serangan ini bukanlah terjadi pada keseluruhan fungsi MD5, oleh karena itu, kadangkala serangan semacam ini disebut pseudo-collision.
4
3. Algoritma MD5
Algoritma yang diberikan disini diambil dari RFC 1321, yang disusun oleh Ron Rivest. Dimisalkan kita memiliki pesan sepanjang “b”-bit, dan akan dicari message digestnya. Untuk menghitung message digest dari sebuah pesan, pada MD5 dilakukan lima langkah sebagai berikut :
3.1.Penambahan Panjang Bit
Pesan diperpanjang sampai sebesar 448 bit, dengan modulo 512. artinya jika panjang pesan telah melebihi 448 bit ini, maka perpanjangan pesan akan dilakukan sampai sebesar 512 + 448 bit, dan begitu seterusnya.
Penambahan panjang pesan ini dilakukan dengan cara sebagai berikut, sebuah bit “1” ditambahkan ke dalam pesan. Kemudian bit “0” ditambahkan sampai panjang pesan menjadi 448 bit.
Tujuan dari penambahan pesan ini adalah membuat panjang pesan menjadi (kelipatan) 512 bit, dikurangi 64 bit. Kekurangan 64 bit ini akan diatasi pada tahap kedua.
3.2.Penambahan Panjang Pesan Total
Representasi sebesar 64 bit dari “b” (panjang pesan awal) ditambahkan ke dalam pesan. Jika representasi “b” ini ternyata lebih besar dari 64 bit, maka yang akan diambil hanyalah 64 bit awal (low-order) saja. Panjang pesan total sampai pada tahap ke-dua ini sebesar (kelipatan dari) 512 bit.
Tujuan dari penambahan ukuran pesan sampai sebesar kelipatan dari 512 bit ini adalah agar pesan memiliki panjang tepat kelipatan dari 16 word (satu word memiliki ukuran 32 bit). Pengolahan pesan pada tahap keempat nanti akan dilakukan untuk setiap blok sebesar 16 word.
3.3. Inisialisasi Buffer MD
Pada tahap ini digunakan 4 buah register sebagai buffer untuk perhitungan pesan (A, B, C, dan D). Setiap buffer ini memiliki ukuran 32 bit. Ke empat register ini diinisialisasi dengan nilai-nilai berikut (LSB di sebelah kiri):
5
3.4.Pemrosesan Pesan dalam blok 16-word
Pada awal tahap ini didefinisikan 4 buah fungsi dengan input 3 buah word 32-bit, dan menghasilkan output satu buah word 32-bit.
Fungsi-fungsi ini dideskripsikan sebagai berikut :
Pada proses enkripsi pesan dengan MD5 ini juga diperlukan sebuah array T[i] yang berisi 64 elemen. Seluruh elemen ini didapat dengan perhitungan tertentu menggunakan fungsi sinus. Seluruh nilai dari tiap elemen array ini diberikan dalam RFC 1321.
Pengolahan pesan dilakukan untuk setiap potongan blok dari pesan dengan ukuran tepat 16 word. Dengan demikian pada langkah awal harus dilakukan looping untuk setiap potongan pesan ini. Langkah-langkah yang harus dilakukan dijelaskan dalam tahapan berikut :
1. Loop untuk setiap 16 word
2. Definisikan suatu array x[i] yang berisi setiap word dari pesan (total ukuran array adalah 16 elemen).
3. Definisikan variabel AA, BB, CC, dan DD, yang berisi nilai A, B, C, dan D pada tahap tiga.
4. Tahap ini dibagi menjadi 4 bagian, biasa disebut tahap FF, GG, HH, dan II.
Bagian 1, FF : Andaikan
[ abcd k s i ] → a = b + ( ( a + F ( b, c, d ) + X [ k ] + T [ i ] ) <<< s )
dimana “<<<” melambangkan rotasi ke kiri.
Lakukan seluruh operasi sebagai berikut :
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
6 Bagian 2, GG :
Andaikan
[ abcd k s i ] → a = b + ( ( a + G ( b, c, d ) + X [ k ] + T [ i ] ) <<< s )
dimana “<<<” melambangkan rotasi ke kiri.
Lakukan seluruh operasi sebagai berikut :
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
Bagian 3, HH : Andaikan
[ abcd k s i ] → a = b + ( ( a + H ( b, c, d ) + X [ k ] + T [ i ] ) <<< s )
Lakukan seluruh operasi sebagai berikut :
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
Bagian 4, II : Andaikan
[ abcd k s i ] → a = b + ( ( a + I ( b, c, d ) + X [ k ] + T [ i ] ) <<< s )
Lakukan seluruh operasi sebagai berikut :
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
5. Lakukan penambahan berikut :
7
Untuk memperjelas langkah pengolahan pesan yang harus dilakukan, diberikan gambaran dalam bentuk diagram alir :
8
3.5. Output
Output yang dihasilkan dari tahap empat ialah A, B, C, dan D. Hasil dari fungsi MD5 didapat dengan rumusan berikut :
7. Referensi
Rivest, R., The MD5 Message Digest Algorithm, RFC 1321, MIT - RSA Data Security, Inc., April 1992.
http://www.cs.eku.edu/faculty/styer/460/index.html.
Eugene Styer, MD5 encryption example, Computer Science Department – Eastern Kentucky University.
http://en.wikipedia.org/wiki/MD5.
http://www.intertwingly.net/blog/2004/08/23/Electronic-Forgery. http://en.wikipedia.org/wiki/Initialisation_vector.
Arjen Lenstra and Xiaoyun Wang and Benne de Weger, Colliding X.509 Certificates, Mar 2005. rev May 2005.