AES: apa itu, algoritma enkripsi simetris dan di mana diterapkan

Penulis: IT Sectr Diterbitkan: 2026-04-02 Waktu membaca: 9 mnt

AES (Advanced Encryption Standard) — adalah algoritma enkripsi blok simetris yang diadopsi pada tahun 2001 oleh Institut Standar dan Teknologi Nasional AS (NIST) sebagai standar resmi. AES menggantikan DES yang usang dan sejak itu telah menjadi algoritma enkripsi paling luas di dunia, digunakan dari sistem perbankan hingga aplikasi seluler. Menurut data NIST (2023), AES memberikan ketahanan setara dengan 2^256 operasi untuk kunci sepanjang 256 bit, membuatnya kebal terhadap serangan brute force modern. NIST FIPS 197, 2023

Poin Utama

  • AES — cipher blok simetris dengan ukuran blok tetap 128 bit dan kunci 128, 192, atau 256 bit.
  • Mode GCM — mode operasi AES yang direkomendasikan untuk aplikasi seluler, menyediakan enkripsi terautentikasi.
  • AES-256 — versi dengan tingkat ketahanan maksimal, direkomendasikan untuk melindungi data dengan sensitivitas tinggi.
  • Akselerasi perangkat keras — instruksi AES-NI prosesor memungkinkan enkripsi dengan kecepatan hingga 10 GB/s pada perangkat modern.
  • Android dan iOS menyediakan API bawaan untuk AES: Android Keystore dan iOS CryptoKit dengan dukungan akselerasi perangkat keras.

Apa itu AES?

AES (Advanced Encryption Standard) — adalah cipher blok simetris yang dikembangkan oleh kriptografer Belgia Joan Daemen dan Vincent Rijmen dengan nama Rijndael. Pada tahun 2001, NIST memilih Rijndael sebagai pemenang kompetisi standar enkripsi baru AS setelah lima tahun pengujian dan analisis terbuka. AES bekerja dengan blok data berukuran tetap (128 bit) dan mendukung tiga panjang kunci: 128, 192, dan 256 bit. Jumlah putaran transformasi tergantung pada panjang kunci: 10 putaran untuk kunci 128-bit, 12 untuk 192-bit, dan 14 untuk kunci 256-bit. Setiap putaran mencakup empat operasi: SubBytes (penggantian byte non-linear melalui S-box), ShiftRows (pergeseran siklik baris), MixColumns (pencampuran kolom), dan AddRoundKey (penerapan kunci putaran).

Sejarah standar AES

Pengembangan AES dimulai pada tahun 1997 ketika NIST mengumumkan kompetisi untuk menggantikan DES, yang kunci 56-bitnya telah dipecahkan dalam 22 jam pada tahun 1998 oleh perangkat khusus Deep Crack. Kompetisi ini diikuti oleh 15 algoritma dari berbagai negara, termasuk Serpent (Inggris Raya), Twofish (AS), dan RC6 (AS). Hingga final tahun 1999, tersisa 5 kandidat. Rijndael menang berkat kombinasi kecepatan tinggi di semua platform (dari mikrokontroler 8-bit hingga server 64-bit), ketahanan terhadap kriptanalisis, dan implementasi yang ringkas di perangkat keras. Sejak tahun 2006, AES digunakan untuk mengenkripsi data dengan tingkat SECRET dan TOP SECRET di sistem pemerintahan AS. Saat ini, AES tertanam di semua protokol utama: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3, dan Bluetooth BR/EDR.

Bagaimana cara kerja enkripsi AES

AES memproses data dalam blok 128 bit (16 byte), yang diatur dalam matriks 4x4 byte yang disebut state. Setiap putaran enkripsi menjalankan serangkaian transformasi deterministik yang bersama-sama menciptakan efek „avalanche”: perubahan satu bit data masukan mengubah sekitar 50% bit data keluaran. Efek semacam itu membuat AES tahan terhadap kriptanalisis diferensial dan linier — metode utama untuk memecahkan cipher blok.

