Tentang Simplified AES
Memahami latar belakang, struktur, dan konsep matematis di balik algoritma S-AES.
Apa itu S-AES?
Simplified AES (S-AES) adalah algoritma kriptografi blok simetris yang dikembangkan oleh Edward Schaefer pada tahun 1990-an sebagai alat bantu edukasi untuk memahami struktur algoritma Advanced Encryption Standard (AES) yang sebenarnya. S-AES mempertahankan seluruh tahapan konseptual AES — SubBytes, ShiftRows, MixColumns, AddRoundKey, dan Key Expansion — namun dengan ukuran blok dan key yang jauh lebih kecil (16-bit), sehingga seluruh proses dapat dihitung secara manual dan divisualisasikan dengan jelas.
Algoritma ini pertama kali dipublikasikan secara akademik dalam paper berjudul "A Simplified AES Algorithm and Its Linear and Differential Cryptanalyses" oleh Musa, Schaefer, dan Wedig (2003) dalam jurnal Cryptologia.
Parameter Utama
- Ukuran Blok16 bit
- Ukuran Key16 bit
- Jumlah Round2 round
- Field AritmatikaGF(2⁴)
- Polinomialx⁴+x+1
- Ukuran StateMatriks 2×2 nibble
Struktur Algoritma Enkripsi
Membangkitkan tiga round key 16-bit (K0, K1, K2) dari key awal menggunakan RotWord, SubWord, dan konstanta RCON.
Plaintext (sebagai state 2×2) di-XOR dengan round key K0 sebelum memasuki round pertama.
SubNibbles → ShiftRows → MixColumns → AddRoundKey(K1). Satu-satunya round yang memiliki MixColumns.
SubNibbles → ShiftRows → AddRoundKey(K2). Tanpa MixColumns, langsung menghasilkan ciphertext.
Penjelasan Fungsi-Fungsi Transformasi
SubNibbles menggantikan setiap nibble (4-bit) pada state dengan nilai baru berdasarkan tabel S-Box 4×4 yang telah ditentukan. Substitusi ini bersifat non-linear dan berfungsi untuk menambah kebingungan (confusion) terhadap hubungan antara plaintext dan ciphertext. InvSubNibbles melakukan hal sebaliknya menggunakan tabel Inverse S-Box saat proses dekripsi.
ShiftRows menukar posisi dua nibble pada baris kedua (bawah) dari state matrix 2×2, sementara
baris pertama (atas) tetap tidak berubah. Karena hanya melibatkan pertukaran posisi dua elemen,
operasi ini bersifat self-inverse — artinya InvShiftRows() secara
matematis identik dengan ShiftRows().
MixColumns mengalikan setiap kolom pada state dengan matriks konstan
[[1,4],[4,1]] menggunakan aritmatika GF(2⁴), yang menyebarkan pengaruh
(diffusion) setiap nibble input ke seluruh nibble output pada kolom yang sama.
InvMixColumns menggunakan matriks invers [[9,2],[2,9]] untuk mengembalikan
proses tersebut saat dekripsi. Perkalian matriks ini adalah perkalian invers modulo
terhadap matriks MixColumns pada GF(2⁴).
AddRoundKey melakukan operasi XOR sederhana antara state saat ini dengan round key yang sesuai (K0, K1, atau K2). Operasi ini bersifat self-inverse (XOR dua kali dengan nilai yang sama akan mengembalikan nilai asal), sehingga digunakan baik pada enkripsi maupun dekripsi tanpa perlu fungsi invers terpisah.
RotWord() menukar posisi nibble tinggi dan rendah pada sebuah word 8-bit
(mis. 1001 0110 menjadi 0110 1001). SubWord()
menerapkan S-Box pada masing-masing nibble di dalam word tersebut. Kombinasi keduanya, ditambah
XOR dengan konstanta round RCON, membentuk fungsi g() yang
digunakan untuk membangkitkan word-word key berikutnya (w2, w3, w4, w5) dari key awal (w0, w1).
GFAdd(a, b) pada GF(2⁴) sama dengan operasi XOR biasa antar dua nibble.
GFMul(a, b) adalah perkalian polinomial dalam field GF(2⁴) yang direduksi
menggunakan polinomial irreducible x⁴ + x + 1 (0x13). Proses perkalian dilakukan
bit demi bit (mirip metode Russian Peasant Multiplication): pada setiap iterasi,
jika bit terendah dari operand kedua bernilai 1, maka operand pertama di-XOR-kan ke hasil;
kemudian operand pertama digeser ke kiri satu bit, dan jika terjadi overflow (bit ke-4 aktif),
hasil geser di-XOR dengan 0011 (representasi dari x+1) sebagai
bentuk reduksi modulo polinomial irreducible.
Mengapa GF(2⁴)?
S-AES bekerja pada nibble 4-bit, sehingga field yang digunakan adalah Galois Field berorde
2⁴ = 16 elemen, dilambangkan GF(2⁴) atau GF(16). Setiap nibble direpresentasikan sebagai
polinomial berderajat maksimal 3 dengan koefisien 0 atau 1 (mis. 1011 = x³+x+1).
Operasi penjumlahan pada field ini adalah XOR, sedangkan perkalian dilakukan modulo
polinomial irreducible x⁴+x+1 agar hasil perkalian tetap berada dalam field
yang sama (tidak melebihi derajat 3).