Thursday, April 18, 2013

Pengertian Algoritma MARS

Algoritma MARS

MARS adalah cipher block yang didesain oleh tim dari IBM Corporation, yaitu Carolynn Burwick, Don Coppersmith, Edward D’Avignon, Rosario Gennaro, Shai Halevi, Charanjit Jutla, Stephen M.Matyas, Jr., Luke O’Connor, Mohammad Peyravian, David Safford, dan Nevenko Zunic. MARS merupakan block cipher dengan panjang blok 128 bit dan panjang kunci fleksible dari 128 bit sampai 499 bit. Algoritma ini bekerja dengan word 32 bit, dan menggunakan jaringan Feistel (Feistel network) tipe-3. MARS menerima input dan menghasilkan output empat word 32 bit. Cipher ini berorientasi pada word, di mana semua operasi internalnnya bekerja pada word 32 bit, sehingga struktur internal dari MARS adalah endian-neutral (code yang sama dapat bekerja pada mesin little-endian maupun big-endian). Jika input (atau output) cipher adalah byte stream, maka digunakan pengurutan little-endian byte untuk menginterpretasi masingmasing empat byte sebagai sebuah word 32 bit.
Gambar 4 memperlihatkan skema dari MARS yang dibagi menjadi 3 fase. Fase pertama, “Forward Mixing” berisi pengacakan besarbesaran dan “hujan kunci” untuk membuat frustasi serangan chosen-plaintext. Di dalam fase ini dilakukan penambahan word kunci ke word data, diikuti dengan delapan putaran berbasis S-Box. Fase kedua merupakan “Cryptographic Core” (inti kriptografi) dari cipher ini, yang berisi 16 putaran transformasi dengan jaringan Feistel. Untuk memastikan enkripsi dan dekripsi memiliki kekuatan yang sama, maka 8 putaran pertama dilakukan dengan “forward mode” sedangakan sisanya dengan “backward mode”. Fase terakhir, “Backward Missing” operasi yang dilakukan hampir sama seperti fase pertama, namun merupakan kebalikan dari fase pertama. Fase ini bertujuan melindungi cipher dari serangan chosen-ciphertext.
Gambar 4 Skema MARS

Fase I: Forward Mixing

Pada fase ini, pertama kali yang dilakukan adalah menambahkan masing-masing word data dengan word kunci. Selanjutnya masuk ke dalam delapan putaran pengacakan jaringan Feistel tanpa kunci, dikombinasikan dengan beberapa operasi pengacakan tambahan. Masing-masing putaran, digunakan sebuah word data (disebut dengan source word) untuk modifikasi tiga word data lainnya (drisebut dengan target words). Keempat byte source word dijadikan indeks ke dua S-Box, S0 dan S1 yang berisi 256 word 32 bit, dan elemen SBox yang berkoresponden di-XOR-kan atau ditambahkan kepada tiga target words
Untuk putaran selanjutnya, keempat word dirotasikan, sehingga target word pertama menjadi source word berikutnya, target word kedua menjadi target word pertama, target word ketiga menjadi target word kedua, dan source word menjadi target word ketiga. Sebagai tambahan, setelah empat putaran, salah satu target word ditambahkan kepada source word. Contohnya, setelah putaran pertama dan kelima, target word ketiga ditambahkan kembali ke source word. Alasan dari pengacakan tambahan ini adalah untuk mengurangi beberapa serangan differential yang mudah, untuk memecah simetri pada fase mixing.

Fase II: Main Keyed Transformasion

Inti dari cipher MARS adalah jaringan Feistel tipe-3 yang terdiri dari 16 putaran. Masingmasing putaran digunakan sebuah fungsi E (E dari kata expansion) yang berbasiskan pada sebuah kombinasi baru dari perkalian, rotasi dan S-Box. Fungsi ini menerima input sebuah wordi data dan mengembalikan tiga word data sebagai output. Pada setiap putaran, digunakan sebuah word data sebagai input fungsi E, dan tiga output word dari fungsi E ditambahkan atau di-XOR-kan dengan tiga word data lainnya. Sebagai tambahan, source word dirotasikan 13 posisi ke kiri.

Fase III: Backward Mixing

Fase ini sama dengan fase forwars mixing, hanya bedanya word data diproses dengan urutan yang berkebalikan. Sama seperti di forward mixing, digunakan juga sebuah source word untuk memodifikasi tiga word target. Untuk source word b0, b1, b2, b3, maka b0 dan b2 digunakan sebagai indeks ke S-Box S1 dan b1 dan b3 indeks untuk S0. S1[b0] di-XOR-kan dengan target word pertama, kurangkan S0[b3] dengan target word kedua, dan kurangkan S1[b2] dengan target word  ketiga dan XOR-kan S0[b1] juga dengan target word ketiga. Terakhir, rotasikan source word 24 posisi ke kiri. Untuk putaran selanjutnya, keempat word dirotasikan, sehingga target word pertama menjadi source word berikutnya, target word kedua menjadi target word pertama, target word ketiga menjadi target word kedua, dan source word menjadi target word ketiga.


No comments:

Post a Comment

Kebahagiaan sejati bukanlah pada saat kita berhasil meraih apa yg kita perjuangkan, melainkan bagaimana kesuksesan kita itu memberi arti atau membahagiakan orang lain.