Primitif Enkripsi yang Diautentikasi Deterministik dengan Data Terkait (Deterministic AEAD) menyediakan enkripsi dengan properti deterministik: mengenkripsi data yang sama akan selalu menghasilkan ciphertext yang sama. Jenis enkripsi ini berguna untuk menggabungkan kunci atau untuk beberapa skema penelusuran data terenkripsi (lihat RFC 5297, Bagian 1.3 untuk mengetahui info selengkapnya). Karena propertinya yang deterministik, penerapan primitif ini dapat menyebabkan hilangnya kerahasiaan karena penyerang hanya perlu mengetahui ciphertext untuk pesan tertentu guna mengidentifikasi instance lain dari pesan tersebut.
AEAD deterministik memiliki properti berikut:
- Secrecy: Tidak ada yang diketahui tentang teks biasa, kecuali panjangnya dan kesamaan teks biasa yang berulang.
- Keaslian: Teks biasa terenkripsi yang mendasari teks tersandi tidak dapat diubah tanpa terdeteksi.
- Simetris: Mengenkripsi teks biasa dan mendekripsi teks tersandi dilakukan dengan kunci yang sama.
- Deterministik: Selama kunci utama tidak diubah, mengenkripsi teks polos dua kali dengan parameter yang sama akan menghasilkan teks tersandi yang sama.
Data terkait
AEAD deterministik dapat digunakan untuk mengaitkan ciphertext ke data terkait
tertentu. Misalnya, Anda memiliki database dengan kolom user-id
dan encrypted-medical-history. Dalam skenario ini, user-id dapat digunakan sebagai
data terkait saat mengenkripsi encrypted-medical-history. Hal ini mencegah penyerang memindahkan histori medis dari satu pengguna ke pengguna lain.
Data terkait bersifat opsional. Jika ditentukan, dekripsi hanya berhasil jika data terkait yang sama diteruskan ke panggilan enkripsi dan dekripsi.
Pilih jenis kunci
Sebaiknya gunakan jenis kunci AES256_SIV untuk semua kasus penggunaan.
Jaminan keamanan
- Kekuatan autentikasi minimal 80 bit.
- Teks biasa dan data terkait dapat memiliki panjang arbitrer (dalam rentang 0..232 byte).
- Tingkat keamanan 128-bit terhadap serangan pemulihan kunci, dan juga dalam serangan multi-pengguna dengan hingga 232 kunci — artinya, jika penyerang mendapatkan 232 ciphertext dari pesan yang sama yang dienkripsi dengan 232 kunci, mereka harus melakukan 2128 komputasi untuk mendapatkan satu kunci.
- Kemampuan untuk mengenkripsi 238 pesan dengan aman, asalkan setiap pesan berukuran kurang dari 1 MB.
Contoh kasus penggunaan
Lihat, saya ingin mengenkripsi data secara deterministik dan saya ingin mengikat ciphertext ke konteksnya.