Ataque de Boomerang
# Ataque de Boomerang

En criptografía, el ataque boomerang es un método para el criptoanálisis de cifrados de bloque basado en el criptoanálisis diferencial. El ataque fue publicado en 1999 por David Wagner, quien lo utilizó para romper el cifrado COCONUT98.

El ataque boomerang ha permitido nuevas vías de ataque para muchos cifrados previamente considerados seguros frente al criptoanálisis diferencial.

Se han publicado refinamientos sobre el ataque boomerang: el ataque boomerang amplificado y el ataque rectángulo.

Debido a la similitud de una construcción de Merkle–Damgård con un cifrado de bloque, este ataque también puede ser aplicable a ciertas funciones hash como MD5.

## El Ataque

El ataque boomerang, basado en el criptoanálisis diferencial, adopta un enfoque único al explotar diferenciales parciales en un cifrado. El criptoanálisis diferencial se centra principalmente en cómo las variaciones en la entrada (texto plano) pueden influir en las diferencias correspondientes en la salida (texto cifrado). Este método requiere un diferencial de alta probabilidad, que es una diferencia de entrada que predice de manera fiable una diferencia de salida, cubriendo todo el cifrado o una parte significativa del mismo. Sin embargo, el ataque boomerang se desvía al utilizar diferenciales que solo cubren una parte del cifrado.

Al ejecutar un ataque boomerang, la estrategia implica crear una estructura de "cuarteto" en un punto medio del cifrado. Para entender esto, consideremos el proceso de cifrado E del cifrado como divisible en dos etapas secuenciales: E0 y E1. Por lo tanto, el cifrado de un mensaje de texto plano M se puede representar como E(M) = E1(E0(M)). Esta segmentación en E0 y E1 es crucial para el ataque boomerang, ya que permite al atacante analizar y explotar los diferenciales parciales en cada segmento por separado, lo que permite el ataque a cifrados que podrían ser resistentes al análisis diferencial convencional de todo el cifrado.

El ataque básico procede de la siguiente manera:

* Elegir un texto plano aleatorio P y calcular P' = P ⊕ Δ.
* Solicitar los cifrados de P y P' para obtener C = E(P) y C' = E(P').
* Calcular D = C ⊕ ∇ y D' = C' ⊕ ∇.
* Solicitar los descifrados de D y D' para obtener Q = E^(-1)(D) y Q' = E^(-1)(D').
* Comparar Q y Q'; cuando los diferenciales se mantienen, Q ⊕ Q' = Δ.

## Aplicación a cifrados específicos

Un ataque a KASUMI, un cifrado de bloque utilizado en 3GPP, es un ataque de rectángulo con claves relacionadas que rompe las ocho rondas completas del cifrado más rápido que la búsqueda exhaustiva (Biham et al., 2005). El ataque requiere 2^54.6 textos planos elegidos, cada uno de los cuales ha sido cifrado bajo una de cuatro claves relacionadas y tiene una complejidad de tiempo equivalente a 2^76.1 cifrados KASUMI.

