Anda di halaman 1dari 18

ANALISIS PERFORMANSI ALGORITMA KRIPTOGRAFI RC6

Tugas Matakuliah Keamanan Jaringan

Oleh : Nama : Maman Abdurohman NIM : 23201086

TEKNOLOGI INFORMASI DEPT. TEKNIK ELEKTRO INSTITUT TEKNOLOGI BANDUNG 2002

ALGORITMA KRIPTOGRAFI RC6

I. PENDAHULUAN 1. Pengertian Kriptografi Kriptografi (Cryptography) berasal dari bahasa Yunani yaitu dari kata Crypto dan Graphia yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut Cryptology. Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah. Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali. Proses tranformasi dari plaintext menjadi ciphertext disebut proses Encipherment atau enkripsi (encryption), sedangkan proses mentransformasikan kembali ciphertext menjadi plaintext disebut proses dekripsi (decryption). Untuk mengenkripsi dan mendekripsi data. Kriptografi menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi data [3]. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data. Algoritma kriptografi modern tidak lagi mengandalkan keamanannya pada kerahasiaan algoritma tetapi kerahasiaan kunci. Plaintext yang sama bila disandikan dengan kunci yang berbeda akan menghasilkan ciphertext yang berbeda pula. Dengan demikian algoritma kriptografi dapat bersifat umum dan boleh diketahui oleh siapa saja, akan tetapi tanpa pengetahuan tentang kunci, data tersandi tetap saja tidak dapat terpecahkan. Sistem kriptografi atau Cryptosystem adalah sebuah algoritma kriptografi ditambah semua kemungkinan plaintext, ciphertext dan kunci [3].

2. Jenis Algoritma Kriptografi Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan atas dua golongan, yaitu : a. Symmetric Algorithms Algoritma kriptografi simeteris atau disebut juga algoritma kriptografi konvensioanl adalah algoritma yang menggunakan kunci untuk proses enkripsi sama dengan kunci untuk proses dekripsi [3]. Proses enkripsi-dekripsi algoritma kriptografi simetris dapat dilihat pada gambar dibawah ini : Kunci Kunci

Plaintext

Enkripsi

Plaintext

Dekripsi

Plaintext

Algoritma kriptografi simeteris dibagi menajdi 2 kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers). Pada algoritma aliran, proses penyandiannya berorientasi pada satu bit atau satu byte data. Sedang pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok). b. Asymmetric Algorithms Algoritma kriptografi nirsimetris adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma ini disebut juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key). Proses enkripsi-dekripsi algoritma nirsimeteris dapat dilihat pada gambar dibawah ini : Kunci Umum Kunci Pribadi

Plaintext

Enkripsi

Plaintext

Dekripsi

Plaintext

Pada algoritma public key ini, semua orang dapat mengenkripsi data dengan memakai public key penerima yang telah diketahui secara umum. Akan tetapi data yang telah terenkripsi tersebut hanya dapat didekripsi dengan menggunakan private key yang hanya diketahui oleh penerima. 3. Tinjauan matematis Konsep dasar Dasar matematis yang mendasri proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu himpunan berisi elemen plaintext dan himpunan berisi elemen ciphertext. Enkripsi dan dekripsi merupakan fungsi tranformasi antara dua himpunan tersebut. Bila himpunan plaintext dinotasikan dengan P dan himpunan ciphertext dinotasikan dengan C, sedang fungsi enkripsi dinotasikan dengan E dan fungsi dekripsi dengan D maka proses enkripsi-dekripsi dapat dinyatakan dalam notasi matematis denan : E(P) = C dan D(C) = P Karena proses enkripsi-dekripsi bertujuan memperoleh kembali data asal, maka : D(E(P)) = P Relasi antara himpunan plaintext dengan himpunan cihpertext harus merupakan fungsi korespondensi satu-satu (one to one relation). Hal ini merupakan keharusan untuk mencegah terjadinya ambigu dalam dekripsi yaitu satu elemen ciphertext menyatakan lebih dari satu elemen plaintext. Pada metode kriptografi simetris atau konvensional digunakan satu buah kunci. Bila kunci dinotasikan denan K maka proses enkripsi-dekripsi metode kriptografi simeteris dapat dinotasikan dengan : Ek(P) = C dan Dk (C) = P Dan keseluruhan sistem dinyatakan sebagai : Dk(Ek(P))=P Pada metode kriptografi nirsimeteris digunakan kunci umum untuk enkripsi dan kunci pribadi untuk dekripsi. Bila kunci umum dinotasikan dengan PK dan kunci pribadi dinotasikan dengan SK maka proses enkripsi-dekripsi metode kriptografi nirsimeteris dapat dinotasikan dengan : EPK (P) = C dan

