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