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
Post a Comment