Tuesday 25 December 2012

Algoritma Rivest Code 6 (RC6)

A. Metode Enkripsi RC6

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. Pada proses 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 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.

clip_image002

Tabel Kunci S-box RC6

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, 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 pada B, dan nilai (asli) D ditempatkan pad C. Demikian iterasi tersebut akan terus berlangsung hingga 20 kali.

Diagram blok berikut akan lebih menjelaskan proses enkripsi yang terjadi pada algoritma RC6 :

clip_image003

Diagram Enkripsi RC6

Secara lebih detail, proses enkripsi dengan RC6 dijelaskan pada notasi (A,B,C,D) = (B,C,D,A). Algoritmanya adalah sebagai berikut :

B = B + S[0];
D = D + S[1];
for i = 1  to r do
t =  (B x (2 x B + 1)) <<< 5
u = (D x (2 x D + 1)) <<< 5
A = ((A xor  t) <<< u) + S[2 x i];
C = ((C xor  u) <<< t) + S[2 x i+1];
(A,B,C,D) = (B,C,D,A)
A = A + S[(2 x r)+2];
C = C + S[(2 x r)+3];

B. MetodeDekripsi RC6

Proses dekripsi ciphertext pada algoritma RC6 merupakan pembalikan dari proses enkripsi. Pada proses awal, bila proses enkripsi menggunakan operasi penjumlahan, maka pada proses dekripsi menggunakan operasi pengurangan. Sub kunci yang digunakan pada proses akhir setelah iterasi terakhir diterapkan sebelum iteasi pertama, begitu juga sebaliknya sub kunci yang diterapkan pada proses sebelum iterasi pertama digunakan pada setelah iterasi terakhir. 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.

Diagram blok berikut akan lebih menjelaskan proses dekripsi yang terjadi pada algoritma RC6 :

clip_image004

Diagram Dekripsi RC6

Sama seperti pada RC5, algoritma dekripsi RC6 juga merupakan penurunan dari algoritma enkripsi. Algoritmanya adalah sebagai berikut :

C = C – S[2r + 3]
A = A – S[2r + 2]
for i = r downto 1 do
(A,B,C,D) = (D,A,B,C)
u = (D x (2D + 1)) <<< 5
t = (B x (2B + 1)) <<< 5
C = ((C – S[2i + 1] >>> t) xor  u
A = ((A – S[2i]) >>> u) xor  t
D = D – S[1]
B = B – S[0]

RC6 adalah algoritma yang paling baru di antara algoritma RC dan belum ada catatan mengenai kriptanalisis terhadap algoritma ini. Perlu diingat bahwa  algoritma ini hamper setara dengan algoritma Rijndael yang ditetapkan sebagai AES pada tahun 2001–2010. Jika Rijindael diperkirakan akan bertahan (tidak dapat dipecahkan) hingga 5 tahun lagi, maka RC6 juga begitu.

0 komentar: