RC6 Block cipher adalah pengembangan dari sistem RC5 block cipher, dirancang khusus untuk memenuhi kebutuhan akan sebuah Advanced Encryption Standard (AES). Sama seperti RC5, RC6 membuat penggunaan sifat dasar pada data tergantung pada rotasi. Aplikasi tambahan pada RC6 yaitu tersedianya 4 register kerja sebagai penganti 2 register kerja, dan inklusi dari perkalian integer sebagai operasi dasar tambahan. Penggunaan multiplikasi yang besar meningkatkan difusi setiap round.
I. 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 digunakan 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 r 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 :
1. a + b operasi penjumlahan bilangan integer
2. a – b operasi pengurangan bilangan integer
3. a Å b operasi exclusive-OR (XOR)
4. a x b operasi perkalian bilangan integer
5. a<<<b a dirotasikan ke kiri sebanyak variabel kedua (b)
6. a>>>b a dirotasikan ke kanan sebanyak variabel kedua (b)
II. 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 :
Perhatikan bahwa deskripsi dari RC6 membentuk “round” yang memiliki analogi yang sama pada konsep DES (Data Encryption Standard) yakni sebuah round : setengah dari data dihasilkan dari setengah yang lain dan dua diantaranya di tukar posisi. Pada RC5 “setengah round” dipakai untuk menggambarkan kerja system dan sebuah round RC5 dapat dianggap terdiri dari dua buah “setengah round”. Hal ini menjadikannya bersifat ”confusion” dan begitupula RC6 yang memakainya kedalam bentuk “round” dalam jalur yan leih kompleks.
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 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.
I. 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 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.
II. 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 ajaib”yang 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. 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
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.
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.
· 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.
· 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 pada ciphertext 1 dan ciphertext 2 adalah sebanyak 72 bit atau sekitar 56% dari besar blok (128 bit).
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).
· 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 EK(P) EK*(P)
01010101010101010101010101010101 F5E1EFDD9F79FA75E D2BE1A8D10D36A367
01010101010101010101010101010101 2D44E6FE5A425D6 3F252B035807F16
1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F 66041D55D9179C93E7 0EC369DEF716060B7
0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E 1CC4D0AC5C0DFD D0EA51257FFF241
E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 1DCDD4600CDABC55 F9F06C642AC71F32A
F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 BDF4AC603A353F9A 6DE2C2DDEC0C7A4
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE 56F7A541363962C361 8901013792FB45C5FA
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE 13E0DB0BDD7ACE F657C1AAC088A3
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 EK(P) DK(P) 01FE01FE01FE01FE01FE01FE01FE01FE
01FE01FE01FE01FE01FE01FE01FE01FE 491FEA5C619513AE83 2C0BF7AA1E43EE4D9
FE01FE01FE01FE01FE01FE01FE01FE01 77DD443F843931 4AFE0E4F538B83C
FE01FE01FE01FE01FE01FE01FE01FE01
1FE01FE01FE01FE01FE01FE01FE01FE0
0EF10EF10EF10EF10EF10EF10EF10EF1 FF8B58463369F3FBD7 5E850BFB016AEE204
E01FE01FE01FE01FE01FE01FE01FE01F 7405F8E7E7B069 AE5F4AC0363EB91
F10EF10EF10EF10EF10EF10EF10EF10E
DAFTAR PUSTAKA
[1] Abdurrahman, Maman “Analisis PerformansiI Algoritma Kriptografi RC6” : Institut Teknologi Bandung, 2002.
[2] Knused, L, “Block Cipher – analysis design and application”. Phd Dissertation : Aarhus University, 1994.
[3] Rivest, Ronald L; Robshaw, M.J.B; Sidney, R; and Yin, Y.L. : “The RC6 Block Cipher”, AES Submission, August 1998.
[4] Scheier, Bruce. 1996. Applied Cryptography, second edition, John Wiley & Son : New York.
kalo dah ampe avallanche attack, analis difusi n confusi juga perlu disampaikan.karena itu adalah dasar dari kekuatan algoritma block cipher, seperti RC6 ini.
ok.thanx
Untuk implementasinya sendiri kedalam sebuah aplikasi.. apakah ini bisa dilakukan??? maksudnya dalam bahasa pemrogaman deh…
algoritma ini kan temasuk kategori block cipher ya..bagaimana dengan kecepatannya dalam memproses dibandingkan dengan algoritma AES lainnya…
thanx atas infonya…
berapa besaar kapasitas file yang bisa dienkripsi?, karena w = 32 bit ?
kaloo.. RC6 mo dibandingin unjuk kerjanya dengan AES. kira – kira… bandingin apanya??
untuk pertanyaan bang aan:
>>Kapasitas file sebenernya menunjukkan jumlah data yang terkandung didalamnya.. sebenarnya berapapun jumlah data yang ada dapat dilakukan proses enkripsi karena kerja algoritma ini hanya mentransformasikan dari plaintext menjadi ciphertext,analoginya seperti mesin giling..ini kasarnya Lho… dan algoritma ini memecah pesan kedalam blok2 ukuran 32 bit…jadi bisa aja data yang besar dienkripsi dengan algoritma ini,,tetapi akan berbanding terbalik dengan kecepatan proses datanya ya..
selain itu perlu diperhatikan …dalam aplikasinya algoritma ini dapat dibuat dalam platform dan bahasa tertentu..sehingga ada faktor keterbatasan memory yang dipakai….
>>untuk mba memey:
bandingkan dengan kecepatan proses data, kemudahan aplikasi dalam platform, dan faktor keamanan yang ditawarkan…
Algoritma ini dapat di implementasikan dalam bahasa java ngga’ ???
bisa gak tolong dibantuin untuk menyelesaikan proses enkripsi menggunakan algoritma RC6 secara manualnya,?? soalnya penting banget….
contoh nya : misalkan kita akan melakukan proses enkripsi kata ” A K U “, penyelesaiaan menggunkan algoritma RC6 nya bagaimana?
gi2h,,dikasih contoh penggunaan algoritma y donk..baik enkripsi atau dekripsi y..biar lebih jelas..jadi, buat orang2 awam kyk gw,,jd tw d gmn cara krja algoritma y ntu..ya pake buat kata2 yg sederhana aja..kyk misalnya sandiin kalimat “oppie” gt..(hehe..)
Buatkan & kirimkan ke email gw dunks gimana aplikasi dari RC6 baik enkripsi dan deskripsinya.
Thanks.
tolong bantuannya donk untuk perhitungan manual algoritma rc6. misal plainteknya “kriptografi” dan kunciny “keamanan jaringan”?