Dalam kriptografi, **Standar Enkripsi Lanjutan** (bahasa Inggris: *Advanced Encryption Standard*, disingkat **AES**) merupakan standar enkripsi dengan kunci simetris yang diadopsi oleh Pemerintah Amerika Serikat. Standar ini terdiri dari tiga penyandian blok, yaitu AES-128, AES-192, dan AES-256, yang diadopsi dari koleksi yang lebih besar yang awalnya diterbitkan sebagai **Rijndael**. Tiap-tiap penyandian memiliki ukuran blok 128 bit dengan ukuran kunci masing-masing 128, 192, dan 256 bit. AES telah dianalisis secara luas dan sekarang digunakan di seluruh dunia, seperti halnya dengan pendahulunya, Standar Enkripsi Data (DES).

AES diumumkan oleh Badan Nasional Standar dan Teknologi (NIST) sebagai Standar Pengolahan Informasi Federal Publikasi 197 (FIPS 197) pada tanggal 26 November 2001 setelah proses standardisasi selama 5 tahun. Selama proses seleksi AES, ada lima belas desain enkripsi yang diajukan dan dievaluasi sebelum Rijndael terpilih sebagai yang paling cocok. AES efektif menjadi standar Pemerintah Federal Amerika Serikat pada tanggal 26 Mei 2002 setelah persetujuan dari Menteri Perdagangan. AES tersedia dalam berbagai paket enkripsi yang berbeda. AES merupakan standar pertama yang dapat diakses publik dan dipakai oleh NSA untuk informasi rahasia.

Rijndael dikembangkan oleh dua kriptografer Belgia, Joan Daemen dan Vincent Rijmen, dan diajukan oleh mereka untuk proses seleksi AES. Rijndael (pelafalan dalam bahasa Belanda: [ˈrɛindaːl]) adalah permainan kata dari kedua nama penemu.

Penjelasan algoritme
--------------------

AES didesain berdasarkan jaringan substitusi–permutasi dan dapat dijalankan dengan efisien dalam perangkat lunak dan keras. AES berbeda dengan DES karena AES tidak menggunakan jaringan Feistel. AES adalah variasi dari Rijndael dengan ukuran blok tetap 128 bit dan ukuran kunci 128, 192, atau 256 bit. Sebaliknya, Rijndael sendiri didesain dengan ukuran blok dan kunci kelipatan 32 bit dengan minimum 128 bit dan maksimum 256 bit.

AES menggunakan matriks 4 × 4 dengan urutan bita sesuai kolom-lalu-baris (ke bawah, lalu ke kanan). Matriks ini disebut "status" (*state*).

Misalkan, 16 bita data, {\displaystyle b\_{0},b\_{1},...b\_{15}}, digambarkan dalam matriks dua dimensi sebagai berikut.

{\displaystyle {\begin{bmatrix}b\_{0}&b\_{4}&b\_{8}&b\_{12}\\b\_{1}&b\_{5}&b\_{9}&b\_{13}\\b\_{2}&b\_{6}&b\_{10}&b\_{14}\\b\_{3}&b\_{7}&b\_{11}&b\_{15}\end{bmatrix}}}
Jumlah ronde yang dijalankan dalam AES bergantung pada ukuran kunci yang dipakai.

| Ukuran blok | Ukuran kunci | Jumlah putaran |
| --- | --- | --- |
| 128 bit | 128 bit | 10 putaran |
| 192 bit | 12 putaran |
| 256 bit | 14 putaran |

Tiap ronde terdiri dari beberapa langkah, termasuk yang menggunakan kunci enkripsi. Inversi langkah (kebalikannya) dipakai untuk melakukan dekripsi dengan kunci yang sama (simetris).

### Gambaran umum algoritme

1. KeyExpansion, kunci ronde diturunkan dari kunci penyandian melalui penjadwalan kunci AES. AES membutuhkan kunci ronde 128 bit untuk tiap ronde ditambah satu.
2. Penambahan kunci ronde awalan:
	1. AddRoundKey, tiap bita digabung dengan satu bita dari kunci ronde dengan operasi XOR.
