Un ataque de interpolación es un tipo de ataque criptoanalítico en cifrados de bloque en criptografía .
Para romper los cifrados en bloque, había 2 tipos de ataques: criptoanálisis diferencial y criptoanálisis lineal . Con el tiempo, se introdujeron algunos cifrados en bloque, que demostraron su seguridad frente a ataques diferenciales y lineales. Estos cifrados eran cifrados: KN-Cipher y SHARK . Sin embargo, a finales de los 90, Thomas Jacobsen y Lars Knudsen demostraron que estos cifrados eran fáciles de descifrar al introducir un nuevo ataque llamado ataque de interpolación.
En este ataque, se usa una función algebraica para representar un S-Box . Puede ser una función cuadrática simple , un polinomio o una función racional sobre un campo de Galois . Sus coeficientes se pueden determinar usando métodos estándar de interpolación de Lagrange , usando textos claros conocidos como puntos de datos. Además, se pueden usar textos sin formato seleccionados para simplificar las ecuaciones y optimizar el ataque. En su forma más simple, el ataque de interpolación expresa el texto cifrado como un polinomio en el texto. Si el polinomio tiene un número relativamente bajo de coeficientes desconocidos, entonces con un conjunto de pares de texto sin formato/texto cifrado, se puede recuperar el polinomio. Conociendo el polinomio de recuperación, el atacante tiene una idea sobre el cifrado sin conocer la clave secreta exacta . Un ataque de interpolación no es posible si se utiliza una función discontinua .
El ataque de interpolación también se puede utilizar para recuperar la clave secreta.
Deje que la iteración de cifrado se dé como
¿Dónde está el texto sin formato, es la clave de ronda secreta, es el texto cifrado para la iteración de cifrado de ronda?
Considere un cifrado de 2 rondas. Sea un mensaje y sea un texto cifrado, luego a la salida de la primera ronda obtenemos
Y a la salida de la 2da ronda:
Texto cifrado como un polinomio de las salidas de texto sin formato
donde es una clave que depende de una constante
Si usamos tantos pares de texto sin formato/texto cifrado como coeficientes desconocidos hay en el polinomio , entonces podemos construir un polinomio. Esto se puede hacer, por ejemplo, mediante la interpolación de Lagrange. Cuando se determinen los coeficientes desconocidos, tendremos una representación de encriptación , sin conocer la clave secreta .
Deje entrar un cifrado de bloque de bits, es decir, posibles textos sin formato, por lo tanto, diferentes pares de proporciones de texto sin formato a texto cifrado . Sean coeficientes desconocidos en . Necesitamos tantos pares como coeficientes desconocidos haya en el polinomio. Que. el ataque de interpolación existe solo para .
Suponga que el tiempo para construir un polinomio usando pares es corto en comparación con el tiempo que lleva cifrar los textos sin formato. Sean coeficientes desconocidos en . Entonces la complejidad de este ataque es , y se requieren diferencias conocidas de los pares .
A menudo, este método es efectivo. ¿Cómo trabaja?
Sea un cifrado redondo con longitud de bloque , sea la salida del cifrado después de las rondas . Expresaremos el valor como un polinomio de texto plano y como un polinomio de texto cifrado . Let expresa a través , y deja expresa a través . Obtendremos el polinomio calculando con anticipación y no usando fórmulas de cifrado repetidas antes de la ronda, incluido . Obtenemos el polinomio calculando hacia atrás y usando la fórmula de cifrado repetido antes de la ronda.
Así resulta que
y si ambos son polinomios y con pocos coeficientes, entonces podemos resolver la ecuación para coeficientes desconocidos.
Supongamos que se puede expresar en términos de coeficientes y se puede expresar en términos de coeficientes . Entonces necesitaríamos las diferencias conocidas de los pares para resolver la ecuación estableciéndola como una ecuación matricial. Sin embargo, esta ecuación matricial tiene solución hasta la multiplicación y la suma. Por lo tanto, para asegurarnos de obtener una solución única y distinta de cero, establecemos el coeficiente correspondiente a la potencia más alta en 1 y el término constante en cero. Por lo tanto, se requiere una diferencia conocida del par . Entonces, la complejidad de tiempo para este ataque es . El enfoque Meet-In-The-Middle generalmente tiene menos coeficientes que el método convencional. Esto hace que este método sea más eficiente ya que necesitamos menos pares de .
También podemos usar un ataque de interpolación para recuperar la clave secreta . Si eliminamos la última ronda , un nuevo cifrado de ronda con longitud de bloque , la salida del cifrado se convierte en . Resulta un cifrado con una complejidad de cifrado reducida. La idea es adivinar la clave de la última ronda, podemos descifrar una ronda para obtener el resultado del cifrado dado. Luego, para probar la conjetura, uno debe usar un ataque de interpolación en el cifrado reducido, ya sea de la manera habitual o usando el método Meet-In-The-Middle.
De la forma habitual, expresamos la salida del cifrado dado como un polinomio de texto sin formato . Resulta un polinomio . Entonces, si podemos expresar con coeficientes, usando las diferencias conocidas del par , podemos construir un polinomio. Para verificar la conjetura en la última ronda de la llave, uno tiene que verificar con un par adicional si cree que
entonces, con un alto grado de probabilidad, la suposición de la última ronda de la clave fue correcta. Si no, entonces se necesita hacer una conjetura clave más.
Con el método Meet-In-The-Middle, expresamos la salida redonda como un polinomio de texto sin formato y como un polinomio de salida de cifrado reducido . Deje que los polinomios se expresen en términos de y coeficientes, respectivamente. Entonces, con una diferencia conocida entre los pares, podemos encontrar los coeficientes. Para verificar la conjetura en la última ronda de la clave, verificamos con un par adicional si la igualdad
está satisfecho, entonces, con un alto grado de probabilidad, la suposición de la clave de la última ronda fue correcta. Si no, entonces hacemos otra suposición de la clave.
Una vez que hayamos encontrado la clave correcta de la última ronda, podemos continuar de la misma manera con las claves de ronda restantes.
Cuando hay una clave secreta de longitud , entonces hay diferentes claves. La probabilidad de que una clave elegida al azar sea correcta es . Por lo tanto, en promedio, se deben hacer conjeturas antes de encontrar la clave correcta. Que. el método convencional tiene una complejidad de tiempo promedio y requiere pares distintos conocidos , mientras que el método Meet-In-The-Middle tiene complejidad y requiere pares distintos conocidos .
El ataque Meet-in-the-Middle se puede usar en una variante para atacar S-boxes que usan una función inversa porque con un S-box de -bit, en . El cifrado en bloque SHARK utiliza una red SP con S-boxes . El cifrado es resistente al criptoanálisis diferencial y lineal después de un pequeño número de rondas. Sin embargo, fue descifrado en 1996 por Thomas Jacobsen y Lars Knudsen, quienes utilizaron un ataque de interpolación. Denota por SHARK una versión de SHARK con un tamaño de bloque de bits usando S-boxes de bits paralelos con el número de rondas . Jacobsen y Knudsen encontraron que hay un ataque de interpolación en SHARK (cifrado de bloque de 64 bits) usando textos sin formato casi elegidos y un ataque de interpolación en SHARK (cifrado de bloque de 128 bits) usando cerca de los textos sin formato elegidos.
Asimismo, Thomas Jacobsen presentó una variante probabilística del ataque de interpolación utilizando el algoritmo Madhu Sudan para mejorar la decodificación de códigos Reed-Solomon . Este ataque puede funcionar incluso si la relación algebraica entre textos sin formato y textos cifrados tiene solo una fracción de los significados.