Enkripsi Diautentikasi Deterministik dengan Data Terkait (Deterministik AEAD)

Primitive Deterministic Authenticated Encryption with Associated Data (Deterministic AEAD) menyediakan enkripsi dengan properti deterministik: mengenkripsi data yang sama selalu menghasilkan ciphertext yang sama. Jenis enkripsi ini berguna untuk penggabungan kunci atau untuk beberapa skema untuk menelusuri data terenkripsi (lihat RFC 5297, Bagian 1.3 untuk mengetahui info selengkapnya). Karena properti deterministiknya, implementasi 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 kesetaraan teks biasa yang diulang.
  • Keaslian: Teks biasa terenkripsi yang mendasari ciphertext tidak dapat diubah tanpa terdeteksi.
  • Simetris: Mengenkripsi teks biasa dan mendekripsi ciphertext dilakukan dengan kunci yang sama.
  • Deterministik: Selama kunci utama tidak diubah, mengenkripsi teks biasa dua kali dengan parameter yang sama akan menghasilkan ciphertext yang sama.

Data terkait

AEAD deterministik juga dapat digunakan untuk mengikat ciphertext ke data terkait tertentu. Misalnya, jika 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.

Memilih 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 di bawah 232 kunci, mereka perlu melakukan 2128 komputasi untuk mendapatkan satu kunci.
  • Kemampuan untuk mengenkripsi 238 pesan dengan aman, asalkan setiap pesan memiliki panjang kurang dari 1 MB.

Contoh kasus penggunaan

Lihat, saya ingin mengenkripsi data secara deterministik dan ingin mengikat ciphertext ke konteksnya.