Enkripsi AES
AES adalah algoritma enkripsi. Dipilih oleh pemerintah AS pada tahun 2001 setelah kompetisi terbuka selama beberapa tahun, ini telah menjadi andalan kriptografi untuk seluruh era Internet modern. TLS, WireGuard, BitLocker, FileVault, enkripsi penyimpanan ponsel Anda — semuanya, pada dasarnya, adalah AES.
Badan artikel selengkapnya disediakan dalam bahasa Inggris di bawah ini.
AES (Standar Enkripsi Lanjutan) adalah cipher blok simetris yang dipilih oleh NIST pada tahun 2001 setelah kompetisi terbuka selama lima tahun yang mempertemukan lima belas desain satu sama lain. Pemenangnya — awalnya bernama Rijndael, dirancang oleh kriptografer Belgia Joan Daemen dan Vincent Rijmen — menjadi standar enkripsi untuk data federal AS dan dengan cepat menjadi standar untuk hampir semua sistem komersial.
Apa yang dimaksud dengan "cipher blok simetris"
Simetris: kunci yang sama mengenkripsi dan mendekripsi. Bandingkan dengan kriptografi kunci publik (RSA, ECDH) yang memiliki kunci terpisah untuk setiap arah.
Block cipher: mengenkripsi potongan data berukuran tetap pada satu waktu. AES menggunakan ukuran blok 128-bit (16-byte) terlepas dari ukuran kuncinya.
Plaintext dipecah menjadi blok-blok dan setiap blok diubah oleh serangkaian operasi matematika menggunakan kunci tersebut. Outputnya adalah ciphertext dengan panjang yang sama dengan input.
Ukuran kunci
AES mendukung tiga ukuran kunci:
- AES-128 — kunci 128-bit, 10 putaran internal operasi
- AES-192 — kunci 192-bit, 12 putaran
- AES-256 — kunci 256-bit, 14 putaran
Ketiganya dianggap aman. AES-128 memiliki 2^128 kemungkinan kunci, yang jauh melampaui jangkauan brute force — dengan satu triliun percobaan per detik, menghabiskan ruang kunci memerlukan waktu sekitar 10 sexdecillion tahun. AES-256 dipilih karena margin keamanan tambahan nominal terhadap kemajuan kriptografi di masa depan, terutama kuantum (algoritme Grover mengurangi kekuatan kunci efektif hingga setengahnya terhadap komputer kuantum, sehingga AES-256 memberikan tingkat keamanan pasca-kuantum sebesar 128 bit).
Bagaimana AES sebenarnya bekerja di dalam
Untuk setiap blok, AES melakukan serangkaian operasi di beberapa blok putaran:
- SubBytes — mengganti setiap byte menggunakan tabel substitusi non-linier (S-box).
- ShiftRows — menggeser setiap baris status 4x4 secara siklis matriks.
- MixColumns — mengalikan setiap kolom dengan matriks tetap (dalam bidang berhingga khusus).
- AddRoundKey — XOR dengan kunci khusus bulat yang berasal dari kunci master.
Kombinasi substitusi dan permutasi memberikan kebingungan (setiap bit keluaran bergantung pada banyak bit kunci) dan difusi (setiap bit teks biasa memengaruhi banyak bit keluaran) — dua properti yang diidentifikasi Shannon sebagai hal yang penting untuk sandi yang aman.
Mode operasi
AES mengenkripsi satu blok pada satu waktu. Untuk mengenkripsi data yang lebih panjang, mode operasi mendefinisikan bagaimana rantai blok. Mode penting:
- ECB (Buku Kode Elektronik) — setiap blok dienkripsi secara independen. Jangan gunakan untuk apa pun; blok plaintext yang identik menghasilkan ciphertext yang identik, mengungkapkan struktur.
- CBC (Cipher Block Chaining) — setiap blok di-XOR dengan ciphertext sebelumnya sebelum enkripsi. Standar selama bertahun-tahun; rentan terhadap serangan padding-Oracle jika tidak diautentikasi.
- CTR (Counter) — mengenkripsi penghitung tambahan dan XOR dengan teks biasa. Secara efektif mengubah AES menjadi stream cipher.
- GCM (Galois/Counter Mode) — CTR + tag autentikasi dalam satu pass. Modus modern yang dominan; digunakan oleh TLS 1.3, WireGuard, dan sebagian besar protokol baru. AEAD (Enkripsi yang Diautentikasi dengan Data Terkait) adalah nama formal untuk kelas ini.
Jika Anda memilih mode AES saat ini, gunakan AES-GCM kecuali Anda memiliki alasan khusus untuk tidak memilihnya. AES-CBC biasa tanpa HMAC adalah footgun.
Akselerasi perangkat keras
Intel memperkenalkan set instruksi AES-NI pada tahun 2010; ARM melakukan hal yang sama beberapa tahun kemudian. CPU modern mengenkripsi AES dengan kecepatan melebihi 10 GB/s per inti. Sandi ini pada dasarnya bebas biaya CPU; hambatan untuk komunikasi terenkripsi jarang terjadi pada AES itu sendiri.
Inilah sebabnya AES-GCM menjadi default dalam protokol modern: aman dan bebas perangkat keras secara efektif. Tanpa dukungan perangkat keras, ChaCha20-Poly1305 adalah alternatif yang lebih disukai karena lebih cepat daripada perangkat lunak AES pada CPU sederhana dan inti ARM.
Jika AES tidak digunakan
Beberapa tempat secara eksplisit menghindari AES. WireGuard menggunakan ChaCha20 karena protokolnya menargetkan perangkat yang tertanam dan keragaman sandi yang minimal. Protokol lama (SSH lama, OpenVPN lama) masih menggunakan cipher lain secara default untuk kompatibilitas. Tor menggunakan campuran sandi yang dipilih karena keberagaman, bukan performa. Namun untuk enkripsi tujuan umum yang baru — enkripsi disk, koneksi TLS, enkripsi file — AES adalah pilihan default dan aman. Serangan akademis terbaik pada sandi lengkap mengurangi biaya brute force sekitar 4 kali lipat — yang berarti keamanan efektif AES-128 adalah sekitar 126 bit, masih sangat tidak praktis untuk dibobol. Serangan saluran samping (waktu, analisis kekuatan) dapat mengungkapkan kunci ketika suatu implementasi bersifat naif, namun implementasi waktu yang konstan dengan akselerasi perangkat keras menutup lubang tersebut. Sandi tersebut, dengan ukuran apa pun yang masuk akal, aman.
Pertanyaan yang sering diajukan
- Apakah AES-256 lebih baik dari AES-128?
- Secara nominal lebih aman, dalam praktiknya keduanya jauh melampaui praktik kekerasan. Alasan utama memilih AES-256 adalah ketahanan pasca-kuantum — Algoritme Grover membagi separuh keamanan efektif terhadap penyerang kuantum, sehingga AES-256 memberikan keamanan pasca-kuantum 128-bit dibandingkan dengan 64-bit AES-128 (yang mulai tidak nyaman). Untuk sebagian besar konteks, keduanya baik-baik saja.
- Bisakah AES di-crack?
- Bukan dengan kekerasan dalam waktu yang realistis. Serangan saluran samping terhadap AES yang diterapkan dengan buruk telah memulihkan kunci; ada serangan kriptanalitik pada AES putaran rendah; tetapi AES putaran 10/12/14 penuh dengan implementasi waktu konstan tidak memiliki jeda praktis yang diketahui. Sandi itu sendiri terdengar baik.
- Mengapa beberapa sistem menggunakan ChaCha20 dan bukan AES?
- Kinerja pada perangkat keras tanpa AES-NI (perangkat tertanam, inti ARM lama, mikrokontroler sederhana). ChaCha20 diimplementasikan dalam perangkat lunak dengan kecepatan kompetitif dengan AES yang dipercepat perangkat keras. Pada x86 modern dan ARM dengan AES-NI, AES biasanya lebih cepat. WireGuard memilih ChaCha20 untuk memastikan kinerja yang konsisten di seluruh perangkat keras.
- Apa itu AES-GCM vs AES-CBC?
- Keduanya adalah mode operasi AES. AES-GCM adalah enkripsi yang diautentikasi — ia mengenkripsi dan menghasilkan tag verifikasi dalam satu kali proses, sehingga dapat mengatasi gangguan. AES-CBC hanyalah enkripsi; jika Anda memerlukan autentikasi, Anda harus menambahkan HMAC secara terpisah, dan mendapatkan kombinasi yang tepat sangatlah mudah untuk dikacaukan. Gunakan GCM untuk desain baru.
- Apakah AES melindungi terhadap komputer kuantum?
- Sandi simetris seperti AES jauh lebih tahan kuantum dibandingkan RSA atau ECDH. Algoritme Grover mengurangi kekuatan kunci efektif hingga setengahnya — AES-256 menjadi setara dengan kunci klasik 128-bit, namun tetap tidak dapat dilakukan. AES-128 menjadi 64-bit, yang tidak nyaman. Rekomendasi pasca-kuantum adalah AES-256 ditambah ukuran tag MAC yang besar.