Para los "algoritmos criptográficos simétricos" (cifrado simétrico, MAC ...), las cosas son simples: un algoritmo criptográfico no roto es tal que usa una tecla n -bit, y la más rápida El método para encontrar la clave es probar todas las claves posibles hasta encontrar la correcta (lo que se denomina búsqueda exhaustiva o fuerza bruta ). El algoritmo se dice "no roto" precisamente porque no se conoce un método más rápido que la búsqueda exhaustiva. Con una búsqueda exhaustiva y una tecla n -bit, el número promedio de intentos antes de presionar la tecla correcta es 2 n -1 . Así que simplemente multiplique ese número por el tiempo que le toma probar una tecla y tendrá el tiempo de ataque completo. La búsqueda exhaustiva es un problema embarazosamente paralelo , lo que significa que con el doble de computadoras encuentras la solución el doble de rápida.
El esfuerzo de probar una tecla depende del algoritmo y del contexto. Por ejemplo, para el cifrado con un cifrado de bloque, generalmente es suficiente descifrar un bloque (algo que se realiza dentro de unas pocas docenas o cientos de ciclos de reloj en una CPU) para ver si el bloque descifrado correspondiente es plausible o no (por ejemplo, usted sabe el texto simple). es un archivo XML y busca el encabezado XML en el primer bloque). Al intentar romper un MAC, debe volver a calcularlo para cada clave, lo que puede ser costoso si el MAC original se computó, por ejemplo, en un archivo de 50 MB.
La búsqueda exhaustiva es el ataque de elección en algoritmos simétricos, donde las claves son solo un montón de bits, y cualquier secuencia de bits del tamaño correcto es un posible valor clave. Esto no es así para los algoritmos asimétricos como RSA y ECDSA, donde las claves tienen una gran cantidad de estructura matemática interna, y romper la clave significa desentrañar esa estructura, que normalmente se puede hacer mucho más rápido que intentar todas las secuencias de bits. Dado que las matemáticas están involucradas, las cosas son bastante complejas. Consulte este sitio para conocer los costos estimados. Tenga en cuenta que se trata de cost , no solo de time : dependiendo del tipo de cosa que está tratando de hacer, puede necesitar mucha CPU y mucha memoria RAM muy rápida.
Los criptosistemas previos a la computadora, como Vigenere y su tipo, son invariablemente débiles y se pueden romper en una fracción de segundo. Básicamente, todos los sistemas que eran prácticos (un operador humano podría ejecutarlos sin pasar un día entero para encriptar una oración simple) también se podían romper con la capacidad mental de algunas personas especializadas ( se rumoreó que Edgar Allan Poe es extremadamente bueno en este tipo de tarea). Lo que un cerebro humano podría hacer en un día en el siglo XIX, ahora es factible en menos de un segundo con una computadora. Y sí, el análisis de frecuencia y todas las interrupciones se pueden automatizar completamente (un buen ejercicio de programación, pero nada conceptual).
Hablando de Poe, lee esto . Este es Poe explicando (a través de un cuento) cómo romper un cifrado de sustitución, en toda su gloria analítica; escribir todos los pasos como un programa de computadora es una mera traducción de la prosa de Poe a la aridez de la sintaxis de un lenguaje de programación.