Múltiples mensajes cifrados que se sabe que tienen contenido coincidente (desconocido)

3

Una discusión reciente sobre las formas de mantener la seguridad de los datos a través de múltiples iteraciones de la ejecución de un programa (con repetidas operaciones de lectura / escritura) planteó una pregunta con respecto a los ataques de texto plano conocido a los que me gustaría tener una respuesta sólida.

Si tengo varios textos cifrados, y sé que todos se produjeron a partir del mismo texto simple usando el mismo método de cifrado (desconocido) pero diferentes claves (desconocidas), ¿puedo averiguar qué algoritmo y / o clave se usó?

El argumento era que si el método de encriptación es bueno, debería haber tan poca correlación entre la carga útil encriptada y el contenido del mensaje como sea posible, por lo que incluso con copias múltiples, debería ser prácticamente indistinguible de los datos aleatorios. Mi contra argumento es que es poco probable que cualquier algoritmo del mundo real sea 100% perfecto, por lo que probablemente no tendrá la posibilidad ideal de 50/50 para un 1 o 0 en cualquier bit dado, y con suficientes textos cifrados que sabiendo que son del mismo texto simple, comenzarás a ver algunas correlaciones entre ellos que puedes usar para deducir cosas sobre cómo funciona el cifrado y / o qué contenido se esconde detrás de él.

Suponiendo que

  • el algoritmo es realmente cifrado, no hash; es decir, es bidireccional y está destinado a ser descifrado en algún momento
  • el sistema genera claves de cifrado de manera suficientemente aleatoria para ser esencialmente impredecible
  • El atacante no tiene acceso a las claves de cifrado, solo el mensaje cifrado
  • el atacante puede obtener tantas versiones diferentes del mensaje como desee, cada una encriptada con una clave diferente

¿es posible averiguar cómo funciona el cifrado y, por lo tanto, revertirlo para obtener el texto sin formato original?

    
pregunta anaximander 27.08.2013 - 16:48
fuente

2 respuestas

2

Si el sistema de cifrado es bueno, incluso darse cuenta de que dos mensajes cifrados con claves distintas son, de hecho, idénticos, se consideraría una "interrupción". Un algoritmo de cifrado tiene un "nivel de seguridad" expresado en bits; cuando el nivel de seguridad es k , esto significa que el esfuerzo computacional para promulgar una "interrupción" debe estar en la cantidad de 2 k-1 invocación de la función de cifrado subyacente (para ser precisos, la probabilidad de éxito debe ser e*2-k donde e es el esfuerzo, por lo que e = 2 k-1 implica un 50% de probabilidad de éxito para el atacante).

Por ejemplo, si usa AES con una clave de 128 bits, entonces se supone que debe lograr un "128- bit "nivel de seguridad. Esto significa que si el atacante está listo para invertir suficiente poder de CPU para calcular, digamos, 270 invocaciones de AES, entonces tiene probabilidad de 2 -58 , también conocido como "1 en 288230376151711744", para tener éxito. 270 Las invocaciones AES son un esfuerzo sustancial; una buena CPU de varios núcleos puede producir aproximadamente 230 invocaciones AES por segundo, por lo que estamos hablando de diez mil PC grandes en funcionamiento durante ... tres años. Y esto logra una tasa de éxito considerablemente más baja que ganar millones de dólares en la lotería.

Lo que cuenta como una pausa es cualquier cosa que hace que el sistema se aparte de su modelo teórico, es decir, una permutación pseudorandom : usando el cifrado con una clave dada es similar a la selección de una permutación en el espacio de mensajes, y una nueva clave debe significar una nueva selección aleatoria, independientemente de la anterior. Al darse cuenta de que dos mensajes cifrados, con dos claves distintas, proceden del mismo mensaje de texto sin formato, sería una interrupción, y el mejor método de ataque debería ser el genérico, es decir, probar todas las claves posibles hasta que se encuentre una coincidencia. Este método produce las probabilidades explicadas anteriormente, es decir, "no funciona de manera realista".