DSK (C) =P Dan keseluruhan sistem dinyakatan sebagai DSK(EPK(P)) = P Aritmetika Modular Aritmetika modular merupakan operasi matematika yang banyak diimplementasikan pada metode kriptografi. Pada metoda kriptografi simetris, operasi aritmetika modular yang sering dipakai adalah operasi penjumlahan modulo dua dan operasi XOR (Exclusive OR) dengan simbol .. operasi modulo dua ini melibatkan bilangan 0 dan 1 saja sehingga identik dengan bit pada komputer. Seluruh kemungkinan nilai operasi XOR ini dapat dilihat pada table dibawah ini : a 0 0 1 1 b 0 1 0 1 a . b 0 1 1 0

Dari tabel diatas dapat dilihat sifat-sifat unik operasi XOR yaitu : A A = 0, A 0 = A, A 1 = A, dengan A adalah komplemen dari A. 4. Kriptanalisis Kriptografi menyebabkan timbulnya kriptanalisis, yaitu ilmu pengetahuan dan seni untuk membongkar data acak [3]. Praktisi dari kriptanalisis disebut kriptanalis. Kriptanalis berkembang sejalan dengan kriptografi. Setiap ada algoritma kriptografi baru yang dibuat oleh kriptografer, langsung diikuti oleh adanya upaya percobaan kriptanalisis. Percobaan kriptanalisis ini disebut attack (serangan). Kriptanalisis mencoba megembalikan data jelas tanpa akses ke ke kunci kriptografi. Ukuran keberhasilan suatu upaya kriptanalisis adalah sampai sejauh mana keberhasilan diketahuinya data jelas atau kunci kriptografi. Asumsi dasar dari suatu kriptosistem adalah bahwa seorang kriptanalis mengetahui keseluruhan mekanisme enkripsi kecuali kuncinya. Berdasarkan itu, maka serangan terhadap suatu kriptografi dapat diklasifikasikan menjadi empat, yaitu [3] :

Ciphertext-only attack Pada jenis serangan ini, kriptanalis mempunyai ciphertext dari beberapa data yang dienkripsikan dengan algoritma kriptografi yang sama. Tujuan kriptanalis adalah mendapatkan plaintext dari ciphertext atau lebih baik lagi menarik kesimpulan megnenai kunci yang digunakan. Known-palintext attack Pada jenis serangan ini, kriptanalis tidak hanya memiliki ciphertext, tetapi juga plaintext dari ciphertext tersebut. Tujuan kriptanalis adalah menarik kesimpulan mengenai kunci yang digunkan untuk mengenkripsi data atau algoritma untuk mendekripsikan ciphertext. Chosen-plaintext attack Pada jenis serangan ini, kriptanalis selain megetahui ciphertext dan plaintext, juga dapat memilih plaintext yang diinginkan yang biasanya memiliki lebih banyak informasi tentang kunci. Tujuan kriptanalis adalah menarik kesimpulan mengenai kunci yang diguankan untuk mengenkripsi data. Adaptive-chosen-paliantext attack Pada hal ini kriptanalis tidak hanya dapat memilih plaintext yang telah dienkripsi, tapi ia juga dapat memodifikasi pilihannya tersebut berdasarkan hasil enkripsi sebelumnya. Kriptanalis mengetahui blok palaintext yang lebih kecil dan kemudian memilih yang lainnya berdasarkan hasil enkripsi pertama, kedua dan seterusnya. 5. Kunci Lemah dan Kunci Setengah Lemah Beberapa kunci yang digunakan pada proses penyandian dapat merupakan kunci lemah atau kunci setengah lemah. Dalam algoritma kriptografi yang baik, jumlah kunci lemah maupun setengah lemah adalah sangat kecil. Kunci lemah Kunci lemah (weak key) adalah sebuah kunci yang mengakibatkan proses enkripsi tidak berbeda dengan proses dekripsi [1]. Bila kunci lemah K maka secara matematis dapat dinyatakan : EK(P) = DK(P) Sehingga dipenuhi pula persamaan : EK(EK(P)) = P dan DK(DK(P))=P

Kunci setengah lemah Sepasang kunci setengah lemah (Pair of Semi Weak Key) adalah sepasang kunci yang sering mengakibatkan proses enkripsi dengan menggunakan kunci yang satu sama dengan proses dekripsi dengan menggunakan kunci yang lain [1]. Bila sepasang kunci setengah lemah adalah K dan K* maka secara matematis dapat dinyatakan : EK(P)=DK*(P) dan DK(P)=EK*(P) Sehingga dipenuhi pula persamaan EK*(EK(P))=P dan DK*(DK(P))=P 6. Mode Operasi Ada beberapa mode operasi yang digunakan dalam mengenkripsi / mendekripsi data. Mode operasi tersebut diantaranya : Electronic Code Book (ECB) Pada mode ini setiap blok plaintext dienkripsi secara independen menjadi blok cipher. Secara matematis dapat dinyatakan : Ci=Ek(Pi) Pi=Dk(Ci) Cipher Block Chaining (CBC) Pada proses enkripsi mode CBC, blok plaintext terlebih dahulu di-XOR-kan dengan blok ciphertext hasil enkripsi blok sebelumnya. Blok pertama plaintext diXOR-kan dengan suatu Initialization Vector (Vektor Awal) yang besarnya sama dengan blok plaintext. Secara matematis dapat dinyatakan : Ci = Ek(P Ci-1) Pi = Ci-1 Dk (Ci) 7. Proses padding Proses padding adalah proses penambahan byte-byte dummy berupa karakter NULL pada byte-byte sisa yang masih kosong pada blok terakhir plaintext, sehingga ukurannya menjadi sama dengan ukuran blok penyandian. Byte terakhir kemudian diisi dengan suatu informasi mengenai ukuran file pada blok terkahir.

Ukuran arsip yang akan disandikan sebagian besar tidak merupakan kelipatan ukuran blok penyandian. Hal ini menhakibatkan blok terkahir mungkin akan memiliki ukuran yang lebih kecil dari blok penyandian. Karena pada Block Cipher mengharuskan blok yang akan disandikan memiliki panjang yang tetap maka pada blok terakhir tersebut harus ditambahkan byte-byte tertentu sehingga ukurannya menjadi sama dengan ukuran blok penyandian.

II. ALGORITMA KRIPTOGRAFI RC6 1. Pengenalan Kriptografi RC6 Algoritma RC6 merupakan salah satu kandidat Advanced Encryption Standard (AES) yang diajukan oleh RSA Security Laboratories kepada NIST. Dirancang oleh Ronald L Rivest, M.J.B. Robshaw, R. Sidney dan Y.L. Yin, algoritma ini merupakan pengembangan dari algoritma sebelumnya yaitu RC5 dan telah memenuhi semua kriteria yang diajukan oleh NIST. RC6 adalah algoritma yang menggunakan ukuran blok hingga 128 bit, dengan ukuran kunci yang diguankan bervariasi antara 128, 192 dan 256 bit. Algoritma RC6 dilengkapi dengan beberapa parameter, sehingga dituliskan sebagai RC6-w/r/b. Parameter w merupakan ukuran kata dalam satuan bit, parameter merupakan bilangan bukan negatif yang menunjukan banyaknya iterasi selama proses enkripsi dan parameter b menunjukan ukuran kunci enkripsi dalam byte. Setelah algoritma ini masuk dalam kandidat AES, maka ditetapkan bahwa nilai w = 32, r=20 dan b bervariasi antara 16, 24 dan 32 byte. RC6-w/r/b memecah blok 128 bit menajdi 4 buah blok 32-bit, dan mengikuti aturan enam operasi dasar sebagai berikut : a + b operasi penjumlahan bilangan integer I. a - b II. a b III. a x b IV. a<<<b V. a>>>b operasi pengurangan bilangan integer operasi exclusive-OR (XOR) operasi perkalian bilangan integer a dirotasikan ke kiri sebanyak variabel kedua (b) a dirotasikan ke kanan sebanyak variabel kedua (b)

