Glosarium

Apa itu Nonce?

Nonce (number used once) adalah nilai unik, biasanya acak atau berurutan, yang digunakan tepat sekali dalam operasi kriptografi untuk memastikan bahwa input yang identik menghasilkan output yang berbeda, mencegah serangan replay dan analisis pola.

Juga dikenal sebagai: number used once, cryptographic nonce

Jika kamu mengenkripsi plaintext yang sama dengan kunci yang sama tanpa nonce, kamu mendapatkan ciphertext yang identik setiap kali. Penyerang yang mengamati beberapa pesan dapat mendeteksi pola — ciphertext yang identik mengungkapkan bahwa pesan yang sama dikirim, bahkan tanpa mendekripsinya. Nonce menghilangkan masalah ini dengan memperkenalkan nilai unik ke setiap operasi enkripsi, memastikan bahwa plaintext yang sama yang dienkripsi dengan kunci yang sama selalu menghasilkan ciphertext yang berbeda.

Persyaratan keamanan untuk nonce bervariasi menurut algoritma. Beberapa algoritma (seperti AES-GCM) mengharuskan nonce tidak pernah digunakan kembali dengan kunci yang sama — penggunaan ulang dapat secara katastrofis mengkompromikan kerahasiaan dan autentikasi. Untuk algoritma ini, nonce acak harus cukup besar sehingga kemungkinan tabrakan tidak disengaja sangat kecil. Nonce acak 96-bit (seperti yang digunakan dalam AES-GCM) memberikan resistensi tabrakan yang cukup untuk hingga sekitar 2^32 enkripsi di bawah satu kunci.

Nonce muncul di seluruh protokol kriptografi dengan nama yang berbeda. Dalam AES-GCM disebut initialization vector, dalam autentikasi challenge-response disebut challenge, dan dalam blockchain disebut mining nonce. Benang merahnya adalah keunikan: nilai tidak boleh berulang dalam konteks di mana digunakan.

Cara Vaulted menggunakan Nonce

Setiap rahasia yang dienkripsi dengan Vaulted menggunakan nonce acak 12-byte (96-bit) yang unik, dihasilkan oleh generator angka acak yang aman secara kriptografi dari Web Crypto API. Nonce ini berfungsi sebagai initialization vector untuk enkripsi AES-256-GCM. Nonce disimpan bersama ciphertext di server dan dikirimkan ke penerima untuk dekripsi. Karena Vaulted juga menghasilkan kunci unik per rahasia, pasangan kunci-nonce selalu unik.