Articulo de referencia

Ataque de interpolación

En criptografía , un ataque de interpolación es un tipo de ataque criptoanalítico contra cifrados por bloques . Tras la presentación de los dos ataques, el criptoanálisis difere...

En criptografía , un ataque de interpolación es un tipo de ataque criptoanalítico contra cifrados por bloques .

Tras la presentación de los dos ataques, el criptoanálisis diferencial y el criptoanálisis lineal , contra los cifrados de bloques, se introdujeron algunos nuevos cifrados de bloques que demostraron ser seguros frente a los ataques diferenciales y lineales. Entre ellos se encontraban algunos cifrados de bloques iterados, como el cifrado KN y el cifrado SHARK . Sin embargo, a finales de la década de 1990, Thomas Jakobsen y Lars Knudsen demostraron que estos cifrados eran fáciles de descifrar mediante un nuevo ataque denominado ataque de interpolación.

En el ataque, se utiliza una función algebraica para representar una caja S. Esta puede ser una función cuadrática simple , o una función polinómica o racional sobre un campo de Galois . Sus coeficientes se pueden determinar mediante técnicas estándar de interpolación de Lagrange , utilizando textos planos conocidos como puntos de datos. Alternativamente, se pueden usar textos planos seleccionados 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 plano. Si el polinomio tiene un número relativamente bajo de coeficientes desconocidos, entonces, con un conjunto de pares texto plano/texto cifrado (p/c), el polinomio puede reconstruirse. Una vez reconstruido el polinomio, el atacante obtiene una representación del cifrado, sin conocer con exactitud la clave secreta.

El ataque de interpolación también puede utilizarse para recuperar la clave secreta.

La forma más sencilla de describir el método es con un ejemplo.

Ejemplo

Sea un cifrado iterado dado por

doi=(doi1ki)3,{\displaystyle c_{i}=(c_{i-1}\oplus k_{i})^{3},}

dóndedo0{\displaystyle c_{0}}es el texto plano,doi{\displaystyle c_{i}}el resultado de laith{\displaystyle i^{th}}redondo,ki{\displaystyle k_{i}}el secretoith{\displaystyle i^{th}}llave redonda (derivada de la llave secreta)K{\displaystyle K}por algún cronograma clave ), y para unr{\displaystyle r}-cifrado iterado de ronda,dor{\displaystyle c_{r}}es el texto cifrado.

Consideremos el cifrado de 2 rondas. Seaincógnita{\displaystyle x}denotan el mensaje ydo{\displaystyle c}denota el texto cifrado.

Entonces, la salida de la ronda 1 se convierte en:

do1=(incógnita+k1)3=(incógnita2+k12)(incógnita+k1)=incógnita3+k12incógnita+incógnita2k1+k13,{\displaystyle c_{1}=(x+k_{1})^{3}=(x^{2}+k_{1}^{2})(x+k_{1})=x^{3}+k_{1}^{2}x+x^{2}k_{1}+k_{1}^{3},}

y el resultado de la ronda 2 se convierte en

do2=do=(do1+k2)3=(incógnita3+k12incógnita+incógnita2k1+k13+k2)3{\displaystyle c_{2}=c=(c_{1}+k_{2})^{3}=(x^{3}+k_{1}^{2}x+x^{2}k_{1}+k_{1}^{3}+k_{2})^{3}}
=incógnita9+incógnita8k1+incógnita6k2+incógnita4k12k2+incógnita3k22+incógnita2(k1k22+k14k2)+incógnita(k12k22+k18)+k13k22+k19+k23,{\displaystyle =x^{9}+x^{8}k_{1}+x^{6}k_{2}+x^{4}k_{1}^{2}k_{2}+x^{3}k_{2}^{2}+x^{2}(k_{1}k_{2}^{2}+k_{1}^{4}k_{2})+x(k_{1}^{2}k_{2}^{2}+k_{1}^{8})+k_{1}^{3}k_{2}^{2}+k_{1}^{9}+k_{2}^{3},}

Expresar el texto cifrado como un polinomio del texto plano produce