2. Algoritma enkripsi Kriptografi RC6 Karena RC6 memecah blok 128 bit menjadi 4 buah blok 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) yang diartikan bahwa nilai yang terletak pada sisi kanan berasal dari register disisi kiri. Diagram blok berikut akan lebih menjelaskan proses enkripsi yang terjadi pada algoritma RC6 :

+ +
<<< <<< lg w f

S[0]

+ +
<<< lg w <<< f

S[1]

S[2i]

Repeat for r rounds S[2i+1]

+
A

S[2r+2]

S[2r+3]

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 masingmasing 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 blok kemudian akan dipertukarkan dengan mengikuti aturan, bahwa nilai A ditempakan pada D, nilai B ditempatkan pada A, nilai C ditempatkan apda B, dan nilai (asli) D ditempatkan pad C. demikian iterasi tersebut akan terus berlangsung hingga 20 kali. 3. Algoritma Dekripsi 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 whiteneing setelah iterasi terakhir diterapkan sebelum iteasi 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 sematamata 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. 4. Penjadwalan kunci

Pengguna memasukkan sebuah kunci yang besarnya b byte, dimana 0 b 255. byte kunci ini kemudian ditempatkan dalam array c w-bit words L[0] L[c-1]. Byte pertama kunci akan ditempatkan sebagai pada L[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 ajaibyang digunakan dalam penjadwalan kunci pada RC6. nilai P32 diperoleh dari perluasan bilangan biner e-2, dimana e adalah sebuah fungsi logaritma. Sedangkan nilai Q32 diperoleh dari perluasan bilangan biner -1, dimana dapat dikatakan sebagai golden ratio (rasio emas).

III. STRUKTUR DATA Berikut ini algoritma-algoritma untuk mengimplementasikan simulator kriptografi RC6. Dengan algoritma-algoritma ini dibuat sebuah simulator kriptografi RC6 yang dapat menghasilkan data analaisis performansinya. 1. Algoritma Pembangkit Sub Kunci KAMUS Type Word32 : 32 bit {tipe data 32 bit} Kunci : string {kunci yang dimasukkan oleh pemakai} i, j, c, s, v : integer A : integer B : integer S : array [0..43] of word32 L : array [0..43] of word32 Function ROTL (X:Word32; Y : integer) Word32 (fungsi untuk merotasi bit sebanyak variabel kedua) ALGORITMA Input (Kunci) S[0] P32 For i 1 to 43 do

S[i] S[i-1]+Q32 Endfor ABij 0 V44 If (c>v) then Vc Vv*3 For s1 to v do A S[i] ROTL ((S[i]+A+B),3) BL[j] ROTL (L[j]+A+B,A+B) I(i+1) mod 44 J (j+1) mod c Endfor 2. Algoritma Baca File Masukan Procedure baca_file {I.S : File belum dibuka} {F.S : File dibaca per 16 karakter dan ditampung dalam buffer} KAMUS Nama_file : string {nama file masukan} Buff : array [0..15] of char i : integer ALGORITMA Input (nama_file) Open (nama_file) i0 while (i 15) and not (EOF) do Read (nama_file, Buff[i]) Endwhile Close (nama_file) 3. Algoritma whitening awal

Procedure whitening_awal {I.S : blok kedua dan keempat belum dijumlahkan dengan sub kunci} {F.S : blok kedua dan keempat yang telah dijumlahkan dengan sub kunci} KAMUS Type word32 : 32 bit (tipe data sebesar 32 bit) X : word32 array [0..3] {blok enkripsi/plaintext} S : array [0..43] of word32 {sub kunci} ALGORITMA X[1] X[1] + S[0] X[3] X[3] +S[1] 4. Algoritma Iterasi Procedure iterasi {I.S : keempat blok setelah whitening awal belum diproses} {F.S : keempat blok yang telah diproses dan saling dipertukarkan} KAMUS Type word32 : 32 bit {tipe data sebesar 32 bit} X : word32 array [0..3] {blok enkripsi/plaintext} Function ROTL(X:Word32; Y : integer) word32 {Merotasi bit kekiri sebanyak variabel kedua} Temp : word32 u, t: word32 i : integer ALGORITMA For i 1 to 20 do t ROTL ((X[1]*(2*X[1]+1)), 5) u ROTL ((X[3]*(2*X[3]+1)), 5) X[0] (ROTL((X[0] XOR t), u )) + S[2*i] X[0] (ROTL((X[2] XOR u), t )) + S[2*i + 1] Temp X[0] X[0] X[1] X[1] X[2] X[2] X[3]

X[3] Temp End for 5. Algoritma Whitening Akhir Procedure Whitening_akhir {I.S : blok pertama dan ketiga belum dijumlahkan dengan sub kunci} {F.S : blok pertama dan ketiga yang telah dijumlahkan dengan sub kunci} KAMUS Type word32 : 32 bit (tipe data sebesar 32 bit) X : word32 array [0..3] {blok enkripsi/plaintext} S : array[0..43] of word32 {sub kunci} ALGORITMA X[0] X[0] + S[42] X[2] X[2] + S[43]

IV. ANALISIS KRIPTOGRAFI RC6 1. Kajian Secara Teoritis 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 feistel network. Banyak iterasi 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 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. Penjadwalan Kunci Penjadwalan kunci pada RC6 menggunakan sebuah sBox 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 subkunci-subkunci 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. 2. Perubahan Besar Arsip Arsip ciphertext mempunyai ukuran yang lebih besar dari arsip plaintext. Hal ini terjadi karena adanya proses pedding. Pada mode EBC maupun pada metode CBC, perubahan maksimum besarnya arsip ciphertext 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 ciphertext menjadi lebih besar dibanding mode EBC. 3. Avallanche Effect Salah satu karakteristik untuk menentukan baik atau tidaknya suatu algoritma kriptografi adalah dengan melihat avalanche effect-nya. Perubahan yang kecil pada plaintext maupun key akan menyebabkan perubahan yang signifikan terhadap ciphertext yang dihasilkan. Atau dengan kata lain, perubahan satu bit pada palintext maupun key akan menghasilkan perubahan banyak bit pada ciphertext. Suatu avalanche effect dikatakan baik jika perubahan bit yang dihasilkan berkisar antara 45-60% (sekitar separuhnya, 50 % adalah hasil yang sangat baik) [3]. Hal ini

dikarenakan perubahan tersebut berarti membuat perbedaan yang cukup sulit untuk kriptanalis melakukan serangan. RC6 memperlihatkan sebuah avalanche effect yang baik. Hasil yang ditunjukan ini sesuai dengan parameter yang ditetapkan yaitu 50% dari besar blok penyandian. Hal tersebut ditunjukan dari hasil yang diperlihatkan dibawah ini :
Plaintext 1 : 0000000000000000000000000000000016 Plaintext 2 : 1000000000000000000000000000000016 Kunci : 000000000000000000000000000000000000000000000000000000000000000016 Ciphertext 1 : 8F5FBD0510D15FA893FA3FDA6E857EC216 Ciphertext 2 : 2321D38ACCAAEA5DBA682E7BDCE095AB16

Dari hasil diatas terlihat bahwa perbedaan bit yang dihasilkan blok (128 bit).

pada

ciphertext 1 dan ciphertext 2 adalah sebanyak 72 bit atau sekitar 56% dari besar Sedangkan untuk perubahan kunci satu bit akan ditunjukan pada hasil dibawah ini.
Plaintext 0000000000000000000000000000000016 Kunci 1 000000000000000000000000000000000000000000000000000000000000000016 Kunci 2 100000000000000000000000000000000000000000000000000000000000000016 Ciphertext 1 8F5FBD0510D15FA893FA3FDA6E857EC216 Ciphertext 2 11395D4BFE4C8258979EE2BF2D24DFF416

Dari hasil tersebut tampak bahwa perbedaan kunci satu bit menghasilkan perbedaan bit sebesar 64 bit atau sekitar 50 % dari besar blok (128 bit). 4. Kunci Lemah dan Kunci Setengah Lemah 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 plaintext dienkripsi ganda menggunkan kunci lemah akan menghasilkan plaintext itu sendiri). Metode penjadwalan kunci apda RC6 menjamin bahwa semua kunci yang digunakan tidak memliki kunci lemah.

