Jika ada kode otentikasi pesan aman sesuai dengan salah satu definisi,
maka ada sistem yang definisi buku mengklasifikasikan sebagai
kode otentikasi pesan aman
dan definisi Anda diklasifikasikan sebagai tidak aman.
Membiarkan ⟨Gen,MAC,Verif⟩ amankan menurut definisi mana pun. Karena definisi buku
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 kMACk′MACk
Terima jika dan hanya jika [[ Verif k akan menerima pesan dan entri kiri
tag] dan [entri kanan input adalah awalan k ]].Verifk′Verifk
k ⟨Gen,MAC′,Verif′⟩ jelas efisien dan memenuhi persyaratan. Karena [memasangkan tag dengan string kosong untuk]
dan [mengambil entri kiri dari output], musuh yang layak menyerang
definisi buku tentang
keamanan⟨Gen,MAC′,Verif′⟩tidak dapat memiliki probabilitas yang tidak dapat diabaikan
untuk melanggar definisi keamanan buku ini⟨Gen,MAC,Verif⟩,
definisi buku
juga mengklasifikasikan⟨Gen,MAC′,Verif′⟩sebagai kode otentikasi pesan aman.
Namun, setelah musuh mendapatkan setiap valid pasangan pesan-tag untuk ,k2⋅(length(k)+1)
pertanyaan adaptif ke Cukup untuk belajar kVerifk′k, yang akan memungkinkan pemalsuan pada pesan apa pun.
Jadi definisi Anda mengklasifikasikan⟨Gen,MAC′,Verif′⟩ tidak aman. QED
Versi unforgeability yang kuat dari kedua definisi itu setara.
(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.)Q
Q+
Inisialisasi Q+ 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+
MACktm
Verifk sepasang yang sudah dimasukkan Q+.
Tetapkan permintaan untuk mencoba lebih awal jika dan hanya jika ia mencoba dan
tidak datang setelah permintaan mencoba ituVerifkditerima.
BMACk(⋅)(1n,q,j)berinteraksi dengan sebagai berikut:A
Menggunakan kurang dari bit acak, pilihjr∈{1,2,3,...,q−2,q−1,q}hampir seragam.
"Forward" semua 'sAMACk(⋅) pertanyaan ke MACk(⋅)dan berikan
output oracle itu
(aktual) ke , beri 0 sebagai output pada pertama hingga rA0 mencoba kueri,
dan memberikan 1 sebagai output darir−1
1Verifkpada pertanyaan untuk itu yang tidak mencoba.
JikaAMACk(⋅),Verifk(⋅,⋅)(1n)membuat -th queri mencoba, lalu menampilkan apa itu queri.
Jikar
AMACk(⋅),Verifk(⋅,⋅)(1n)memberikan output, lalu memberikan output yang sama.
Dengan keacakan semuanya diperbaiki, jikaAMACk(⋅),Verifk(⋅,⋅)(1n) membuat persis r−1kueri 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.
Oleh karena itu adalah pengurangan garis lurus yang konstruktif dari keberhasilan dalam versi ketakberantaraan yang kuat dari percobaan Anda dengan probabilitas setidaknya ϵ dengan cara yang
membuat kurang dari q kueri yang mencoba lebih awal, untuk berhasil dalam
versi yang tidak dapat dikalahkan yang kuat
dari eksperimen buku dengan probabilitas lebih besar dariBϵ
q
(1q−q2^j)⋅ϵ.
menggunakan kurang dariBj
q
MACk
MACkini menanggapi permintaan itu], dan hanya memiliki kompleksitas tambahan sepele di luar itu.
Verifk