pag(incógnita)=a1incógnita9+a2incógnita8+a3incógnita6+a4incógnita4+a5incógnita3+a6incógnita2+a7incógnita+a8,{\displaystyle p(x)=a_{1}x^{9}+a_{2}x^{8}+a_{3}x^{6}+a_{4}x^{4}+a_{5}x^{3}+a_{6}x^{2}+a_{7}x+a_{8},}

donde elai{\displaystyle a_{i}}Las son constantes dependientes clave.

Utilizar tantos pares de texto plano/texto cifrado como el número de coeficientes desconocidos en el polinomio.pag(incógnita){\displaystyle p(x)}, entonces 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, entonces tenemos una representaciónpag(incógnita){\displaystyle p(x)}del cifrado, sin conocimiento de la clave secretaK{\displaystyle K}.

Existencia

Considerando unmetro{\displaystyle m}cifrado de bloques de bits, entonces hay2metro{\displaystyle 2^{m}}posibles textos planos y, por lo tanto,2metro{\displaystyle 2^{m}}distintopag/do{\displaystyle p/c}parejas. Que hayanorte{\displaystyle n}coeficientes desconocidos enpag(incógnita){\displaystyle p(x)}. Dado que requerimos tantospag/do{\displaystyle p/c}pares como el número de coeficientes desconocidos en el polinomio, entonces un ataque de interpolación existe solo sinorte2metro{\displaystyle n\leq 2^{m}}.

complejidad temporal

Supongamos que el tiempo para construir el polinomiopag(incógnita){\displaystyle p(x)}usandopag/do{\displaystyle p/c}Los pares son pequeños, en comparación con el tiempo necesario para cifrar los textos planos requeridos. Supongamos que haynorte{\displaystyle n}coeficientes desconocidos enpag(incógnita){\displaystyle p(x)}Entonces, la complejidad temporal para este ataque esnorte{\displaystyle n}, que requierenorte{\displaystyle n}conocido distintopag/do{\displaystyle p/c}pares.

Ataque de interpolación por Meet-In-The-Middle

A menudo, este método es más eficiente. Así es como se hace.

Dado unr{\displaystyle r}cifrado iterado de ronda con longitud de bloquemetro{\displaystyle m}, dejarz{\displaystyle z}sea ​​la salida del cifrado despuéss{\displaystyle s}rondas cons<r{\displaystyle s<r}Expresaremos el valor dez{\displaystyle z}como un polinomio del texto planoincógnita{\displaystyle x}y como un polinomio del texto cifradodo{\displaystyle c}. Dejargramo(incógnita)GRAMOF(2metro)[incógnita]{\displaystyle g(x)\in GF(2^{m})[x]}ser la expresión dez{\displaystyle z}a través deincógnita{\displaystyle x}y dejarh(do)GRAMOF(2metro)[do]{\displaystyle h(c)\in GF(2^{m})[c]}ser la expresión dez{\displaystyle z}a través dedo{\displaystyle c}. El polinomiogramo(incógnita){\displaystyle g(x)}se obtiene calculando hacia adelante usando la fórmula iterada del cifrado hasta la rondas{\displaystyle s}y el polinomio h(do){\displaystyle h(c)}se obtiene calculando hacia atrás a partir de la fórmula iterada del cifrado comenzando desde la rondar{\displaystyle r}hasta rondas+1{\displaystyle s+1}.

Por lo tanto, debería sostener que

gramo(incógnita)=h(do),{\displaystyle g(x)=h(c),}

y si ambosgramo{\displaystyle g}yh{\displaystyle h}Si los polinomios tienen un número bajo de coeficientes, podemos resolver la ecuación para hallar los coeficientes desconocidos.

complejidad temporal

Supongamos quegramo(incógnita){\displaystyle g(x)}puede expresarse porpag{\displaystyle p}coeficientes yh(do){\displaystyle h(c)}puede expresarse porq{\displaystyle q}coeficientes. Entonces necesitaríamospag+q{\displaystyle p+q}conocido distintopag/do{\displaystyle p/c}pares para resolver la ecuación planteándola como una ecuación matricial. Sin embargo, esta ecuación matricial es resoluble salvo una multiplicación y una suma. Por lo tanto, para asegurarnos de obtener 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 consiguiente,pag+q2{\displaystyle p+q-2} conocido distintopag/do{\displaystyle p/c}Se requieren pares. Por lo tanto, la complejidad temporal para este ataque espag+q2{\displaystyle p+q-2}, que requierepag+q2{\displaystyle p+q-2}conocido distintopag/do{\displaystyle p/c}pares.

