AES ini merupakan algoritma block cipher dengan menggunakan sistem permutasi dan substitusi (P-Box dan S-Box) bukan dengan jaringan Feistel sebagaiman block cipher pada umumnya. Jenis AES terbagi 3, yaitu :
1.AES-128
2.AES-192
3.AES-256
Pengelompokkan jenis AES ini adalah berdasarkan panjang
kunci yang digunakan. Angka-angka di belakang kata AES menggambarkan panjang
kunci yang digunakan pada tipa-tiap AES. Selain itu, hal yang membedakan dari
masing-masing AES ini adalah banyaknya round yang dipakai. AES-128 menggunakan
10 round, AES-192 sebanyak 12 round, dan AES-256 sebanyak 14 round.
AES
memiliki ukuran block yang tetap sepanjang 128 bit dan ukuran kunci sepanjang
128, 192, atau 256 bit. Tidak seperti Rijndael yang block dan kuncinya dapat berukuran kelipatan
32 bit dengan ukuran minimum 128 bit dan maksimum 256 bit.
Berdasarkan
ukuran block yang tetap, AES bekerja pada matriks berukuran 4x4 di mana
tiap-tiap sel matriks terdiri atas 1 byte (8 bit). Sedangkan Rijndael sendiri
dapat mempunyai ukuran matriks yang lebih dari itu dengan menambahkan kolom
sebanyak yang diperlukan.
Berikut
adalah pemahaman algoritma enkripsi AES-128 menurut saya berdasarkan algoritma
AES versi aslinya :
1. Siapkan array berukuran 4x4 bernama Kunci
2. Siapkan array berukuran 4x4 bernama State
3. Cetak : “Masukkan 16 bilangan heksadesimal
sebagai kunci : “
4. Simpan enam belas nilai tersebut sebagai
nilai dari masing-masing elemen array Kunci.
5. Cetak : “Masukkan teks yang akan
dienkripsi : “
6. Konversikan teks tersebut ke dalam bentuk
bit menggunakan kode ASCII.
7. Konversikan kode ASCII tersebut ke dalam heksadesimal
8. Kelompokkan bit-bit teks tersebut menjadi
128 bit tiap bagiannya.
9. Ambil 128 bit pertama untuk diproses.
10. Kelompokkan bit teks tersebut menjadi 16
bagian dengan 8 bit tiap bagiannya.
11. Masukkan tiap-tiap bagian teks tersebut ke
dalam tiap-tiap sel pada matriks berukuran 4x4.
12. Konversikan bit ke dalam heksadesimal.
13. Lakukan langkah AddRoundKey
14. Lakukan langkah SubBytes
15. Lakukan langkah ShiftRows
16. Lakukan langkah MixColumns
17. Lakukan langkah AddRoundKey
18. Ulangi langkah 13-16 sebanyak 9x.
19. Jika langkah 17 sudah dilakukan, maka
lakukan langkah SubByte
20. Lakukan langkah ShiftRows
21. Lakukan langkah AddRoundKey
22. Selesai.
Penjelasan :
Misal,
teks berita sudah diolah sedemikian rupa sehingga menjadi matriks (array)
berukuran 4x4 dan begitu pula kata kuncinya
Kemudian
akan dilakukan 4 transformasi sebagai berikut sebanyak 9 kali :
1. SubBytes
2. ShiftRows
3. MixColumns
4. AddRoundKey
Setelah
itu, untuk round ke-10 dilakukan 3 transformasi sebagai berikut :
1. SubBytes
2. ShiftRows
3. AddRoundKey
SubBytes
Berikut
apa yang dinamakan SubBytes :
SubBytes
adalah mensubstitusikan 1 sel pada
State dengan 1 sel yang
bersesuaian pada S-Box. Elemen-elemen pada S-Box itu sendiri telah ditentukan
sebelumnya.
Misal,
kita akan menggantikan elemen 19 pada State. Maka elemen yang bersesuaian pada
S-Box terletak pada baris ke-1 dan kolom ke-9. Begitu pun seterusnya.
ShiftRows
Berikut
apa yang dinamakan ShiftRows :
.-
MixColumns
Selanjutnya, apa yang dinamakan MixColumns adalah
sebagai berikut :
MixColumns
adalah proses mengalikan 1 kolom dengan matriks berikut :
02 |
01 |
01 |
03 |
03 |
02 |
01 |
01 |
01 |
03 |
02 |
01 |
01 |
01 |
02 |
03 |
Sehingga
menghasilkan matriks seperti di bawah ini :
AddRoundKey
Kemudian
berikut ini adalah AddRoundKey :
Kolom
ke-1 matriks State yang telah melalui proses SubBytes
dan ShiftRows di-XOR-kan dengan kolom ke-1 Round Key 1. Begitu pula dengan
kolom ke-2, ke-3, dan ke-4. kemudian akan dilanjutkan sampai Round Key 10.
Berikut
hasil AddRoundKey yang ke-1.
RESUME
Nah,,,di
bawah ini adalah proses enkripsi secara lengkap dari round ke-1 sampai dengan
round ke-10 untuk 1 buah matriks State; teks berita 128 bit.
Bagaimana???
Sudah
lebih jelas mengenai proses enkripsi AES-128??
Silakan
ditanggapi..