Reunión en el método del medio

En criptoanálisis , el método de encuentro en el medio o el “ ataque de encuentro en el medio ” es una  clase de ataques a algoritmos criptográficos que reducen asintóticamente el tiempo de una enumeración completa debido al principio de “ divide y vencerás ”. , además de aumentar la cantidad de memoria necesaria . Este método fue propuesto por primera vez por Whitfield Diffie y Martin Hellman en 1977 [1] .

Condiciones iniciales

Se dan los textos abiertos (sin cifrar) y cifrados . Un criptosistema consta de ciclos de cifrado . Las claves cíclicas son independientes y no comparten bits comunes. La clave del sistema es una combinación de claves cíclicas . La tarea es encontrar la llave .

Solución de caso simple

Un ejemplo simple es el cifrado de bloque secuencial doble con dos claves diferentes y . El proceso de cifrado se ve así:

,

donde  está el texto sin formato,  es el texto cifrado y  es la operación de cifrado de una sola vez con la clave . En consecuencia, la operación inversa, el descifrado, se ve así:

A primera vista, parece que el uso de doble cifrado aumenta considerablemente la seguridad de todo el esquema, ya que ahora se deben clasificar dos claves y no una. En el caso del algoritmo DES , la seguridad aumenta de a . Sin embargo, no lo es. Un atacante puede crear dos tablas:

  1. Todos los valores para todos los valores posibles ,
  2. Todos los valores para todos los valores posibles .

Entonces solo necesita encontrar coincidencias en estas tablas, es decir, tales valores y , que . Cada coincidencia corresponde a un conjunto de claves que satisface la condición.

Este ataque requirió operaciones de cifrado y descifrado (solo el doble que para la enumeración de una clave) y memoria. Optimizaciones adicionales: uso de tablas hash , cálculos para solo la mitad de las claves (para DES , la búsqueda exhaustiva, de hecho, solo requiere operaciones), pueden reducir estos requisitos. El resultado principal del ataque es que el cifrado secuencial de dos claves solo duplica el tiempo de fuerza bruta.

Solución general

Denotemos la transformación del algoritmo como , donde es el texto sin formato y es el texto cifrado. Se puede representar como una composición , donde  hay una transformación cíclica en la clave . Cada clave es un vector de longitud binario y la clave pública del sistema es un vector de longitud .

Llenando la memoria

Todos los valores están ordenados , es decir, las primeras claves cíclicas. En cada una de esas claves, encriptamos el texto sin formato  ( es decir, pasamos por ciclos de encriptación en lugar de ). Lo consideraremos como una determinada dirección de memoria y escribiremos el valor en esta dirección . Es necesario iterar sobre todos los valores .

Definición clave

Todos los posibles están resueltos . En las claves recibidas , el texto cifrado se descifra  . Si la dirección no está vacía, obtenemos la clave de allí y obtenemos un candidato clave .

Sin embargo, debe tenerse en cuenta que el primer candidato recibido no es necesariamente la verdadera clave. Sí, para data y , pero en otros valores del texto cifrado de texto sin formato obtenido de la clave verdadera, se puede violar la igualdad. Todo depende de las características específicas del criptosistema . Pero a veces es suficiente obtener una clave "pseudoequivalente". En caso contrario, tras la realización de los trámites, se obtendrá un determinado conjunto de claves , entre las que se encuentra la clave verdadera.

Si consideramos una aplicación específica, entonces el texto cifrado y el texto sin formato pueden ser grandes (por ejemplo, archivos gráficos) y representar una cantidad suficientemente grande de bloques para un cifrado de bloque . En este caso, para acelerar el proceso, puede cifrar y descifrar no todo el texto, sino solo su primer bloque (que es mucho más rápido) y luego, habiendo recibido muchos candidatos, busque la clave verdadera en él, verificándolo en los bloques restantes.

Ataque con la división de la secuencia de teclas en 3 partes

