Un Collision Attack es un tipo de ataque criptográfico que explota las propiedades de las funciones hash. Su objetivo es encontrar dos mensajes o entradas diferentes (M1 y M2) tales que, al ser procesados por una función hash H, produzcan el mismo valor hash (H(M1) = H(M2)). Esto difiere de un pre-image attack, donde el atacante busca una entrada que produzca un hash específico. Los Collision Attacks pueden ser de dos tipos: un 'collision attack' (también conocido como 'arbitrary-message collision') donde el atacante encuentra cualquier par de mensajes que colisionen, o un 'chosen-prefix collision attack' donde el atacante puede elegir prefijos para los mensajes y luego encontrar sufijos que resulten en una colisión.

En el mundo real, los Collision Attacks han tenido implicaciones significativas para la seguridad de sistemas que dependen de funciones hash criptográficas. Por ejemplo, se han demostrado Collision Attacks exitosos contra MD5 y SHA-1. Esto llevó a la deprecación de MD5 para la mayoría de los propósitos de seguridad, como la firma digital y la verificación de integridad de software, y a la migración de SHA-1 a SHA-2 (y posteriormente a SHA-3) para aplicaciones críticas. Un ejemplo concreto es la creación de certificados SSL/TLS fraudulentos utilizando colisiones en MD5, lo que permitió a atacantes suplantar identidades en la web. Otro caso fue el ataque SHAttered contra SHA-1, que demostró la viabilidad de generar dos archivos PDF diferentes con el mismo hash SHA-1, lo que podría usarse para falsificar documentos o firmas digitales.

Para un arquitecto de sistemas, comprender los Collision Attacks es crucial para seleccionar algoritmos hash apropiados y diseñar sistemas seguros. La elección de una función hash resistente a colisiones es fundamental para la integridad de datos, la autenticación de mensajes, las firmas digitales y la seguridad de contraseñas. Un arquitecto debe evaluar el 'security strength' de las funciones hash en el contexto de la amenaza actual y el horizonte de vida del sistema. Utilizar funciones hash obsoletas o comprometidas (como MD5 o SHA-1 para nuevos diseños) introduce vulnerabilidades graves que pueden ser explotadas para falsificación de datos, manipulación de software o bypass de controles de seguridad. La mitigación implica la adopción de algoritmos modernos y robustos como SHA-256, SHA-3, o BLAKE2, y la implementación de mecanismos adicionales como 'salting' para contraseñas, que dificultan los ataques de diccionario y las tablas rainbow, incluso si se produce una colisión en el hash subyacente.