Sebuah kode otentikasi pesan (MAC) didefinisikan oleh tiga algoritma yang efisien , yang memenuhi berikut (definisi diambil dari bagian 4.3 dari Katz -Lindell book ):
- Pada input , algoritma menghasilkan kunci .
- Pada input dihasilkan oleh , dan beberapa pesan , algoritma menghasilkan tag . Kami menulis .
- Pada input tiga , algoritma menghasilkan bit tunggal . Kami menulis b ← V e r i f k ( m , t ) .
Diperlukan bahwa untuk semua keluaran oleh dan semua , kami memiliki .
Persyaratan keamanan didefinisikan melalui percobaan berikut, antara penantang dan musuh :
- .
- .
- Biarkan menunjukkan himpunan semua pertanyaan yang diminta ke oracle-nya.
- Output percobaan didefinisikan menjadi 1 jika dan hanya jika:
- , dan
- .
MAC dianggap aman jika probabilitas bahwa hasil percobaan 1 diabaikan dalam .
Eksperimen di atas menyerupai eksperimen "plaintext terpilih" terhadap skema enkripsi simetris, di mana musuh dapat memperoleh ciphertext yang sesuai dengan pesan pilihannya. Dalam serangan yang lebih kuat, yang disebut serangan "ciphertext yang dipilih", musuh juga diizinkan mengakses oracle dekripsi.
Jadi, pertanyaan saya adalah:
Apa yang terjadi jika kita mengizinkan musuh MAC juga mengakses oracle verifikasi? Dengan kata lain, bagaimana jika jalur 2 percobaan diganti dengan yang berikut:
.
Perhatikan bahwa dalam percobaan baru, hanya mencakup kueri A yang diminta dari oracle M A C k .
sumber
Jawaban:
Membiarkan⟨Gen,MAC,Verif⟩ amankan menurut definisi mana pun. Karena definisi buku
MACk′ MACk Verifk′ Verifk
k ⟨Gen,MAC′,Verif′⟩ jelas efisien dan memenuhi persyaratan. Karena [memasangkan tag dengan string kosong untuk]
⟨Gen,MAC′,Verif′⟩ tidak dapat memiliki probabilitas yang tidak dapat diabaikan
⟨Gen,MAC,Verif⟩ , ⟨Gen,MAC′,Verif′⟩ sebagai kode otentikasi pesan aman.
k 2⋅(length(k)+1)
Verifk′ k , yang akan memungkinkan pemalsuan pada pesan apa pun.
⟨Gen,MAC′,Verif′⟩ tidak aman. QED
lebih lemah dari definisi Anda, maka definisi tersebut secara khusus aman menurut definisi buku.
Memperbaiki beberapa efisien-komputasi dan efisien-invertable coding dari
pasangan memerintahkan, misalnya, concatenating efisien-komputasi dan
efisien-dibalik representasi prefix bebas dari masuknya kiri ke entri yang tepat.
Biarkan Bekerja dengan memasangkan output MAC k dengan string kosong. Biarkan Verif k
Terima jika dan hanya jika [[ Verif k akan menerima pesan dan entri kiri tag] dan [entri kanan input adalah awalan k ]].
dan [mengambil entri kiri dari output], musuh yang layak menyerang
definisi buku tentang keamanan
untuk melanggar definisi keamanan buku ini
definisi buku juga mengklasifikasikan
Namun, setelah musuh mendapatkan setiap valid pasangan pesan-tag untuk ,
pertanyaan adaptif ke Cukup untuk belajar k
Jadi definisi Anda mengklasifikasikan
(Versi "strong unforgeability" diperoleh dengan mengganti dengan set Q + yang diberikan dalam kalimat saya berikutnya, dan yang diperlukan untuk membuat konstruksi enkripsi-lalu-mac memberikan integritas ciphertext dan menjadi IND-CCA2.)
InisialisasiQ+ sebagai set kosong, dan taruh ⟨m,t⟩ ke
setiap kali MAC k mengeluarkan t pada kueri m .
Tentukan query untukmencobajika dan hanya jika mengirimkan
keQ+
MACk t m
Verifk sepasang yang sudah dimasukkan Q+ .
Verifk diterima.
BMACk(⋅)(1n,q,j) berinteraksi dengan sebagai berikut:A
Tetapkan permintaan untuk mencoba lebih awal jika dan hanya jika ia mencoba dan
tidak datang setelah permintaan mencoba itu
Menggunakan kurang dari bit acak, pilihj r∈{1,2,3,...,q−2,q−1,q} hampir seragam.
A MACk(⋅) pertanyaan ke MACk(⋅) dan berikan A 0 mencoba kueri,
dan memberikan 1 sebagai output darir−1
1 Verifk pada pertanyaan untuk itu yang tidak mencoba.
AMACk(⋅),Verifk(⋅,⋅)(1n) membuat -th queri mencoba, lalu menampilkan apa itu queri.
Jikar
AMACk(⋅),Verifk(⋅,⋅)(1n) memberikan output, lalu memberikan output yang sama.
AMACk(⋅),Verifk(⋅,⋅)(1n) membuat persis r−1 kueri yang mencoba lebih awal dan berhasil dalam versi eksperimen yang tidak dapat dikalahkan yang kuat, lalu
BA,MACk(⋅)(1n,q,j) berhasil dalam percobaan buku versi unforgeability kuat.
"Forward" semua 's
output oracle itu (aktual) ke , beri 0 sebagai output pada pertama hingga r
Jika
Dengan keacakan semuanya diperbaiki, jika
sumber