En algunos casos, puede ser difícil separar los bits de una secuencia de teclas en partes relacionadas con diferentes claves. En este caso, se utiliza el algoritmo de ataque MITM de 3 subconjuntos propuesto por Bogdanov y Richberger en 2011 basado en el método habitual de reunión en el medio. Este algoritmo es aplicable cuando no es posible dividir las secuencias de bits clave en dos partes independientes. Consta de dos fases: extracción y verificación de claves [2] .

Fase de extracción de claves

Al comienzo de esta fase, el cifrado se divide en 2 subcifrados y , como en el caso general del ataque, sin embargo, permite el posible uso de algunos bits de un subcifrado en otro. Entonces, si , entonces ; en este caso, los bits de la clave utilizados en se denotarán por , y en  — por . Entonces la secuencia de teclas se puede dividir en 3 partes:

  1.  es la intersección de los conjuntos y ,
  2.  - bits clave que solo están en ,
  3.  - bits de clave que solo están en .

A continuación, se lleva a cabo un ataque por el método de reunión en el medio de acuerdo con el siguiente algoritmo:

  1. Calcule el valor intermedio , donde  está el texto sin formato, y  son algunos bits clave de y , es decir,  es el resultado del cifrado intermedio del texto sin formato en la clave .
  2. Calcule el valor intermedio , donde  está el texto privado, y  son algunos bits de clave de y , es decir,  es el resultado del descifrado intermedio del texto privado en la clave .
  3. Compara y . En caso de coincidencia, obtenemos un candidato para las claves.

Fase de validación de claves

Para verificar las claves, los candidatos recibidos se comparan con varios pares de textos público-privados conocidos. Por lo general, no se requiere una gran cantidad de tales pares de textos para la verificación [2] .

Ejemplo

Como ejemplo, tomemos un ataque a la familia de cifrado KTANTAN [3] , que hizo posible reducir la complejidad computacional de obtener una clave de (ataque de fuerza bruta) a [1] .

Preparando un ataque

Cada una de las 254 rondas de cifrado que utilizan KTANTAN utiliza 2 bits aleatorios de la clave de un conjunto de 80 bits. Esto hace que la complejidad del algoritmo dependa únicamente del número de rondas. Al comenzar el ataque, los autores notaron las siguientes características:

  • En las rondas 1 a 111, no se utilizaron los siguientes bits de clave: .
  • En las rondas 131 a 254, no se utilizaron los siguientes bits de clave: .

Esto hizo posible dividir los bits clave en los siguientes grupos:

  1.  - bits de clave comunes: aquellos 68 bits no mencionados anteriormente.
  2.  - bits utilizados solo en el primer bloque de rondas (del 1 al 111),
  3.  - bits utilizados solo en el segundo bloque de rondas (del 131 al 254).
Fase uno: Extracción de claves

Hubo un problema al calcular los valores de y descritos anteriormente , ya que faltan las rondas de 112 a 130 en la consideración, pero luego se realizó una comparación parcial : los autores del ataque notaron una coincidencia de 8 bits en y , controlándolos con un ataque normal usando el método de reunión en el medio en la ronda 127. Al respecto, en esta fase se compararon los valores de estos 8 bits en los subcifrados y . Esto aumentó el número de candidatos clave, pero no la complejidad computacional.

Segunda fase: verificación de claves

Para probar candidatos clave para el algoritmo KTANTAN32, se necesitó un promedio de dos pares de texto público-privado más para extraer la clave.

Resultados
  • KTANTAN32: complejidad computacional de adivinación de claves reducida al uso de tres pares de texto público-privado.
  • KTANTAN48: Complejidad computacional de adivinación de claves reducida al uso de dos pares de texto público-privado.
  • KTANTAN64: Complejidad computacional de adivinación de claves reducida al uso de dos pares de texto público-privado.

Sin embargo, este no es el mejor ataque a la familia de cifrado KTANTAN. En 2011, se realizó un ataque [4] que redujo la complejidad computacional del algoritmo al uso de cuatro pares de texto abierto-cerrado.

Ataque a un grafo bipartito completo