3. Selama 9, 11, atau 13 ronde:
	1. SubBytes, substitusi nonlinear yang tiap bitanya ditukar dengan lainnya sesuai tabel acuan.
	2. ShiftRows, penukaran posisi yang tiga baris terakhirnya digeser beberapa kali.
	3. MixColumns, pencampuran linear yang bekerja pada tiap kolom "status", yaitu kombinasi keempat bita dalam tiap kolom.
	4. AddRoundKey
4. Ronde terakhir (ronde ke-10, 12, atau 14):
	1. SubBytes
	2. ShiftRows
	3. AddRoundKey

###  Langkah SubBytes (penukaran bita)

Dalam langkah SubBytes, tiap bita "status" ditukar dengan nilai lain pada tabel 8 bit tetap *S*; *bij* = *S(aij)*.
Artikel utama: Kotak-S Rijndael
Dalam langkah SubBytes, tiap bita {\displaystyle a\_{i,j}} "status" ditukar dengan SubBytes {\displaystyle S(a\_{i,j})} dengan kotak substitusi 8 bit. Langkah ini memberi sifat nonlinear dalam penyandian ini. Kotak-S yang dipakai berasal dari inversi perkalian dalam GF(28) yang dikenal memiliki sifat nonlinear. Untuk menghindari serangan berdasarkan sifat aljabar sederhana, kotak-S dibangun dengan menggabungkan fungsi inversi dan transformasi afin. Kotak-S juga dipilih untuk menghindari titik tetap (sehingga tiada nilai yang dipetakan ke nilai yang sama), yaitu {\displaystyle S(a\_{i,j})\neq a\_{i,j}}, dan juga lawan titik tetap apa pun, yaitu {\displaystyle S(a\_{i,j})\oplus a\_{i,j}\neq {\text{FF}}\_{16}}. Ketika melakukan dekripsi, langkah InverseSubBytes (kebalikan dari SubBytes) dipakai yang harus mencari inversi transformasi afin dan kemudian mencari inversi perkaliannya.

###  Langkah ShiftRows (pergeseran baris)

Dalam langkah ShiftRows, bita-bita tiap baris digeser (diputar) ke kiri. Banyak pergeseran bertambah untuk tiap baris.
Langkah ShiftRows mengubah tiap baris. Untuk AES, baris pertama dibiarkan. Tiap bita pada baris kedua digeser sekali. Begitu pula untuk baris ketiga dan keempat. Baris ketiga digeser dua kali dan baris keempat digeser tiga kali. Langkah ini dijalankan agar tiap kolom tidak dienkripsi sendiri-sendiri. hai

###  Langkah MixColumns (pencampuran kolom)

Dalam langkah MixColumns, tiap kolom "status" dikali dengan suku banyak tetap {\displaystyle c(x)}.
Artikel utama: MixColumns Rijndael
Dalam langkah MixColumns, empat bita dalam tiap kolom "status" digabung dengan transformasi linear terbalikkan. Fungsi MixColumns menerima empat bita input dan mengeluarkan empat bita yang tiap bita inputnya saling memengaruhi. Fungsi ini bersama dengan ShiftRows memberikan penghamburan dalam penyandian.

Dalam langkah ini, tiap kolom ditransformasikan dengan matriks tetap sebagai berikut.

{\displaystyle {\begin{bmatrix}b\_{0,j}\\b\_{1,j}\\b\_{2,j}\\b\_{3,j}\end{bmatrix}}={\begin{bmatrix}2&3&1&1\\1&2&3&1\\1&1&2&3\\3&1&1&2\end{bmatrix}}{\begin{bmatrix}a\_{0,j}\\a\_{1,j}\\a\_{2,j}\\a\_{3,j}\end{bmatrix}},\qquad 0\leq j\leq 3}
###  Langkah AddRoundKey (penambahan kunci ronde)

Dalam langkah AddRoundKey, tiap bita "status" digabung dengan bita pada subkunci ronde saat itu dengan operasi XOR (⊕).
Dalam langkah AddRoundKey, subkunci digabung dengan "status". Untuk tiap ronde, sebuah subkunci dibuat dari kunci utama dengan penjadwalan kunci AES. Tiap subkunci berukuran sama dengan "status". Subkunci ditambahkan dengan menggabungkan tiap bita "status" dengan bita yang seletak pada subkunci dengan operasi XOR.

