Posted by: Ricky aji | December 16, 2009

Algoritma Block Cipher Rivast


RIVAST merupakan algoritma block cipher yang beroperasi pada ukuran blok 64 bit. RIVAST mengenkripsi 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan delapan buah subkunci. Masing – masing subkunci memiliki ukuran 32 bit, yang dibangkitkan oleh suatu fungsi NLFSR (nonlinier feedback shift register). NLFSR ini dibentuk oleh 2 buah LFSR (linier feedback shift register) yang masing – masingnya berukuran 5 stages. Keduanya dihubungkan oleh operasi XOR.

Skema global dari algoritma RIVAST adalah sebagai berikut :

  1. Dilakukan whitening terhadap blok plainteks dengan cara di-XOR-kan  dengan kunci eksternal berukuran sama dengan blok plainteks, yakni 64 bit.
  2. Hasilnya kemudian dipermutasi dengan matriks permutasi 64 bit.
  3. Hasil permutasi kemudian di-enchipering sebanyak 8 round. Setiap round menggunakan subkunci yang berbeda.

Pada proses enciphering, blok plainteks dibagi menjadi dua bagian, yaitu kiri (left) dan kanan (right), yang masing – masing panjangnya 32 bit.

Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R), yang masing – masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 8 round Rivast. Pada setiap round i, blok L merupakan masukan untuk fungsi transformasi yang disebut fungsi f. Pada fungsi f, blok L dikombinasikan dengan kunci internal Ki. Keluaran dari fungsi f di-XOR-kan dengan blok R yang sudah di-shift sepanjang j untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru didapat dari blok R sebelumnya. Ini merupakan satu round Rivast. Secara matematis dapat dinyatakan sebagai

Li = Ri-1

Ri = R’i-1 XOR f(Li-1,Ki)

Gambar di bawah ini memperlihatkan skema algoritma Rivast yang lebih rinci.

Satu putaran Rivast merupakan adopsi dari jaringan Feistel. Sebelum round pertama, terhadap blokplainteks dilakukan permutasi. Tujuan permutasi ini yaitu untuk mengacak plainteks sehingga bit – bit di dalamnya berubah dan menambah efek difusinya. Permutasi di awal enkripsi ini menggunakan initial permutation algoritma DES, karena memiliki ukuran yang sama yaitu 64 bit.

Satu putaran Rivast merupakan adopsi dari jaringan Feistel. Sebelum round pertama, terhadap blokplainteks dilakukan permutasi. Tujuan permutasi ini yaitu untuk mengacak plainteks sehingga bit – bit di dalamnya berubah dan menambah efek difusinya. Permutasi di awal enkripsi ini menggunakan initial permutation algoritma DES, karena memiliki ukuran yang sama yaitu 64 bit.

Cara membaca table di atas yaitu : “pindahkan bit ke-58 ke posisi bit 1, pindahkan bit ke-50 ke posisi bit 2, dan seterusnya”.

Key Schedule

Karena ada 8 round, maka dibutuhkan kunci internal (subkey) sebanyak 8 buah, yaitu k1, k2, …, k8. KUnci – kunci internal ini dapat dibangkitkan sebelum proses enkripsi atau bersamaan dengan proses enkripsi. Kunci – kunci internal ini dibangkitkan dengan algoritma Nonlinier Feedback shift register 5 stages. Berikut ini fungsi yang digunakan

F(x)= x5 + x4 + x3 + x2 + x + 1

G(x) = x5 + x4 + 1

Periode yang dihasilkan yaitu (25 – 1) (25 – 1) = 961

Seperti yang dijelaskan oleh gambar di atas, output dari f(x) dikenakan operasi multiplication dengan output dari g(x). Kemudian hasilnya di-XOR-kan dengan bit feedback pada g(x). Kunci internal dibangkitkan sebanyak yang diperlukan, lalu nantinya dibagi – bagi per 32 bit untuk dijadikan kunci internal pada round i.

(untuk lebih lengkapnya silahkan download disini)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: