Apa itu Initialization Vector?
Initialization vector (IV) adalah nilai acak atau pseudorandom yang digunakan sebagai input tambahan ke algoritma enkripsi bersama kunci, memastikan bahwa plaintext yang identik yang dienkripsi dengan kunci yang sama menghasilkan ciphertext yang berbeda di seluruh operasi.
Juga dikenal sebagai: IV, initialisation vector
Initialization vector memiliki tujuan dasar yang sama dengan nonce — memperkenalkan keunikan ke setiap operasi enkripsi. Istilah-istilah ini sering digunakan secara bergantian, meskipun "IV" lebih umum dalam konteks mode block cipher (CBC, GCM, CTR) sementara "nonce" digunakan secara lebih luas. Dalam AES-GCM secara khusus, IV adalah nilai 12-byte yang menginisialisasi penghitung yang digunakan dalam Galois/Counter Mode.
IV tidak perlu dirahasiakan — biasanya disimpan atau ditransmisikan dalam plaintext bersama ciphertext. Kontribusi keamanannya berasal dari keunikan, bukan kerahasiaan. Namun, bergantung pada mode cipher, IV mungkin perlu tidak dapat diprediksi (seperti dalam mode CBC) atau hanya unik (seperti dalam mode GCM). Menggunakan IV yang dapat diprediksi dengan mode CBC memungkinkan serangan tertentu, sementara GCM hanya mensyaratkan bahwa IV tidak pernah digunakan kembali dengan kunci yang sama.
Penggunaan ulang IV dengan AES-GCM bersifat katastrofis: ini memungkinkan penyerang memulihkan kunci autentikasi dan memalsukan ciphertext yang valid, dan membocorkan informasi tentang plaintext melalui XOR dari dua aliran ciphertext. Inilah mengapa implementasi harus menggunakan generator angka acak yang aman secara kriptografi untuk pembuatan IV dan tidak pernah secara manual membuat atau menggunakan kembali IV.
Cara Vaulted menggunakan Initialization Vector
Vaulted menghasilkan IV 12-byte yang segar menggunakan crypto.getRandomValues() dari Web Crypto API untuk setiap rahasia. IV dikirim ke server bersama ciphertext dan disimpan di Redis sebagai bagian dari catatan terenkripsi. Saat penerima mengambil rahasia, IV dikembalikan bersama ciphertext sehingga browser dapat merekonstruksi parameter dekripsi AES-256-GCM. Karena Vaulted juga menghasilkan kunci unik per rahasia, pasangan kunci-IV selalu unik.