### Optimasi penyandian

Pada sistem berukuran 32 bit atau lebih, eksekusi dapat dipercepat dengan menggabungkan langkah SubBytes dan ShiftRows dengan MixColumns dengan mengubahnya menjadi tabel-tabel acuan. Cara ini membutuhkan empat tabel dengan 256 entri 32 bit (sekitar 4096 bita). Sebuah ronde dapat dijalankan dengan 16 operasi pencarian tabel dan 12 operasi XOR 32 bit ditambah dengan 4 operasi XOR 32 bit pada langkah AddRoundKey. Cara lainnya, operasi pencarian tabel dapat dilakukan dengan satu tabel dengan 256 entri 32 bit (sekitar 1024 bita) yang diikuti dengan operasi rotasi sirkular.

Dengan pendekatan berorientasi bita, dapat dilakukan penggabungan SubBytes, ShiftRows, dan MixColumns ke dalam operasi ronde tunggal.

Kinerja
-------

Kecepatan tinggi dan penggunaan memori rendah menjadi penilaian dalam proses seleksi AES. Sebagai algoritme terpilih, AES berjalan dengan baik dalam beragam perangkat keras, dari kartu pintar 8 bit hingga komputer kinerja tinggi.

Pada Pentium Pro, enkripsi AES membutuhkan 18 siklus per bita atau setara dengan 11 Mbit/s untuk prosesor 200 MHz. Pada Pentium M 1,7 GHz, kelajuannya sekitar 60 Mbit/s.

Pada Intel Core i3/i5/i7 dan AMD Ryzen yang mendukung set instruksi AES-NI, kelajuannya bisa mencapai beberapa GB/s (bahkan lebih dari 10 GB/s).

Catatan kaki
------------

1. ↑  Ukuran kunci 128, 160, 192, 224, dan 256 bit didukung oleh algoritme Rijndael. Namun, hanya ukuran kunci 128, 192, dan 256 bit yang dinyatakan dalam standar AES.
2. ↑  Ukuran blok 128, 160, 192, 224, dan 256 bit didukung oleh algoritme Rijndael untuk tiap ukuran kunci. Namun, hanya ukuran blok 128 bit yang dinyatakan dalam standar AES.
3. ↑  Variasi Rijndael dengan blok besar dapat menambah jumlah kolom, tetapi selalu memiliki empat baris.
4. ↑  Variasi Rijndael dengan ukuran blok besar memiliki banyak pergeseran yang berbeda.

Referensi
---------

1. ↑  "Biclique Cryptanalysis of the Full AES" (PDF). Diarsipkan dari versi asli (PDF) tanggal 6 Maret 2016. Diakses tanggal 1 Mei 2019.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
2. ↑  Alex Biryukov and Dmitry Khovratovich, *Related-key Cryptanalysis of the Full AES-192 and AES-256*, "Archived copy". Table 1. Diarsipkan dari versi asli tanggal 2009-09-28. Diakses tanggal 2010-02-16.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
3. ↑  Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson; Tadayoshi Kohno; et al. (Mei 2000). "The Twofish Team's Final Comments on AES Selection" (PDF). Diarsipkan dari versi asli (PDF) tanggal 2 Januari 2010.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
4. ↑  Bertoni G.; Breveglieri L.; Fragneto P.; Macchetti M.; Marchesin S. (17 Februari 2003). "Efficient Software Implementation of AES on 32-Bit Platforms". Dalam Kaliski B.S. Koç .K. Paar C. *Lecture Notes in Computer Science*. Cryptographic Hardware and Embedded Systems. **2523**. Springer. doi:10.1007/3-540-36400-5\_13. Pemeliharaan CS1: Banyak nama: editors list (link)
5. ↑  "byte-oriented-aes – A public domain byte-oriented implementation of AES in C – Google Project Hosting". Diarsipkan dari versi asli tanggal 20 Juli 2013. Diakses tanggal 23 Desember 2012.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
6. ↑  Schneier, Bruce; Kelsey, John; Whiting, Doug; Wagner, David; Hall, Chris; Ferguson, Niels (1 Februari 1999). "Performance Comparisons of the AES submissions" (PDF). Diarsipkan dari versi asli (PDF) tanggal 22 Juni 2011. Diakses tanggal 28 Desember 2010.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
7. ↑  "AMD Ryzen 7 1700X Review".