Mediante el método Meet-In-The-Middle, el número total de coeficientes suele ser menor que con el método normal. Esto hace que el método sea más eficiente, ya que se utilizan menos coeficientes.pag/do{\displaystyle p/c} Se requieren parejas.

Recuperación de claves

También podemos utilizar el ataque de interpolación para recuperar la clave secreta.K{\displaystyle K}.

Si eliminamos la última ronda de unr{\displaystyle r}-cifrado iterado de ronda con longitud de bloquemetro{\displaystyle m}, la salida del cifrado se convierte eny~=dor1{\displaystyle {\tilde {y}}=c_{r-1}}Llamemos a este cifrado cifrado reducido. La idea es adivinar la clave de la última ronda.kr{\displaystyle k_{r}}, de tal manera que podamos descifrar una ronda para obtener la saliday~{\displaystyle {\tilde {y}}}del cifrado reducido. Luego, para verificar la suposición, utilizamos el ataque de interpolación sobre el cifrado reducido, ya sea mediante el método normal o mediante el método Meet-In-The-Middle. Así es como se hace.

Mediante el método normal expresamos la saliday~{\displaystyle {\tilde {y}}}del cifrado reducido como un polinomio del texto planoincógnita{\displaystyle x}. Llama al polinomiopag(incógnita)GRAMOF(2metro)[incógnita]{\displaystyle p(x)\in GF(2^{m})[x]}Entonces, si podemos expresarpag(incógnita){\displaystyle p(x)}connorte{\displaystyle n}coeficientes, luego usandonorte{\displaystyle n}conocido distintopag/do{\displaystyle p/c}pares, podemos construir el polinomio. Para verificar la suposición de la clave de la última ronda, luego verifique con uno adicionalpag/do{\displaystyle p/c}emparejar si se mantiene eso

pag(incógnita)=y~.{\displaystyle p(x)={\tilde {y}}.}

Si la respuesta es sí, entonces es muy probable que la adivinanza de la llave de la ronda anterior haya sido correcta. Si la respuesta es no, entonces vuelva a adivinar la llave.

Mediante el método Meet-In-The-Middle expresamos la salidaz{\displaystyle z}de rondas<r{\displaystyle s<r}como un polinomio del texto planoincógnita{\displaystyle x}y como un polinomio de la salida del cifrado reducidoy~{\displaystyle {\tilde {y}}}. Llama a los polinomiosgramo(incógnita){\displaystyle g(x)}yh(y~){\displaystyle h({\tilde {y}})}y que sean expresados ​​porpag{\displaystyle p}yq{\displaystyle q}coeficientes, respectivamente. Luego conq+pag2{\displaystyle q+p-2}conocido distintopag/do{\displaystyle p/c}pares podemos encontrar los coeficientes. Para verificar la suposición de la última ronda clave, luego verifique con uno adicionalpag/do{\displaystyle p/c}emparejar si se mantiene eso

gramo(incógnita)=h(y~).{\displaystyle g(x)=h({\tilde {y}}).}

Si la respuesta es sí, entonces es muy probable que la adivinanza de la llave de la ronda anterior haya sido correcta. Si la respuesta es no, entonces vuelva a adivinar la llave.

Una vez que hayamos encontrado la clave correcta de la última ronda, podremos continuar de manera similar con las claves de las rondas restantes.

complejidad temporal

Con una llave redonda secreta de longitudmetro{\displaystyle m}, entonces hay2metro{\displaystyle 2^{m}}diferentes claves. Cada una con probabilidad1/2metro{\displaystyle 1/2^{m}}ser correcto si se elige al azar. Por lo tanto, en promedio tendremos que hacer1/22metro{\displaystyle 1/2\cdot 2^{m}}adivinanzas antes de encontrar la llave correcta.