Proses dimulai dengan AddRoundKey — penerapan kunci awal ke state melalui operasi XOR. Kemudian putaran dijalankan: SubBytes mengganti setiap byte state dengan nilai dari S-box (tabel penggantian). ShiftRows menggeser baris kedua secara siklik sebesar 1 posisi, baris ketiga sebesar 2, baris keempat sebesar 3 — ini memastikan pencampuran antar kolom. MixColumns mengalikan setiap kolom state dengan matriks tetap di bidang Galois GF(2^8), menciptakan ketergantungan setiap byte keluaran pada keempat byte masukan kolom. AddRoundKey menerapkan kunci putaran berikutnya, yang diperoleh dari kunci awal melalui prosedur Key Expansion. Putaran terakhir berbeda dengan tidak adanya operasi MixColumns. Dekripsi menggunakan operasi kebalikan InvSubBytes, InvShiftRows, InvMixColumns, dan AddRoundKey dalam urutan terbalik. Untuk pengembang seluler, pemahaman tentang struktur internal AES tidak diperlukan — cukup mengetahui cara memanggil API bawaan platform dengan parameter yang benar.

Efek avalanche dan ketahanan kriptografi AES

Karakteristik kunci AES yang memastikan ketahanan kriptografinya adalah efek avalanche (avalanche effect). Perubahan satu bit dalam teks biasa atau kunci menyebabkan perubahan sekitar 50% bit dari ciphertext, membuat AES sangat tahan terhadap kriptanalisis diferensial dan linier. Kombinasi operasi SubBytes (non-linearitas melalui S-box) dan MixColumns (difusi melalui perkalian di bidang Galois) menciptakan kompleksitas matematis di mana bahkan mengetahui sebagian ciphertext tidak memungkinkan pemulihan kunci lebih cepat dari pencarian lengkap. Menurut analisis NIST (2018), serangan terbaik yang diketahui terhadap AES-128 — biclique attack — mengurangi panjang efektif kunci hanya sebesar 2 bit (menjadi 126,2 bit), yang tidak memberikan keuntungan praktis bagi penyerang. Untuk AES-256, tidak ada satu pun serangan yang praktis dapat dilakukan yang melampaui pencarian lengkap.

Ukuran kunci AES dan tingkat keamanan

AES mendukung tiga ukuran kunci, yang masing-masing sesuai dengan tingkat ketahanan kriptografi tertentu. Pemilihan ukuran kunci memengaruhi keamanan, kinerja, dan persyaratan sumber daya perangkat.

Ukuran kunciJumlah putaranTingkat keamananPenggunaan
AES-12810128 bitAplikasi komersial, TLS
AES-19212192 bitSistem pemerintahan (SECRET)
AES-25614256 bitTOP SECRET, sektor keuangan

Aturan praktis: di aplikasi seluler, gunakan AES-256 secara default. Perbedaan kinerja antara AES-128 dan AES-256 pada perangkat modern dengan dukungan AES-NI tidak lebih dari 10–15%, tetapi tingkat keamanan menjadi dua kali lipat. Menurut analisis kuantum (Grassl et al., 2016), diperlukan 2^77 operasi kuantum melalui algoritma Grover untuk memecahkan AES-128, dan untuk AES-256 — 2^149, yang membuat AES-256 tahan terhadap serangan kuantum selama 20–30 tahun ke depan. Bahkan AES-128 memberikan perlindungan yang cukup untuk sebagian besar skenario komersial: untuk pencarian lengkap kunci 128-bit diperlukan lebih banyak energi daripada yang ada di alam semesta menurut perkiraan Bruce Schneier. Namun, standar keamanan (GDPR, HIPAA, PCI DSS) sering secara eksplisit mensyaratkan AES-256, oleh karena itu dalam proyek produksi disarankan untuk menggunakan panjang kunci maksimum.

Mode operasi AES