En este momento, no se conoce tal método de ruptura para AES.

Cuidado con el pensamiento anticuado. Parece que usa nociones de "correlación" y "método desconocido" que eran adecuados hace unos cincuenta años, pero la investigación criptográfica ha avanzado un poco desde entonces. En particular:

  • Ahora somos muy estrictos con las fugas de información aceptables (sus "correlaciones"), es decir, no aceptamos ninguna. Y, sin embargo, tenemos algoritmos candidatos (por ejemplo, AES) que parecen alcanzar este alto nivel de calidad.

  • Los métodos de cifrado se han dividido en un algoritmo y una clave . El "algoritmo" es lo que se convierte en código. Se supone que el algoritmo es público, porque todo el secreto se concentra en la clave; al menos, no debería haber ningún daño en la publicación del algoritmo, si es bueno, y sería muy difícil prevenir dicha publicación de todos modos. Consulte esta respuesta para obtener más información.

Por supuesto, si el algoritmo fue usado descuidadamente, entonces todo vale. Un algoritmo central como AES es solo un ladrillo elemental; Procesa bloques de 16 bytes. Para cifrar un mensaje (una secuencia de bytes posiblemente larga), debe usar el cifrado de bloque con un modo de operación , que es una cuestión de sutileza y se puede hacer de forma deficiente, lo suficientemente deficiente como para implicar una pérdida total de seguridad.

También puede haber ataques de canal lateral explotando las filtraciones de información a través del comportamiento de la implementación de cifrado, por ejemplo. a través de sincronización . Por ejemplo, muchas implementaciones de AES utilizan tablas en memoria, lo que implica accesos a la memoria dependientes de los datos y dependientes de la clave, por lo tanto comportamiento de caché; En condiciones de laboratorio, esto a veces ha sido explotado para extraer la clave. Esto no es un ataque contra el algoritmo sino contra su implementación . La conclusión es que la implementación de algoritmos criptográficos es una tarea difícil.

Todo lo anterior se refiere al cifrado simétrico, pero se puede aplicar el mismo tipo de razonamiento al cifrado asimétrico , p. ej. con RSA. Una clave RSA de 2048 bits, generada y utilizada correctamente, debería ofrecer un nivel de seguridad de aproximadamente 112 bits, que es más que suficiente.

    
respondido por el Thomas Pornin 27.08.2013 - 17:22
fuente
0

La respuesta simple es no. La criptografía fuerte es realmente fuerte si se usa correctamente. Para los cifrados en bloque, mucho dependerá del modo de operación. El modo controla qué entradas se utilizan para cada bloque. El cifrado es determinista por lo que, dada la misma entrada, siempre producirá la misma salida, sin embargo, con un uso inteligente de IV aleatorio y el encadenamiento de bloques es posible producir mensajes indistinguibles.

enlace

Un modo temprano y simplista fue el BCE y generalmente ya no se usa porque los mensajes son distinguibles. Cifrar "hola mundo" para una clave dada siempre producirá exactamente la misma salida. Sin embargo, incluso con BCE dado un número arbitrario de mensajes de texto sin formato y texto cifrado, el atacante no puede obtener la clave más rápido que la fuerza bruta.

Los modos de bloque posteriores y más fuertes hacen que el mensaje sea menos probable que sea distinguible. Ahora la clave se "usa correctamente". La IV no debe repetirse para una clave y un texto simple dados. Si se repite en algunos modos de bloque, esto solo hace que el mensaje sea distinguible, pero en CTR, por ejemplo, reutilizar el mismo IV con la misma clave dará como resultado un compromiso del sistema.

La respuesta simple es que los primitivos criptográficos de la criptografía moderna son bien entendidos, revisados por expertos y sujetos a un criptoanálisis extenso. Es muy poco probable que se comprometan de la noche a la mañana. Por otro lado, la implementación defectuosa puede dar como resultado sistemas fallidos.

    
respondido por el Gerald Davis 01.07.2015 - 02:55
fuente

Lea otras preguntas en las etiquetas