De RFC 2104 § 6 que describe los requisitos de seguridad para un HMAC:
La seguridad del mecanismo de autenticación de mensajes que se presenta aquí depende de las propiedades criptográficas de la función hash H: la resistencia al hallazgo de colisión (limitada al caso donde el valor inicial es secreto y aleatorio, y donde la salida de la función no es disponible explícitamente para el atacante), y la propiedad de autenticación de mensaje de la función de compresión de H cuando se aplica a bloques individuales (en HMAC, estos bloques son parcialmente desconocidos para un atacante, ya que contienen el resultado del cálculo de H interno y, en particular, no pueden ser completamente elegido por el atacante).
Así que no es que las colisiones no sean importantes para un HMAC. Es que un ataque de colisión contra una función hash no afecta a esa función hash cuando se usa en una construcción HMAC. En particular, un HMAC exige garantías de seguridad mucho más débiles de la función hash que muchas otras aplicaciones que pueda tener. Solo requiere una resistencia de colisión débil del hash subyacente.
HMAC se define como HMAC K (m) = H ((K ⊕ opad) || H ((K ⊕ ipad) || m)) donde < em> opad y ipad son constantes y H es un hash al menos débilmente resistente a la colisión. La clave K no es conocida por un atacante. Para desencadenar una colisión con un HMAC, un atacante tendría que realizar una de las siguientes acciones:
-
Encuentre una colisión que sea válida para una serie de claves.
-
Realice un ataque de recuperación de clave exitoso.
Es muy poco probable que ambos sean posibles incluso para el peor de los hash criptográficos.