Transcript
Page 1: algoritma kandidat AES dan RC5

ALGORITMA RC5 I. KOMPONEN-KOMPONEN PEMBANGUN ALGORITMA

Algoritma RC5 terdiri dari 3 komponen, yaitu: 1. Key expansion algorithm, yaitu algoritma yang digunakan untuk membangun tabel kunci S. 2. Encryption algorithm, yaitu algoritma untuk melakukan enkripsi pada 1 blok plaintext

menghasilkan 1 blok ciphertext. 3. Decryption algorithm, yaitu algoritma untuk melakukan dekripsi pada 1 blok ciphertext

menghasilkan 1 block plaintext. II. PROSES ENKRIPSI, DEKRIPSI DAN PEMBANGKITAN SUB KUNCI

2.1 Key Expansion Algorithm Algoritma ini berfungsi untuk membangkitkan kunci internal berdasarkan kunci rahasia K

untuk mengisi tabel kunci S, di mana ukuran tabel kunci S adalah t = 2(r+1) word. Algoritma ini dalam mengisi tabel kunci S, menggunakan 2 konstanta ‘ajaib’ (magic constants). Pw dan Qw yang didefinisikan sebagai:

Dengan: e =...597182818284.2 (basis logaritma natural) Φ =...496180339887.1 (golden ratio) Nilai φ dapat juga didapatkan dengan rumus :

Sedangkan fungsi Odd(x) menghasilkan nilai integer ganjil yang paling dekat dengan x.

Untuk nilai-nilai w yang diperbolehkan (16, 32 dan 64), nilai Pw dan Qw adalah sebagai berikut (dalam heksadesimal):

P16 = b7e1 Q16 = 9e37 P32 = b7e15163 Q32 = 9e3779b9 P64 = b7e151628aed2a6b Q64 = 9e3779b97f4a7c15

Gambar 1. Key Ekspansion

Page 2: algoritma kandidat AES dan RC5

Langkah pertama untuk membentuk tabel kunci S adalah dengan menduplikasi kunci rahasia K yang masih berupa array of bytes ke dalam array of word. Dengan menggunakan algoritma :

S[0] = Pw for i = b-1 downto 0 do

L[i/u] = (L[i/u] <<< 8) + K[i] Jika ternyata panjang kunci b bukan merupakan kelipatan w, maka padding dengan

sejumlah bit 0 diperlukan agar panjang akhirnya menjadi kelipatan w. Setelah langkah pertama selesai, langkah kedua adalah melakukan inisialisasi tabel kunci

S. Inisialisasi dilakukan sehingga tabel S berisi pola bit pseudo-random yang tetap. Pada tahap ini, pola yang dihasilkan tidak bergantung pada kunci rahasia, tetapi bergantung pada Pw dan Qw. Algoritmanya adalah sebagai berikut:

S[0] = Pw for i = 1 to (2r + 1) do

S[i] = S[i – 1] + Qw Setelah inisialisasi selesai, langkah ke-3 adalah mencampurkan kunci rahasia pengguna

ke dalam array S, yaitu dengan mencampurkan S dan L dalam 3 pas. Namun, karena biasanya panjang S dan L tidak sama (nilai t dan c tidak sama), maka array yang lebih panjang akan diproses 3 kali dan yang lain lebih dari 3 kali sesuai perbedaan panjangnya. Algoritmanya adalah sebagai berikut:

i = 0 j = 0 A = 0 B = 0 for 3 × max(c, 2r + 2) times do

S[i] = (S[i] A B) <<< 3 A = S[i]

L[i] = (L[j] A B) <<< (AB) B = L[i] i = (i + 1) mod (2r + 2)

j = (j + 1) mod c Fungsi max(a,b) menghasilkan nilai yang terbesar antara a dengan b.

2.2 Algortima Enkripsi Fungsi enkripsi RC5 menerima input 1 blok sebesar yang terdiri dari 2 register sebesar w

bit, A dan B. Untuk melakukan enkripsi diperlukan tabel kunci S[0..t – 1] yang telah diperoleh melalui proses sebelumnya. Algoritma enkripsinya adalah sebagai berikut:

A = A + S[0] B = B + S[1] for i = 1 to r do

A = ((A B) <<< B) + S[2i] B = ((B A) <<< A) + S[2i + 1]

Hasil dari enkripsi 1 blok terdapat dalam kedua register yaitu A dan B. 1 blok ciphertext adalah gabungan dari kedua register A dan B, yaitu AB.

Diagram berikut menggambarkan proses enkripsi 1 ronde dengan algoritma RC5.

Page 3: algoritma kandidat AES dan RC5

Gambar 2. Proses satu round pada RC5

Atau dapat juga digambarkan seperti gambar dibawah ini.

Gambar 3. Proses satu round pada RC5

2.3 Algoritma Dekripsi Fungsi dekripsi merupakan penurunan dari fungsi enkripsi. Algoritmanya adalah sebagai

berikut: for i = r downto 1 do

B = ((B – S[2 × i + 1]) >>> A) A A = ((A – S[2 × i]) >>> B) B

B = B – S[1] A = B – S[0]

III. DESAIN RASIONAL RC5 Algoritma ini menggunakan jumlah round r, yang mana semakin banyak jumlah round maka

akan semakin tinggi tingkat keamanannya. Berbeda dengan struktur yang ada pada DES, pada

+ +

Plaintext (2w bits)

<<< <<<

+ +

A B

S[0] S[1]

S[2] S[3]

<<< <<<

+ +

Round r

S[2r] S[2r + 1]

Ciphertext (2w bits)

Page 4: algoritma kandidat AES dan RC5

RC5 jika dilihat dari struktur diatas, satu round RC5 sudah dapat mempengaruhi blok kanan dan kiri dari plain text yang diberikan sehingga algoritma tersebut dapat berjalan lebih efisien. Sedangkan pada kunci, kunci yang digunakan pada algoritma ini berukuran K dimana K merupakan array berukuran b byte, sehingga ukuran K yang diperbolehkan adalah sebesar 0 sampai 255. Kunci dibangkitkan dengan melalui tiga tahap seperti yang telah dijelaskan diatas. Untuk kekuatannya, jika dilihat dari operasi primitif yang digunakan, maka kekuatan RC5 sangat bergantung pada operasi rotasi word ke kanan ataupun ke kiri dimana jumlah rotasi bergantung pada data (data-dependent rotations) dan dari operasi yang dikenakan pada kunci.

IV. ANALISIS Pada algoritma RC5 ini menggunakan beberapa operasi yang dapat dihitung seperti tabel di

bawah ini Tabel 1 Jumlah operasi satu kali enkripsi pada RC5

Terlihat bahwa pada algoritma RC5 hanya membutuhkan total 160 instruksi dengan konstruksi

yang telah ditetapkan diatas (panjang blok 32, jumlah round 16). Berbeda dengan DES yang membutuhkan total instruksi seperti yang ditunjukkan pada tabel dibawah ini.

Tabel 2 Jumlah operasi satu kali enkripsi pada DES dan 3DES

Terlihat sekali perbedaan antara DES (2697 instruksi) dengan RC5 (160 instruksi). Inilah yang

menyebabkan algoritma RC5 lebih cepat dalam melakukan proses penyandian daripada algoritma DES.

Page 5: algoritma kandidat AES dan RC5

Sedangkan untuk tingkat keamanan, satu putaran mengandung dua persamaan yang disimpan dalam buffer A dan B (sama halnya denga feistel). Pada setengah putaran, dapat dijelaskan dengan mengacu kepada persamaan yang dikemukakan oleh Feistel ciphers sebagai berikut;

L1=L0 +S0 R1=R0+S1 For i = 2 to n do Li= Ri-1 Ri=((Li-1 Ri-1) << Ri-1)+Si

Dari persamaan diatas L1 dan R1 bagian dari plaintext yang dikembangkan menjadi dua bagian kiri dan kanan yang merupakan input dan Li dan Ri adalah merupakan output chipertext. Pada setengah putaran pertama input blok RC-5 (plaintext) adalah L0, R0 dan blok output chipertext adalah Ln, Rn.

Konsep dasar untuk menganalisa cara memecahkan RC-5 dilakukan dengan dengan menganalisa struktur rutin enkripsi, dimana konsep ini berusaha menemukan kunci rahasia dan tabel pengembangan key S. Proses iterasi yang dilakukan untuk mendapatkan kunci rahasia dan tabel pengembangannya didekati dengan perhitungan Ln-1 (b) pada range 0≤ b ≤w-1. Pada setengah putaran yang terakhir, Ln dan Rn akan didapat dengan persamaan berikut ini :

Ln = Rn-1; Rn = (( Ln-1 Rn-1) <<< Rn-1)+Sn

Terdapat 4 variable dalam persamaan kedua diantaranya Rn dan Rn-1, hal ini dapat diketahui dari chipertext. Jika kita mengetahui informasi tentang Ln-1 akan membantu bagaimana mengetahui subkey Sn yang digunakan untuk proses chipertext. Untuk mendapatkan hubungan persamaan dari keempat variable diatas terhadap proses rotasi Rn-1 mod w. Pertama, kita asumsikan kasus khusus dimana (b+Rn-1) mod w = 0. Pada kasus ini bit Ln-1[b]) Rn-1 [b] pindah keposisi bot 0 setelah rotasi. Dengan demikian didapat persamaannya sebagai berikut :

