Una falsificación existencial de un texto sin formato elegido es tener la capacidad como atacante para obtener un MAC válido para un texto sin formato de su elección, sin conocer la clave necesaria para generar un MAC correcto.
Un vector común para esto es un ataque de tiempo, y funcionaría así:
-
El atacante envía un mensaje y un HMAC (en realidad, solo una secuencia de bytes de la misma longitud que el HMAC) y cronometra la respuesta del sistema de descifrado.
-
El atacante luego envía el mismo mensaje, y el mismo pseudo-HMAC repetidamente, con la excepción de que ahora itera cada (256) valor posible para el primer byte del HMAC.
-
Si el sistema de descifrado está devolviendo un error inmediatamente al encontrar una falta de coincidencia entre los bytes, una de estas iteraciones (la que tiene el mismo valor del primer byte calculado por el sistema de descifrado) debería tardar un poco más en regresar. Si el atacante puede detectar esa diferencia, ahora conoce el primer byte correcto para el HMAC correcto para el mensaje dado la clave HMAC del sistema de descifrado.
-
El atacante envía el mismo mensaje y HMAC, esta vez con el primer byte correcto conocido, iterando sobre el segundo byte, hasta que de nuevo, encuentra el byte que hace que el sistema de descifrado tarde un poco más en responder con un error. El atacante ahora sabe el segundo byte del HMAC correcto.
-
Enjuague y repita para cada byte sucesivo en el HMAC, hasta que se haya derivado un HMAC válido para el mensaje elegido por el atacante, sin clave.
Esta es la razón por la que la comparación HMAC debe ser constante, comparando todos los bytes del HMAC enviado con el HMAC calculado antes de devolver una respuesta. De esta manera, sin importar la posición de los bytes incorrectos, el tiempo de error siempre será igual. El atacante ya no tiene una manera de decir qué o dónde están los bytes incorrectos.
Y la mayoría de esta respuesta se copia directamente de mi respuesta a: ¿Ataque de tiempo contra HMAC en cifrado autenticado? De ahí las referencias a HMAC específicamente.