Quiz 10 Kriptografi dan Steganografi

Algoritma Rijndael

Algoritma Rijndael menggunakan substitusi, permutasi dan sejumlah putaran yang dikenakan pada tiap blok yang akan dienkripsi dekripsi. Untuk setiap putarannya, Rijndael menggunakan kunci yang berbeda. Kunci setiap putaran disebut roundkey. Rijndael beroperasi dalam orientasi byte sehingga memungkinkan untuk implementasi algoritma yang efisien ke dalam software dan hardware. Ukuran blok untuk algoritma Rijndael adalah 128 bit (16 byte).

 

Rijndael mendukung panjang kunci 128 bit sampai 256 bit dengan step 32 bit. Panjang kunci dan ukuran blok dapat dipilih secara independen. Setiap blok dienkripsi dalam sejumlah putaran tertentu.

 

Karena AES menetapkan panjang kunci adalah 128, 192, dan 256, maka dikenal AES 128, AES 192, dan AES 256.

 

 

Panjang Kunci

(Nk)

Ukuran blok

(Nb)

Jumlah Round

(Nr)

AES – 128

4

4

10

AES – 192

6

4

12

AES – 256

8

4

14

 

Algoritma Rijndael mempunyai 3 (tiga) parameter:

  • Plainteks adalah array yang berukuran 16-byte, yang berisi data masukan.
  • Cipherteks adalah array yang berukuran 16-byte, yang berisi hasil enkripsi.
  •  Kunci adalah array yang berukuran 16-byte, yang berisi kunci cipher (disebut juga chiper key).

Garis besar algoritma Rijndael yang beroperasi pada blok 128 bit dengan kunci 128 bit adalah sebagai berikut:

  • AddRoundKey, melakukan XOR antara state awal (plainteks) dengan chiper key. Tahap ini disebut juga initial round.
  • Putaran sebanyak Nr–1 kali. Proses yang dilakukan pada setiap putaran adalah:

1.      SubBytes adalah substitusi byte dengan menggunakan tabel substitusi (S-Box).

2.     ShiftRows adalah pergeseran baris-baris array state secara wrapping.

3.     MixColumns adalah mengacak data di masing-masing kolom array state.

  • AddRoundKey adalah melakukan XOR antara state sekarang round key.Final round, proses untuk putaran terakhir:

1.     SubBytes

2.     ShiftRows

3.     AddRoundKey


Garis besar algoritma Rijndael diperlihatkan pada gambar diagram di bawah ini.

 

Analisis desain Rijndael >> Daemen dalam disertasinya, Rijndael didesain berdasarkan wide trail strategy. Strategi ini mengusulkan agar cipher terdiri dari tiga komponen utama:

  • Pencampuran kunci >> Bertujuan agar keamanan algoritma tidak terletak pada dirahasiakannya algoritma, melainkan pada kerahasiaan kunci.
  • Transformasi nonlinear >> Bertujuan agar bila diketahui keluaran, maka tidak dapat diketahui masukannya. Hal ini dapat dilakukan dengan kotak-S.
  • Transformasi linear >> Bertujuan agar sebanyak mungkin transformasi nonlinear yang aktif. Dengan memisahkan transformasi linear dengan non linear, diharapkan dapat mendesain transformasi nonlinear terbebas dari transformasi linear dan sebaliknya.

 

Kotak Substitusi (S-Box) >> S-Box pada Rijndael didesain dengan rumusan matematika untuk menghilangkan kecurigaan akan ditanamnya backdoor pada S-Box. Penggunaan inversi x-1 pada GF(28) dikarenakan ketahanan operasi ini terhadap analisis sandi linear dan diferensial. Berikut ini adalah ringkasan kriteria S-Box:

  • Invertibility (untuk dekripsi).
  • Minimisasi korelasi antara kombinasi linear bit-bit masukan dan kombinasi linear bit-bit keluaran (menahan ASL).  
  • Minimisasi nilai terbesar pada tabel XOR (menahan ASD). 
  • Kompleksitas ekspresi aljabar pada GF(28) (diperoleh dengan tambahan L untuk menghalangi interpolation attack). 
  • Kesederhanaan deskripsi (mudah analisisnya).


Operasi MixColumns >> Bersama dengan operasi ShiftRows, MixColumns merupakan transformasi linear yang bertujuan untuk menyebarkan pengaruh transformasi nonlinear ke sebanyak mungkin komponen nonlinear di ronde selanjutnya. Apabila ShiftRows bertujuan menyebarkan pada arah baris, maka MixColumns bertujuan menyebarkan ke arah kolom. Dengan perpaduan dua operasi ini, diperolehlah difusi yang sangat baik.

 

Expansi Kunci >> Subkey pada tiap ronde dapat diperoleh dari rumus:

 W[i]=W[i-6] Å W[i-1]

W[6i]=W[6i-6] Å f(W[6i-1])

F merupakan fungsi penggunaan kotak-S dan penambahan konstanta ronde. Penjadwalan kunci dapat diimplementasikan tanpa eksplisit menggunakan array W. Jika jumlah yang tersedia kecil, maka kunci per ronde dapat dihitung on-the-fly dan hanya membutuhkan buffer sebesar 64 byte. Ini berarti bahwa mengetahui 4 word (64 byte) berurutan dari kunci terekspansi akan dapat membangkitkan seluruh tabel subkey. Konstanta per ronde menghilangkan sifat simetri.

 

 

Comments