Dengan enkripsi AES dan kunci yang diketahui serta teks biasa, dapatkah penyerang membuat kunci dan teks biasa yang berbeda yang menghasilkan teks tersandi yang sama?
Singkatnya: dengan enkripsi AES, penyerang dapat membuat key2 dan plaintext2 baru sehingga AES key1 (plaintext1) = AES key2 (plaintext2)
Jika demikian, dapatkah ini diselesaikan dengan hanya menerapkan misalnya MAC seperti AES-GCM atau AES-CTR dengan SHA256 HMAC?
Aplikasi yang dimaksudkan: Enkripsi file. Setiap klien yang memiliki kunci dapat mendekripsi file. File terenkripsi ditangani secara membabi buta oleh server (tanpa mengetahui kuncinya) dengan hash SHA256-nya. Ketika klien baru menyerahkan kunci palsu dengan file yang dihosting, ia harus dapat mendeteksi bahwa itu adalah kunci yang salah. Dan tidak mendapatkan biner lain (berisik) dari file terenkripsi yang sama sebagai hasilnya. Memperhatikan bahwa penyerang yang mengirimkan kunci palsu memiliki akses ke kunci asli, teks tersandi dan dengan demikian juga teks biasa.
(Opsi file identik yang dienkripsi dengan kunci berbeda harus ada di sana. Jadi enkripsi deterministik bukan niat saya)
Solusi mudah lain yang mungkin saya pikirkan adalah menyimpan hash kunci rahasia bersama dengan file terenkripsi di server dan mengirimkannya ke klien untuk diverifikasi. Tapi saya sebenarnya lebih suka menggunakan solusi out-of-the-box yang terkenal, dan bukan sesuatu yang saya buat. Apakah menerapkan MAC / HMAC cukup untuk menjamin hanya satu hasil kunci dalam ciphertext yang diberikan.
Semoga niat saya jelas, dan seseorang yang berpengetahuan dapat mengarahkan saya ke arah yang benar.
Jawaban
Untuk AES dasar, mudah untuk menemukan dua kunci dengan cara ini. Ambil apapun$key1$ dan $plaintext1$ dan menghitung $c=AES_{key1}(plaintext1)$. Lalu, ambil apa saja$key2$ dan menghitung $plaintext2 = AES^{-1}_{key2}(c)$. Ini mengikuti itu$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$. Karena itu, jika AES digunakan dalam mode enkripsi terotentikasi dengan MAC, ini mungkin tidak selalu memungkinkan. Saya ingin tegaskan bahwa tidak ada jaminan bahwa tidak, dan hal semacam itu perlu dibuktikan. Secara khusus, jika Anda melakukan enkripsi standar-kemudian-MAC (dengan kunci yang berbeda), maka ini akan rentan dengan cara yang persis sama, karena bagian "enkripsi" tidak berubah. Intinya, ini harus mungkin untuk dicapai, tetapi tentu saja tidak dijamin, dan seringkali tidak berlaku sama sekali.