AES sebagai cipher blok mengenkripsi blok berukuran tetap (128 bit). Untuk mengenkripsi data dengan panjang sembarang, digunakan mode operasi (modes of operation). Pemilihan mode sangat memengaruhi keamanan: mode yang salah dapat meniadakan ketahanan AES.

  • ECB (Electronic Codebook) — mode paling sederhana dan paling tidak aman. Setiap blok dienkripsi secara independen dengan kunci yang sama. Blok teks biasa yang identik menghasilkan blok ciphertext yang identik, memungkinkan pemulihan struktur data. Dilarang digunakan di semua standar keamanan modern. JANGAN PERNAH menggunakan ECB di aplikasi seluler.
  • CBC (Cipher Block Chaining) — setiap blok ciphertext sebelumnya digunakan sebagai vektor inisialisasi (IV) untuk blok berikutnya. Memerlukan IV acak untuk setiap pesan. Rentan terhadap serangan padding oracle jika implementasi tidak tepat. Cocok untuk enkripsi file, tetapi memerlukan MAC (HMAC) untuk memastikan integritas data.
  • GCM (Galois/Counter Mode) — mode yang direkomendasikan untuk aplikasi seluler. Menyediakan enkripsi terautentikasi (AEAD): enkripsi + pemeriksaan integritas dalam satu operasi. Menggunakan penghitung untuk menghasilkan aliran kunci dan perkalian di bidang Galois untuk autentikasi. GCM memerlukan nonce unik (12 byte) untuk setiap pesan. Direkomendasikan oleh NIST, digunakan di TLS 1.2/1.3 dan Android Keystore.
  • CCM (Counter with CBC-MAC) — mode AEAD alternatif berbasis CTR + CBC-MAC. Lebih lambat dari GCM dan tidak mendukung pemrosesan paralel. Digunakan dalam protokol ZigBee dan 802.11 (Wi-Fi). Untuk aplikasi seluler, GCM lebih disukai.

Untuk proyek seluler, gunakan AES-256-GCM dengan nonce sepanjang 12 byte. GCM memecahkan dua masalah sekaligus: enkripsi data dan verifikasi keaslian, yang mencegah serangan padding oracle dan chosen ciphertext. Android Keystore dan iOS CryptoKit mendukung AES-GCM secara bawaan tanpa perlu mengimplementasikan primitif kriptografi tambahan. Saat bekerja dengan GCM, penting untuk tidak pernah mengulangi nonce dengan kunci yang sama — ini sepenuhnya menghancurkan keamanan enkripsi. Hasilkan nonce acak baru untuk setiap enkripsi dan simpan bersama dengan ciphertext.

Implementasi AES di aplikasi seluler

Mari kita lihat contoh implementasi aman AES-256-GCM di Android menggunakan Jetpack Security. Kode di bawah mendemonstrasikan siklus lengkap: pembuatan kunci AES-256 melalui MasterKey, enkripsi dan dekripsi string dengan data terautentikasi tambahan (AAD).

kotlin
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences

val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val securePrefs = EncryptedSharedPreferences.create(
    context,
    "secure_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

fun storeSecureData(key: String, value: String) {
    securePrefs.edit().putString(key, value).apply()
}

fun readSecureData(key: String): String? {
    return securePrefs.getString(key, null)
}

Fitur kunci dari solusi ini adalah penggunaan AES-256-GCM pada dua tingkat: untuk enkripsi pasangan kunci-nilai (PrefValueEncryptionScheme) dan untuk melindungi nama kunci itu sendiri (PrefKeyEncryptionScheme menggunakan AES-256-SIV, yang tahan terhadap pengulangan nonce). MasterKey dihasilkan menggunakan algoritma AES-256-GCM dan disimpan di Android Keystore, yang dilindungi perangkat keras pada perangkat dengan Trusted Execution Environment. Pada perangkat tanpa dukungan perangkat keras (TEE), kunci dienkripsi melalui Bouncy Castle, yang masih lebih aman daripada penyimpanan di SharedPreferences.

Untuk enkripsi langsung volume data besar (misalnya, gambar atau file), gunakan AES-256-GCM melalui EncryptedFile dari AndroidX Security. Untuk mengekspor kunci (misalnya, untuk cadangan), gunakan enkripsi tambahan dengan kata sandi pengguna melalui PBKDF2 dengan 100000+ iterasi.

AES di iOS melalui CryptoKit

Di iOS, bekerja dengan AES diatur melalui framework CryptoKit (Swift 5.0+). Kunci AES-256 dibuat melalui SymmetricKey(size: .bits256) dan disimpan di Secure Enclave — kriptoprocessor perangkat keras yang terisolasi dari CPU utama dan sistem operasi. CryptoKit menyediakan dua implementasi AES: AES.GCM (direkomendasikan) dan AES.CBC (untuk kompatibilitas mundur dengan format usang). Enkripsi dilakukan melalui metode seal(), yang menerima data, kunci, dan nonce (12 byte), dan mengembalikan AES.GCM.SealedBox — struktur yang berisi ciphertext dan tag autentikasi. Dekripsi — melalui open(). Apple sangat tidak merekomendasikan penggunaan CommonCrypto secara langsung: CryptoKit secara otomatis memilih parameter optimal, melindungi dari serangan side-channel, dan menggunakan akselerasi perangkat keras AES-NI pada prosesor Apple Silicon. Pada perangkat dengan Secure Enclave, kunci tidak pernah meninggalkan modul perangkat keras, yang membuat pencuriannya tidak mungkin bahkan jika aplikasi sepenuhnya dikompromikan. Untuk serialisasi kunci, digunakan metode withUnsafeBytes dengan penyimpanan berikutnya di Keychain melalui SecItemAdd dengan atribut kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly.

Pertanyaan yang Sering Diajukan

Apa itu AES dengan kata sederhana?

AES adalah algoritma yang mengubah data yang dapat dibaca menjadi kumpulan byte yang tidak dapat dibaca menggunakan kunci rahasia. Kunci yang sama diperlukan untuk mengembalikan data ke bentuk aslinya. AES sangat andal sehingga digunakan untuk mengenkripsi dokumen rahasia pemerintah AS.

Apa perbedaan AES-128 dengan AES-256?

AES-128 menggunakan kunci sepanjang 128 bit dan menjalankan 10 putaran enkripsi. AES-256 menggunakan kunci 256-bit dan 14 putaran, membuatnya 2^128 kali lebih sulit dipecahkan. Untuk aplikasi seluler, AES-256 direkomendasikan karena perbedaan kinerja yang minimal.

Mode AES mana yang paling aman?

AES-256-GCM — mode paling aman dan direkomendasikan. GCM menyediakan enkripsi terautentikasi (enkripsi + pemeriksaan integritas). Mode ECB dilarang, CBC memerlukan MAC terpisah. GCM adalah standar de facto untuk aplikasi seluler.

Bisakah AES dipecahkan?

Secara teoritis AES dapat dipecahkan melalui pencarian lengkap, tetapi untuk AES-256 diperlukan 2^256 percobaan — lebih banyak dari atom di alam semesta yang dapat diamati. Serangan praktis terhadap AES-256 tidak ada. Serangan side-channel (Spectre, Meltdown) tidak memecahkan AES, tetapi mencuri kunci dari memori, oleh karena itu penyimpanan kunci perangkat keras sangat penting.

Bagaimana cara menggunakan AES di aplikasi seluler Android?

Gunakan pustaka AndroidX Security: MasterKey.Builder dengan KeyScheme.AES256_GCM membuat kunci yang dilindungi di Android Keystore, dan EncryptedSharedPreferences secara otomatis mengenkripsi semua data melalui AES-256-GCM. Tidak perlu kriptografi manual — API aman secara default, tanpa risiko kesalahan pengembang.

Kesimpulan

  • AES — algoritma enkripsi simetris paling luas dan teruji, distandarisasi oleh NIST pada tahun 2001.
  • AES-256 memberikan tingkat ketahanan maksimal dengan cadangan untuk serangan kuantum 20–30 tahun ke depan.
  • Mode GCM — satu-satunya mode yang direkomendasikan untuk aplikasi seluler: enkripsi + autentikasi dalam satu operasi.
  • Android Keystore dan iOS Secure Enclave — penyimpanan perangkat keras yang mengisolasi kunci AES dari aplikasi.
  • Jetpack Security (Android) dan CryptoKit (iOS) menyediakan implementasi aman AES-256-GCM tanpa kriptografi manual.
  • Nonce (IV) untuk GCM harus unik untuk setiap enkripsi — pengulangan sepenuhnya menghancurkan keamanan.
  • Rekomendasi: gunakan AES-256-GCM melalui EncryptedSharedPreferences di Android dan CryptoKit di iOS untuk semua data rahasia.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga