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.