MODIFIKASI ALGORITME FUNGSI HASH MD5
DIDASARKAN PADA ANALISIS SYARAT CUKUP
SERANGAN DIFERENSIAL
AGUSTINUS SROYER
SEKOLAH PASCASARJANA
INSTITUT PERTANIAN BOGOR
BOGOR
2009
PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI Dengan ini saya menyatakan bahwa tesis berjudul Modifikasi Algoritme Fungsi Hash MD5 didasarkan pada Analisis Syarat Cukup Serangan Diferensial adalah karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apapun kepada perguruan tinggi manapun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir tesis ini.
Bogor, Agustus 2009 Agustinus Sroyer NIM. G551060351
ABSTRACT
AGUSTINUS SROYER. The Modification of MD5 Hash Function Algorithm Based on Sufficient Conditions of Analysis Differential Attack. Supervised by SUGI GURITMAN and NUR ALIATININGTYAS.
MD5 (message digest five) is one of algorithms most widely used cryptographic hash functions nowadays. It was designed in 1992 as an improvement of MD4. On 2004, Wang found the weakness of the algorithm using differential attack, the collisions of MD5 could be found efficiently in two blocks. The first took about 239 MD5 operations, and the second block took about 232 MD5 operations. Based on these cases, it would be explained the weaknesses of the algorithm according to sufficient conditions analysis. The resulting analysis were used to modify the structure of MD5 hash function algorithm.
The result was that there were four important components in MD5 algorithm which were changed, i.e addition constancy, cyclic constancy, message block permutation, and non-linearly boolean function. The value of addition constancy, cyclic constancy, message block permutation were changed from the value of fixed constancy into the value of a number of variable operation in the previous iteration, which was spread (depend on previous variable). In the meantime, the formula of non-linearly boolean function was changed.
Modified MD5 algorithm was intended to be resistant to the differential attack of Wang version. Since the structure was not changed, this algorithm was also resistant to the other types or kinds of attack. The changing of some operations in MD5 algorithm caused the implementation to slow down. The results of the implementation showed that modified MD5 slower about three times from previous version.
Keywords: hash function, MD5 algorithm, collision, differential attack, sufficient conditions.
RINGKASAN
AGUSTINUS SROYER. Modifikasi Algoritme Fungsi Hash MD5 didasarkan pada Analisis Syarat Cukup Serangan Diferensial. Dibimbing oleh SUGI GURITMAN dan NUR ALIATININGTYAS.
Salah satu primitif kriptografi modern adalah fungsi hash kriptografi, atau sering disebut fungsi hash satu-arah. Dari segi transformasinya, fungsi hash didefinisikan sebagai fungsi yang memetakan bitstring dengan panjang sebarang ke bitstring dengan panjang tetap. Output dari fungsi hash adalah nilai hash (hash value). Di samping itu, dari segi peranannya di dalam kriptografi, fungsi ini juga diharuskan memenuhi sifat satu arah dan tahan tumbukan. Fungsi hash h dikatakan bersifat satu arah apabila secara komputasi tak layak menentukan input x jika diketahui nilai hash y sehingga y = h(x). Di lain pihak, sifat tahan tumbukan dari h dimaknai secara komputasi tak layak menentukan pasangan input x dan x’ dengan x ≠ x’ sehingga outputnya sama, h(x) = h(x’) (terjadi tumbukan).
Sifat satu arah dan tahan tumbukan menyebabkan fungsi hash salah satunya digunakan untuk melindungi integritas data dari pemalsuan. Sebagai ilustrasi, suatu pesan x dilabelkan dengan nilai hashnya y = h(x). Kita bisa memalsukan x apabila kita bisa menentukan pesan lain x’ ≠ x sehingga h(x’) = y (mempunyai label yang sama dengan x). Jika ini yang terjadi maka fungsi hash yang bersangkutan dikatakan tidak aman, dengan kata lain x’ bisa digunakan untuk memalsukan x.
Dari makna fungsi hash yang telah diuraikan di atas, jelas bahwa menyerang suatu algoritme fungsi hash berarti mencari suatu metode untuk menentukan x dan x’, x ≠ x’, sehingga mempunyai peluang yang cukup tinggi terjadinya tumbukan, h(x) = h(x’). MD5 merupakan salah satu algoritme fungsi hash yang paling luas digunakan dalam kriptografi. Tahun 2004, Wang dan Yu (dalam How to Break MD5 and Other Hash Functions), selanjutnya disebut sebagai artikel Wang, berhasil mematahkan algoritme tersebut berdasarkan analisis syarat cukup serangan diferensial.
Ide dasar serangan diferensial pada fungsi hash adalah memilih pasangan input x dan x’, x ≠ x’, dan mempunyai beda tertentu sehingga memperbesar peluang terjadinya tumbukan (h(x) = h(x’)). Pada proses serangan diferensial untuk MD5, pertama kali Wang dan Yu mendefinisikan diferensial karakteristik dalam bentuk Tabel Diferensial Karakteristik (Lampiran1 & Lampiran 3). Pendefinisian diferensial karakteristik ini dimaksudkan sebagai alur dalam proses algoritme MD5 jika diberi pasangan input x dan x’ dengan beda tertentu, diharapkan mempunyai peluang yang tinggi terjadinya tumbukan. Proses terjadinya tumbukan ditunjang dengan memodifikasi pesan melalui penentuan syarat cukup pada bit-bit tertentu. Syarat cukup diberikan dalam bentuk Tabel Syarat Cukup (Lampiran 2 & Lampiran 4). Dengan metode tersebut Wang dan Yu berhasil menentukan tumbukan pada MD5 secara efisien di mana blok pertama memerlukan sekitar 239 operasi MD5 dan blok kedua memerlukan sekitar 232 operasi MD5. Hasil tersebut diperkuat juga oleh Hawkes et al. (dalam Musings on the Wang et al. MD5 Collision, 2004).
Namun sayangnya, pendefinisian karakteristik diferensial pada artikel tersebut diberikan tanpa penjelasan dan hanya diberikan sedikit ilustrasi bagaimana menentukan syarat cukup. Pada penelitian ini dieksploitasi bagaimana menentukan syarat cukup penentuan nilai bit-bit tertentu untuk memodifikasi pesan sampai pada langkah ketujuh secara lengkap mengikuti Tabel Karakteristik Diferensial. Dengan kata lain, jika dilanjutkan maka akan diperoleh nilai-nilai syarat cukup (Lampiran 2 & Lampiran 4). Syarat cukup tersebut digunakan untuk memodifikasi pesan sehingga memperbesar peluang terjadinya tumbukan (collision). Berdasarkan syarat cukup tersebut maka digunakan untuk menarik kesimpulan dan selanjutnya memodifikasi MD5.
Modifikasi MD5 hanya dilakukan pada komponen-komponen utama tanpa mengubah struktur besarnya. Komponen-komponen utama tersebut adalah konstanta putaran, konstanta jumlah, permutasi blok pesan dan fungsi boolean tak linear. Nilai konstanta jumlah, konstanta putaran, dan permutasi blok pesan diubah dari nilai konstanta tetap ke nilai hasil operasi beberapa variabel pada iterasi sebelumnya yang sifatnya merambat. Di lain pihak, fungsi boolean tak linear diubah rumusnya. Algoritma MD5 termodifikasi dimaksudkan agar tahan terhadap serangan diferensial, khususnya versi Wang. Karena strukturnya tidak berubah algoritme ini juga tahan terhadap tipe atau jenis serangan yang lain.
Perubahan beberapa operasi di dalam algoritme MD5 menyebabkan kinerjanya menurun dibandingkan sebelumnya (MD5 asli). Hasil implementasi menunjukkan MD5 termodifikasi sepertiga kali lebih lambat dari MD5 sebelumnya.
Kata kunci: fungsi hash, algoritme MD5, tumbukan, serangan diferensial, karakteristik diferensial, syarat cukup
© Hak Cipta milik Institut Pertanian Bogor, tahun 2009 Hak cipta dilindungi Undang-undang
1. Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan atau menyebut sumber.
a. Pengutipan hanya untuk kepentingan pendidikan, penelitian, penulisan karya ilmiah, penyusunan laporan, penulisan kritik, atau tinjauan suatu masalah.
b. Pengutipan tidak merugikan kepentingan yang wajar Institut Pertanian Bogor.
2. Dilarang mengumumkan dan memperbanyak sebagian atau seluruh karya tulis dalam bentuk apapun tanpa ijin Institut Pertanian Bogor.
MODIFIKASI ALGORITME FUNGSI HASH MD5
DIDASARKAN PADA ANALISIS SYARAT CUKUP
SERANGAN DIFERENSIAL
AGUSTINUS SROYER
Tesis
sebagai salah satu syarat untuk memperoleh gelar Magister Sains pada
Departemen Matematika
SEKOLAH PASCASARJANA
INSTITUT PERTANIAN BOGOR
BOGOR
2009
Judul Tesis : Modifikasi Algoritme Fungsi Hash MD5 didasarkan pada Analisis Syarat Cukup Serangan Diferensial
Nama : Agustinus Sroyer NIM : G551060351
Disetujui Komisi Pembimbing
Dr. Sugi Guritman Dra. Nur Aliatiningtyas, M.Si. Ketua Anggota
Diketahui
Ketua Program Studi Dekan Sekolah Pascasarjana Matematika Terapan
Dr. Ir. Endar Nugrahani, M.S. Prof. Dr. Ir. Khairil A. Notodiputro, M.S.
Karyaku ini kupersembahkan untuk orang-orang yang
kukasihi:
Bapak Yeremias Sroyer (alm.) dan Ibu Yulita Reprep (alm.) Ibu Sugiyem
Istriku terkasih Agnes Eri Maryuni beserta kedua buah hatiku Marchelino dan Amadhea
Bapak Robert Masreng dan Mbak Endah
Kakak-kakak, adik-adik, dan keponakan-keponakan di Papua beserta keluarga besar di Papua
Keluarga besar yang ada di Gombong, Wonosobo, Tawangmangu, Tangerang, Bogor, Jambi
Semoga karyaku yang kecil ini dapat bermakna bagi perkembangan ilmu pengetahuan di tanah Papua khususnya di Universitas
PRAKATA
Puji dan syukur penulis haturkan kepada Tuhan Yesus Kristus, karena atas berkat dan rahmat-Nya sehingga karya ilmiah ini bisa diselesaikan. Sembah syukur juga penulis panjatkan kepada Bunda Maria, atas terkabulnya Novena Salam Maria. Tema yang dipilih dalam penelitian yang dilaksanakan sejak Januari 2008 ini adalah bagaimana cara memodifikasi algoritme fungsi hash MD5 agar tahan terhadap serangan diferensial.
Terima kasih penulis sampaikan kepada Bapak Dr. Sugi Guritman dan Ibu Dra. Nur Aliatiningtyas, M.Si. selaku pembimbing. Selain itu penulis ucapkan terima kasih juga kepada:
1. Semua dosen dan staf Departemen Matematika IPB atas segala ilmu dan bantuannya.
2. Bapak Festus Simbiak selaku Dekan FKIP Uncen yang telah memberikan kesempatan untuk studi serta bantuan dana maupun moril.
3. Teman-teman seangkatan di Pascasarjana IPB: Sri Rosdiana, Is Esti Firmanesa, Sitta Alief Farihati, dan Asmara Iriani Tarigan yang telah memberi dorongan dalam penulisan tesis.
Semoga karya ilmiah ini bermanfaat.
Bogor, Agustus 2009 Agustinus Sroyer
RIWAYAT HIDUP
Penulis dilahirkan di Fakfak-Papua pada tanggal 15 Agustus 1980 dari ayah Yeremias Sroyer (alm.) dan Ibu Yulita Reprep (alm.). Penulis merupakan anak kedelapan dari duabelas bersaudara.
Pada tahun 1998 penulis kuliah di Universitas Cenderawasih Jayapura lewat Seleksi Lokal Siswa Berpotensi (SLSB) dan lulus tahun 2003 dan langsung menjadi asisten dosen pada program studi Pendidikan Matematika FKIP Universitas Cenderawasih. Tahun 2003 juga penulis diangkat menjadi CPNS, pengangkatan sebagai PN pada tahun 2005 dan sampai sekarang penulis bekerja sebagai staf pengajar pada Program Studi Pendidikan Matematika FKIP Universitas Cenderawasih.
Pada tahun 2006, atas inisiatif dan biaya sendiri penulis melanjutkan studi di Sekolah Pascasarjana Program Studi Matematika Terapan, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor.
DAFTAR ISI
Halaman
DAFTAR TABEL ... xiii
DAFTAR GAMBAR ... xiv
DAFTAR LAMPIRAN ... xv PENDAHULUAN ... 1 Latar Belakang ... 1 Tujuan Penelitian ... 4 Manfaat Penelitian ... 4 LANDASAN TEORI ... 5 Fungsi ... 5 Fungsi Hash ... 7
Konstruksi Umum Fungsi Hash ... 11
Deskripsi Umum MD5 ... 14
Modular dan Xor ... 19
Diferensial Modular dan Xor ... 20
Serangan Diferensial pada Fungsi Hash ... 21
Penotasian Serangan Diferensial pada MD5 ... 23
Diferensial Tumbukan untuk MD5 ... 23
Langkah-langkah Syarat Cukup Dipenuhinya Karakteristik Diferensial pada MD5 ... 24
Modifikasi Algoritme Fungsi Hash MD5 ... 27
Jenis-jenis Serangan Fungsi Hash ... 27
HASIL DAN PEMBAHASAN ... 32
Analisis Syarat Cukup Karakteristik Diferensial pada MD5 ... 32
Modifikasi Algoritme MD5 dan Program MD5 beserta Implementasinya ... 46
SIMPULAN DAN SARAN ... 51
Simpulan ... 51
Saran ... 51
DAFTAR PUSTAKA ... 52
DAFTAR TABEL
Tabel 1 Tabel Xor Operasi Biner ... 19 Tabel 2 Tabel Waktu Hashing Algoritme MD5 dalam Detik ... 49 Tabel 3 Tabel Waktu Hashing Algoritme MD5 dalam Menit ... 50
DAFTAR GAMBAR
Gambar 1 Contoh Tumbukan Fungsi ... 7
Gambar 2 Klasifikasi Sederhana dari Kriptografi Fungsi Hash ... 11
Gambar 3 Model Umum Suatu Iterasi Fungsi Hash ... 13
DAFTAR LAMPIRAN
Lampiran 1 Tabel Karakteristik Diferensial Iterasi Pertama ... 53
Lampiran 2 Tabel Syarat Cukup Diferensial Iterasi Pertama ... 54
Lampiran 3 Tabel Karakteristik Diferensial Iterasi Kedua ... 55
Lampiran 4 Tabel Syarat Cukup Diferensial Iterasi Kedua ... 56
Lampiran 5 Program Hashing MD5 Asli ... 57
I PENDAHULUAN 1.1 Latar Belakang
Perkembangan dunia yang semakin maju dan modern ini tidak terlepas dari adanya peranan teknologi informasi. Berbagai bidang kehidupan pun tak luput dari penggunaan sarana informasi yang semakin canggih. Hal itu terlihat dengan adanya penggunaan komputer baik di rumah, sekolah, kantor, maupun jasa penyewaan (rental) komputer yang dengan mudahnya dapat kita temui di manapun kita berada. Pemakaian komputer pun tidak hanya sebatas mengetik tugas-tugas sekolah maupun tugas-tugas kantor, tetapi lebih dari pada itu digunakan untuk mengirim informasi/berita yang lebih kita kenal dengan surat elektronik atau electronic mail (email). Pengiriman email pun dapat dilakukan antar sahabat, antar dosen-mahasiswa, serta siapa saja baik dalam satu kota, antar kota, bahkan antar negara. Isi berita email pun tidak hanya sekedar mengetahui kabar masing-masing tetapi lebih dari itu, informasi atau dokumen paling rahasia pun dapat dikirim lewat email. Hal ini dikarenakan biaya pengiriman email yang sangat murah, mudah, dapat dikirim ke berbagai belahan dunia. Berkaitan dengan pengiriman informasi atau dokumen rahasia, apakah email dapat menjamin kerahasiaan? Untuk menjawab pertanyaan tersebut dibutuhkan suatu ilmu yang dapat menyembunyikan huruf atau tulisan sehingga tulisan tersebut tidak dapat dibaca oleh orang yang tidak berhak atau yang dikenal dengan ilmu kriptografi.
Kriptografi adalah studi teknik matematika yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, autentikasi entitas, dan autentikasi asal data (Menezes et al. 1996). Kerahasiaan berarti menjaga isi informasi dari semua yang tidak berwenang memilikinya. Integritas data berarti menjamin bahwa informasi yang dikirim tidak diganti oleh siapapun yang tidak berwenang. Autentikasi entitas berarti pembuktian yang kuat tentang identitas suatu entitas, yaitu unsur-unsur yang menjadi komponen dalam suatu transaksi informasi, bisa berupa orang, terminal komputer, kartu kredit, dan sebagainya. Autentikasi asal data (autentikasi pesan) berarti pembuktian yang kuat bahwa pesan benar-benar berasal dari sumber informasi.
Salah satu primitif kriptografi modern adalah fungsi hash kriptografi, atau sering disebut fungsi hash satu-arah. Fungsi hash adalah suatu fungsi yang
mengambil input (bitstring) dengan panjang sebarang dan mentransformasikannya menjadi suatu output (bitstring) dengan panjang tetap, biasanya disebut dengan nilai-hash (hash-value). Sebagai ilustrasi, jika x → h(x) nilai sebelum dan sesudah dihashing sama, berarti pesan masih asli tetapi kalau beda berarti pesan sudah diubah.
Kegunaan fungsi hash adalah untuk melindungi data. Dalam kriptografi dikenal dengan istilah integritas data (data integrity), maksudnya menjamin bahwa informasi yang dikirim tidak diganti oleh siapapun yang tidak berwenang.
Secara umum fungsi hash mempunyai 3 (tiga) sifat utama, yaitu pertama bersifat kompresi dan memudahkan perhitungan di mana jika diketahui h dan suatu input x, maka h(x) mudah dihitung; kedua bersifat satu-arah (one-way) di mana fungsi hanya bekerja dalam satu arah, untuk setiap h yang dihasilkan adalah tak layak untuk mencari nilai x sedemikian sehingga H(x) = h, sehingga pesan yang sudah diubah menjadi nilai hash sulit dikembalikan lagi menjadi pesan semula; ketiga bersifat tahan tumbukan di mana secara perhitungan tak layak mencari dua input berbeda x, x’ dengan x≠ x’ sehingga h(x’) = h(x) (Menezes et al. 1996).
Ketahanan tumbukan dibagi 2 (dua) yaitu ketahanan tumbukan lemah dan kuat (Menezes et al. 1996) . Ketahanan tumbukan lemah, jika diberikan x dan h(x), secara perhitungan infisibel untuk mencari sebarang x’, dengan
x
'
x
, sedemikian sehingga h(x')h(x). Di lain pihak, ketahanan tumbukan kuat, secara perhitungan infisibel untuk mencari pasanganx
danx
'
, denganx
x
'
, sedemikian sehingga h(x)h(x'). Istilah lain dari ketahanan tumbukan adalah ketahanan tumbukan kuat. Tahan tumbukan ini bertujuan untuk mencegah pemalsuan, agar orang tidak bisa memperoleh input-input lain yang sama dengan nilai hash.Prinsip kerja fungsi hash melalui 3 (tiga) langkah yaitu pertama padding, input x dengan
x
= b dibagi menjadi t blok, di mana setiap blok mempunyai panjang r dan b bukan kelipatan dari r, sehingga dilakukan penambahan bit ekstra (padding) agar blok terakhir mempunyai panjang r. Langkah kedua kompresi, di mana setiap blok xi adalah input dari fungsi kompresi f dengan menggunakanproses iterasi H0 = VI0 dan Hi = f(Hi-1, xi), 1 ≤ i ≤ t. Langkah ketiga finalisasi, Ht ditransformasikan dengan suatu fungsi g ke suatu bitstring dengan panjang m.
Salah satu jenis fungsi hash adalah message digest five (MD5). Message digest bisa diartikan sebagai intisari pesan. MD5 didesain oleh Ron Rivest sebagai versi penguatan dari MD4. Secara umum, fungsi hash diiterasikan oleh fungsi kompresi X = f(Z) yang mengompres blok pesan Z berukuran l bit menjadi nilai hash X berukuran s bit, dengan s < l. Untuk MD5, nilai l = 512 bit dan s = 128 bit, dan metode iterasinya menggunakan Merkle-Damgard Meta Method. Untuk suatu pesan yang telah dilipatkan (padded message) M, berarti mempunyai panjang Hi+1 = f(Hi, Mi), 1 ≤ i ≤ t dengan M =
M0,M1,...,Mt1
dan H0 =
a0,b0,c0,d0
adalah nilai awal fungsi hash. MD5 memproses blok pesan Mi berukuran 512 bit, kemudian dibagi ke dalam 16 kata mj berukuran 32 bit, yaitu
m0,m1,...,m15
Mi . Output dari MD5 berupa 4 buah blok pesan yang masing-masing berisi 32 bit yang mana akan menjadi 128 bit yang merupakan nilai hash.
Sejak MD5 pertama kali dipublikasikan tahun 1992, telah ditemukan beberapa kelemahan. Kelemahan ini ditemukan oleh Xiaoyun Wang dan Hongbo Yu dalam (2004), di mana serangan yang dilakukan adalah tipe serangan diferensial. Inti dari serangan ini adalah mencari pasangan
M0, M1
dan
M0 ,'M1'
. Pada artikel itu diperoleh bahwa tumbukan pada MD5 dapat dicapai secara efisien, yaitu dengan pencarian tumbukan pada blok pertama memerlukan 239 operasi MD5 dan pada blok kedua memerlukan waktu sekitar 232 operasi MD5.Pada penelitian ini akan dimodifikasi algoritme dari fungsi hash MD5 yang didasarkan pada analisis syarat cukup serangan diferensial versi Wang. Pada algoritme ini terdapat 4 (empat) komponen utama yang sangat mempengaruhi tiap langkah pada proses iterasinya. Pertama, fungsi konstanta jumlah yaitu fungsi yang menghasilkan nilai-nilai konstanta pada tiap langkah dalam satu blok, t(i) = 232 abs (sin i) di mana i adalah sudut dalam radian. Kedua, konstanta putaran di mana konstanta ini mempunyai struktur yang teratur dan selalu tetap (berpengaruh pada kecepatan, semakin teratur maka semakin cepat). Ketiga, permutasi blok pesan. Keempat, fungsi ronde Boolean tak linear yaitu fungsi
(X,Y,Z) di manayang berpengaruh adalah nilai X. Keempat komponen ini juga merupakan kelemahan dalam algoritme MD5.
Pada penelitian ini akan dianalisis keempat kelemahan tersebut. Nilai konstanta jumlah, konstanta putaran, dan permutasi blok pesan diubah dari nilai konstanta bebas ke nilai hasil operasi beberapa variabel pada iterasi sebelumnya yang sifatnya merambat, dan fungsi boolean tak linear akan diubah rumusnya. Merambat berarti modifikasi tiap langkah berikutnya bergantung pada langkah sebelumnya.
Inti dari modifikasi ini adalah bagaimana membaharui algoritme yang sudah ada agar lebih baik dari sebelumnya. Di dalam modifikasi ini akan dianalisis syarat cukup berdasarkan Tabel Karakteristik Diferensial (Lampiran 1 & Lampiran 3), di mana akan dianalisis sampai pada langkah ketujuh dan syarat cukup selanjutnya mengacu pada Tabel Syarat Cukup (Lampiran 2 & Lampiran 4) yang sudah diperoleh Wang. Dari syarat cukup tersebut akan dianalisis mengapa serangan diferensial berhasil untuk menyerang MD5.
Penelitian yang dilakukan Wang, sudah dipertegas juga oleh Hawkes et al. (2004), di mana penelitian tersebut menjelaskan secara rinci langkah-langkah diperolehnya syarat cukup berdasarkan karakteristik diferensial. Dalam penelitian ini dilakukan penentuan syarat cukup setipe dengan Hawkes et al. tapi dengan pendekatan yang berbeda dan adanya penambahan dengan memodifikasi algoritme MD5. Implementasi dari penelitian ini adalah merekonstruksi algoritme MD5 menggunakan software maple dalam bentuk program hashing MD5 dan mengimplementasikan fungsi iterasi MD5 dan mengimplementasikan hasil modifikasi MD5.
1.2 Tujuan Penelitian
Penelitian ini bertujuan memodifikasi algoritme fungsi hash MD5 yang didasarkan pada analisis syarat cukup serangan diferensial yang diharapkan tahan terhadap serangan diferensial versi Wang.
1.3 Manfaat Penelitian
Hasil modifikasi dari algoritme fungsi hash MD5 ini diharapkan lebih baik dan lebih aman dari sebelumnya apabila digunakan untuk melindungi integritas data.
II LANDASAN TEORI
Pada bagian ini akan dijelaskan mengenai fungsi secara umum, fungsi hash, deskripsi MD5 dan jenis-jenis serangan fungsi hash.
2.1 Fungsi
Sebelum memberi definisi fungsi hash, akan dibahas dulu topik dasar matematika yang melandasi fungsi hash yaitu fungsi (definisi fungsi) beserta sifat-sifatnya, dan fungsi satu-arah (one-way).
2.1.1 Definisi Fungsi
Definisi 1.1 (Menezes et al. 1996) Suatu fungsi f dari himpunan A ke himpunan B, dinotasikanf :A B, didefinisikan sebagai suatu aturan yang memetakan setiap anggota A ke tepat satu anggota B. Dalam hal ini, A disebut domain dan B disebut kodomain dari f . Jika
a
A
danb
B
adalah hasil pemetaan daria
oleh f , makab
disebut imej daria
dana
disebut preimej darib
oleh f , dan dinotasikanb
f
a
. Himpunan imej dari semua anggota A disebut imej dari f dan dinotasikan Im( f ). Jelas bahwa Im( f ) B.2.1.2 Sifat-sifat fungsi
Ada 3 (tiga) sifat fungsi yang sangat penting, yaitu: injektif (satu-satu atau 1-1), surjektif (onto), dan bijektif (korespondensi satu-satu).
a. Injektif
Definisi 1.2 (Menezes et al. 1996) Suatu fungsi f :AB disebut fungsi satu-satu (1-1) jika setiap anggota dari B merupakan imej dari paling banyak satu anggota A. Dari definisi tersebut, jelas bahwa untuk fungsi f :A B yang injektif
A
B
(kardinalitas A harus sama dengan B atau kardinalitas B melebihi A).
b. Surjektif (onto)
Definisi 1.3 (Menezes et al. 1996) Suatu fungsi f :AB disebut fungsi onto jika setiap anggota dari B merupakan imej dari paling sedikit satu anggotaA, atau Im( f ) = B. Dengan kata lain, jika
f
A
B
artinya
y
B
x
A
,
y
f
x
atau b harus habis ( a sudah pasti) dan jugaB
A
(kardinalitas Blebih kecil dariA).
c. Bijektif
Definisi 1.4 (Menezes et al. 1996) Jika fungsi f :A B adalah fungsi satu-satu dan sekaligus fungsi onto, maka f disebut bijektif.
2.1.3 Fungsi satu arah (one-way)
Definisi 1.5 (Menezes et al. 1996) Suatu fungsi f :A B disebut dengan fungsi satu-arah jika untuk setiap
a
A
,f
a
adalah mudah dihitung, tetapi untuk ‘kebanyakan’
f
b Im
adalah secara perhitungan tak layak (computationally infeasible) dapat menentukana
A
sehinggab
f
a
.Istilah ’kebanyakan’ dalam definisi di atas mempunyai makna bahwa berdasarkan fakta bisa jadi masih ada sebagian kecil
b Im
f
yang secara perhitungan dapat ditentukanA
a
sehinggab
f
a
.Jika dikaitkan dengan fungsi hash yang akan dibahas berikutnya, dari definisi surjektif di atas terlihat bahwa
B
A
, b harus habis ( a sudah pasti). Ini mengandung arti bahwa berapapun banyaknya A harus dipasangkan ke B dan keduanya harus habis. Hal ini mengakibatkana
A
bisa dipasangkan dengan berapapun banyaknyab
B
. Banyaknya pasangan inilah yang mengakibatkan adanya tumbukan (collision) (Ilustrasinya dapat dilihat pada Gambar 1).Sebelum fungsi hash dibahas secara detail dan mengacu pada pengertian-pengertian fungsi di atas maka secara umum sifat fungsi hash yaitu fungsi yang tidak bijektif tetapi surjektif, fungsi satu arah (one-way), dan tahan tumbukan.
A
B
Gambar 1 Contoh tumbukan (collision) dengan fungsi f :A B di mana
seribu
bilangan
asli
pertama
A
dan
dua
puluh
enam
abjad
inggris
B
2.2 Fungsi Hash
Salah satu primitif kriptografi modern adalah fungsi hash kriptografi, seringkali disebut fungsi hash satu-arah. Berikut diberikan definisi sederhana fungsi hash (tidak harus satu-arah).
Definisi 1.6 (Menezes et al. 1996) Fungsi hash adalah fungsi yang secara komputasi
efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai-hash (hash-value).
Untuk fungsi hash dengan output nilai-hash n-bit (yaitu n = 128 atau 160), probabilitas pemilihan string secara random yang dipetakan ke nilai-hash n-bit adalah 2-n. Berdasarkan definisi di atas, ide dasar dari fungsi hash adalah membuat string input menjadi teratur rapat dengan panjang seragam. Terkait dengan kegunaan kriptografi, fungsi hash h dipilih sedemikian sehingga secara komputasi tak-layak (sulit) menentukan input berbeda x dan y sehingga h(x) = h(y).
Secara umum fungsi hash dibagi menjadi dua kelas: fungsi hash tak berkunci (unkeyed hash function) dan fungsi hash berkunci (keyed hash function). Fungsi hash tak berkunci mempunyai spesifikasi mengatur parameter input tunggal (pesan). Fungsi hash berkunci mempunyai spesifikasi mengatur parameter dua input berbeda (pesan dan kunci). Terkait dengan klasifikasi tersebut, berikut didefinisikan fungsi hash yang lebih ditekankan pada sifat-sifatnya.
Definisi 1.7 (Menezes et al. 1996) Fungsi hash adalah fungsi h yang mempunyai minimal
dua sifat berikut:
1. 2. 3. 4. 5. . . . 1000 .A .B .C . . . .Z
Terlihat bahwa ujung anak panah berhimpit menunjukkan terjadi tumbukan (collision).
1. kompresi (compression): h memetakan input x dengan sembarang panjang bit yang berhingga, ke output h(x) dengan panjang bit tetap n.
2. kemudahan komputasi (ease of computation): diketahui h dan suatu input x, h(x) mudah dihitung.
Berdasarkan kegunaannya, fungsi hash dibedakan atas dua tipe:
1. MDC (manipulation detection code) atau message integrity code (MIC) merupakan subkelas dari fungsi hash tak berkunci. Tujuan dari MDC, dikaitkan dengan suatu mekanisme, adalah untuk memberikan jaminan integritas data sebagaimana diperlukan dalam suatu aplikasi khusus, khususnya dalam aplikasi skema digital signature. Pada MDC ini input dari fungsi hash hanyalah pesan yang akan dikirim dan tidak membutuhkan input kunci rahasia. Dua bahasan yang termasuk dalam MDC:
(a). fungsi hash satu-arah (one-way hash function - OWHF); fungsi hash ini mempunyai sifat bahwa diketahui suatu nilai-hash untuk menentukan sembarang inputnya adalah tak layak.
(b) fungsi hash tahan tumbukan (collision resistant hash function - CRHF); fungsi hash ini mempunyai sifat bahwa diketahui suatu nilai-hash untuk menentukan sembarang dua inputnya adalah tak layak.
2. MAC (message authentication code) merupakan subkelas dari fungsi hash berkunci.
MAC adalah fungsi hash untuk otentikasi data dengan teknik simetrik. MAC mempunyai dua parameter berbeda, yaitu: input pesan dan kunci rahasia. Sesuai dengan namanya, tujuan MAC (tanpa terkait dengan mekanisme yang lain) adalah untuk menjamin integritas pesan dan asal pesan.
Menyambung dua sifat pada Definisi 1.2, berikut ini diberikan tiga sifat penting untuk fungsi hash tak berkunci h dengan input x, x’ dan output y, y’:
1. ketahanan preimej (preimage resistance): jika diketahui sembarang nilai-hash y, maka secara perhitungan tak layak mencari x’ sehingga h(x’) = y. Istilah lain untuk ketahanan preimej adalah satu-arah (one-way).
2. ketahanan preimej kedua (2nd-preimage resistance): jika diketahui x, maka secara perhitungan tak layak mencari x’ x sehingga h(x’) = h(x). Istilah lain untuk ketahanan preimej kedua adalah ketahanan tumbukan lemah (weak collision resistance).
3. ketahanan tumbukan (collision resistance): secara perhitungan tak layak mencari dua input berbeda x, x’ sehingga h(x’) = h(x). Istilah lain untuk ketahanan tumbukan adalah ketahanan tumbukan kuat (strong collision resistance).
Definisi 1.8 (Menezes et al. 1996) One Way Hash Function (OWHF) adalah fungsi hash
dengan dua sifat pada Definisi 1.7 ditambah sifat ketahanan preimej dan ketahanan preimej kedua. Istilah lain untuk OWHF adalah fungsi hash satu-arah lemah. OWHF adalah fungsi hash yang bekerja dalam satu arah artinya pesan yang sudah diubah menjadi nilai hash sulit dikembalikan lagi menjadi pesan semula (irreversible).
Definisi 1.9 (Tilborg 2005) One Way Hash function (OWHF) adalah suatu fungsi h yang
memenuhi kondisi-kondisi sebagai berikut:
input x dengan panjang sembarang dan hasil h(x) mempunyai panjang n bit yang tetap,
fungsi hash menjadi satu arah (one way) jika diberikan suatu y dalam h, ini adalah komputasional yang tak layak untuk memperoleh x sehingga h(x)=y dan jika diberikan x dan h(x) maka secara perhitungan tak layak untuk memperoleh suatu pesan x x’ sehingga h(x) = h(x’).
Definisi 1.10 (Menezes et al. 1996) Collision Resistance Hash Function (CRHF) adalah
fungsi hash dengan dua sifat pada Definisi 1.7 ditambah sifat ketahanan preimej kedua dan ketahanan tumbukan. Istilah lain untuk CRHF adalah fungsi hash satu-arah kuat.
Definisi 1.11 (M. Stamp dan R. M. Low 2007) Suatu kriptografi fungsi hash, dinotasikan
dengan h(x), harus memenuhi semua yang berikut:
Kompresi (compression): untuk sebarang input
x
, output y h(x) adalah kecil. Pada umumnya kriptografi fungsi hash menghasilkan suatu ukuran output yang tetap, bagaimanapun juga panjang input, dengan tipe panjang output 128 sampai 512 bit. Efisiensi (efficiency): efisien menghitung h(x) untuk sebarang input
x
. Perhitungan bergantung pada panjangx
. Satu arah (one-way): Secara perhitungan infisibel menginverskan suatu hash. Diberikan y, tidak dapat mencari nilai
x
sedemikian sehingga h(x) y. Tahan tumbukan lemah (weak collision resistance): diberikan
x
dan h(x), secara perhitungan infisibel untuk mencari sebarangw
, dengan w x, sedemikian sehingga h(w)h(x). Tahan tumbukan kuat (strong collision resistance): secara perhitungan infisibel untuk mencari pasangan
x
danw
, dengan x w, sedemikian sehingga) ( ) (x h w h .
Definisi 1.12 (ANSI X9.62, 1998) Cryptographic Hash Function. Suatu fungsi
nilai-nilai yang berukuran lebih kecil (smaller range). Fungsi tersebut mempunyai sifat-sifat sebagai berikut:
Secara komputasional yang tidak mungkin untuk memperoleh sembarang input yang dipetakan ke sembarang output yang ditentukan sebelumnya.
Secara komputasional yang tidak mungkin untuk memperoleh sembarang dua input yang berbeda yang dipetakan ke sembarang output yang sama.
Secara umum, klasifikasi kriptografi fungsi hash adalah sebagai berikut:
Gambar 2 Klasifikasi sederhana dari kriptografi fungsi hash dan aplikasinya (Gambar 9.1, Handbook Applied of Cryptographi, Halaman 324)
2.3 Konstruksi Umum Fungsi Hash
Kebanyakan fungsi hash h didesain melalui proses iteratif yang menginputkan bitstring dengan panjang sembarang dan mengoutputkan bitstring dengan panjang tetap. Misalkan x adalah bitstring dengan panjang sembarang |x| = b; nilai hash h(x) adalah bitstring dengan panjang tetap |h(x)| = m dihitung melalui tahapan proses berikut ini: 1. Proses Penambahan Bit Ekstra (padding). Input x dibagi menjadi t blok,
x = x1x2x3…xt, unkeye d keyed modification detection (MDCs) other aplication other aplication message authenticati on (MACs) OWHF CRHF preimage 2nd preimage collision hash functions
yang setiap blok xi mempunyai panjang |xi| = r. Dalam hal b bukan kelipatan dari r,
dilakukan proses penambahan bit ekstra (padding) agar blok terakhir mempunyai panjang r: Sering juga ditambahkan blok ekstra xt+1 sebagai representasi biner rata
kanan dari b. Blok ini menyimpan informasi panjang x yang asli.
2. Proses Kompresi. Setiap blok xi akan bertindak sebagai input dari fungsi kompresi f
yang menghitung secara iteratif dengan rumusan
H0 = V I; Hi = f(Hi-1,xi); 1 i t.
H0 adalah vektor inisial yang nilainya didefinisikan sebelumnya, Hi adalah nilai
berantai yang disebut variabel berantai (chainning variable) merupakan bitstring dengan panjang |Hi| = n. Output dari proses ini adalah Ht. Sebagai contoh: untuk t =
5, H1 = f(Ho, x1); H2 = f(H1, x2); H3 = f(H2, x3); H4 = f(H3, x4); dan H5 = f(H4, x5).
3. Proses Finalisasi. Proses ini sifatnya opsional, yaitu metransformasikan Ht oleh
fungsi g ke bitstring dengan panjang m, h(x) = g(Ht); |h(x)| = m
Jika proses ini tidak dilakukan berarti g adalah fungsi identitas, yaitu g(Ht) = Ht.
Pendefinisian komponen-komponen proses di atas, harus dipertimbangkan sifat keamanan dari h, yaitu sebagai fungsi satu arah dan tahan tumbukan. Misalnya, agar tahan terhadap serangan hari lahir (birthday attack), dianjurkan m cukup besar. Hal ini bisa dilakukan dengan mendefinisikan h(x) = Ht-1||Ht.
Gambar berikut adalah model/konstruksi umum suatu iterasi fungsi hash: input x
Gambar 3 Model umum suatu iterasi fungsi hash (Gambar 9.2.b, Handbook Applied of Cryptographi, Halaman 332)
Suatu fakta menyatakan bahwa fungsi kompresi yang tahan tumbukan dapat digunakan untuk mengonstruksi fungsi hash tahan tumbukan. Fakta ini dirinci dalam algoritme berikut.
Algoritme 1 (Merkle meta-method for hashing) (Menezes et al. 1996)
INPUT: Fungsi kompresi tahan tumbukan f yang memetakan string (n+r)-bit ke string n-bit.
OUTPUT: Fungsi hash h yang tahan tumbukan.
1. Dipecah x menjadi x = x1x2x3…xt dengan |xi| = r. Jika r b; lakukan padding pada
xt dengan bit-0 agar |xt| = r.
Preprocessing (sebelum proses) fungsi hash h
menambahkan bit ekstra
menambahkan panjang blok f format input x = x1x2…xt fungsi kompresi f xi Hi H o = VI g output h(x) = Ht proses iterasi Hi-1
2. Definisikan blok ekstra xt+1 = (b)2 sebagai representasi biner rata kanan (anggap
sebelumnya bahwa b < 2r).
3. Definisikan nilai hash n-bit sebagai h(x) = Ht+1 = f(Ht||xt+1)
dihitung dari
H0 = 0n; H
i = f(Hi-1||xi); 1 i t + 1.
Catatan bahwa 0n adalah string n-bit yang semua simbolnya 0.
Metode padding diberikan dalam dua algoritme berikut.
Algoritme 2 (Metode Padding 1) (Menezes et al. 1996)
INPUT: Bitstring x dengan panjang bebas.
OUTPUT: Bitstring x’ dengan panjang kelipatan dari r.
1. Rangkaikan pada x dengan string bit-0 sehingga menjadi bitstring x’ dengan panjang kelipatan dari r.
Algoritme 3 (Metode Padding 2) (Menezes et al. 1996)
INPUT: Bitstring x dengan panjang bebas.
OUTPUT: Bitstring x’ dengan panjang kelipatan dari r. 1. Rangkaikan pada x dengan satu bit-1.
2. Kemudian, rangkaikan dengan string bit-0 sehingga menjadi bitstring x’ dengan panjang kelipatan dari r.
Metode padding 1 menimbulkan kerancuan karena batasan antara bitstring sebelum dan sesudah padding tidak bisa dibedakan kecuali kalau bitstring sebelum padding diketahui panjangnya. Hal ini tidak terjadi pada metode padding 2, bahkan ketika panjang dari x sudah merupakan kelipatan dari r, padding pada x menciptakan blok ekstra.
2.4. Deskripsi Umum MD5
MD5 (message digest five) adalah fungsi hash yang didesain oleh Ron Rivest sebagai versi penguatan dari MD4. Sejak pertama kali dipublikasikan telah ditemukan beberapa kelemahan. Pada penelitian ini akan dianalisis syarat cukup dipenuhinya karakteristik kriptanalisis diferensial dari salah satu serangan pada MD5 dari Artikel Xiaoyun Wang dan Hongbo Yu. Inti dari serangan ini adalah mencari pasangan (M0, M1) dan (M0’, M1’) sehingga: ) ' ,' ,' ,' ,' ( 5 ) , , , , ( 5 ) ' , , , , ( 5 ) ' ,' ,' ,' ( ) , , , , ( 5 ) , , , ( 1 1 0 0 0 0 0 0 0 0 0 0 M d c b a MD M d c b a MD M d c b a MD d c b a M d c b a MD d c b a
Sebelum membahas bagaimana serangan diferensial dilakukan pada MD5, akan dijelaskan dulu struktur MD5.
Secara umum, fungsi hash diiterasikan oleh fungsi kompresi X = f (Z) yang mengompres blok pesan Z berukuran l bit menjadi nilai hash X berukuran s bit, dengan s < l. Untuk MD5, nilai l = 512 bit dan s = 128 bit, dan metode iterasinya menggunakan Merkle-Damgard Meta Method.
Untuk suatu pesan yang telah dilipatkan (padded message) M, berarti mempunyai panjang kelipatan dari l, proses iterasinya dinyatakan sebagai:
,
, 0 11
f H M i t
Hi i i
Dengan menggunakan fungsi Hi1 f
Hi,Mi
;0it1, maka proses iterasinya:
1 1
2 2 3 1 1 2 1 , : , , , t t t o o M H f H M H f H M H f H M H f HDalam hal tersebut M
M0,M1,...,Mt1
dan H0 adalah nilai awal fungsi. Catatan bahwa sebelum proses iterasi dilakukan, terlebih dahulu dilakukan proses padding, yang pada tulisan ini tidak diberikan karena tidak mempengaruhi serangan.Pada MD5, setiap blok pesan Mi berukuran 512 bit dibagi ke dalam 16 kata mj
berukuran 32 bit, yaitu:
m0,m1,...,m15
Mi sehingga bisa ditulis sebagai berikut:
bit t bit bit bit oM
M
M
M
M
512 1 512 2 512 1 512...,
,
,
,
15 2 1, ,..., ,m m m mo 15 2 1, ,..., ,m m m mo
) 32 ( 1 15 ) 32 ( 1 2 ) 32 ( 1 1 ) 32 ( 1,...,
,
,
bit kata bit kata bit kata bit kata om
m
m
m
dst.Output dari Mo adalah: a16,b16,c16,dand16 Untuk selanjutnya output ini adalah
nilai dari H1. Analog juga untuk blok pesan M1 dikompres dengan a16,b16,c16,dand16 sebagai nilai awal, sehingga output dari komputasi 16 langkah pada ke-4 ronde untuk memproses M1 adalah a32,b32,c32,dand32.
Untuk selanjutnya output ini adalah nilai awal dari H2. Dan H2 ini adalah nilai awal
dari H3. Demikian seterusnya untuk blok pesan M2, M3, ... , Mt-1.
Algoritme kompresi untuk Mi dilakukan dalam 4 ronde, masing-masing melibatkan
16 operasi. Operasi yang dilibatkan: "+" (jumlah modulo 232), "
" (disjungsi ekslusif atau Xor), operasi logika per bit ("" adalah operasi konjungsi, "" adalah operasi disjungsi inklusif, dan "" adalah negasi), "" (rotasi geser kiri putar). Berikut ini diberikan deskripsi lengkap untuk memproses M0. Diberikan nilai awal variabel rantai:
a = 0x67452301, b = 0xefcdab89, c = 0x98badcfe, d = 0x10325476 Menggunakan fungsi ronde tak linear dengan rumus:
Ket.: Pada buku Applied Cryptanalysis (Mark Stamp dan Richard M. Low, 2007), fungsi ronde tak linear ditulis:
X
Y
Z
F
,
,
X
Y
X
Z
, 0 i15
X
Y
Z
G
,
,
X
Z
Y
Z
, 16 i31
X
Y
Z
H
,
,
X
Y
Z
,32
i
47
X
Y
Z
I
,
,
Y
X
Z
, 48 i63di mana: X,Y,Z adalah kata-kata 32 bit. Komputasi 16 langkah pada Ronde-1:
X
Y
X
Z
,
0
i
15
X
Z
Y
Z
,
16
i
31
47 32 , Y Z i X
,
48
63
X
Z
i
Y
i X,Y,Z
, , 0 1 22
17 242070 0 , , 12 756 7 8 0 , , 7 478 76 0 , , 3 3 2 2 1 1 0 0 bdceee xc m a d c b c b db x m b a d c d c b c xe m c b a d a d aa xd m d c b a b a
, , 0 469501 22
17 8304613 0 , , 12 62 4787 0 , , 7 0 57 0 , , 7 7 6 6 5 5 4 4 xfd m a d c b c b xa m b a d c d c a c x m c b a d a d faf c xf m d c b a b a
, , 0 895 7 22
17 1 5 0 , , 12 7 44 8 0 , , 7 8 698098 0 , , 11 11 10 10 9 9 8 8 be cd x m a d c b c b bb xffff m b a d c d c af f b x m c b a d a d d x m d c b a b a
, , 0 49 40821 22
17 679438 0 , , 12 987193 0 , , 7 901122 6 0 , , 15 15 14 14 13 13 12 12 b x m a d c b c b e xa m b a d c d c xfd m c b a d a d b x m d c b a b a Komputasi 16 langkah pada Ronde-2:
, , 0 9 6 7 20
14 51 5 265 0 , , 9 340 040 0 , , 5 2562 61 0 , , 0 19 11 18 6 17 1 16 aa c b xe m a d c b c b a e x m b a d c d c b xc m c b a d a d e xf m d c b a b a
, , 0 7 3 8 20
14 681 1 8 0 , , 9 02441453 0 , , 5 105 62 0 , , 4 23 15 22 10 21 5 20 fbc d xe m a d c b c b e a xd m b a d c d c x m c b a d a d d f xd m d c b a b a
, , 0 455 14 20
14 87 50 4 0 , , 9 6 33707 0 , , 5 6 1 21 0 , , 8 27 3 26 14 25 9 24 ed a x m a d c b c b d d xf m b a d c d c d xc m c b a d a d cde e x m d c b a b a
, , 0 8 2 4 8 20
14 9 02 676 0 , , 9 8 3 0 , , 5 905 3 9 0 , , 12 31 7 30 2 29 13 28 a c a d x m a d c b c b d f x m b a d c d c f xfcefa m c b a d a d e e xa m d c b a b a Komputasi 16 langkah pada Ronde-3:
, , 0 5380 23
16 6122 9 6 0 , , 11 681 8771 0 , , 4 23942 0 , , 14 35 11 34 8 33 5 32 c xfde m a d c b c b d d x m b a d c d c f x m c b a d a d xfff m d c b a b a
, , 0 70 23
16 60 4 6 0 , , 11 9 4 0 , , 4 44 4 0 , , 10 39 7 38 4 37 1 36 xbebfbc m a d c b c b b bb xf m b a d c d c bdecfa x m c b a d a d abeea x m d c b a b a
, , 0 04881 05 23
16 3085 4 0 , , 11 127 0 , , 4 6 7 289 0 , , 6 43 3 42 0 41 13 40 d x m a d c b c b ef xd m b a d c d c fa xeaa m c b a d a d ec b x m d c b a b a
, , 0 4 5665 23
16 8 27 1 0 , , 11 5 99 6 0 , , 4 039 4 9 0 , , 2 47 15 46 12 45 8 44 aac xc m a d c b c b cf fa x m b a d c d c e db xe m c b a d a d d d xd m d c b a b a Komputasi 16 langkah pada Ronde-4:
, , 0 93 039 21
15 7 9423 0 , , 10 97 432 0 , , 6 4292244 0 , , 5 51 14 50 7 49 0 48 a xfc m a d c b c b a xab m b a d c d c aff x m c b a d a d xf m d c b a b a
, , 0 85845 21
15 47 0 , , 10 92 0 8 0 , , 6 3 59 655 0 , , 1 55 10 54 3 53 12 52 dd x m a d c b c b d xffeff m b a d c d c ccc f x m c b a d a d c b x m d c b a b a
, , 0 4 0811 1 21
15 3014314 0 , , 10 0 6 2 0 , , 6 4 87 6 0 , , 13 59 6 58 15 57 8 56 a e x m a d c b c b xa m b a d c d c e ce xfe m c b a d a d f e fa x m d c b a b a
, , 0 86 391 21
15 2 7 2 0 , , 10 235 3 0 , , 6 82 7537 0 , , 9 63 2 62 11 61 4 60 d xeb m a d c b c b bb d ad x m b a d c d c af xbd m c b a d a d e xf m d c b a b aSecara sama, blok pesan M1 dikompres dengan nilai a, b, c, dan d adalah output
dari kompresi blok pesan M0. Demikian seterusnya, untuk blok pesan M2, M3, ..., Mt-1.
2.5 Modular dan XOR
Operasi modular adalah operasi dengan menggunakan perpangkatan 2 atau operasi modulo. Di sisi lain untuk operasi exclusive or (Xor) atau biasa ditulis
"
"
sama artinya dengan operasi modulo 2 , di mana bernilai 1 jika dan hanya jika tepat satu dari kedua operand bernilai 1. Tabel nilai Xor:A B A
B 0 0 1 1 0 1 0 1 0 1 1 0Tabel 1 Tabel Xor operasi biner 2.6 Diferensial Modular dan Xor
Metode analisis terpenting untuk fungsi hash adalah serangan diferensial yang juga merupakan salah suatu metode terpenting untuk serangan sandi blok. Serangan diferensial pertama kali diperkenalkan oleh E. Biham dan A. Shamir untuk menganalisis DES-like dengan mengesploitasi karakteristik operasi Xor.
Definisi diferensial dalam tulisan ini adalah eksploitasi kombinasi dari beda (differences) dalam operasi substraksi intejer modular dan operasi Xor. Kombinasi yang demikian akan memberikan informasi lebih banyak dari pada eksploitasi yang dilakukan pada masing-masing operasi secara terpisah. Sebagai contoh, beda substraksi intejer modular X'X 26 untuk suatu nilai
X
, maka beda XorX
'
X
bisa mempunyai banyak kemungkinan yang dijelaskan sebagai berikut:1. Beda 1 bit di posisi 7, berarti bit ke-7 dalam
X
'
adalah 1, bit ke-7 dalamX
adalah 0, dan X'X 26. Dalam kasus modulo 232, banyaknya pasangan
X
, X
'
yang memenuhi X'X 26mod232 dan X'X 26 adalah 231.2. Beda 2 bit di posisi 7 dan 8, berarti bit ke-7 dan ke-8 dalam
X
'
adalah 01, bit ke-7 dan ke-8 dalamX
adalah 10, dan X'X 2726. Dalam kasus modulo 232, banyaknya pasangan
X
, X
'
yang memenuhi X'X 26mod232 dan6 7 2 2 'X
X adalah 230.
3. Beda 3 bit di posisi 7, 8, dan 9, berarti bit ke-7, ke-8 dan ke-9 dalam
X
'
adalah 001, bit ke-7, ke-8, dan ke-9 dalamX
adalah 110, dan X'X 282726. Dalam kasus modulo 232, banyaknya pasangan
X
, X
'
yang memenuhi32 6mod2 2 'X
X dan X'X 282726 adalah 229.
4. Secara umum, untuk beda
s
bit di posisi 7 sampai dengan
7
s
1
, berartis
bit dalamX
'
adalah 000...01 dans
bit dalamX
adalah 111...10. Dalam kasus modulo 232, banyaknya pasangan
X
, X
'
yang memenuhi X'X 26mod232 dan6 7 2 6 1 6 2 ... 2 2 2 'X s s X adalah 232s, untuk
1
s
26
.5. Dalam kasus beda negatif, sebagai misal X'X 26, beda XOR
X
'
X
mempunyai nilai pola yang sama, yaitu dengan menukar pengurangan X X'26, dalam hal ini
s
bit dalamX
'
adalah 111...10 dans
bit dalamX
adalah 000...01. Perhatikan bahwa: t t t X X X X' 2 mod232 ' 231230...212Untuk menjelaskan serangan diferensial yang dilakukan pada MD5 mengacu pada beda modular di dalam jalur diferensial pada tabel.1. Tabel ini mendaftarkan kedua macam beda secara bersama-sama, menggunakan tanda positif dan negatif untuk intejer modulo 232 dan Xor. Beda Xor didaftarkan sebagai bit aktif beserta tandanya, bit-bit 0 dalam
X
diberikan tanpa tanda dan bit-bit 1 dalamX
diberi tanda negatif. Sebagai contoh, beda:
7,8,9,...,22, 23
,
26
Menandakan substraksi intejer modular X'X 26 (dalam hal ini
X
X
'
) dengan beda XOR: 6 7 21 22 2 ... 2 2 2 'X X ,posisi bit ke-7 sampai dengan ke-22 adalah 0 dan ke-23 adalah 1 dalam
X
, sedangkan dalamX
'
posisi bit ke-7 sampai dengan ke-22 adalah 1 dan ke-23 adalah 0.Beda (difference) parameter untuk dua parameter X dan X’ didefinisikan sebagai beda modular
∆X = X’ – X
Sembarang dua pesan M dan M’ dengan panjang kelipatan l bit, dituliskan sebagai barisan blok dengan panjang l bit
M = (M0, M1, M2, ..., Mk-1)
M’ = (M
0’, M1’, M2’, ..., Mk-1’)
Diferensial penuh untuk suatu fungsi hash didefinisikan
H
H
H H M M M M M M MkMk 0 0 1 1' 2, 2' 1, 1' 2 , 1 ' , 0 ...dimana ∆H0 adalah beda nilai awal yang jelas sama dengan nol. ∆H merupakan beda
output dari dari dua pesan yang bersangkutan. ∆Hi = ∆VIi adalah beda output pada iterasi
ke-i yang juga merupakan beda inisial untuk iterasi berikutnya.
Jelas bahwa jika ∆H = 0 atau Hi Hi'Hi 0, maka terjadi tumbukan antara M dan M’. Diferensial yang menghasilkan tumbukan disebut tumbukan diferensial (collision differential).
Diberikan fungsi hash yang mempunyai 4 ronde, dan setiap ronde mempunyai 16 langkah, maka diferensial iterasi ke-i, Hi
Mi,Mi'
Hi1, dapat dirinci dalam 4 ronde sebagai berikut:1 4 , 1 3 , 1 2 , 1 1 , 1 2 3 4 1 P i i i P i P i P i R R R R H H
dengan
0
i
15
. Ri1,1 adalah langkah ke-i+1 ronde pertama, dan seterusnya. Diferensial ronde Rj Pj Rj1 , untuk j = 1,2,3,4, dengan probabilitas Pj, dapat
dirinci ke dalam karakteristik diferensial 16 langkah sebagai berikut:
j P P P P j X X X R R j j j j 1 1 1 2 2 3 ... 16 16 di mana Xt Pjt Xt
1 , untuk t = 1,2,3,...,16, merupakan karakteristik diferensial dalam langkah ke-t pada ronde ke-j.
Probabilitas P dari diferensial
, '
1 M M i i H H i i memenuhi: j j P P
4 1 dan Pj
t Pjt 16 1Ada dua macam modifikasi pesan untuk mengoptimalkan diferensial tumbukan: 1 Untuk sembarang pasangan blok pesan