Un código de autenticación de mensaje (MAC) se define por un triple de algoritmos eficientes , que satisfacen lo siguiente (la definición se toma de la sección 4.3 de Katz -Lindell libro ):
- En la entrada , el algoritmo genera una clave .
- En la entrada generada por , y algún mensaje , el algoritmo genera una etiqueta . Escribimos .
- En la entrada un triple , el algoritmo genera un solo bit . Escribimos .V e r i f b b ← V e r i f k ( m , t )
Se requiere que para todas las salidas de y todas las , tengamos .G e n m ∈ { 0 , 1 } ∗ V e r i f k ( m , M A C k ( m ) ) = 1
El requisito de seguridad se define mediante el siguiente experimento, entre el retador y el adversario :
- .
- .
- Deje que denote el conjunto de todas las consultas que le preguntó a su oráculo.A
- El resultado del experimento se define como 1 si y solo si:
- , y
- .
El MAC se considera seguro si la probabilidad de que el experimento produzca 1 es insignificante en .
El experimento anterior se asemeja a un experimento de "texto sin formato elegido" contra un esquema de cifrado simétrico, donde el adversario puede obtener textos cifrados correspondientes a los mensajes de su elección. En un ataque más poderoso, llamado ataque de "texto cifrado elegido", el adversario también tiene acceso a un oráculo de descifrado.
Entonces, mi pregunta es:
¿Qué sucede si permitimos que el adversario de MAC acceda también a un oráculo de verificación? En otras palabras, ¿qué pasa si la línea 2 del experimento se reemplaza por la siguiente?
.
Observe que en el nuevo experimento, solo incluye consultas que le pide al oráculo .A M A C k
fuente
Respuestas:
Deje sea seguro de acuerdo con cualquiera de las definiciones. Dado que la definición del libro es más débil que su definición, es particularmente segura de acuerdo con la definición del libro. Arregle una codificación eficientemente computable y eficientemente invertable de pares ordenados, por ejemplo, concatenando una representación sin prefijo eficientemente computable y eficientemente invertible de la entrada izquierda a la entrada derecha. Deje que funcione emparejando la salida de⟨Gen,MAC,Verif⟩
MACk′ MACk con la cuerda vacía
Verifk′ Verifk
k ⟨Gen,MAC′,Verif′⟩
⟨Gen,MAC′,Verif′⟩
⟨Gen,MAC,Verif⟩
⟨Gen,MAC′,Verif′⟩ como un código de autenticación de mensaje seguro.
k 2⋅(length(k)+1)
Verifk′ k
⟨Gen,MAC′,Verif′⟩ como inseguro. QED
MAC k Verif k
Deje que acepte si y solo si [[ aceptaría el mensaje y la entrada izquierda de la etiqueta] y [la entrada derecha de la entrada es un prefijo de ]]. es claramente eficiente y satisface el requisito. Dado que [emparejar las etiquetas con la cadena vacía para] y [tomar la entrada izquierda de la salida de] un adversario factible atacando el libro Verif k k
definición de la seguridad de no puede tener un non- probabilidad insignificante de romper la definición de seguridad del libro para , del libro definición también se clasifica
Sin embargo, una vez que un adversario obtiene un par válido de etiqueta de mensaje para , consultas adaptativas a es suficiente para aprender , lo que permitiría falsificaciones en cualquier mensaje. Por lo tanto, su definición clasifica
K
(Las versiones de "fuerte imperdibilidad" se obtienen reemplazando con el conjunto dado en mi próxima oración, y eso es necesario para que la construcción cifrar-luego-mac proporcione integridad de texto cifrado y sea IND-CCA2).Q +
Inicialice como el conjunto vacío y ponga into cada vez que genera on una consulta de . Definir una consulta para ser tratando si y sólo si se somete a un par que ya se puso en . Defina una consulta para que se intente de forma anticipada si y solo si está intentando y no se produjo después de una consulta de que aceptado.Q+ ⟨m,t⟩ MAC k t mQ+
MACk t m
Verifk Q+
Verifk
BMACk(⋅)(1n,q,j) interactúa con siguiente manera:A
Usando menos de bits aleatorios, elijacasi uniformemente "Reenviar" todas las 's consultas a y dar la salida (real) de ese oráculo a , dar como las salidas en la primera hasta consultas de prueba y darj r∈{1,2,3,...,q−2,q−1,q}
A MACk(⋅) MACk(⋅) A 0 1r−1
1 como las salidas de en consultas que no están intentando.
If hace un -ésima tratando consulta, entonces la salida lo que la consulta era.
If da salida, luego da esa misma salida.
Con todo el azar arreglado, siVerifk
AMACk(⋅),Verifk(⋅,⋅)(1n) r
AMACk(⋅),Verifk(⋅,⋅)(1n)
AMACk(⋅),Verifk(⋅,⋅)(1n) realiza exactamente consultas de prueba temprana y tiene éxito en la fuerte versión de su experimento, y luego
tiene éxito en el fuerte experimento del libro de la versión de inolvidable.r−1
BA,MACk(⋅)(1n,q,j)
0 r
Claramente, "ignorar el oráculo" es una reducción constructiva en línea recta de tener éxito en la versión fuerte e inolvidable del experimento del libro a tener éxito en la versión fuerte e inolvidable de tu experimento, y esa reducción es casi perfectamente ajustada. Por lo tanto, la versión fuerte de la imperdibilidad de su definición proporciona los mismos MAC asintóticos que la versión fuerte de la invencibilidad del experimento del libro.Verifk
fuente