Pranala luar
------------

* "256bit key – 128bit block – AES". *Cryptography – 256 bit Ciphers: Reference source code and submissions to international cryptographic designs contests*. EmbeddedSW.
* "Advanced Encryption Standard (AES)" (PDF). *Federal Information Processing Standards*. 26 November 2001. doi:10.6028/NIST.FIPS.197. 197.
* "Part 3: Block ciphers" (PDF). *Information technology – Security techniques – Encryption algorithms* (edisi ke-2nd). ISO. 2010-12-15. ISO/IEC 18033-3:2010(E).

| * l
* b
* s
Penyandian blok |
| --- |
| Algoritme umum | 
* AES
* Blowfish
* DES (penjelasan teknis, Triple DES)
* Serpent
* Twofish

 |
| Algoritme kurang umum | 
* ARIA
* Camellia
* CAST-128
* GOST
* IDEA
* LEA
* RC2
* RC5
* RC6
* SEED
* Skipjack
* TEA (XTEA)

 |
| Algoritme lainnya | 
* 3-Way
* Akelarre
* Anubis
* BaseKing
* BassOmatic
* BATON
* BEAR dan LION
* CAST-256
* Chiasmus
* CIKS-1
* CIPHERUNICORN-A
* CIPHERUNICORN-E
* CLEFIA
* CMEA
* Cobra
* COCONUT98
* Crab
* Cryptomeria/C2
* CRYPTON
* Sandi-CS
* DEAL
* DES-X
* DFC
* E2
* FEAL
* FEA-M
* FROG
* G-DES
* GOST
* Grand Cru
* Hasty Pudding cipher
* Hierocrypt
* ICE
* IDEA NXT
* Intel Cascade Cipher
* Iraqi
* Kalyna
* KASUMI
* KeeLoq
* KHAZAD
* Khufu dan Khafre
* Sandi-KN
* Kuznyechik
* Ladder-DES
* Libelle
* LOKI (97, 89/91)
* Lucifer
* M6
* M8
* MacGuffin
* Madryga
* MAGENTA
* MARS
* Mercy
* MESH
* MISTY1
* MMB
* MULTI2
* MultiSwap
* New Data Seal
* NewDES
* Nimbus
* NOEKEON
* NUSH
* PRESENT
* Q
* RC6
* REDOC
* Red Pike
* S-1
* SAFER
* SAVILLE
* SC2000
* SHACAL
* SHARK (penyandian)
* Simon
* SM4
* Speck
* Spectr-H64
* Square
* SXAL/MBAL
* Threefish
* Treyfer
* UES
* xmx
* XXTEA
* Zodiac

 |
| Desain | 
* Efek salju longsor
* Jaringan substitusi–permutasi
* Kotak-S
* Kotak-P
* Pemutihan kunci (Transformasi pemutihan)
* Pengacakan dan penghamburan
* Penjadwalan kunci
* Sandi Feistel
* Skema Lai–Massey
* Sandi produk
* Ukuran blok
* Ukuran kunci

 |
| Penyerangan(analisis kriptografi) | 
* Serangan brutal (EFF DES cracker)
* MITM (Biclique attack, 3-subset MITM attack)
* Linear (Piling-up lemma)
* Differential (Impossible
* Truncated
* Higher-order)
* Differential-linear
* Distinguishing (Known-key)
* Integral/Square
* Boomerang
* Mod *n*
* Related-key
* Slide
* Rotational
* Timing
* XSL
* Interpolation
* Partitioning
* Davies'
* Rebound
* Weak key
* Tau
* Chi-square
* Time/memory/data tradeoff

 |
| Standardisasi | 
* Proses AES
* CRYPTREC
* NESSIE

 |
| Peralatan/perkakas | 
* Vektor inisialisasi
* Mode operasi
* Bantalan

 |