Rn[0]=(Ln-1[b] Rn-1[b] Sn[0]. Pada awalnya, Rn[0] dan Rn-1[b] diketahui, jika kita dapat menghitung Ln-1[b], selanjutnya dapat

diperoleh Sn[0], bit yang kurang penting dari subkey Sn. Kekuatan dari penyandian bergantung kepada jumlah kunci yang digunakan. Beberapa

algoritma enkripsi memiliki kelemahan pada kunci yang digunakan. Untuk itu, kunci yang lemah tersebut tidak boleh digunakan. Selain itu, panjangnya kunci, yang biasanya dalam ukuran bit, juga menentukan kekuatan dari enkripsi. Kunci yang lebih panjang biasanya lebih aman dari kunci yang pendek. Jadi enkripsi dengan menggunakan kunci 128-bit lebih sukar dipecahkan dengan algoritma enkripsi yang sama tetapi dengan kunci 56-bit. Semakin panjang sebuah kunci, semakin besar keyspace yang harus dijalani untuk mencari kunci dengan cara brute force attack atau coba-coba karena keys pace yang harus dilihat merupakan pangkat dari bilangan 2. Jadi kunci 128-bit memiliki keyspace 2128, sedangkan kunci 56-bit memiliki key space 256. Artinya semakin lama kunci baru bisa ketahuan.

Beberapa cara telah dikembangkan oleh kripanalis untuk menganalisa keamanan block cipher dalam memecahkan chipertext. Jika sebuah key memiliki n bit,kemudian terdapat 2n kemungkinan key yang akan diuji. Ketika ukuran key lebih besar dari ukuran blok, akan terdapat peningkatan kemungkinan pemecahan enkripsi. Test statisktik bisa digunakan untuk menganalisa prilakuk blok chipertext. Blok chipertext yang memiliki tingkat keamanan yang tinggi akan berperilaku seperti suatu permutasi yang random (acak) dari sebuah key yang random juga. Jadi dari informasi dengan statistik diatas sangat sulit untuk memecahkan sebuah enkripsi dengan key dan permutasi yang acak, kecuali dengan analis yang sangat mendalam.

RC-5 menggunakan konsep seperti yang diuraikan diatas, yaitu memiliki jumlah key yang dapat divariasikan dan jumlah rotasi yang dapat ditentukan untuk mendapatkan tingkat keamanan yang diinginkan. Disamping itu proses pengembangan key (key expansion) dilakukan secara acak, yang akan menghasilkan key hasil pengembangan yang juga acak, key hasil pengembangan inilah yang akan digabungkan dengan plaintext. Jadi secara statistik sangat sulit

Page 6: algoritma kandidat AES dan RC5

memecahkan kode enkripsi RC-5 yang menggunakan jumlah key yang semakin banyak walapun banyak pihak yang sudah berusaha memecahkan algoritma ini.

Pada tahun 1995 Kaliski dan Yin berhasil memecahkan RC-5 hanya satu tahun setelah dipublikasikan. Mereka melakukan pemecahan dengan menanalisa struktur dasar rutin, yaitu rotasi data idependent, Pada tahun 96` Knudsen dan Meier melakukan perbaikan pemecahan yang dilakukan oleh Kaliski dan Yin dengan menganalisa secara hati-hati hubungan antara input dan subkey. Kemudian pada tahun 1998 Biryukov dan Kushilevitz melakukan perbaikan konsep pemecahan yang dikemukakan oleh Knudsen dan Meier. Mereka mempelajari lebih komplek dan melakukan suatu perkiraan yang umum rotasi data dependent dari enkripsi dan pemecahannya. Mereka menghitung untuk memecahkan RC-5 dengan 12 putaran dengan data 64 bit dibutuhkan waktu penyelesaian 255 dan dibuat dalam bentuk tabel berikut ini

Jumlah Putaran 4 6 8 10 12 14 16 18

Iterasi proses plaintext (chosen plaintext) 27 216 228 236 244 252 261 >

Iterasi pemecahan plaintext (known plaintext) 236 241 247 251 255 259 263 >

Dari uraian dan tabel diatas dapat disimpulkan, bahwa RC-5 dapat dipecahkan dan membutuhkan waktu iterasi pemecahan yang cukup lama tergantung jumlah putaran yang digunakan seperti yang terlihat pada tabel diatas berdasarkan syarat dibaris kedua dan ketiga. Semakin tinggi jumlah putaran yang dilakukan semakin lama proses pemecahan, dimana jumlah putaran ditentukan saat prose enkripsi. Jumlah putaran juga menentukan tabel pengambangan key yang digunakan. Jadi semakin banyak jumlah kata kunci dan putaran yang digunakan, maka semakin lama waktu yang dibutuhkan untuk memecahkan enkripsinya dan tingkat keamanan semakin tinggi.

Setelah itu Knudsen dan Meier berhasil menunjukkan perbaikan terhadap serangan diferensial Kaliski dan Yin dengan melakukan analisis terhadap relasi antara input, output, dan kunci internal dalam dua ronde yang pertama. Walaupun karakteristik yang mereka gunakan pada dasarnya sama dengan yang digunakan oleh Kaliski dan Yin, mereka berhasil memperbaiki kebutuhan plaintext dengan mengeksploitasi daftar karakteristik dengan lebih baik pada awal ronde dan pada akhir ronde ke r. Mereka juga menunjukkan adanya weak-key yang potensial yang memungkinkan peningkatan serangan.

Kaliski dan Yin selanjutnya juga mempelajari lebih jauh bagaimana data-dependent rotations dalam suatu ronde dapat menyebarkan perbedaan kecil dalam input tetapi menyebarkan perbedaan besar dalam output. Sifat yang demikian menyebabkan serangan diferensial menjadi tidak mungkin untuk RC5 yang memiliki jumlah ronde yang banyak.

Pada tahun 1998, Biryukov dan Kushilevitz menunjukkan perbaikan yang lebih baik terhadap serangan yang dilakukan oleh Knudsen dan Meier sebelumnya. Mereka mempelajari diferensial yang lebih kompleks dan mendefinisikan pasangan input/output yang baik secara lebih umum dengan memperhitungkan data-dependent rotations. Mereka memperkirakan RC5 dengan 12 ronde dengan ukuran blok 64 bit (RC5-32/12/b) bisa diserang dengan menggunakan 244 plaintext. Hal ini menunjukkan bahwa RC5-32/12/b memiliki tingkat keamanan yang (hampir) sama dengan DES.

Namun, berbeda dengan serangan diferensial, RC5 cukup tahan dari serangan linear. Hal ini disebabkan karena RC5 memiliki operasi-operasi primitif yang diatur sedemikian rupa sehingga mempersulit dapatnya aproksimasi linear. Tabel berikut ini menunjukkan jumlah plaintext yang dibutuhkan untuk melancarkan serangan diferensial terhadap RC5.

Page 7: algoritma kandidat AES dan RC5

Tabel 3 Plaintext yang dibutuhkan untuk melakukan Differential Cryptanalysis

Menurut Ronald R. Rivest, disarankan untuk penggunaan algoritma RC5 ini menggunakan

minimal 12 round untuk RC5/32 dan minimal 16 round untuk RC5/64. Hal ini tujukan agar tingkat keamanan dari RC5 dapat maksimal dan dapat mempersulit attack yang digunakan oleh para kriptanalis.

Keamanan algoritma ini juga dapat dinilai dengan ada tidaknya weak keys. Weak key adalah kunci yang menyebabkan tidak adanya perbedaan antara enkripsi dan dekripsi. Dekripsi terhadap ciphertext tetap menghasilkan plaintext semula, tetapi enkripsi dua kali berturut-turut terhadap plaintext akan menghasilkan kembali plaintext-nya. Sejak publikasi RC5, belum ada laporan mengenai adanya weak key dalam algoritma ini.

Selain attack diatas RC5 juga dapat diattack dengan menggunakan timing attack. Dengan menggunakan timing attack, kita hanya membutuhkan sekitar 220 ciphertext timing.

ALGORITMA RC 6 I. Komponen – komponen Pembangun Algoritma

a. Penambahan dan pengurangan Modulo Operasi penjumlahan ‘+’. Operasi penjumlahan di sini adalah operasi penjumlahan word. Karena suatu word hanya terdiri dari bit-bit 1 dan 0 dan memiliki jumlah bit yang tetap, maka operasi ini adalah operasi penjumlahan modulo-2w. Operasi inversnya adalah operasi pengurangan ‘-‘.

b. Ex-OR untuk setiap w bit kata c. Multiplikasi modulo 2w d. Rotasi (perputaran)

Rotasi word ke kiri (left-spin). Simbolnya dinyatakan sebagai x <<< y, yang berarti rotasi ke kiri terhadap word x sebanyak y, di mana y adalah modulo w, sehingga jika w genap maka hanya bit-bit orde bawah sebanyak 2log (w) dari y saja yang digunakan untuk menentukan banyaknya rotasi. Operasi inversnya adalah rotasi ke kanan (right-spin), dengan simbol x >>> y.

e. Key schedule Pengguna memasukkan sebuah kunci yang besarnya b byte, dimana 0<b<255 byte kunci ini kemudianditempatkan dalam array c w-bit kata L[0] … L[c-1]. Byte pertama kunci akan ditempatkan sebagai padaL[0], byte kedua pada L[1], dan seterusnya (catatan, bila b=0 maka c=1 dan L[0]=0). Masing-masing nilaikata w-bit akan dibangkitkan pada penambahan kunci round 2r+4 dan akan ditempatkan pada array S[0,…,2r+3]. Konstanta P32 = B7E15163 dan Q32 = 9E3779B9 (dalam satuan heksadesimal) adalah “konstanta ajaib” yang digunakan pada penjadwalan kunci pada RC6. Nilai P32 diperoleh dari perluasan bilangan biner e-2, dimana e adalah sebuah fungsi logaritma.Sedangkan nilai dari Q32 diperoleh dari perluasan bilangan biner Æ-1, dimana Æ dapat dikatakan sebagai “golden ratio” (rasio emas).

Page 8: algoritma kandidat AES dan RC5

II. Proses Enkripsi dan Dekripsi, dan Pembangkitan Sub Kunci a. Enkripsi RC6

RC6 memecah block 128 bit menjadi 4 buah block 32 bit, maka algoritma ini bekerja dengan 4 buah register 32-bit A, B, C, D. Byte yang pertama dari plaintext atau ciphertext ditempatkan pada byte A, sedangkan byte yang terakhirnya ditempatkan pada byte D. Dalam prosesnya akan didapatkan (A, B, C, D) = (B, C, D, A) yangdiartikan bahwa nilai yang terletak pada sisi kanan berasal dari register disisi kiri. Algoritma RC6 menggunakan 44 buah sub kunci yang dibangkitkan dari kunci dan dinamakan dengan S[0] hingga S[43]. Masing-masing sub kunci panjangnya 32 bit. Proses enkripsi pada algoritma RC6 dimulai dan diakhiri dengan proses whitening yang bertujuan untuk menyamarkan iterasi yang pertama dan yang terakhir dari proses enkripsi dan dekripsi. Pada proses whitening awal nilai B akan dijumlahkan dengan S[0], dan nilai D dijumlahkan dengan S[i]. Pada masing-masing iterasi pada RC6 menggunakan 2 buah sub kunci. Sub kunci pada iterasi yang pertama menggunakan S[2] dan S[3], sedangkan iterasi-iterasi berikutnya menggunakan sub-sub kunci lanjutannya. Setelah iterasi ke-20 selesai, dilakukan proses whitening akhir dimana nilai A dijumlahkan dengan S[42], dan nilai C dijumlahkan dengan S[43]. Setiap iterasi pada algoritma RC6 mengikuti aturan sebagai berikut, nilai B dimasukan ke dalam fungsi f, yang didefinisikan sebagai f(x) =x(2x+1) , kemudian diputar kekiri sejauh lg-w atau 5 bit. Hasil yang didapat pada proses ini dimisalkan sebagai u. Nilai u kemudian di XOR dengan C dan hasilnya menjadi nilai C. Nilai t juga digunakan sebagai acuan bagi C untuk memutar nilainya kekiri. Begitu pula dengan nilai u, juga digunakan sebagai acuan bagi nilai A untuk melakukan proses pemutaran kekiri. Kemudian sub kunci S[2i] pada iterasi dijumlahkan dengan A, dan sub kunci S[2i+1] dijumlahkan dengan C. keempat bagian dari block kemudian akan dipertukarkan dengan mengikuti aturan, bahwa nilai A ditempakan pada D, nilai B ditempatkan pada A, nilai C ditempatkan pada B, dan nilai (asli) D ditempatkan pad C. demikian iterasi tersebut akan terus berlangsunghingga 20 kali.

Page 9: algoritma kandidat AES dan RC5

Algoritma enkripsi RC6:

b. Dekripsi RC6

Proses dekripsi ciphertext pada algoritma RC6 merupakan pembalikan dari proses enkripsi. Pada proses whitening, bila proses enkripsi menggunakan operasi penjumlahan, maka pada proses dekripsi menggunakan operasi pengurangan. Sub kunci yang digunakan pada proses whitening setelah iterasi terakhir diterapkan sebelum iterasi pertama, begitu juga sebaliknya sub kunci yang diterapkan pada proses whitening sebelum iterasi pertama digunakan pada whitening setelah iterasi terkahir. Akibatnya, untuk melakukan dekripsi, hal yang harus dilakukan semata-mata hanyalah menerapkan algoritma yang sama dengan enkripsi, dengan tiap iterasi menggunakan sub kunci yang sama dengan yang digunakan pada saat enkripsi, hanya saja urutan sub kunci yang digunakan terbalik. Algoritma dekripsi RC6:

Page 10: algoritma kandidat AES dan RC5

c. Manajemen Kunci

Pengguna memasukkan sebuah kunci yang besarnya b byte, dimana 0<b<255 byte kunci ini kemudian ditempatkan dalam array c w-bit kata L[0] … L[c-1]. Byte pertama kunci akan ditempatkan sebagai padaL[0], byte kedua pada L[1], dan seterusnya (catatan, bila b=0 maka c=1 dan L[0]=0). Masing-masing nilai kata w-bit akan dibangkitkan pada penambahan kunci round 2r+4 dan akan ditempatkan pada array S[0,…,2r+3]. Konstanta P32 = B7E15163 dan Q32 = 9E3779B9 (dalam satuan heksadesimal) adalah “konstanta ajaib” yang digunakan pada penjadwalan kunci pada RC6. Nilai P32 diperoleh dari perluasan bilangan biner e-2, dimana e adalah sebuah fungsi logaritma.Sedangkan nilai dari Q32 diperoleh dari perluasan bilangan biner Æ-1, dimana Æ dapat dikatakan sebagai “golden ratio” (rasio emas). Algoritma pembangkit kunci RC6:

III. Desain Rasional

a. Struktur Cipher Mekanisme yang digunakan pada algoritma RC6 ini adalah pembagian blok dari 128 bit menjadi empat buah blok yang masing-masing besarnya 32 bit. Fungsi f(x)= x(2x+1) yang diikuti dengan pergeseran 5 bit ke kiri digunakan untuk memberikan tingkat keamanan data yang tinggi. Pada RC6 tidak ditemui adanya Feistel Network seperti pada DES, namun fungsi f(x)=x(2x+1) dan pergeseran 5 bit ke kiri sudah dapat menghasilkan tingkat pengacakan data yang tidak kalah dengan algoritma yang menggunakan jaringan feistel.

b. Jumlah Round Penentuan banyaknya iterasi didasarkan atas azas keseimbangan. Dimana jika jumlah round sedikit akan menyebabkan cipher menjadi mudah untuk dipecahkan. Sedangkan jika jumlah iterasi semakin banyak, akan menyebabkan kecepatan proses enkripsi/dekripsi akan semakin berkurang. Sebenarnya jumlah round sebanyak 20 cukup beralasan. Akan tetapi berdasarkan analisis keamanan yang sangat mendalam, diketahui serangan terbaik

Page 11: algoritma kandidat AES dan RC5

terahadap RC6 dapat mencapai 8 round. Untuk alasan ini, pencipta RC6 memeberikan security margin yang cukup besar yaitu sebanyak 12 round untuk memberikan perlindungan keamanan yang tinggi terhadap RC6.

c. Manajemen Kunci Penjadwalan kunci pada RC6 menggunakan sebuah s-Box untuk melakukan iterasi awal terhadap S[0]…S[43]. Nilai konstanta P32=B7E15163 (heksadesimal) didefinisikan sebagai inisialisasi awal terhadap S[0] dan inisialisasi awal S[1] hingga S[43] didapatkan dengan menambahkan Q32=9E3779B9 (heksadesimal) terhadap inisialisasi awal sub kunci-sub kunci sebelumnya. Pada proses utama penjadwalan kunci, digunakan beberapa operasi seperti pergeseran bit dan operasi penjumlahan yang menyebabkan proses penjadwalan kunci pada RC6 mempunyai kekuatan yang sama dengan RC6 cipher itu sendiri.

d. Perubahan Ukuran Arsip Arsip cipherteks mempunyai ukuran yang lebih besar dari arsip plainteks. Hal ini terjadi karena adanya proses pedding. Pada mode EBC maupun pada metode CBC, perubahan maksimum besarnya arsip cipherteks adalah sebesar satu blok penyandian data (16 byte). Hal ini terjadi semata-mata karena adanya proses padding (16 byte). Walaupun pada metode CBC terdapat proses inisial vektor, namun yang terjadi hanyalah operasi XOR antara inisial vektor dan blok 128 bit sehingga tidak akan merubah besar ukuran cipherteks menjadi lebih besar dibanding mode EBC.

e. Avalanche Effect Salah satu karakteristik untuk menentukan baik atau tidaknya suatu algoritma kriptografi adalah dengan melihat avalanche effect-nya. Perubahan yang kecilpada plainteks maupun key akan menyebabkanperubahan yang signifikan terhadap cipherteks yangdihasilkan. Atau dengan kata lain, perubahan satu bitpada palintext maupun key akan menghasilkanperubahan banyak bit pada cipherteks. Suatuavalanche effectdikatakan baik jika perubahan bityang dihasilkan berkisar antara 45-60% (sekitarseparuhnya, 50 % adalah hasil yang sangat baik). Halini dikarenakan perubahan tersebut berarti membuatperbedaan yang cukup sulit untuk kriptanalismelakukan serangan. RC6 memperlihatkan sebuah avalanche effect yangbaik. Hasil yang ditunjukan ini sesuai denganparameter yangditetapkan yaitu 50% dari besar blokpenyandian. Hal tersebut ditunjukan dari hasil yangdiperlihatkan dibawah ini : Plainteks 1 : 0000000000000000000000000000000016 Plainteks 2 : 1000000000000000000000000000000016 Kunci :000000000000000000000000000000000000000000000000000000000000000016 Cipherteks 1 :8F5FBD0510D15FA893FA3FDA6E857EC216 Cipherteks 2 :2321D38ACCAAEA5DBA682E7BDCE095AB16 Dari hasil diatas terlihat bahwa perbedaan bit yangdihasilkan pada cipherteks 1 dan cipherteks 2 adalahsebanyak 72 bit atau sekitar 56% dari besar blok (128bit). Sedangkan untuk perubahan kunci satu bit akanditunjukan pada hasil dibawah ini. Plaintext 0000000000000000000000000000000016 Kunci 1 000000000000000000000000000000000000000000000000000000000000000016 Kunci 2 100000000000000000000000000000000000000000000000000000000000000016 Ciphertext 1 8F5FBD0510D15FA893FA3FDA6E857EC216 Ciphertext 2 11395D4BFE4C8258979EE2BF2D24DFF416 Dari hasil tersebut tampak bahwa perbedaan kuncisatu bit menghasilkan perbedaan bit sebesar 64 bitatau sekitar 50 % dari besar blok (128 bit).

f. Weak Key dan Semi Weak Key Pada algoritma RC6 sampai saat ini masih belum ditemukan adanya kunci lemah. Semua kunci mempunyai kekuatan yang sama dan dapat digunkan untuk enkripsi ganda (kunci lemah mempunyai sifat yaitu jika sebuah plainteks dienkripsi ganda menggunkan kunci

Page 12: algoritma kandidat AES dan RC5

lemah akan menghasilkanplainteks itu sendiri). Metode penjadwalan kunci pada RC6 menjamin bahwa semua kunci yang digunakantidak memliki kunci lemah.Beberapa kunci yangbernilai ekstrim (termasuk empat buah kunci lemahyang dimiliki algoritma DES) tidak berpengaruh padaalgoritma RC6. Kunci setengah lemah adalah sepasang kunci yang mempunyai sifat yaitu jikasebuah plainteks dienkripsi dengan suatu kunci dan didekripsi kembali dengan kunci pasangannya akan menghasilkan plainteks itu kembali. Beberapa pasangan kunci yang bernilai ekstrim (termasuk pasangan kunci setengah lemah yang dimiliki DES)tidak berpengaruh pada algoritma RC6.

IV. Analisis ( Kelebihan dan kelemahan) a. Keamanan Algoritma RC6

Dalam algoritma enkripsi, panjang kunciyang biasanya dalam ukuran bit, juga menentukan kekuatan dari enkripsi.Kunci yang lebih panjang biasanya lebih aman dari pada kunci yang pendek. Jadi enkripsi dengan menggunakan kunci 128-bit lebih sukar dipecahkan dengan algoritma enkripsi yang sama tetapi memiliki kunci 56-bit. Semakin panjang sebuah kunci, semakin besar keys pace yang harus dijalani untuk mencari kunci dengan cara brute force attack atau coba-coba karena keys pace yang harus dilihat merupakan pangkat bilangan dari 2. Jadi kunci 128-bit memiliki keyspace 2128,sedangkan kunci 56-bit memiliki keyspace 256.Artinya semakin lama kunci baru bias ditemukan. Pada intinya, keamanan suatu pesan tidak tergantung pada sulitnya algoritma tetapi pada kunciyang digunakan. Pada RC6 dengan adanya fungsi f(x)=x(2x+1) yang diikuti pergeseran lima bit ke kiri dapat memberi tingkat keamanan data yang tinggi.Adanya avalanche effect juga memberikan cukup kesulitan kepada kriptanalis untuk melakukan serangan. Adanya konstanta P32 dan Q32 yang dikena lsebagai “kostantata ajaib” dapat membantualgoritma RC6 sehingga tidak terjadi weak key,yaitu terjadinya nilai yang sama pada dua entri dari s-box. Algoritma selain aman juga cepat danmudah. Banyaknya jumlah iterasi yang berjumlah20 round/iterasi memberikan azas keseimbangan pada algoritma RC6, karena jika round terlalubanyak akan menyebabkan kecepatan proses enkripsi dan deskripsi menjadi lambat. Dan dengan jumlah round yang sedikit akan menyebabkan cipher menjadi mudah untuk dipecahkan. Serangan yang umum dan yang masih dilakukan untuk menguji terhadap RC6 adalah serangan diferensial dan linear. Berikut adalah tabel kebutuhan plaintext untuk melancarkan serangan diferensial dan linear terhadap RC6 (dengan panjang blok 64 bit).

Jumlah ronde yang dianjurkan untuk menggunakan RC6 adalah 20 ronde, karena pada ronde tersebut jumlah kebutuhan plaintext sudah melebihi 2128 untuk kedua jenis serangan. RC6 memberikan pertahanan yang cukup baik terhadap serangan kriptanalisis diferensial. Dengan digunakannya fungsi kuadrat yang diikuti dengan rotasi bit sejumlah tetap, RC6 benar-benar menyebabkan pembangunan diferensial yang efektif untuk melancarkan serangan diferensial menjadi sulit. Selain itu, properti RC6 yang demikian juga mengakibatkan sulitnya untuk membangun aproksimasi linear yang baik untuk mencarkan serangan linear yang efektif.

b. Kelemahan RC6 RC6 mempunyai kelemahan jika pada salah satu komponen dari algoritma tersebut dihilangkan ataupun dikurangi.Apabila jumlah putaran atau pergeserannya dihilangkan maka kunci dapat dengan mudah dicari. Dan apabila fungsi paa algoritma RC6ini dihilangkan pun akan menjadi kelemahan yaitu kunci akan sangat mudah dipecahkan.

Page 13: algoritma kandidat AES dan RC5

ALGORITMA BLOWFISH I. KOMPONEN PEMBANGUN ALGORITMA

1. Substitusi Menurut F. L. Baueur, substitution cipher dideskripsikan sebagai rangkaian atau kumpulan dari proses substitusi, yang masing-masing proses substitusi tersebut dinotasikan dalam p→π. Substitution akan menimbulkan efek “konfusi” yang bertujuan untuk mengaburkan hubungan antara plaintext dan ciphertext. Hal ini akan mencegah pihak lawan untuk mempelajari ciphertext dengan mempelajari pengulangan dan pola-pola secara statistik. Algoritma Blowfish menggunakan struktur Feistel. Proses substitusinya terletak pada operasi XOR register L dengan P-array dan XOR register R dengan hasil fungsi F. Dalam fungsi F terdapat empat buah s-box 8 x 32 yang akana mendapat input dari hasil XOR register L dengan P-array. Efek konfusi pada Blowfish ini lebih besar karena pada satu round, proses XOR dlakukan pada kedua register, sehingga memperkuat algoritma dari berbaga attack.

2. Permutasi Menurut F.L. Baueur, permutasi adalah pemetaan satu-satu dari sebuah alfabet menjadi dirinya sendiri. Permutasi yang sering disebut juga transposisi akan menimbulkan efek “difusi”, yang akan menghilangkan pengulangan plaintext dengan cara menyebarkan plaintext tersebut ke seluruh ciphertext. Pihak lawan selalu mencari pengulangan pada ciphertext, dan dengan difusi maka mereka akan memerlukan waktu yang lebih lama untuk menemukannya. Pada algoritma Blowfish, proses permutasi hanya terjadi pada proses swapping register kanan dan kiri.

II. PROSES PEMBANGKITAN KUNCI, ENKRIPSI, DAN DEKRIPSI Proses Pembangkitan Sub Kunci Blowfish menggunakan sejumlah subkey yang besar. Key ini harus dihitung awal sebelum enkripsi atau dekripsi . P-array mempunyai 18 subkey 32-bit : P1, P2, P3,..............................P18 Empat S-box 32- bit mempunyai masing-masing 256 entry yaitu : S1,0, S1,1, S1,2, S1,3, ................S1,255 S2,0, S2,1, S2,2, S2,3, ................S2,255 S3,0, S3,1, S3,2, S3,3, ................S3,255 S4,0, S4,1, S4,2, S4,3, ................S4,255 Subkunci dihitung menggunakan algoritma Blowfish, di mana secara keseluruhan diperlukan 521 iterasi untuk membangkitkan semua subkunci yang dibutuhkan. Pembangkitan subkunci sebagai berikut: 1. Inisialisasi P-array yang pertama dan juga empat S-box, berurutan, dengan string yang telah

pasti. String tersebut terdiri dari digit-digit heksadesimal dari pi, tidak termasuk angka tiga diawal. Contoh : P1 = 0x243f6a88 P2 = 0x85a308d3 P3 = 0x13198a2e P4 = 0x03707344

2. XOR P1 dengan 32-bit pertama dari kunci, XOR P2 dengan 32-bit kedua dari kunci , dan seterusnya untuk seluruh bit dari kunci (sampai P18). Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P-array telah di-XOR-kan dengan bit-bit kunci.

3. Enkripsikan string yang seluruhnya nol (all-zero) dengan algoritma Blowfish, menggunakan subkey yang telah dideskripsikan di langkah (1) dan (2).

4. Gantikan P1 dan P2 dengan output langkah 3.

Page 14: algoritma kandidat AES dan RC5

5. Enkripsikan output langkah 3 menggunakan algoritma Blowfish dengan subkey yang termodifikasi.

6. Gantikan P3 dan P4 dengan output langkah 5. 7. Teruskan proses tersebut, gantikan semua entry P-array, dan kemudian semua empat S-

boxes supaya mempunyai output algoritma Blowfish secara kontinyu berubah (continuously-changing).

Secara keseluruhan terdapat 521 iterasi atau putaran yang dibutuhkan untuk membangkitkan seluruh subkey yang dibutuhkan. Aplikasi dapat menyimpan seluruh subkey, agar tidak perlu mengeksekusi proses ini secara berulang kali setiap iterasi.

Gambar. Skema Pembangkitan Kunci

Page 15: algoritma kandidat AES dan RC5

Proses Enkripsi Blowfish adalah cipher blok 64-bit yang memiliki sebuah kunci yang panjangnya variabel.

Algoritma blowfish terdiri dari dua bagian yaitu key expansion dan enkripsi data. Key expansion mengkonversikan sebuah kunci sampai 448 bit ke dalam beberapa array subkey dengan total 4168 byte. Enkripsi data terdiri dari sebuah fungsi yang sederhana dengan iterasi 16 kali. Setiap round mempunyai sebuah permutasi key-dependent dan sebuah subsitusi key dan data-dependent. Semua operasi, penjumlahan dan XOR pada word 32-bit.

Blowfish menggunakan sejumlah subkey yang besar. Key ini harus dihitung awal sebelum enkripsi atau dekripsi. P-array mempunyai 18 subkey 32-bit : P1, P2, P3,..............................P18 Empat S-box 32- bit mempunyai masing-masing 256 entry yaitu : S1,0, S1,1, S1,2, S1,3, ................S1,255 S2,0, S2,1, S2,2, S2,3, ................S2,255 S3,0, S3,1, S3,2, S3,3, ................S3,255 S4,0, S4,1, S4,2, S4,3, ................S4,255 Blowfish adalah sebuah jaringan Feistel yang mempunyai 16 round. Inputnya adalah ( x ) element data 64-bit. Untuk mengenkripsi ( x ) yaitu : 1. Plainteks yang akan dienkripsi diasumsikan sebagai masukan (x), Plainteks tersebut diambil

sebanyak 64-bit, dan apabila kurang dari 64-bit maka kita tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya.

2. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang kedua disebut XR. 3. Selanjutnya lakukan operasi

XL = XL xor Pi dan XR = F(XL) xor XR 4. Hasil dari operasi diatas ditukar XL menjadi XR dan XR menjadi XL. 5. Lakukan sebanyak 16 kali, perulangan yang ke- 16 lakukan lagi proses penukaran XL dan XR. 6. Pada proses ke-17 lakukan operasi untukXR = XR xor P17 dan XL = XL xor P18. 7. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali.

Gambar 1. Proses Enkripsi Blowfish

Page 16: algoritma kandidat AES dan RC5

Secara Umum sebagai berikut: Bagi ( x ) dalam dua bagian 32-bit menghasil (XL ) dan ( XR ). Untuk i = 1 sampai 16 maka : XL = XL Pi XR = F(XL) XR

Swap (tukar) XL dan XR Swap (tukar) XL dan XR (mengulang swap yang lalu) XR = XR P17 XL = XL P18 Gabungkan kembali XL dan XR. Fungsi F adalah sebagai berikut : Bagi xL dalam empat kuarter 8-bit yaitu a, b, c dan d seperti gambar maka :

F(xL) = ((S1,a + S2,b mod 232 ) S3,c ) + S4,d mod 232

Gambar 2. Fungsi F Blowfish

Proses Dekripsi

Dalam Blowfish algoritma dekripsi sama dengan enkripsi, perbedaannya terletak pada urutan pengggunaan subkunci P1, P2,…, P18. Pada proses dekripsi Blowfish urutan pengggunaan subkunci P1, P2,…, P18 dibalik menjadi P18, P17,…, P1. Blok diagramnya sebagai berikut:

Gambar 3. Proses Dekripsi BlowfisH

Page 17: algoritma kandidat AES dan RC5

III. DESAIN RASIONAL Kriteria yang digunakan dalam mendesain Blowfish difokuskan pada insialisasi P-array yang

pertama dan juga empat S-box. Inisialisasi awal pada P-array dan s-box merupakan input pada key expansion yang akan menghasilkan P-array baru dan entry s-box pada algoritma penyandian. Algoritma akan menjadi lemah ketika nilai kunci yang dihasilkan merupakan weak key. Namun pada algoritma ini sulit untuk menentukan kriteria inisialisasi P-array , S-box, dan kunci awal yang dapat menghasilkan weak key. Hal ni terjadi karena keberadaan weak key hanya dapat diketahui apabila telah dilakukan key expansion.

Jumlah round pada algoritma Blowfish telah didesan sehingga pada 16 iterasi, algoritma tahan pada attack apapun, sehingga algoritma tetap aman.

IV. ANALISIS Blowfish adalah algoritma buatan Bruce Schneier yang sudah cukup lama dan sudah cukup

banyak orang yang mencoba untuk mengattacknya tetapi belum bisa mendapatkan hasil yang maksimal. Dr Dobb's Journal mensponsori sebuah kontes kriptoanalisis terhadap algoritma Blowfish. Ada beberapa yang telah memberikan analisinya terhadap algoritma Blowfish. 1. John Kelsey mengembangkan sebuah serangan yang bisa mematahkan 3 iterasi Blowfish,

namun tidak dapat mengembangkannya lebih lanjut. Attack ini melakukan eksploitasi pada fungsi f dan fakta bahwa penambahan mod 232 dan XOR tidak berubah.

2. Vikramjit Singh Chhabra memandang cara untuk mengeefisienkan adalah dengan menerapkan brute force keysearch machine.

3. Serge Vaudenay melakukan penelitian pada varian blowfish yang disederhanakan, dengan S-box yang diketahui dan tidak key-dependent. Untuk varian ini, sebuah serangan diferensial dapat menemukan Parray dengan 28r+1 plaintext yang telah dipilih (r adalah jumlah iterasi). Serangan ini tidak mungkin untuk 8-iterasi Blowfish dan yang lebih tinggi, karena lebih banyak plaintext yang dibutuhkan dari pada yang dibangkitkan dengan 64-bit blok cipher.

4. Tesis Ph.D milik Vincent Rijmen mencantumkan second-order differential attack pada 4 iterasi algoritma Blowfish. Namun, attack tersebut tidak dapat dilanjutkan lagi untuk iterasi selanjutnya. Kriptanalisis tersebut tidak bisa menghasilkan hasil yang maksimal, tetapi ada kemungkinan

terjadinya weak key pada blowfish, tetapi sama sekali tidak ada cara untuk menangani pengecekan terhadap penggunaan weak key sebelum tahapan key expansion. Weak key terjadi karena kesalahan pada proses inisialisasi P-array dan s-box, tetapi weak key ini tidak dapat diketahui sebelum proses ekspansi selesai dilakukan, sehingga kita tidak bisa memperkirakan kriteria P-array dan s-box seperti apa yang harus dipenuhi. Weak key akan mengakibatkan hasil enkripsi dengan tingkat keamanan yang buruk atau menghasilkan plainteks itu sendiri. Selama aplikasi yang digunakan tidak sering berganti kunci, Blowfish merupakan algoritma yang cepat, dan selama tidak dilakukan pengurangan jumlah iterasi (dengan asumsi tidak ada penggunaan weak key oleh user) Blowfish merupakan algoritma enkripsi yang aman.

Sampai saat ini algoritma Blowfish belum ditemukan kelemahan yang berarti hanya adanya weak key dimana dua entri dari S-box mempunyai nilai yang sama. Belum ada cara untuk mengecek weak key sebelum melakukan key expansion, tetapi hal ini tidak berpengaruh terhadap hasil enkripsi. Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan tanpa bantuan kunci. Sampai kini belum ada Cryptanalyst yang dapat membongkar pesan tanpa kunci yang dienkripsi dengan memakai bantuan algoritma Blowfish. Agar aman dari pembongkaran pesan maka dalam algoritmanya harus menggunakan 16 putaran agar pesan tersebut tidak dapat dibongkar. Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma enkripsi yang lain dalam pengkripsian sebuah pesan untuk lebih menjamin isi dari pesan tersebut. Sehingga algoritma Blowfish cukup aman jika ingin digunakan untuk mengenkripsi data yang ingin di amankan. Kelebihan 1. S-boxs yang tidak diketahui sehingga sulit untuk dikripanalisis

Page 18: algoritma kandidat AES dan RC5

2. Cepat, Blowfish melakukan enkripsi data pada microprocessor 32-bit dengan rate 26 clock cycles per byte.

2. Compact, Blowfish dapat dijalankan pada memory kurang dari 5K. 3. Sederhana, Blowfish hanya menggunakan operasi – operasi sederhana, Blowfish hanya

menggunakan operasi – operasi sederhana, seperti : penambahan, XOR, dan lookup tabel pada operan32-bit.

4. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang minimal 32-bit, maksimal 448 -bit, Multiple 8 bit, default 128 bit

Kelemahan 1. Tidak cocok untuk aplikasi yang sering berganti kunci 2. Memerlukan waktu yang cukup lama pada saat proses pembangkitan kunci 3. Membutuhkan 4168 byte atau 4,168 kilobyte dalam membangkitkan sub kunci. 4. Berkemungkinan terjadi adanya weak keys

ALGORITMA TWOFISH I. BLOK PEMBANGUN TWOFISH

Algoritma enkripsi Twofish didesain dengan menggunakan Feistel network, memiliki 16 round, sebuah fungsi F yang bijektif yang terdiri dari 4 8x8 S-box yang bergantung pada kunci, sebuah 4x4 maximum distance matrix (MDS) yang tetap dalam GF(28), sebuah pseudo-Hadamard transform (PHT), bitwise rotation, dan sebuah algoritma key schedule.

Bila kita melihat lebih dekat lagi, Twofish memiliki komponen-komponen pembangun sebagai berikut: 1. Feistel network 2. S-box yang bergantung pada kunci 3. Matriks MDS 4. Pseudo-Hadamard Transformation(PHT) 5. Whitening 6. Algoritma key schedule 1. Feistel network

Hampir semua algoritma cipher blok bekerja dalam model jaringan Feistel. Jaringan Feistel ditemukan oleh Horst Feistel dalam desainnya tentang Lucifer, dan dipopulerkan oleh DES. Jaringan Feistel adalah metode umum untuk mentransformasi fungsi apapun (biasa disebut fungsi F) ke dalam permutasi. Beberapa algoritma kriptografi lain yang menggunakan jaringan Feistel misalnya LOKI, GOST, FEAL, Blowfish, Khufu Khafre, dan RC-5. Model jaringan Feistel bersifat reversible, untuk proses enkripsi dan dekripsi, sehingga kita tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks.

Bagian yang penting dari jaringan Feistel adalah fungsi F, pemetaan string input menjadi string output berdasarkan kunci yang digunakan. Fungsi F selalu tidak linear dan mungkin tidak surjektif:

F : {0,1}n/2

x {0,1}N � {0,1}

n/2

di mana n adalah ukuran blok dari jaringan Feistel dan F adalah fungsi yang menerima n/2 bits dari blok dan N bits kunci sebagai input dan menghasilkan n/2 bits output. Dalam setiap round, blok sumber adalah input fungsi F dan output dari fungsi F diXORkan dengan blok target, lalu dua blok ini dipertukarkan sebelum masuk ke round berikutnya. Ide yang digunakan adalah untuk mengambil fungsi F, yang mungkin merupakan algoritma enkripsi yang lemah jika berdiri sendiri, dan melakukan perulangan untuk membuat algoritma enkripsi yang kuat. Dua round pada jaringan Feistel disebut satu cycle, dan dalam satu cycle setiap bit dari blok teks telah dimodifikasi sekali. Twofish merupakan jaringan Feistel 16-round, dengan fungsi F bijektif.

Page 19: algoritma kandidat AES dan RC5

2. S-box yang Bergantung pada Kunci S-box adalah tabel substitusi non-linear yang memetakan satu atau lebih bit dengan satu

atau lebih bit yang lain dan digunakan di banyak cipher blok. S-box memiliki ukuran input dan ukuran output yang bervariasi. S-box pertama kali digunakan pada Lucifer, kemudian pada DES, dan setelahnya banyak algoritma enkripsi lain yang menggunakan S-box. Pada Twofish digunakan empat buah S-box 8x8 yang bergantung pada kunci.

3. Matriks MDS Kode MDS (Maximum Distance Separable) pada sebuah field adalah pemetaan liner dari x

elemen field ke y elemen field, dan menghasilkan vektor komposit x + y elemen, dengan ketentuan bahwa jumlah minimum dari elemen bukan nol pada setiap vektor bukan nol paling sedikit y + 1. Dengan kata lain, jumlah elemen yang berbeda diantara dua vektor berbeda yang dihasilkan oleh pemetaan MDS paling sedikit y + 1. Dapat dibuktikan dengan mudah bahwa tidak ada pemetaan yang dapat memiliki jarak pisah yang lebih besar diantara dua vektor yang berbeda, maka disebut jarak pisah maksimum(maximum distance separable). Pemeteaan MDS dapat direpresentasikan dengan sebuah MDS matriks yang teridiri dari x × y elemen. Kode perbaikan-kesalahan Reed-Solomon (RS) adalah MDS. Kondisi yang diperlukan untuk sebuah x × y matriks untuk menjadi MDS adalah semua kemungkinan submatriks kotak, yang diperoleh dengan membuang kolom atau baris, adalah tidak singular.

Serge Vaudenay pertama kali mengajukan MDS sebagai elemen desain cipher. Shark dan Square menggunakan MDS, meskipun konstruksinya pertama kali ditemukan di cipher Manta yang tidak dipublikasikan. Twofish menggunakan sebuah 4x4 matriks MDS pada GF(2

8).

4. Pseudo-Hadamard Transformation Pseudo-Hadamard Transformation (PHT) adalah sebuah operasi pencampuran sederhana

yang berjalan secara cepat dalam perangkat lunak. 32-bit PHT dengan dua masukkan didefinisikan sebagai :

a’ = a + b mod 232

b’ = a + 2b mod 2

32

SAFER menggunakan 8-bit PHT untuk difusinya. Twofish menggunakan 32-bit PHT untuk mengubah keluaran dari fungsi g nya. PHT ini dapat dieksekusi dalam dua opcodes di mikroprosesor modern seperti keluarga Pentium.

5. Whitening Whitening merupakan sebuah teknik mengXORkan material kunci sebelum round pertama

dan setelah round terakhir, digunakan oleh Merkle dalam Khufu/Khafre, dan ditemukan oleh Rivest untuk DES-X. Whitening menambah tingkat kesulitan serangan pencarian kunci terhadap ciphertext, dengan menyembunyikan masukkan spesifik terhadap round pertama dan round terakhir dari fungsi F.

Twofish mengXORkan 128-bit sub-kunci sebelum round Feistel yang pertama, dan 128-bit lagi setelah round Feistel terakhir. Sub-kunci ini diperhitungkan dengan cara yang sama seperti sub-kunci round, tetapi tidak digunakan di tempat lain dalam cipher.

6. Key schedule Algoritma key schedule merupakan cara untuk mengubah bit-bit kunci menjadi kunci round

yang digunakan dalam cipher. Twofish membutuhkan banyak material kunci, dan memiliki key schedule yang rumit.untuk memfasilitasi analisi, key schedule menggunakan primtive yang sama dengan fungsi round.

IV. ENKRIPSI, DEKRIPSI DAN KEY SCHEDULE PADA TWOFISH Gambar 1 menunjukkan Twofish secara keseluruhan. Twofish menggunakan struktur feistel

dengan 16 round dengan tambahan Whitening pada input dan output. Satu-satunya element non-feistel pada cipher twofish adalah rotasi 1-bit. Rotasi ini dapat dipindahkan ke dalam fungsi F untuk membentuk struktur Feistel yang murni, tetapi hal ini membutuhkan tambahan rotasi dari words sebelum tahap Whitening output.

Page 20: algoritma kandidat AES dan RC5

Plainteks dibagi menjadi empat buah 32bit word. Pada tahap Whitening input, keempat word ini diXORkan degan empat word kunci. Tahap ini kemudian diikuti dengan 16 round. Pada setiap round, kedua word pada lengan kiri digunakan sebagai input bagi fungsi g.(Salah satu dari word dirotasi 8bit terlebih dahulu). Fungsi g berisi empat S-box yang bergantung pada kunci berukuran 8bit (byte), yang diikuti dengan tahap pencampuran linear dengan menggunakan matriks MDS. Hasil dari kedua fungsi g ini kemudian dikombinasikan dengan menggunakan PHT, dan kedua keyword ditambahkan. Kedua hasil ini kemudian diXORkan dengan kedua word pada lengan kanan(yang salah satunya telah dirotasi kiri sebesar 1bit). Lengan kiri dan kanan kemudian di swap (tukar) untuk round selanjutnya. Setelah semua round dijalankan, swap pada round terakhir dibatalkan, dan keempat word kemudian diXORkan dengan empat key word untuk memperoleh ciphertext.

Untuk lebih formalnya, 16 bytes dari plaintext p0,…,p15 dibagi menjadi 4 words P0,…,P3 dengan setiap wordsnya menggunakan konvensi little-endian.

Pada tahap Whitening input,keseluruhan word ini diXORkan dengan empat word kunci yang

telah diekspansi.

Pada setiap round, dua word pertama digunakan sebagai input bagi fungsi F, yang juga

menggunakan nomor round sebagai input. Word ketiga diXOR dengan output pertama dari fungsi F dan dirotasi ke kanan 1bit. Word keempat dirotasi kiri 1bit dan kemudian diXOR dengan output kedua dari fungsi F. Terakhir kedua lengan ditukar.

Gambar 1. Skema enkripsi Twofish

Page 21: algoritma kandidat AES dan RC5

dengan r = 0,…,15 dan ROR dan ROL adalah fungsi yang merotasi argumen pertamanya (sebuah word 32-bit) ke kiri atau ke kanan sesuai dengan jumlah bit yang diindikasikan oleh argument ke-duanya. Langkah Whitening output membatalkan pertukaran round terakhir dan mengXORkan data words dngan 4 words kunci yang telah diekspansi.

Empat words dari ciphertext kemudian ditulis sebagai 16 bytes c0,…,c15 menggunakan konvensi little-endian yang sama dengan yang digunakan untuk plaintext.

IV.1 Fungsi F

Fungsi F adalah permutasi 64-bit yang bergantung pada kunci. Fungsi ini menerima tiga argumen, dua masukkan words R

0 dan R

1, dan nomor round r yang digunakan untuk memilih

sub-kunci yang diperlukan. R0

dimasukkan ke dalam fungsi g, sehingga menghasilkan T0. R

1 dirotasi sejauh 8 bit ke kiri lalu dimasukkan ke dalam fungsi g dan menghasilkan T

1. T

0 dan T

1 kemudian dikombinasikan dalam sebuah PHT dan ditambahkan dua word kunci yang telah diekspansi.

di mana (F

0, F

1) adalah hasil dari F.

IV.2 Fungsi g Fungsi g merupakan inti dari Twofish. Word masukkan X dibagi menjadi empat byte. Setiap

byte diproses dengan S-box masing-masing yang bergantung pada kunci. Setiap S-box adalah bijektif, menerima 8 bit masukkan dan menghasilkan 8 bit keluaran. Keempat hasil yang diperoleh diinterpretasikan sebagai vektor dengan panjang 4 dalam GF(2

8), dan

dikalikan dengan matriks MDS 4x4 (menggunakan field GF(28) untuk komputasi). Vektor yang

dihasilkan diinterpretasikan sebagai word 32-bit, dan menjadi hasil dari fungsi g.

Page 22: algoritma kandidat AES dan RC5

dengan si

adalah S-box yang bergantung pada kunci dan Z adalah hasil dari g. Untuk mendefinisikannya dengan baik, diperlukan spesifikasi korespondensi antara nilai byte dan elemen field pada GF(2

8). GF(2

8) direpresentasikan sebagai GF(2)[x]/(x) di mana v(x) = x

8 + x

6

+ x5

+ x3

+ 1 adalah polinom primitif berderajat 8 pada GF(28). Elemen field a = Σ

7

i=0 a

ix

i

dengan ai elemen GF(2) diidentifikasi dengan nilai byte Σ

7

i=0 a

i2

i.

Matriks MDS diberikan sebagai :

di mana elemennya telah dituliskan sebagai nilai byte heksadesimal menggunakan korespondensi yang didefinisikan di atas.

IV.3 Key schedule Key schedule harus menyediakan 40 words kunci yang telah diekspansi K

0,…,K

39, dan 4

S-box yang bergantung pada kunci dan digunakan pada fungsi g. Twofish didefinisikan untuk kunci dengan panjang N = 128, N = 192, dan N = 256. Kunci yang lebih pendek dari 256 bit dapat digunakan dengan melakukan padding bit 0 sampai panjang kunci terdekat yang didefinisikan. Didefinisikan k = N/64. Kunci M terdiri dari 8k byte m

0,…,m

k-1. Byte-byte tersebut

dikonversikan menjadi 2k words masing-masing 32 bit.

dan lalu menjadi dua word vektor dengan panjang k.

Word vektor ketiga dengan panjang k juga diturunkan dari kunci. Hal ini dilakukan dengan mengambil byte kunci dalam grup 8, menginterpretasikannya sebagai vektor pada GF(2

8), dan

mengalikannya dengan matriks 4x8 yang diturunkan dari kode RS. Setiap 4 byte hasil kemudian diinterpretasikan sebagai word 32-bit. Word-word ini membangun vektor yang ketiga.

untuk i = 0,…,k-1 dan

Page 23: algoritma kandidat AES dan RC5

Perlu dicatat bahwa S melist words-words tersebut dalam urutan yang terbalik. Untuk perkalian matriks RS, GF(2

8) direpresentasikan sebagai GF(2)[x]/w(x), di mana w(x) = x

8 + x

6

+ x3

+ x 2

+ 1 adalah polinom primitif lain berderajat 8 pada GF(28). Pemetaan antara nilai byte

dan elemen dari GF(28) menggunakan definisi yang sama dengan yang digunakan untuk

perkalian matriks MDS. Menggunakan pemetaan ini, matriks RS diberikan sebagai :

Tiga vektor M

e, M

o, dan S membentuk basis key schedule.

IV.3.1. Penambahan Panjang Kunci

Twofish dapat menerima semua kunci dengan panjang lebih kecil sama dengan 256 bit. Untuk ukuran kunci yang tidak didefinisikan di atas, kunci tersebut dipadding pada ujungnya dengan bit-bit 0 hingga mencapai panjang kunci terdekat yang sudah didefinisikan. Sebagai contoh, sebuah kunci 80 bit m

0,…,m

9 diperpanjang dengan

membuat mi = 0 untuk i = 10,…,15 dan diperlakukan sebagai kunci 128 bit.

IV.3.2. Fungsi h Gambar 2 menunjukkan fungsi h secara garis besar. Fungsi ini menerima dua

masukkan – sebuah word 32-bit X dan sebuah list L = (L0, ..., L

k-1) dari word 32-bit

dengan panjang k – dan menghasilkan sebuah word output. Fungsi ini bekerja dalam k tahapan. Pada setiap tahap, empat byte tersebut masing-masing dilewatkan pada S-box yang tetap, dan diXORkan dengan byte yang diturunkan dari list. Setelah itu, byte-byte tersebut sekali lagi dilewatkan pada S-box dan dikalikan dengan matriks MDS seperti pada fungsi g. Untuk lebih formalnya, kita bagi words menjadi byte.

untuk i = 0,…,k – 1 dan j = 0,…,3. Lalu serangkaian substitusi dan XOR diterapkan.

Jika k = 4 kita mendapat

Page 24: algoritma kandidat AES dan RC5

Gambar 2. Fungsi h

Jika k ≥ 3 kita mendapat

Dalam semua kasus kita mendapat

Page 25: algoritma kandidat AES dan RC5

Di sini q0

dan q1

adalah permutasi pada nilai 8 bit yang akan didefinisikan di bagian lain. Vektor hasil y

i dikalikan dengan matriks MDS seperti pada fungsi g.

dengan Z adalah hasil dari fungsi h.

IV.3.3. S-box yang Bergantung pada Kunci Sekarang kita dapat mendefinisikan S-box yang digunakan dalam fungsi g sebagai

untuk i = 0,…,3, S-box dibentuk dengan pemetaan dari x ke y dalam fungsi h, di mana list L sama dengan vektor S yang diturunkan dari kunci.

IV.3.4. Key word Kj yang Diekspansi Word dari kunci yang diekspansi didefiniskan dengan menggunakan fungsi h.

Konstanta ρ digunakan untuk menduplikasi byte; konstanta ini memiliki karakteristik bahwa untuk i = 0,…,255, word iρ terdiri dari empat byte yang sama, masing-masing dengan nilai i. Fungsi h diterapkan untuk word dengan tipe ini. Untuk Ai nilai byte adalah 2i, dan argument kedua dari h adalah Me. Bi dikomputasikan dengan cara yang sama menggunakan 2i + 1 sebagai nilai byte dan Mo sebagai argument kedua, dengan rotasi tambahan sejauh 8 bit. Nilai dari Ai dan Bi dikombinasikan dalam sebuah PHT. Salah satu hasilnya dirotasi sejauh 9 bit. Kedua hasil ini membentuk dua word dari kunci yang diekspansi.

IV.3.5. Permutasi q0 dan q1 Permutasi q

0 dan q

1 adalah permutasi pada nilai 8 bit. q

0 dan q

1 masing-masing

dibangun dari empat permutasi 4-bit yang berbeda. Untuk nilai masukkan x, didefinisikan nilai keluaran y sebagai berikut:

di mana ROR

4 adalah sebuah fungsi yang sama dengan ROR yang melakukan

pergeseran nilai 4 bit. Pada awalnya, byte dipisahkan menjadi dua nibble. Nibble ini dikombinasikan dalam langkah pencampuran bijektif. Setelah itu, setiap nibble dilewatkan pada S-box 4-bit nya masing-masing, dan diikuti langkah pencampuran dan

Page 26: algoritma kandidat AES dan RC5

pencarian S-box yang lain. Akhirnya, dua nibble tersebut direkombinasikan menjadi sebuah byte. Untuk permutasi q

0, S-box 4-bit nya diberikan sebagai berikut :

di mana setiap S-box 4-bit direpresentasikan dengan list entry menggunakan notasi heksadesimal. (Entry untuk masukkan 0,1,…,15 dilist sesuai urutan.) Dengan cara yang sama, untuk q1 S-box 4-bit nya diberikan sebagai :

IV.3.6. Fungsi Round Secara Keseluruhan

Gambar 3 menunjukkan tampilan yang lebih detail mengenai bagaimana fungsi F dikomputasi setiap round jika panjang kunci yang digunakan adalah 128 bit. Pembuatan S-box dan sub-kunci round membuat fungsi round Twofish terlihat lebih rumit, akan tetapi berguna untuk memvisualkan secara tepat bagaimana algoritma ini bekerja.

Gambar 3. Skema satu fungsi F secara keseluruhan (panjang kunci 128bit)

Page 27: algoritma kandidat AES dan RC5

V. DESAIN RASIONAL Twofish didesain dengan memerhatikan beberapa prinsip, yaitu: 1. Performa. Twofish didesain dengan tujuan memiliki performa yang baik saat

diimplementasikan baik pada software maupun hardware. 2. Conservativeness. Jangan mendesain dengan mendekati batas yang telah ada. Dengan kata

lain, tetapkan marjin erorr dan sediakan keamanan melebihi dari apa yang dibutuhkan. Selain itu, desain sebaiknya tahan terhadap jenis serangan yang belum diketahui.

3. Simplisitas. Jangan masukkan elemen desain tanpa alasan yang jelas. Cobalah untuk mendesain algoritma enkripsi yang detailny dapat dengan mudah dipahami.

Prinsip-prinsip ini tidak hanya diaplikasikan pada desain keseluruhan Twofish, tetapi juga pada desain S-box dan key schedule. Pada bagian ini akan dibahas desain rasional dari komponen-komponen pembangun Twofish. V.1 Struktur Round

Twofish didesain dengan menggunakan Feistel network karena Feistel network merupakan struktur pembangun block cipher yang paling banyak dipelajari dan dianalisis. Sebagai tambahan, menggunakan Feistel network berarti bahwa fungsi F hanya perlu dikalkulasi dalam satu arah. Ini berarti bahwa kita dapat menggunakan operasi dalam fungsi F kita yang tidak efisien dalam arah lainnya, dan membuat tabel dan konstanta untuk satu arah saja. Berbeda dengan SPN, dimana fungsi enkripsi harus dapat dieksekusi dalam kedua arah.

V.2 S-box yang Bergantung pada Kunci Pada Twofish digunakan 4 buah S-box 8x8 yang bergantung pada kunci. Keempat S-box ini memilii karakteristik: a. Masing-masing berbeda satu sama lainnya. b. Masing-masing didefinisikan dengan 2(dua), 3(tiga), dan 4(empat) byte dari kunci c. Keempat S-box ini secara keseluruhan menghasilkan keluaran 4 byte(32 bit) d. Karena keempat S-box ini bergantung pada setengah dari kunci oleh karena itu sebaiknya hanya sedikit atau tidak ada pasangan kunci yang menghasilkan S-box yang sama. e. Sebuah perubahan kecil bahkan perubahan satu bit kunci akan menghasilkan S-box yang

jauh berbeda. f. Dalam Twofish Tidak ada kunci yang menyebabkan S-box yang dihasilkan lemah. Lemah

disini berarti bahwa terdapat probabilitas karakteristik diferential dan linear yang tinggi. V.2.1 Permutasi Tetap q0 dan q1

Metode konstruksi untuk membuat q0 dan q1 dari permutasi 4 bit dipilih karena dapat mengurangi biaya hardware dan memory pada beberapa implementasi, tanpa menambah kelemahan pada algoritma enkripsi. Akan sangat membantu mengetahui bahwa permutasi tetap ini hanya digunakan untuk mengostruksi S-box yang bergantung pada kunci, yang pada gilirannya hanya digunakan pada fungsi g dan h. Secara khusus, karakteristik dari q0 dan q1 tidak saling relevan, karena Twofish selalu menggunakan paling tidak tiga dari permutasi ini secara berurutan, dengan paling tidak dua XOR dengan byte material kunci.

V.2.2 S-box Setiap S-box didefinisikan oleh satu, dua, tiga, ataun empat byte dari material kunci,

tergantung dari ukuran kunci yang digunakan. Untuk Twofish dengan kunci 128bit kita dapatkan:

Page 28: algoritma kandidat AES dan RC5

Dimana si,j adalah byte yang diturunkan dari byte kunci dengan menggunakan matriks RS. Dapat kita perhatikan bahwa dengan byte kunci yang sama, tidak akan ada pasangan S-box yang sama. Ketika semua . Masih terdapat hubungan yang serupa antara S-box. Namun demikian, kita tidak dapat menemukan kelemahan dari hasil ini, selama q0 dan q1 tidak memiliki karakteristik diferensial yang tinggi. Untuk panjang kunci 128 bit, dari hasil eksperimen didapatkan bahwa setiap N/8 bit kunci yang digunakan untuk mendefinisikan permutasi menghasilkan permutasi yang berbeda.

V.3 Matriks MDS Keempat byte output dari S-box dikalikan dengan 4x4 matriks MDS pada GF(28). Perkalian

matriks ini merupakan mekanisme difusi utama pada twofish. Karakteristik MDS antara lain: a. Sebuah perubahan pada byte input dijamin akan merubah seluruh 4 byte output b. Sebuah perubahab pada 2 (dua) byte input dijamin akan merubah paling tidak 3 byte

output c. Tetap menjamin jumlah byte yang berubah tetap bahkan setelah rotasi pada fungsi round d. Memiliki koefisien yang tetap e. Untuk implementasi pada software, perkalian antara output S-box dan matriks MDS

diimplementasikan dengan menggunakan empat tabel lookup yang masing-masingnya mengandung 256 32bit words, sehingga kooefisien yang digunakan pada matriks tidak memengaruhi performa.

f. Twofish tidak menggunakan invers dari matriks MDS untuk proses dekripsi g. Tidak ada baris pada matriks yang merupakan rotasi dari baris lainnya atau kolom lainnya

dari matriks h. Hal ini memaksimalkan Hamming weight minimum dari perbedaan antara output dengan

semua perbedaan input V.4 PHT

Operasi PHT, termasuk didalamnya penambahan sub kunci round, dipilih untuk memfasilitasi operasi yang sangat cepat pada keluarga CPU Pentium dengan menggunakan opcode LEA(Load Effective Address). Opcode LEA membuat penambahan dari satu register dengan register lain yang telah digeser, dilakukan dalam satu cycle clock.

Selain dengan menggunakan empat 4x4 S-box yang bergantung pada kunci, matriks MDS, dan PHT, kita dapat saja menggunakan delapan S-box yang bergantung pada kunci dan matriks MDS 8x8. Desain seperti ini lebih mudah dianalisa dan memiliki karakteristik yang lebih baik, tetapi jauh lebih lambat dalam implementasi baik pada software maupun hardware.

V.5 Penambahan Kunci Seperti telah dijelaskan sebelumnya, subkunci round dikombinasikan dengan PHT dengan

penambahan untuk memperoleh performa optimal pada keluarga CPU Pentium. Dari sudut pandang kriptografi, sebuah operasi XOR harusnya digunakan, tetapi hal ini akan mengurangi performa pada CPU Pentium. Menggunakan penambahan dibandingkan XOR akan mengurangi jumlah gerbang yang digunakan dan akan menambah kecepatan pada implementasi hardware.

V.6 Operasi Kombinasi Feistel Twofish menggunakan XOR untuk mengombinasikan output dari fungsi F dengan blok

target. Hal ini dilakukan untuk simplisitas; XOR merupakan operasi yang efisien baik pada software maupun hardware.

V.7 Penggunaan Grup yang Berbeda Secara desain, urutan operasi pada Twofish seperti berikut ini: 8x8 S-box, matriks MDS,

penambahan dan XOR. Operasi aljabar yang berlaku antara lain, tabel lookup, sebuah kombinasi linear GF(2) dari bit oleh matriks MDS, penambahan intejer modulus 232, dan penambahan pada GF(2). Pada S-box, beberapa lapis dari XOR dan permutasi 8x8

Page 29: algoritma kandidat AES dan RC5

diterapkan. Tujuan dari pengurutan ini adalah untuk membantu menghilangkan harapan untuk menggunakan satu buah struktur aljabar sebagai basis dari serangan. Tidak ada dua operasi yang berurutan yang menggunakan struktur yang sama, kecuali untuk PHT dan penambahan kunci yang didesain untuk memperoleh implementasi yang cepat.

V.8 Difusi pada Fungsi Round Ada dua maknisme utama untuk memperoleh difusi pada fungsi round. Yang pertama

adalah perkalian matriks MDS, yang memastikan setiap byte output tergantung pada semua byte input. Kedua output dari fungsi g kemudian dikombinasikan dengan PHT sehingga kedua-duanya akan memengaruhi kedua nilai XOR Feistel 32bit. Sebagian dari PHT yang mengandung nilai T0+2T1 akan kehilangan bit yang paling signifikan dari T1 karena perkalian dengan dua.bit ini dapat diperoleh kembali dengan sejumlah operasi ekstra, tetapi implementasi sotfware akan berkurang secara signifikan, dengan hanya sedikit keuntungan secara kriptografi. Secara umum, byte plaing signifikan dari output PHT ini akan tetap memiliki perbedaan output tidak nol dengan probabilitas 254=255 di atas semua 1byte perbedaan input.

V.9 Rotasi Satu bit Pada setiap round, kedua 32bit word yang diXORkan dengan output fungsi round juga

dirotasikan satu bit. Satu word dirotasikan sebelum XOR dan satunya dirotasikan setelah XOR. Struktur ini menyebabkan dekripsi menjadi simetris.

Rotasi satu bit ini pada Twofish dimasukkan terutama untuk membantu menghilangkan karakteristik alami dari urutan bit dari operasi S-box dan matriks MDS, yang dapat dimanfaatkan untuk serangan dengan berbasis statistik menggunakan susunan byte. Seperti serangan pada square dan SAFER.

Memilih rotasi dengan jumlah ganjil memastikan bahwa setiap word dari empat 32bit word digunakan sebgai input bagi fungsi g dengan setiap kemungkinan posisi, merotasi hanya dengan satu bit membantu mengoptimalkan performa pada CPU Pentium dan smartcards. Membatasi rotasi dengan hanya satu bit juga mengurangi biaya hardware. Ada 3 sisi buruk dari rotasi pada Twofish, yang pertama penambahan opcode , yang kedua rotasi membuat cipher menjadi tidak simetrik yang berarti algoritma enkripsi dan dekripsi sedikit berbeda, yang ketiga rotasi membuat analisa keamanan terhadap serangan diferensial dan linear menjadi lebih sulit.

Rotasi ini juga dipilih secara hati-hati untuk bisa bekerja dengan baik bersama dengan PHT dan matriks MDS. Pemilihan rotasi yang tepat akan menjaga karakteristik dari matriks MDS.

V.10 Jumlah Round 16 round berati terdapat 8 cycle, yang merupakan jumlah yang biasas dipakai pada blok

cipher, seperti pada DES, IDEA, dan Skipjack. Serangan non-related-key terbaik terhadap Twofish mampu mem-break Twofish hingga 5 round. Pemilihan 16 round pada Twofish diambil dengan pertimbangan bahwa jumlah round tersebut cukup aman dari jenis serangan yang belum diketahui dan cukup untuk mengoptimalkan performa.

V.11 Key schedule Untuk mengerti desain dari key schedule, sangat penting untuk mengetahui bagaimana material kunci digunakan dalam Twofish Subkunci Whitening, 128bit dari material kunci diXORkan dengan blok plaintext sebelum

enkripsi, dan 128bit lainnya setelah proses enkripsi. Karena sisa dari enkripsi adalah permutasi, ini dapat dilihat sebagai memilih dari 2256 permutasi 128bit ke 128bit yang berbeda. Material kunci memberikan efek untuk membuat serangan kriptanalisi menjadi sedikit lebih sulit dengan biaya yang sangat rendah.

Subkunci Round, 64bit dari material kunci dikombinasikan dengan output tiap round dari fungsi F dengan menggunakan penjumlahan modulo 232. Fungsi F tanpa subkunci round merupakan permutasi dari 64bit; subkunci roud dipilih dari 264 permutasi yang saling berhubungan pada setiap round. Kunci ini harus sedikit berbeda pada tiap roundnya untuk menghindari serangan slide.

Page 30: algoritma kandidat AES dan RC5

S-box yang bergantung pada kunci, untuk membuat S-box, kunci dipetakan menjadi blok data dengan ukuran setengah dari ukuran semula, dan blok data tersebut digunakan untuk mendefinisikan S-box untuk keseluruhan cipher. Seperti telah dijelaskan sebelumnya, S-box yang bergantung pada kunci diturunkan dengan mengubah S-box tetap dengan cara mengXORkan dengan material kunci.

V.12 Kode Red Solomon (RS) Struktur RS membantu mempertahankan dari banyak serangan related-key dengan

menggunakan material kunci dengan arah ortogonal. Kode RS yang reversibel digunakan pada Twofish dipilih via pencarian komputer untuk meminimalkan biaya implementasi.polinomial generator dari kode ini adalah

Dimana α adalah root polinomial primitive w(x) yang digunakan untuk mendefinisikan field. Karena semua koefisien dari kode ini sederhana, maka kode RS ini dapat dikomputasi dengan mudah tanpa menggunakan tabel, hanya dengan menggunakan sedikit operasi pergeseran dan XOR; hal ini menarik untuk implementasi pada smartcards dan hardware.

VI. ANALISIS TWOFISH Sebagai algoritma enkripsi, Twofish tentunya memiliki kelebihan dan kekurangan

dibandingkan dengan algoritma lainnya. Pada bagian ini akan dibahas mengenai kelebihan dan kekurangan Twofish sebagai algoritma enkripsi VII.1 Perbandingan dengan Kandidat AES Lain

Berikut ini merupakan perbandingan Twofish dengan keempat kandidat AES lainnya: VII.1.1. Safety Factor

Nilai safety factor dari suatu algoritma dapat dihitung dengan

Dimana σ merupakan safety factor, n merupakan jumlah round, dan b merupakan jumlah round yang telah berhasil dibreak. Namun demikian menentukan safety factor dari kelima kandidat AES tidak semudah itu, karena perbedaan karakteristik dari setiap algoritma. Dengan mempertimbangkan berbagai faktor maka digunakanlah untuk menghitung safety factor[3]. Dengan c adalah jumlah core round, m jumlah mixing round dan α merupakan nilai yang harus kita tentukan terlebih dahulu. Dengan metode ini diperoleh safety factor sebagai berikut:

Tabel 4. Safety factor dari kelima kandidat AES

Dapat kita lihat pada tabel di atas bahwa Twofish memiliki safety factor yang lebih baik daripada MARS, RC6 dan Rijndael.

VII.1.2. Performa sebagai Fungsi Panjang Kunci Kecepatan dari MARS, RC6, dan Serpent untuk melakukan organisasi kunci,

mengenkripsi dan mendekripsi tidak tergantung dari panjang kunci. Twofish mengenkripsi dan mendekripsi dengan kecepatan yang tidak dipengaruhi panjang kunci, namun memerlukan waktu yang lebih lama untuk organisasi kunci yang lebih

Page 31: algoritma kandidat AES dan RC5

panjang. Kecepatan Rjindael sangat dipengaruhi oleh panjang kunci, baik saat organisasi kunci maupun proses enkripsi dan dekripsi.

VII.1.3. Performa Perangkat Lunak Grafik 1 dan 2 memberikan perbandingan finalis AES pada CPU yang berbeda.

Grafik 1 memberikan kecepatan enkripsi untuk kunci 128-bit dalam assembly, sedangkan grafik 2 dalam C.

Grafik 1

Grafik 2

Dari kedua grafik di atas dapat kita simpulkan bahwa secara keseluruhan Twofish efisien pada implementasi pada software jika dibandingkan kandidat lainnya.

VII.2 Kelebihan Seperti telah dijelaskan sebelumnya, secara umum Twofish memiliki kelebihan antara lain: Dapat bekerja pada semua mode operasi standar. Algoritma Twofish dapat diterapkan

dengan berbagai mode operasi yang dikenal saat ini yaitu ECB,CBC,CFB,OFB, dan Counter.

Telah dikriptanalisis secara luas. Twofish telah dikriptanalisi dan diuji oleh banyak orang semenjak pembuatannya, algoritma ini juga termasuk salah satu dari kelima kandidat AES. Sampai saat ini belum ditemukan metode yang dapat digunakan untuk mengkriptanalisis Twofish.

Tidak dipatenkan. Twofish tidak dipatenkan oleh pembuatnya, sehingga setiaporang yang ingin menggunakannya dapat menggunakannya secara bebas dan gratis

Twofish adalah cipher blok 128 bit yang menerima kunci dengan panjang variabel 128 hingga 256bit dan tidak memiliki weak keys.

Page 32: algoritma kandidat AES dan RC5

Tidak memiliki trap door. Twofish diyakini tidak memiliki trapdoor karena keseluruhan algoritma dan desain rasional dari Twofish dijelaskan secara terperinci oleh tim pembuatnya.

Twofish memiliki kehandalan- kehandalan dalam implementasinya diatas berbagai platform microprocessor, smartcards dan hardware yang dibuat sebagai perangkat enkripsi data.

Twofish memiliki resistensi yang tinggi terhadap related key attack, dan hanya dapat ditembus dengan menggunakan brute force.

ALGORITMA SERPENT I. KOMPONEN ALGORITMA

Algoritma Serpent menggunakan strukur SPN 32 round dengan ukuran blok 128 bit yang dibagi menjadi 4 word berukuran 32 bit, degan komponen algoritma sebagai berikut: a. Initial Permutation

Input dari proses ini adalah plaintext P, dengan output B0. Proses ini dinyatakan sebagai IP(P) = Bo. Yang selanjutnya Bo akan menjadi input pada round pertama. Initial permutation:

b. 32 round

Masing-masing round pada algoritma Serpent terdiri atas key mixing, S-box, dan transformasi linear. Namun, pada round terakhir fungsi transformasi linear dihilangkan dan diganti dengan key mixing.

c. Key Mixing Key mixing adalah proses XOR antara Bi dengan Ki, dimana Ki dibangkitkan oleh key schedule yang akan dijelaskan kemudian.

d. S-box Serpent menggunakan 8 S-box berbeda yang masing-masing digunakan sebanyak 4 kali. S0 digunakan untuk R0, R8, R16, R24, S2 digunakan untuk R1, R9, R17, R25, dan seterusnya hingga S7 digunakan untuk R7, R15, R23, R31. Tabel S-box:

Page 33: algoritma kandidat AES dan RC5

e. Transformasi Linear

Proses transformasi linear dideskripsikan dengan operasi sebagai berikut:

Atau dapat digambarkan sebagai berikut:

Page 34: algoritma kandidat AES dan RC5

<<< melambangkan proses rotasi. << melambangkan proses pergeseran. f. Final Permutation

Pada final permutation akan dihasilkan ciphertext C, dimana FP(B31) = C. Final Permutation:

II. ENKRIPSI DAN DEKRIPSI

1. Enkripsi B0 := IP(P) Bi+1 := Ri(Bi) C := FP(B32) dimana Ri(X) = L(Si(X Ki)) i = 0,1,...,30 Ri(X) = Si(X Ki) K32 i = 31

2. Dekripsi Proses dekripsi dilakukan dengan menggunakan struktur yang sama namun menggunakan invers S-box dan dengan urutan terbalik, menggunakan invers dari transformasi linear, dan menggunakan kunci dari key schedule dengan urutan penggunaan terbalik.

III. PEMBANGKITAN KUNCI Serpent memerlukan 133 32-bit word sebagai material kunci. Sebagai langkah awal, padding

kunci input menjadi 256 bit, dengan menambahkan bit 1 diakhir kunci input dilanjutkan dengan bit 0 sampai panjang bit menjadi 256 bit. Kemudian dilakukan pembangkitan kunci sebagai berikut Tulis K sebagai 8 32-bit word w-8,..., w-1 Expand ke bentuk prekey w0,..., w131 melalui fungsi affine:

wi := (wi-8 wi-5 wi-3 wi-1 Ø i)<<<11 Transformasi wi menjadi ki dengan S-box:

Subkey adalah Ki dimana Ki := {k4i, k4i+1, k4i+2, k4i+3} Roundkey adalah K^

i = IP(Ki) IV. DESAIN RASIONAL

1. Initial Permutation (IP) Proses ini tidak memberikan efek yang signifikan pada aspek kriptografik. Initial Permutation digunakan hanya untuk mempermudah implementasi.

2. 32 Round (jumlah round) Bercermin dari pengalaman DES, dalam 50 tahun yang akan datang, Serpent 16 round akan bisa di-attack dengan certificational attack. Finalis AES selain Serpent memiliki resiko yang sama karena memiliki margin keamanan tidak lebih baik dibandingkan dengan Serpent 16

Page 35: algoritma kandidat AES dan RC5

round. Sehinga mereka disarankan menambah jumlah round, bukan Serpent yang mengurangi jumlah round. Key Mixing Bertujuan untuk menyebarkan bit-bit kunci ke bit-bit plaintext untuk mendapatkan efek konfusi. S-box Bertujuan untuk mensupport konsep konfusi. S-box yang digunakan mengacu pada S-box milik DES, namun untuk S-box pada Serpent, proses mendapatkannya menggunakan algoritma sebagai berikut:

Dengan menggunakan algoritma tersebut, akan didapatkan 8 buah S-box Serpent. Tujuan dari digunakannya algoritma generate tersebut adalah agar S-box Serpent lebih mudah diimplementasikan pada software. Dimana pseudo code algoritma tersebut dapat diaplikasikan pada berbagai bahasa pemrograman. S-box yang digunakan hanya 8 buah (tidak 32) adalah agar lebih mudah untuk diimplementasikan pada hardware. Linear Transformation Tujuan dari linear transformasi adalah untuk mempercepat penyebaran seluruh bit secara merata untuk memenuhi konsep difusi. Alasan kedua adalah dengan operasi rotasi dan pergeseran yang digunakan pada linear transformasi, akan lebih mudah untuk diimplementasikan pada mikroprosesor karena mengurangi jumlah pipeline yang digunakan. Alasan ketiga, setelah dianalisa menggunakan program, didapatkan batasan untuk probabilitas pada karakteristik linear dan diferensial dimana batasan terebut memenuhi yang dibutuhkan.

3. Final Permutation (FP) Final permutation tidak memberikan aspek signifikan pada aspek kriptografik. Fungsinya sama dengan IP yaitu mempermudah implementasi.

ALGORITMA MARS I. Komponen Pembangun Algoritma

Komponen – komponen pembangun Algoritma Mars meliputi sebagai berikut : a. Tipe - 3 Feistal Network

MARS memiliki panjang blok 128 bit dengan ukuran word 32 bit. Hal ini menunjukkan bahwa setiap blok terdiri dari 4 (empat) word. Dalam struktur network, yang mempunyai kemampuan untuk menangani empat word dalam satu blok adalah tipe 3-Feistal network. Tipe-3 Feistal network terdiri dari banyak iterasi, dimana pada setiap iterasi terdapat satu word data (dan beberapa sub kunci) yang digunakan untuk memodifikasi ketiga word data yang lain. Hal ini berbeda dengan tipe-1 Feistal network yang pada setiap iterasinya terdapat satu word data yang digunakan untuk memodifikasi satu word data yang lain.

b. Operasi XOR, penjumlahan, pengurangan, perkalian, fixed rotation dan data dependent rotation MARS cipher menggunakan berbagai macam operasi (pada 32-bit word). MARS mengkombinasikan: Exclusive-or (XOR), penjumlahan, pengurangan, perkalian, fixed rotation dan data dependent rotation. Penjumlahan, pengurangan, perkalian dan xors.

Page 36: algoritma kandidat AES dan RC5

Ini merupakan operasi yang sangat sederhana, yang digunakan untuk menggabungkan nilai data dan nilai kunci.

Fixed Rotation Rotasi berdasarkan nilai tertentu yang sudah ditetapkan. Dalam hal ini nilai rotasi untuk transformasi kunci adalah 13 posisi dcngan pergerakan rotasi ke kiri, untuk r -function adalah 5 dan 13 posisi dengan pergerakan rotasi ke kiri, 24 posisi untuk forward mixing dengan pergerakan rotasi ke kin dan 24 posisi untuk backward mixing dengan pergerakan rotasi ke kanan.

Data Dependent Rotation Rotasi berdasarkan nilai yang ditentukan bcrdasarkan 5 bit terendah (berkisar antara 0 dan 31) dari word data, misalkan nilai rotasi r = 5 bit terendah dari M maka nilai rotasi r akan sangat tergantung dengan nilai 5 bit terendah dari M.

c. S-Box Tabel look-up atau S-box merupakan suatu tabel substitusi yang digunakan sebagai dasar

untuk menjamin keamanan data pada DES, dan juga digunakan untuk beberapa cipher yang lain seperti MARS. MARS menggunakan tabel tunggal yang terdiri dari 512 32-bit word, yang disebut dengan S-box. Tabel S box ini merupakan fixed tabel yang nilainya sudah tetap. Pada prinsipnya S-box dapat memberikan ketahanan pada serangan linier dan differensial. Namun kekurangan dari penggunaan S-box adalah agak lambat untuk implementasi software. Selain itu adalah indeks dalam tabel hanya beberapa bit(jika tidak tabel akan terlalu besar). Oleh karena itu, untuk menggunakan semua word bit data, kita perlu pencarian menggunakan beberapa S-box yang akan memperlambat penyandian

V. Algoritma Enkripsi dan Dekripsi MARS Enkripsi

Ukuran blok yang digunakan untuk enkripsi data pada algoritma MARS adalah 128 bit. Sebelum enkripsi blok dimulai, satu blok masukan dibagi menjadi empat word data dimana setiap word data terdiri dari 32-bit data. Untuk selanjutya keseluruhan operasi internal dilakukan pada 32-bit data atau satu word data. 4.1 Struktur Cipher Algoritma MARS

Struktur cipher pada MARS dibagi dalam 3 tahap yakni : Tahap pertama adalah forward mixing, berfungsi untuk mencegah serangan terhadap

chosen plainlext. Terdiri dari penambahan sub kunci pada setiap word data atau plaimezr, diikuti dengan delapan iterasi mixing tipe-3 feistal (dalarn forward mode) dengan berbasis S-box.

Tahap kedua adalah "cryptographic core" dan cipher, terdiri dari enam belas iterasi tranformasi kunci tipe-3 feistal. Untuk menjamin bahwa proses enkripsi dan dekripsi mempunyai kekuatan yang sama, delapan iterasi pertama ditunjukkan dalam “forward mode" dan delapan iterasi terakhir ditunjukkan dalam "backward mode”.

Tahap terakhir adalah backward mixing, berfungsi untuk melindungi serangan kembali terhadap chosen chipertext. Tahap ini merupakan invers dari tahap pertama, terdiri dari delapan iterasi mixing tipe-3 feistel (dalam backward mode) dengan berbasis s-box, diikuti dengan pengurangan sub kunci dari word data. Hasil pengurangan inilah yang disebut dengan ciphertext.

Notasi yang digunakan dalam cipher: D[ ] adalah sebuah array untuk 4 32-bit data. Inisial D berisi plaintext dan pada akhir

proses enkripsi berisi ciphertext. K[ ] adalah array untuk expanded key, terdiri dari 40 32 bit word. S[ ] adalah sebuah S-box, terdiri dari 512 32-bit word. Struktur umum dari cipher dapat dilihat pada gambar dibawah ini :

Page 37: algoritma kandidat AES dan RC5

Gambar 3.1 Struktur Cipher algoritma MARS

4.2 Tahap Pertama : Forward Mixing

Dalam tahap ini, pertama-tama sebuah sub kunci ditambahkan pada setiap word data dari

plaintext, dan kemudian dilakukan delapan iterasi mixing tipe-3 feistel network (dalam forward mode), dikombinasikan dengan operasi mixing tambahan. Dalam setiap iterasi digunakan

Page 38: algoritma kandidat AES dan RC5

sebuah word data (source word) untuk memodifikasi tiga word data (target word). Keempat byte source word digunakan sebagai indeks untuk S-box, kemudian nilai S-box entri akan di-XOR-kan, atau ditambahkan pada ketiga word data yang lain.

Keempat byte dari source word dinotasikan dengan b0, b1, b2, b3 (dimana b0 adalah byte terendah dan b3 adalah byte tertinggi) dan digunakan sebagai indeks untuk S-box. S box[b0] di-XOR-kan dengan target word pertama, dan S box[b1+256] ditambahkan dengan target word yang sama. S box[b2] ditambahkan dengan target word kedua dan S box[b3+256] di-XOR-kan dengan target word ketiga. Terakhir source word dirotasikan sebanyak 24 posisi ke kanan.

Untuk iterasi berikutnya keempat word data dirotasikan, sehingga target word pertama saat ini menjadi source word berikutnya, target word kedua saat ini menjadi target word pertama berikutnya, target word ketiga saat ini menjadi target word kedua berikutnya dan source word saat ini menjadi target word ketiga berikutnya.

4.3. Tahap kedua: Transformasi Kunci Utama (Cryptographic care)

Cryptographic core pada MARS cipher menggunakan tipe 3 -feistal network yang terdiri

dari enam belas iterasi. Dalam setiap iterasi digunakan E-function (E untuk expansion) yang mengkombinasikan penjumlahan, perkalian, fixed rotation data dependent rotation dan S _box lookup. Fungsi ini menerima input satu word data dan menghasilkan tiga word data sebagai output dengan notasi L, M dan K. Dalam setiap iterasi digunakan satu word data sebagai input untuk E-function dan ketiga output word data dari P -function ditambahkan atau di-XOR-kan ke ketiga word data yang lam. Kemudian Source word dirotasikan sebanyak 13 posisi ke kin.

Ketiga output dari E-function digunakan dengan cara yang berbeda dalam delapan iterasi pertama dibandingkan dengan delapan iterasi terakhir. Dalam delapan iterasi pertama, output pertama dan kedua dari E-function ditambahkan dengan target word pertama dan kedua, output ketiga di-XOR-kan dengan target word ketiga. Dalam delapan iterasi terakhir, output pertama dan kedua dari E -function ditambahkan dengan target word ketiga dan kedua, output ketiga di-XOR-kan dengan target word pertama.

Page 39: algoritma kandidat AES dan RC5

E-Function

E -function menerima input satu word data dan menggunakan dua atau lebih sub kunci

untuk menghasilkan tiga word data sebagai output. Dalam fungsi ini digunakan tiga variabel sementara, yang dinotasikan dengan L, M dan R (left, middle, dan right). R berfungsi untuk menampung nilai source word yang dirotasikan sebanyak 13 posisi ke kiri. M berfungsi untuk menampung nilai source word yang dijumlahkan dengan sub kunci pertama. Sembilan bit terendah dari M digunakan sebagai indeks untuk S-box. L berfungsi untuk menampung nilai yang sesuai dengan S box entry. Sub kunci kedua akan dikalikan dengan R dan kemudian R dirotasikan sebanyak S posisi ke kiri. L di-XOR-kan dengan R, lima bit terendah dari R digunakan untuk nilai rotasi r dengan nilai antara 0 dan 31, dan M dirotasikan ke kiri sebanyak r posisi. R dirotasikan sebanyak 5 posisi ke kiri dan di-XOR-kan dengan L. Terakhir, lima bit terendah dari R diambil sebagai nilai rotasi r dan L dirotasikan kekiri sebanyak r posisi. Output word pertama dari E -function adalah M kedua adalah M dan ketiga adalah R.

4.4. Tahap ketiga : Backward Mixing

Page 40: algoritma kandidat AES dan RC5

Tahap ini merupakan invers dari tahap forward mixing, word data diproses dalam urutan yang berbeda dalam backward mode. Sama halnya pada forward mixing, pada backward mixing juga digunakan sebuah source word untuk memodifikasi tiga target word. Keempat byte dari source word dinotasikan dengan b0, bl, b2, b3 (dimana b0 adalah byte terendah dan b3 adalah byte tertinggi) dan digunakan sebagai indeks untuk S box. S box[b0+256] di-XOR-kan dengan target word pertama, dan S box[b3] dikurangkan dengan target word kedua. S box[b2+256] dikurangkan dengan target word ketiga dan S box[b1] di-XOR-kan dengan target word ketiga juga. Terakhir source word dirotasikan sebanyak 24 posisi ke kiri.

Untuk iterasi berikutnya keempat word data dirotasikan sehingga target word pertama saat ini menjadi source word berikutnya, target word kedua saat ini menjadi target word pertama berikutnya, target word ketiga saat ini menjadi target word kedua berikutnya dan source word saat ini menjadi target word ketiga berikutnya.

Dekripsi Proses Dekripsi merupakan invers dari proses enkripsi. Simbol – simbol yang digunakan hampir

mirip dengan enkripsi tapi tidak identik. V. Perluasan Kunci

Perluasan kunci berfungsi untuk membangkitkan sub kunci dari kunci yang diberikan oleh pemakai yakni k[] yang terdiri dari n 32-bit (word). Kunci diperluas menjadi 40 32-bit (word) sub kunci K[ ].

Dalam prosedur ini dibuluhkan 7 word data yang diambil dari S box[0..6] dan digunakan untuk transformasi linier. Tabel temporeri T yang terdiri dari 47 word data digunakan untuk menampung nilai 7 word data dari S box[0..6] dan nilai hasil transformasi linier, dimana 7 word pertama berisikan nilai S box(0..6] dan 40 word terakhir akan diisikan melalui transformasi linier yang selanjutnya digunakan dalam iterasi untuk perluasan kunci. Dalam transformasi linier untuk T[0..38] diisikan dengan ketentuan T[i-7] di-XOR-kan dengan T[i-2] dan hasilnya dirotasikan sebanyak 3 posisi ke kin kemudian di-XOR-kan dengan k[i mod n], di-XOR-kan dengan i. Untuk T[39] diisikan dengan n.

Perluasan kunci dilakukan sebanyak 7 iterasi dan pada iterasi terakhir nilai temperori T[0..39] disubstitusikan menjadi nilai sub kunci K[0..39]. Dalam setiap iterasi T[1..39] didapat dengan cara menambahkan S box[9 bit terendah dari T[i-1]] dengan T[i] dan kemudian dirotasikan sebanyak 9 posisi kekiri. Untuk T(0), S box[9 bit terendah dari T[39] ditambahkan dengan T[0] dan kemudian dirotasikan sebanyak 9 posisi ke kiri. Dari hasil iterasi terakhir T[0..39] disubtitusikan ke sub kunci K[0..39] dengan cara : K[(7i) mod 40] diisikan dengan T[i].

Untuk nilsi K5 K7,.. K33 diubah dengan ketentuan: u digunakan untuk menampung nilai S_box[265+2 bit terendah dari K[1], j digunakan untuk menampung nilai 5 bit terendah dari K[i+3]. Kemudian nilai 2 bit terendah dari K[i] diset menjadi 1 dan ditampung dalam w. Bit mask M diset menjadi 1 jika dalam w1 terdapat 10 bit 1 atau bit 0 yang berurutan. U dirotasikan sebanyak j posisi ke kiri dan hasilnya ditampung dalam p. Terakhir p di-XOR-kan dengan w di bawah kontrol M dan disimpan dalam K[i].

VI. Desain Rasional Dalam desain E-function, dicoba menggabungkan operasi yang berbeda sehingga akan

mendapatkan kelebihan yang maksimal dari masing – masing. Beberapa sifat fungsi adalah sebagai berikut : 1. Jika dua word dikalikan, dengan bit yang lebih kecil dari input memiliki efek besar pada output

dari bit yang lebih besar. Jadi untuk mengaturnya, bit yang tidak digunakan sebagai input dalam S-box akan menjadi bit terendah dalam data word. Jumlah rotasi (13 bit) digunakan untuk memaksimalkan kekuatan fungsi E terhadap serangan diferential. Karena struktur internal dari fungsi E sangat sensitif terhadap bit input, sangat cocok menerapkan rotasi konstan pada data, sehingga lawan akan sulit untuk mengkriptanalis. 13 rotasi dalam fungsi E, akan mendapatkan 13 rotasi dari yang sesuai line data “untuk bebas”

2. Jika dua word dikalikan, bagian – bagian yang paling signifikan dalam produk adalah kuat bit, karena dipengaruhi oleh inputan. Dalam kombinasi perkalian dan kecepatan data tergantung, maka kuat bit digunakan untuk menentukan jumlah data yang bergantung pada rotasi

Page 41: algoritma kandidat AES dan RC5

3. E-function seharusnya mendekati fungsi pseudorandom, sehingga membuat lebih sulit untuk mendapatkan pendewordn linier dari satu baris.

4. Untuk menjamin ukuran yang “independent”, maka nilai suatu baris benar – benar tak ada hubungannya dengan baris lain. Entropi relatif dari dua baris minimal 9 bit(garis L, R) dan tingginya 32 bit (R,M).

5. Karena Line M sebagai output terlemah dalam fungsi E, maka diletakkan sebagai output garis tengah. Ini akan mempengaruhi data selanjutnya yang digunakan dalam proses enkripsi

VII. Analisis Kelebihan dan Kekurangan Tingkat keamanan pada MARS diharapkan dengan kunci n-bit adalah 2n, untuk kunci 256 bit.

Untuk tingkat keamanan yang lebih dan kenyamanan, disarankan untuk menggunakan kunci yang lebih dari 256 bit. Untuk setiap serangan linier maupun diferensial terhadap MARS harus memiliki kompleksitas data lebih dari 2128, yang berarti untuk panjang blok 128 bit serangan ini tidak mungkin. Untuk linier attack, tidak ada pendekatan linear yang dapat dibangun dari Keyed Tranformastion dengan bias lebih dari 2 -68 yang mengakibatkan data complexity menjadi lebih dari 2 128 . Differensial attack, E-function didesign untuk mengkombinasikan data key-multiplication, S-box lookup and data-dependent rotation sehingga memaksimalkan resistansi terhadap differential attack. 7.1 Linier Analysis

Dalam Linier analisis, dicoba untuk menemukan subset dari posisi bit pada plaintext, ciphertext, dan perluasan kunci, sehingga untuk plaintext dan kunci expand yang seragam, probabilitas bahwa jumlah bit di posisi ini adalah sama dengan 0 (mod 2), akan dibatasi tidak lebih dari ½. Subset dari plaintext disebut pendekatan linier, sedangkan beda antara perolehan probabilitas dan ½ disebut bias. Secara umum tujuan dari linier analisis adalah untuk menemukan pendekatan dengan bias yang besar, karena sebuah pendekatan dengan bias ε yang sesuai, kompleksitas datanya sebesar (1/ ε)2 .

7.2 Differensial Analysis Salah satu pertimbangan utama dalam desain E-function adalah untuk menggabungkan

perkalian data kunci. Pencarian S-box dan rotasi yang tergantung data digunakan untuk memaksimalkan ketahanan terhadap differensial attack.

IX. Perbandingan dengan Rjndael 9.1 Perbandingan Metode yang digunakan

Secara prinsip kedua algoritma baik MARS maupun Rjndael menggunakan metode-metode yang mirip. Seperti wajarnya algoritma cipher block yang menggunakan operasi-operasi subtitusi, transposisi, dan penambahan operasi lainnya.

Namun yang mencolok dari perbedaan kedua algoritma diantaranya bahwa algoritma MARS mengimplementasikan jaringan Feistel, sedangkan algoritma Rjndael tidak., Hal ini membuat perbedaan mencolok dalam segi kompleksitas waktu. Jadi usaha yang dilakukan opleh pembuat MARS untuk lebih meningkatkan keamanan dengan menggunakan jaringan feistel harus dibayar mahal dengan perfomansinya yang burukl dalam segi kompleksitas waktu.

Kompleksitas ruang pada kedua algoritma ini dapat dilihat secara white box. Metode yang banyak meminta kapasitasmemori komputer diantaranya adalah penggunaan S-box dalam algoritmanya. Jadi kompleksitas ruang untuk panjang kunci yang sama tidak jauh berbeda.

Dilihat dari kemampuan kedua algoritma menerima variansi panjang kunci , tentu saja algoritma MARS lebih unggul

9.1 Perbandingan Tingkat Keamanan Kedua algoritma sangat mendukung keamanan terhadap serangan kriptanalis, baik linear

maupun differential. Sebenarnya algoritma MARS lebih unggul dalam tingkat keamanan dikarenakan penggunaan jaringan feistel sebagai salah satu metode operasi.


Recommended