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] .
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 .
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:
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.
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 .
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 .
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.
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] .
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:
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:
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] .
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 ataqueCada 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:
Esto hizo posible dividir los bits clave en los siguientes grupos:
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 clavesPara 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.
ResultadosSin 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.
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.
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:
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] .
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.