Por lo tanto, el método normal tiene una complejidad temporal promedio.2metro1(norte+1){\displaystyle 2^{m-1}(n+1)}, que requierenorte+1{\displaystyle n+1}conocido distintodo/pag{\displaystyle c/p}pares, y el método Meet-In-The-Middle tienen una complejidad temporal promedio.2metro1(pag+q1){\displaystyle 2^{m-1}(p+q-1)}, que requierepag+q1{\displaystyle p+q-1}conocido distintodo/pag{\displaystyle c/p}pares.

Aplicación en el mundo real

El ataque Meet-in-the-middle se puede utilizar en una variante para atacar S-boxes, que utiliza la función inversa, porque con unmetro{\displaystyle m}-bit S-box entoncesS:F(incógnita)=incógnita1=incógnita2metro2{\displaystyle S:f(x)=x^{-1}=x^{2^{m}-2}}enGRAMOF(2metro){\displaystyle GF(2^{m})}.

El cifrador de bloques SHARK utiliza una red SP con una caja S.S:F(incógnita)=incógnita1{\displaystyle S:f(x)=x^{-1}}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 Jakobsen y Lars Knudsen, utilizando un ataque de interpolación. Denominado SHARK.(norte,metro,r){\displaystyle (n,m,r)}una versión de SHARK con tamaño de bloquenortemetro{\displaystyle nm}bits usandonorte{\displaystyle n} paralelometro{\displaystyle m}Cajas S de -bit enr{\displaystyle r}rondas. Jakobsen y Knudsen descubrieron que existe un ataque de interpolación en SHARK.(8,8,4){\displaystyle (8,8,4)}(cifrado de bloques de 64 bits) usando aproximadamente221{\displaystyle 2^{21}}textos planos seleccionados y un ataque de interpolación en SHARK(8,16,7){\displaystyle (8,16,7)}(cifrado de bloques de 128 bits) usando aproximadamente261{\displaystyle 2^{61}}textos planos seleccionados.

Asimismo, Thomas Jakobsen introdujo una versión probabilística del ataque de interpolación utilizando el algoritmo de Madhu Sudan para mejorar la decodificación de los códigos Reed-Solomon . Este ataque puede funcionar incluso cuando la relación algebraica entre los textos planos y los textos cifrados solo se cumple para una fracción de los valores.

Referencias

  • Thomas Jakobsen , Lars Knudsen (enero de 1997). El ataque de interpolación a los cifrados de bloques ( PDF / PostScript ) . 4.º Taller Internacional sobre Cifrado Rápido de Software (FSE '97), LNCS 1267. Haifa : Springer-Verlag . págs. 28-40 . Consultado el 3 de julio de 2007 . 
  • Thomas Jakobsen (25 de agosto de 1998). Criptoanálisis de cifrados de bloques con relaciones no lineales probabilísticas de bajo grado (PDF/PostScript) . Avances en criptología CRYPTO '98. Santa Bárbara, California : Springer-Verlag. págs. 212–222 . Consultado el 6 de julio de 2007 . ( Vídeo de la presentación en Google Video utiliza Flash )
  • Shiho Moriai; Takeshi Shimoyama; Toshinobu Kaneko (marzo de 1999). Ataques de interpolación del cifrado por bloques: SNAKE (PDF) . FSE '99. Roma: Springer-Verlag. págs. 275–289 . doi : 10.1007/3-540-48519-8_20 . Consultado el 6 de noviembre de 2022 . 
  • Amr M. Youssef; Guang Gong (abril de 2000). Sobre los ataques de interpolación a los cifrados de bloques (PDF) . FSE 2000. Ciudad de Nueva York : Springer-Verlag. págs. 109–120 . Recuperado el 6 de julio de 2007 . 
  • Kaoru Kurosawa; Tetsu Iwata; Viet Duong Quang (agosto de 2000). Ataque de interpolación para la búsqueda de raíces (PDF/PostScript) . Actas del 7.º Taller Internacional Anual sobre Áreas Seleccionadas en Criptografía (SAC 2000). Waterloo, Ontario : Springer-Verlag. págs. 303–314 . Consultado el 6 de julio de 2007 .