El ataque de gráfico bipartito completo se utiliza para aumentar el número de intentos de ataque de proxy mediante la creación de un gráfico bipartito completo . Propuesto por Diffie y Hellman en 1977.

Algoritmo multivariante

El algoritmo multidimensional de reunión en el medio se usa cuando se usa una gran cantidad de ciclos de cifrado con diferentes claves en cifrados de bloque . En lugar de la habitual "reunión en el medio", este algoritmo utiliza la división del criptotexto por varios puntos intermedios [5] .

Se supone que el texto atacado se cifra un cierto número de veces con un cifrado de bloque:

Algoritmo

  • Calculado:
  se almacena junto con d .   se almacena junto con d .
  • Para cada estado intermedio posible , calcule:
  para cada coincidencia con un elemento de a , y se almacenan .   guardado con en .
  • Para cada estado intermedio posible , calcule:
  para cada coincidencia con un elemento de , se comprueba una coincidencia con , después de lo cual y se almacenan en .   guardado con en .
  • Para cada estado intermedio posible , calcule:
  y para cada coincidencia con un elemento de , se verifica una coincidencia con , después de lo cual y se almacenan en .   y por cada coincidencia con , una coincidencia con

A continuación, la secuencia de candidatos encontrada se prueba en otro par de texto público-privado para confirmar la validez de las claves. Cabe señalar que el algoritmo es recursivo: la selección de claves para el estado se basa en los resultados para el estado . Esto introduce un elemento de complejidad exponencial en este algoritmo [5] .

Dificultad

La complejidad temporal de este ataque es

Hablando de uso de memoria, es fácil ver que a medida que aumenta cada uno , se imponen más y más restricciones, lo que reduce la cantidad de candidatos escritos en él. Esto significa mucho menos .

El límite superior de la cantidad de memoria utilizada:

donde  es la longitud total de la clave.

La complejidad de usar los datos depende de la probabilidad de "pasar" una clave falsa. Esta probabilidad es igual a , donde  es la longitud del primer estado intermedio, que suele ser igual al tamaño del bloque. Dado el número de candidatos clave después de la primera fase, la complejidad es .

Como resultado, obtenemos , donde  es el tamaño del bloque.

Cada vez que se prueba una secuencia de clave candidata en un nuevo par de texto público-privado, el número de claves que pasan la prueba se multiplica por la probabilidad de pasar la clave, que es .

Parte del ataque de fuerza bruta (comprobación de claves con nuevos pares de texto público-privado) tiene complejidad temporal , en la que, obviamente, los términos subsiguientes tienden a cero cada vez más rápido.

Como resultado, la complejidad de los datos por juicios similares se limita a aproximadamente pares de claves públicas y privadas.

Notas

  1. 12 Diffie , Whitfield; Hellman, Martin E. Criptoanálisis exhaustivo del estándar de cifrado de datos NBS  (inglés)  // Computadora: revista. - 1977. - junio ( vol. 10 , no. 6 ). - Pág. 74-84 . -doi : 10.1109/ CM.1977.217750 . Archivado desde el original el 14 de mayo de 2009.
  2. 1 2 Andrey Bogdanov y Christian Rechberger. "A 3-Subset Meet-in-the-Middle Attack: Cryptoanalysis of the Lightweight Block Cipher KTANTAN" Archivado el 7 de noviembre de 2018 en Wayback Machine .
  3. Christophe De Cannière, Orr Dunkelman, Miroslav Knežević. "KATAN & KTANTAN - A Family of Small and Efficient Hardware-Oriented Block Ciphers" Archivado el 20 de abril de 2018 en Wayback Machine .
  4. Lei Wei, Christian Rechberger, Jian Guo, Hongjun Wu, Huaxiong Wang y San Ling. "Cryptoanálisis mejorado de reunión en el medio de KTANTAN" Archivado el 7 de noviembre de 2018 en Wayback Machine .
  5. 1 2 3 Zhu, Bo; Guan Gong. Ataque MD-MITM y sus aplicaciones a GOST, KTANTAN y Hummingbird-2  (inglés)  // eCrypt: revista. — 2011.

Literatura