Beberapa kunci yang bernilai ekstrim (termasuk empat buah kunci lemah yang dimiliki algoritma DES) tidak berpengaruh pada algoritma RC6. Ini dapat dilihat pada tabel berikut :
Plaintext : 0000000000000000000000000000000016 Kunci 01010101010101010101010101010101 01010101010101010101010101010101 1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 EK(P) 2D44E6FE5A425D6 1CC4D0AC5C0DFD BDF4AC603A353F9A EK*(P) 3F252B035807F16 D0EA51257FFF241 6DE2C2DDEC0C7A4 8901013792FB45C5FA F657C1AAC088A3 F5E1EFDD9F79FA75E D2BE1A8D10D36A367 66041D55D9179C93E7 0EC369DEF716060B7 1DCDD4600CDABC55 F9F06C642AC71F32A

FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE 56F7A541363962C361 FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE 13E0DB0BDD7ACE

Kunci setengah lemah adalah sepasang kunci yang mempunyai sifat yaitu jika sebuah plaintext dienkripsi dengan suatu kunci dan didekripsi kembali dengan kunci pasangannya akan menghasilkan plaintext itu kembali. Beberapa pasangan kunci yang bernilai ekstrim (termasuk pasangan kunci setengah lemah yang dimiliki DES) tidak berpengaruh pada algoritma RC6 seperti terlihat pada tabel berikut :
Plaintext : 0000000000000000000000000000000016 Pasangan Kunci 01FE01FE01FE01FE01FE01FE01FE01FE 01FE01FE01FE01FE01FE01FE01FE01FE FE01FE01FE01FE01FE01FE01FE01FE01 FE01FE01FE01FE01FE01FE01FE01FE01 1FE01FE01FE01FE01FE01FE01FE01FE0 0EF10EF10EF10EF10EF10EF10EF10EF1 E01FE01FE01FE01FE01FE01FE01FE01F F10EF10EF10EF10EF10EF10EF10EF10E FF8B58463369F3FBD7 7405F8E7E7B069 5E850BFB016AEE204 AE5F4AC0363EB91 491FEA5C619513AE83 77DD443F843931 2C0BF7AA1E43EE4D9 4AFE0E4F538B83C EK(P) DK(P)

V. DAFTAR PUSTAKA [1] [2] [3] [4] Knused, L, Block Cipher analysis design and application. Phd Dissertation : Aarhus University, 1994. Rivest, Ronald L; Robshaw, M.J.B; Sidney, R; and Yin, Y.L. : The RC6 Block Cipher, AES Submission, August 1998. Scheier, Bruce. 1996. Applied Cryptography, second edition, John Wiley & Son : New York. Stalling W. Network and Internetwork Security. Englewood Cliffs, New Jersey : Prentice Hall, 1995.