Berkenalan dengan Algoritma Kripto RC6 Block Cipher

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 : algor.jpg

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.

9 pemikiran pada “Berkenalan dengan Algoritma Kripto RC6 Block Cipher

  1. 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

  2. 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…

  3. 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…

  4. 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?

  5. 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..)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s