Ketika Anda mengirim pesan, menyimpan berkas, atau masuk ke layanan daring, data perlu dilindungi dari pihak yang tidak berwenang. Salah satu teknologi yang paling banyak digunakan untuk tujuan itu adalah Advanced Encryption Standard (AES). Namun, menyebut sebuah aplikasi “memakai AES” belum cukup untuk memastikan keamanannya. Cara memilih kunci dan menerapkan enkripsi sama pentingnya dengan algoritmanya.
Apa itu enkripsi AES?
AES adalah algoritma enkripsi simetris: kunci yang sama digunakan untuk mengenkripsi dan mendekripsi data. Algoritma ini ditetapkan sebagai standar oleh National Institute of Standards and Technology (NIST) dan digunakan secara luas dalam berbagai sistem keamanan.
AES memproses data dalam blok berukuran 128 bit, atau 16 byte. Panjang kuncinya dapat berupa 128, 192, atau 256 bit. Perbedaan panjang kunci ini memengaruhi jumlah putaran pemrosesan: AES-128 menggunakan 10 putaran, AES-192 menggunakan 12, dan AES-256 menggunakan 14. Ketiganya memakai ukuran blok yang sama; angka pada namanya merujuk pada panjang kunci, bukan ukuran blok.
Bagaimana AES mengacak data?
Bayangkan sebuah blok data disusun menjadi kisi berisi 16 byte. AES mengubah isi kisi itu melalui serangkaian operasi yang membuat hubungan antara teks asli, kunci, dan hasil enkripsi semakin sulit ditebak. Sebelum putaran utama dimulai, data digabungkan dengan bagian dari kunci melalui operasi AddRoundKey.
Dalam putaran-putaran berikutnya, AES menjalankan empat jenis operasi:
- SubBytes: mengganti setiap byte menggunakan tabel substitusi tertentu.
- ShiftRows: menggeser baris-baris kisi sehingga posisi byte berubah.
- MixColumns: mencampur byte dalam setiap kolom agar perubahan pada satu bagian data menyebar.
- AddRoundKey: menggabungkan data dengan kunci putaran yang diturunkan dari kunci utama.
Putaran terakhir tidak menjalankan MixColumns. Saat dekripsi, penerima yang memiliki kunci tepat menerapkan operasi kebalikan untuk memperoleh data semula. Tanpa kunci, hasil enkripsi dirancang agar tidak praktis dikembalikan menjadi teks asli dengan menebak-nebak isinya.
Mengapa AES memerlukan mode operasi?
AES bekerja pada satu blok berukuran 16 byte, sedangkan dokumen, pesan, dan basis data biasanya jauh lebih besar. Karena itu, AES digunakan bersama mode operasi yang mengatur cara banyak blok diproses. Pemilihan mode berpengaruh langsung terhadap keamanan.
Mode ECB, misalnya, dapat menghasilkan blok ciphertext yang sama untuk blok plaintext yang sama. Pola pada data pun bisa terlihat, sehingga ECB umumnya harus dihindari. Mode CBC mengatasi sebagian masalah tersebut, tetapi membutuhkan IV yang sesuai, pengaturan padding, dan perlindungan integritas terpisah agar aman dalam penerapan nyata.
Untuk banyak kebutuhan aplikasi modern, AES-GCM merupakan pilihan yang umum. Selain merahasiakan isi data, mode ini menghasilkan tag autentikasi untuk membantu mendeteksi perubahan pada ciphertext. GCM juga menggunakan nonce, yaitu nilai yang tidak perlu dirahasiakan tetapi tidak boleh digunakan ulang dengan kunci yang sama. Pengulangan nonce dapat merusak jaminan keamanan GCM secara serius.
AES-128 atau AES-256: mana yang dipilih?
Keduanya dirancang untuk memberikan perlindungan kuat ketika digunakan dengan benar. AES-256 memakai kunci lebih panjang dan lebih banyak putaran, tetapi tidak otomatis membuat sebuah sistem lebih aman jika kuncinya bocor atau implementasinya keliru. AES-128 pun tetap merupakan pilihan kuat untuk banyak penggunaan. Pilihan terbaik mengikuti kebutuhan sistem, standar yang berlaku, serta dukungan perangkat dan perangkat lunak.
Hal penting agar penerapan AES tetap aman
- Lindungi kunci. Buat kunci menggunakan pembangkit angka acak yang aman secara kriptografis, simpan dengan kontrol akses yang tepat, dan jangan menaruhnya langsung dalam kode sumber.
- Gunakan pustaka tepercaya. Hindari merancang sendiri algoritma, mode, atau format penyimpanan ciphertext jika tersedia pustaka yang teruji.
- Kelola nonce atau IV sesuai mode. Untuk AES-GCM, pastikan nonce unik bagi setiap enkripsi dengan kunci yang sama.
- Verifikasi autentikasi. Bila memakai AES-GCM, periksa tag autentikasi sebelum mempercayai hasil dekripsi.
- Jangan gunakan kata sandi langsung sebagai kunci. Jika kunci berasal dari kata sandi, gunakan fungsi derivasi kunci yang sesuai, seperti Argon2id, dengan parameter yang tepat.
Kesimpulan
AES adalah fondasi penting keamanan digital karena menyediakan cara yang efisien untuk melindungi kerahasiaan data. Intinya sederhana: data diproses dalam blok melalui sejumlah putaran yang dikendalikan kunci. Namun, keamanan nyata tidak berhenti pada pemilihan AES-128 atau AES-256. Mode operasi, pengelolaan kunci, keunikan nonce, dan pemeriksaan integritas menentukan apakah data benar-benar terlindungi.
