Vous êtes sur la page 1sur 6

ALGORITMA HASH FUNCTION BERBASIS MD4 Algoritma MD4 MD4 didesain untuk sebagai algoritma fungsi hash yang

memiliki kemangkusan dalam segi waktu. MD4 dibuat oleh Ronald Rivest pada Oktober 1990. Pertama-tama kita misalkan pesan memiliki sejumlah b-bit pesan sebagai input, dan kita menginginkan untuk menghasilkan message digest dari pesan tersebut. Dalam hal ini, b merupakan sebuah bilangan bulat positif, mungkin nol, dan bilangan tersebut harus kelipatan dari 8. Kita membagi pesan tersebut sebagai berikut : m_0 m_1 . . . m_{b-1} Di bawah ini akan dijelaskan lima tahap proses menghasilkan message digest untuk algoritma MD4. 1.Memasukkan Padding Bit Pertama-tama dilakukan padding pada pesan awal sehingga panjangnya (dalam satuan bit) kongruen dengan 448 modulo 512. Maka pesan tersebut kekurangan 64 bit untuk mencapai kelipatan 512. Padding selalu dilakukan sehingga pesan tersebut kongruen dengan 512. Padding bit awal yaitu bit 1, selanjutnya ditambahkan bit 0 sehingga pesan tersebut memiliki panjang yang kongruen dengan 448 modulo 512. Jadi, panjang padding paling sedikit adalah satu bit hingga 512 bit. 2.Memasukkan Panjang Pesan Sebuah 64-bit yang direpresentasikan oleh b (panjang pesan awal sebelum dilakukan padding bit) dimasukkan pada hasil pesan untuk tahap satu di atas. Panjang pesan yang digunakan selalu lebih kecil dari 264. Bila panjang pesan melebihi 264, maka order terendah yang direpresentasikan oleh 264 yang akan digunakan. Oleh karena itu, setelah proses ini, pesan akan memiliki panjang kelipatan dari 512 bit. Dan pesan dibagi dalam kelipatan 32 bit dalam M[0 . . . N-1] yang menotasikan pesan, dimana N adalah kelipatan dari 16. 3.Inisialisasi Penyangga Ada empat peubah penyangga yang digunakan, yaitu A, B, C, D yang digunakan untuk menghasilkan message digest. Masing-masing variable ini merepresentasikan sebuah nilai 32- bit register. Register tersebut diinisialisasi dengan nilai dalam bentuk heksadesimal, dalam order terendah terlebih dahulu) : 4.Proses Pesan Dalam Blok 32-bit Untuk tahap ini pertama-tama definisikan terlebih dahulu fungsi-fungsi pelengkap yang dibutuhkan untuk menghasilkan message digest, Terdapat tiga fungsi pelengkap yang dalam hal ini tiap-tiap fungsi ini menerima input 32-bit dan menghasilkan output 32 bit juga. Dalam tiap bit posisi F pada fungsi berlaku hubungan kondisional berikut : if X then Y else Z. Fungsi F seharusnya didefinisikan menggunakan atau tanpa v selama XY dan not(X)Z tidak memiliki bit 1 pada posisi yang sama. Dalam tiap bit posisi G berlaku hubungan berikut : jika paling tidak dua dari X, Y, Z sedang digunakan, maka G memiliki sebuah bit 1 dalam posisi tersebut, dan jika tidak G memilii sebuah bit 0. Ini menarik untuk diperhatikan bahwa jika bitbit X, Y, dan Z saling bebas tidak saling mempengaruhi satu sama lain, tiap-tiap bit dari f(X,Y,Z) akan menjadi saling bebas pula. Fungsi H merupakan operasi bit XOR atau fungsi parity. Dia memiliki atribut yang mirip dengan F dan G.

Algoritma Proses Pesan 32-bit /* Proses tiap 32-bit pesan */ For i = 0 to N/16-1 do /* Salin blok i pada X*/ For j = 0 to 15 do Set X[j] to M[i*16+j]. End /* Simpan A sebagai AA, B sebagai BB, C sebagai CC, dan D sebagai DD */ AA = A BB = B CC = C DD = D /* Round 1 */ /* [abcd k s] menotasikan operasi : a = (a + F(b,c,d) + X[k]) <<< s. */ /* Lakukan 16 kali operasi */ [ABCD 0 3] [DABC 1 7] [CDAB 2 11] [BCDA 3 19] [ABCD 4 3] [DABC 5 7] [CDAB 6 11] [BCDA 7 19] [ABCD 8 3] [DABC 9 7] [CDAB 10 11] [BCDA 11 19] [ABCD 12 3] [DABC 13 7] [CDAB 14 11] [BCDA 15 19] /* Round 2 */ /* [abcd k s] menotasikan operasi a = (a + G(b,c,d) + X[k] + 5A827999) <<< s. */ /* Lakukan 16 kali operasi */ [ABCD 0 3] [DABC 4 5] [CDAB 8 9] [BCDA 12 13] [ABCD 1 3] [DABC 5 5] [CDAB 9 9] [BCDA 13 13] [ABCD 2 3] [DABC 6 5] [CDAB 10 9] [BCDA 14 13] [ABCD 3 3] [DABC 7 5] [CDAB 11 9] [BCDA 15 13] /* Round 3 */ /* [abcd k s] menotasikan operasi

a = (a + H(b,c,d) + X[k] + 6ED9EBA1) <<< s. */ /* Lakukan 16 kali operasi */ [ABCD 0 3] [DABC 8 9] [CDAB 4 11] [BCDA 12 15] [ABCD 2 3] [DABC 10 9] [CDAB 6 11] [BCDA 14 15] [ABCD 1 3] [DABC 9 9] [CDAB 5 11] [BCDA 13 15] [ABCD 3 3] [DABC 11 9] [CDAB 7 11] [BCDA 15 15] /* Lalu lakukan penambahan berikut ini. (Dalam hal ini increment dilakukan pada tiap-tiap register) */ A = A + AA B = B + BB C = C + CC D = D + DD end Algoritma MD5 1.Pengertian MD5 ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 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 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, yaitu MD4 yang berhasil diserang oleh kriptanalis. Algoritma MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit. MD-5 adalah salah satu aplikasi yang digunakan untuk mengetahui bahwa pesan yang dikirim tidak ada perubahan sewaktu berada di jaringan. Algoritma MD-5 secara garis besar adalah mengambil pesan yang mempunyai panjang variable diubah menjadi sidik jari atau intisari pesan yang mempunyai panjang tetap yaitu 128 bit. Sidik jari ini tidak dapat dibalik untuk mendapatkan pesan, dengan kata lain tidak ada orang yang dapat melihat pesan dari sidik jari MD-5 Message Digest 5 (MD-5) adalah salah satu penggunaan fungsi hash satu arah yang paling banyak digunakan. MD-5 merupakan fungsi hash kelima yang dirancang oleh Ron Rivest dan didefinisikan pada RFC 1321[10]. MD-5 merupakan pengembangan dari MD-4 dimana terjadi penambahan satu ronde[1,3,10]. MD-5 memproses teks masukan ke dalam blok-blok bit sebanyak 512 bit, kemudian dibagi ke dalam 32 bit sub blok sebanyak 16 buah. Keluaran dari MD-5 berupa 4 buah blok yang masing-masing 32 bit yang mana akan menjadi 128 bit yang biasa disebut nilai hash[3,10]. Simpul utama MD5 mempunyai blok pesan dengan panjang 512 bit yang masuk ke dalam 4 buah ronde. Hasil keluaran dari MD-5 adalah berupa 128 bit dari byte terendah A dan tertinggi byte D. 2.Cara Kerja Algoritma MD5 Langkah-langkah pembuatan message digest secara garis besar:

a.Penambahan bit-bit pengganjal (padding bits). b.Penambahan nilai panjang pesan semula. c.Inisialisasi penyangga (buffer) MD. d.Pengolahan pesan dalam blok berukuran 512 bit. Gambar 1. Algorithm Hash Function MD5 A.Penambahan bit-bit pengganjal 1)Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. 2)Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512. 3)Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit B.Penambahan Nilai Panjang Pesan 1)Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. 2)Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 264. Dengan kata lain, jika panjang pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264. 3)Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit. C.Inisialisasi Penyangga MD 1)MD5 membutuhkan 4 buah penyangga (buffer) yang masing-masing 32 = 128 bit.vpanjangnya 32 bit. Total panjang penyangga adalah 4 Keempat penyangga ini menampung hasil antara dan hasil akhir. 2)Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut: A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210 D.Pengolahan Pesan dalam Blok Berukuran 512 bit 1)Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL 1). 2)Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini disebut proses HMD5. Gambaran proses HMD5 diperlihatkan pada Gambar berikut ini. Gambar 2.Proses HMD5 3.Inisialisasi MD5 Pada MD-5 terdapat empat buah word 32 bit register yang berguna untuk menginisialisasi message digest pertama kali. Register-register ini di inisialisasikan dengan bilangan hexadesimal. word A: 01 23 45 67 word B: 89 AB CD EF

word C: FE DC BA 98 word D: 76 54 32 10 Register-register ini biasa disebut dengan nama Chain variabel atau variabel rantai. 4.Proses Pesan di dalam Blok 16 word Pada MD-5 juga terdapat 4 (empat) buah fungsi nonlinear yang 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. Operasi dasar MD5 diperlihatkan pada Gambar di bawah ini: Gambar 3.Operasi Dasar MD5 Operasi dasar MD5 yang diperlihatkan pada gambar di atas dapat ditulis dengan sebuah persamaan sbb: a = b +CLSs (a + g(b,c,d) + X[k]+ T[i]) yang dalam hal ini, a,b,c,d = 4 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 table T ke-i (32-bit) + = operasi penumlahan 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 1. Nilai T[i] didapatkan dari Tabel. Dari persamaan di atas, dapat dilihat bahwa masing-masing fungsi fF, fG, fH, dan fI melakukan 16 kali operasi dasar. Misalkan notasi : [abcd k s i] Menyatakan operasi a =b + ((a + g(b, c, d) + X[k] + T[i])<<<s) yang dalam hal ini <<<s melambangkan operasi circular left shift 32-bit, maka operasi dasar pada masing-masing putaran dapat ditabulasikan sbb: Putaran 1: 16 kali operasi dasar dengan g(b, c, d) = F(b, c, d) dapat dilihat Tabel .1 Tabel.1 Putaran 2 : 16 kali operasi dasar dengan g(b, c, d) = G(b, c, d) dapat dilihat Tabel.2 Tabel.2 Putaran 3: 16 kali operasi dasar dengan g(b, c, d) = H(b, c, d) dapat dilihat Tabel.3 Tabel.3 Putaran 4: 16 kali operasi dasar dengan g(b, c, d) = I(b, c, d) dapat dilihat Tabel.4

Tabel.4 Setelah putaran keempat, a, b, c, dan d ditambahkan ke A, B, C, dan D, dan selanjutnya algoritma memproses untuk blok data berikutnya (Yq+1). Keluaran akhir dari algoritma MD5 adalah hasil penyambungan bit-bit di A, B, C, dan D. Dari uraian di atas, secara umum fungsi hash MD5 dapat ditulis dalam persamaan matematis berikut: MD0 = IV MDq + 1 = MDq + fI(Yq + fH(Yq + fG(YQ + fF(Yq + MDq)))) MD = MDL 1 yang dalam hal ini, IV = initial vector dari penyangga ABCD pada proses inisialisasi penyangga. Yq = blok pesan berukuran 512-bit ke-q L = jumlah blok pesan D = nilai akhir message digest

Vous aimerez peut-être aussi