Un ataque de colisión en criptografía es la búsqueda de dos bloques de entrada diferentes de una función hash criptográfica que produzcan el mismo valor hash, es decir, una colisión hash . A diferencia del ataque de preimagen , el valor hash no se elige deliberadamente.
Aproximadamente[ aclarar ] Hay dos tipos diferentes de ataques de colisión:
El ataque de colisión encuentra dos mensajes diferentes m1 y m2 tales que . En el caso clásico de un ataque, el atacante no tiene control sobre el contenido de los mensajes, sino que son elegidos aleatoriamente por el algoritmo. Muchos criptosistemas simétricos son vulnerables a los ataques de fuerza bruta , cualquier función hash criptográfica es, por definición, vulnerable a un ataque de cumpleaños . Debido a la paradoja del cumpleaños, este último método de ataque puede ser mucho más rápido que el método de fuerza bruta. Un hash de N bits se puede dividir 2n /2 veces (mediante el cálculo de una función hash). Los ataques más efectivos son posibles cuando se utiliza el criptoanálisis en una función hash específica. Cuando un ataque de colisión es más rápido que un ataque de "cumpleaños", las funciones hash a menudo se denuncian como "rotas". La creación de la función hash SHA-3 (concurso) fue impulsada en gran medida por la necesidad de reemplazar las antiguas funciones MD5 [1] y SHA-1 . Los ataques de colisión contra el algoritmo MD5 han mejorado tanto que en un ordenador normal tardan solo unos segundos. [2] Las colisiones hash generadas de esta manera son generalmente de longitud constante y en gran parte no estructuradas, por lo que no se pueden aplicar directamente para atacar protocolos o formatos de documentos comunes. Sin embargo, las soluciones alternativas son posibles al abusar de las construcciones dinámicas presentes en muchos formatos. Así, se crearán dos documentos idénticos entre sí para que tengan el mismo valor hash. Si un documento está firmado por una persona de confianza, su firma se puede copiar en otro archivo. Dicho documento malicioso contendría dos mensajes diferentes en el mismo documento, pero aún podría mostrar cualquiera de ellos a través de pequeños cambios en el archivo:
El resultado de la mejora del ataque de colisión fue el ataque de colisión con un prefijo dado, diseñado para la estructura Merkle-Damgard . En este caso, un atacante puede elegir 2 documentos aleatorios diferentes y luego rellenarlos con 2 valores computados diferentes para que los 2 documentos terminen con el mismo valor hash. Este ataque es más grave que su versión clásica.
Matemáticamente hablando, hay 2 prefijos diferentes p1, p2 , sus 2 complementos m1 y m2 se calculan de tal manera que hash(p1 ∥ m1) = hash(p2 ∥ m2) (donde ∥ es la operación de concatenación ).
En 2007, se creó un ataque de colisión de hash MD5 prefijado, que requirió aproximadamente 250 cálculos de función MD5 . La nota presentaba dos certificados X.509 para diferentes nombres de dominio que tienen la misma función hash. Esto significa que el certificado de un dominio de confianza puede ser utilizado por otro dominio desconocido. [5]
Un ataque de colisión real se publicó en diciembre de 2008 cuando un grupo de investigadores de seguridad publicó un certificado de firma X.509 falso que se puede usar para autorizar un certificado de forma anónima mediante un ataque de colisión con un prefijo hash MD5 determinado. Esto significaba que un atacante podía falsificar cualquier sitio web protegido por TLS como intermediario , violando así la validación del certificado integrado en cada navegador web para proteger el comercio electrónico . Un certificado falso no puede ser revocado por partes confiables, también puede tener una cantidad arbitraria de tiempo para caducar. A pesar de las debilidades de MD5 encontradas en 2004, [1] en diciembre de 2008 quedó claro que mucha gente todavía usa certificados con esta función hash, [6] y al menos Microsoft todavía la usaba en mayo de 2012.
En Flame , el malware usó con éxito una nueva variante del ataque de colisión prefijado para falsificar componentes de firma de código usando certificados raíz de Microsoft, que todavía usaban el algoritmo MD5 comprometido. [7] [8]
Muchas aplicaciones con funciones hash criptográficas no requieren protección colisión no pueden pasar por alto su protección Por ejemplo, los HMAC no están sujetos a este tipo de ataque. [9] Para un ataque exitoso, el atacante debe tener control sobre la entrada.
Dado que los algoritmos de firma electrónica no pueden firmar grandes cantidades de datos de manera eficiente, muchos complementos utilizan funciones de compresión de datos para firmarlos en un tamaño fijo. Los esquemas de firma electrónica a menudo son propensos a colisiones a pesar de que utilizan una técnica aleatoria de hash. [diez]
Por lo general, el ataque es así:
En 2008, los investigadores atacaron el prefijo MD5 utilizando el script anterior para crear un certificado falso. Crearon 2 versiones del certificado de clave pública TLS , una de las cuales fue autenticada para la autorización RapidSSL. Otra versión, que tiene el mismo valor hash MD5, contenía indicadores que indicaban al navegador la confianza y el derecho a emitir confianza en otros certificados [11] .