En criptografía , un ataque de interpolación es un tipo de ataque criptoanalítico contra cifrados de bloque .
Después de que se presentaran los dos ataques, el criptoanálisis diferencial y el criptoanálisis lineal , a los cifrados en bloque, se introdujeron algunos nuevos cifrados en bloque , que demostraron ser seguros contra ataques diferenciales y lineales. Entre ellos, había algunos cifrados en bloque iterados, como el cifrado KN y el cifrado SHARK . Sin embargo, Thomas Jakobsen y Lars Knudsen demostraron a finales de la década de 1990 que estos cifrados eran fáciles de romper mediante la introducción de un nuevo ataque llamado ataque de interpolación.
En el ataque, se utiliza una función algebraica para representar una caja S. Puede ser una función cuadrática simple , polinómica o racional sobre un campo de Galois . Sus coeficientes se pueden determinar mediante técnicas de interpolación de Lagrange estándar , utilizando textos simples conocidos como puntos de datos. Alternativamente, se pueden utilizar textos simples elegidos para simplificar las ecuaciones y optimizar el ataque.
En su versión más simple, un ataque de interpolación expresa el texto cifrado como un polinomio del texto simple. Si el polinomio tiene un número relativamente bajo de coeficientes desconocidos, entonces con una colección de pares de texto simple/texto cifrado (p/c), el polinomio puede reconstruirse. Con el polinomio reconstruido, el atacante obtiene una representación del cifrado, sin conocimiento exacto de la clave secreta.
El ataque de interpolación también se puede utilizar para recuperar la clave secreta.
Es más fácil describir el método con un ejemplo.
Sea un cifrado iterado dado por
donde es el texto simple, la salida de la ronda, la clave secreta de la ronda (derivada de la clave secreta por algún programa de claves ) y, para un cifrado iterado de -ronda, es el texto cifrado.
Consideremos el cifrado de dos rondas. Sea α el mensaje y α el texto cifrado.
Entonces la salida de la ronda 1 se convierte en
y la salida de la ronda 2 se convierte en
Expresar el texto cifrado como un polinomio del texto simple da como resultado
donde las 's son constantes dependientes de la clave.
Si utilizamos tantos pares de texto simple/texto cifrado como coeficientes desconocidos tenga el polinomio , podemos construir el polinomio. Esto se puede hacer, por ejemplo, mediante la interpolación de Lagrange (véase Polinomio de Lagrange ). Cuando se han determinado los coeficientes desconocidos, tenemos una representación del cifrado, sin conocer la clave secreta .
Si consideramos un cifrado de bloque de -bits, entonces hay posibles textos simples y, por lo tanto, pares distintos . Sea que haya coeficientes desconocidos en . Como requerimos tantos pares como la cantidad de coeficientes desconocidos en el polinomio, entonces existe un ataque de interpolación solo si .
Supongamos que el tiempo necesario para construir el polinomio utilizando pares es pequeño, en comparación con el tiempo necesario para cifrar los textos simples necesarios. Sea que haya coeficientes desconocidos en . Entonces, la complejidad temporal para este ataque es , lo que requiere pares distintos conocidos .
A menudo, este método es más eficaz. A continuación, se explica cómo se hace.
Dado un cifrado iterado redondo con longitud de bloque , sea la salida del cifrado después de las rondas con . Expresaremos el valor de como un polinomio del texto simple , y como un polinomio del texto cifrado . Sea la expresión de via , y sea la expresión de via . El polinomio se obtiene calculando hacia adelante usando la fórmula iterada del cifrado hasta round , y el polinomio se obtiene calculando hacia atrás a partir de la fórmula iterada del cifrado comenzando desde round hasta round .
Así que debería ser así
y si ambos son polinomios con un número bajo de coeficientes, entonces podemos resolver la ecuación para los coeficientes desconocidos.
Supongamos que se puede expresar mediante coeficientes, y se puede expresar mediante coeficientes. Entonces necesitaríamos pares distintos conocidos para resolver la ecuación estableciéndola como una ecuación matricial. Sin embargo, esta ecuación matricial se puede resolver hasta una multiplicación y una suma. Entonces, para asegurarnos de que obtenemos una solución única y distinta de cero, establecemos el coeficiente correspondiente al grado más alto en uno y el término constante en cero. Por lo tanto, se requieren pares distintos conocidos . Entonces, la complejidad temporal para este ataque es , lo que requiere pares distintos conocidos .
Con el método de encuentro en el medio, el número total de coeficientes suele ser menor que con el método normal, lo que hace que el método sea más eficiente, ya que se necesitan menos pares.
También podemos utilizar el ataque de interpolación para recuperar la clave secreta .
Si eliminamos la última ronda de un cifrado iterado de -ronda con longitud de bloque , la salida del cifrado se convierte en . Llamemos al cifrado cifrado reducido. La idea es hacer una suposición sobre la clave de la última ronda , de modo que podamos descifrar una ronda para obtener la salida del cifrado reducido. Luego, para verificar la suposición, utilizamos el ataque de interpolación en el cifrado reducido, ya sea por el método normal o por el método Meet-In-The-Middle. Aquí se explica cómo se hace.
Mediante el método normal, expresamos la salida del cifrado reducido como un polinomio del texto simple . Llamemos al polinomio . Luego, si podemos expresar con coeficientes, entonces, utilizando pares distintos conocidos , podemos construir el polinomio. Para verificar la suposición de la clave de la última ronda, entonces verifique con un par adicional si se cumple que
Si es así, entonces es muy probable que la clave de la última ronda haya sido correcta. Si no, vuelva a intentar adivinar la clave.
Mediante el método Meet-In-The-Middle expresamos la salida de round como un polinomio del texto simple y como un polinomio de la salida del cifrado reducido . Llamemos a los polinomios y , y expresémoslos mediante los coeficientes y , respectivamente. Luego, con pares distintos conocidos , podemos encontrar los coeficientes. Para verificar la suposición de la clave de la última ronda, verifique con un par adicional si se cumple que
Si es así, entonces es muy probable que la clave de la última ronda haya sido correcta. Si no, vuelva a intentar adivinar la clave.
Una vez que hayamos encontrado la clave correcta para la última ronda, podremos continuar de manera similar con las claves de la ronda restante.
Con una clave secreta de longitud , entonces hay diferentes claves. Cada una con probabilidad de ser correcta si se elige al azar. Por lo tanto, en promedio tendremos que hacer conjeturas antes de encontrar la clave correcta.
Por lo tanto, el método normal tiene una complejidad de tiempo promedio , que requiere pares distintos conocidos , y el método Meet-In-The-Middle tiene una complejidad de tiempo promedio , que requiere pares distintos conocidos .
El ataque Meet-in-the-middle se puede utilizar en una variante para atacar S-boxes, que utiliza la función inversa, porque con un S-box de -bit entonces en .
El cifrado de bloques SHARK utiliza una red SP con S-box . El cifrado es resistente al criptoanálisis diferencial y lineal después de una pequeña cantidad de rondas. Sin embargo, fue descifrado en 1996 por Thomas Jakobsen y Lars Knudsen, utilizando un ataque de interpolación. Denotemos por SHARK una versión de SHARK con bits de tamaño de bloque utilizando S-boxes de 128 bits en paralelo en rondas. Jakobsen y Knudsen descubrieron que existe un ataque de interpolación en SHARK (cifrado de bloques de 64 bits) utilizando aproximadamente textos planos elegidos, y un ataque de interpolación en SHARK (cifrado de bloques de 128 bits) utilizando aproximadamente textos planos elegidos.
Thomas Jakobsen también introdujo una versión probabilística del ataque de interpolación utilizando el algoritmo de Madhu Sudan para una mejor decodificación de los códigos Reed-Solomon . Este ataque puede funcionar incluso cuando una relación algebraica entre textos simples y textos cifrados se cumple solo para una fracción de valores.