13.3 Algoritma Rijndael
- Seperti pada DES, Rijndael menggunakan substitusi dan permutasi, dan sejumlah putaran (cipher berulang) – setiap putaran mengunakan kunci internal yang berbeda (kunci setiap putaran disebut round key). Tetapi tidak seperti DES yang berorientasi bit, Rijndael beroperasi dalam orientasi byte (untuk memangkuskan implementasi algoritma ke dalam software dan hardware).
- Garis besar Algoritma Rijndael yang beroperasi pada blok 128-bit dengan kunci 128-bit adalah sebagai berikut (di luar proses pembangkitan round key):
AddRoundKey: melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round.
Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah:
Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah:
- SubBytes: substitusi byte dengan menggunakan tabel substitusi (S-box).
- ShiftRows: pergeseran baris-baris array state secara wrapping.
- MixColumns: mengacak data di masing-masing kolom array state.
- AddRoundKey: melakukan XOR antara state sekarang round key.
- SubBytes
- ShiftRows
- AddRoundKey
- Algoritma Rijndael mempunyai 3 parameter:
- plaintext : array yang berukuran 16-byte, yang berisi data masukan.
- ciphertext : array yang berukuran 16-byte, yang berisi hasil enkripsi.
- key : array yang berukuran 16-byte, yang berisi kunci ciphering (disebut juga cipher key). Dengan 16 byte, maka baik blok data dan kunci yang berukuran 128-bit dapat disimpan di dalam ketiga array tersebut (128 = 16 x 8).
- Selama kalkulasi plainteks menjadi cipherteks, status sekarang dari data disimpan di dalam array of bytes dua dimensi, state, yang berukuran NROWS x NCOLS. Untuk blok data 128-bit, ukuran state adalah 4 x 4.Elemen array state diacu sebagai S[r,c], dengan 0 £ r < 4 dan 0 £ c < Nb (Nb adalah panjang blok dibagi 32. Pada AES-128, Nb = 128/32 = 4).
- Pada awal enkripsi, 16-byte data masukan, in0, in1, …, in15 disalin ke dalam array state (direalisasikan oleh fungsi CopyPlaintextToState(state, plaintext)) seperti diilustrasikan sebagai berikut:
Operasi enkripsi/dekripsi dilakukan terhadap array S, dan keluarannya ditampung didalam array out.
Skema penyalinan array masukan in ke array S:
S[r, c] ¬ in[r + 4c] untuk 0 £ r < 4 dan 0 £ c < Nb
Skema penyalinan array S ke array keluaran out:
out[r+4c] ¬ S[r, c] untuk 0 £ r < 4 dan 0 £ c < Nb
3 komentar:
Nice
maksud dari keyexpansion itu apa yah gan..mohon pencerahannya
Maaf baru aktif kembali di dunia blogger
Posting Komentar