Hay dos métodos básicos para descifrar Enigma:
1) Ataque de texto sin formato conocido (o adivinado). El método fue desarrollado por Alan Turing y otros en 1940, basándose en trabajos anteriores de matemáticos polacos. Se realizó con el famoso Turing Bombe.
Para un sistema Enigma de 3 rotores (Army & Luftwaffe), tomó 20 minutos x 60 posibles selecciones de 3 rotores de 5. Sin embargo, tenía algunas limitaciones (como fallar cuando hubo un escalón del rotor central en el medio del texto simple adivinado).
- ¿Es internet peligroso / dañino?
- ¿Por qué la gente va a la universidad y compra libros de texto? ¿No puedo leerlo en internet?
- Si Reddit, Twitter, Facebook, Myspace, Quora y YouTube fueran personas, ¿cómo serían y cómo sería conocerlos?
- En la era de Internet, ¿vale la pena ir a la universidad?
- ¿La gente podría comprar y vender libros electrónicos sin neutralidad de la red?
Para un sistema Enigma de 4 rotores (Marina), el tiempo requerido fue de aproximadamente 2 órdenes de magnitud más (aunque Estados Unidos ayudó y produjo rápidas bombas de 4 rotores).
Un simulador de software del Turing Bombe, que escribí en Java, lleva unas pocas decenas de segundos para una carrera de 3 rotores. Y un par de horas para el 4 rotores (en una PC con 4 núcleos).
Pero la principal limitación es que necesita saber / adivinar alguna parte de los mensajes. Los británicos fueron muy buenos durante la guerra.
2) El método más general es para el caso en el que no se conoce texto sin formato: ataque solo de texto cifrado. Se basa en un algoritmo de escalada, desarrollado en 1995 y perfeccionado unos años más tarde. Implementé una versión mejorada de este algoritmo en Java en una PC, y toma alrededor de un día completo para un mensaje de 3 rotores, para una sola ronda de todas las configuraciones posibles del rotor. El problema con este algoritmo es que se pueden necesitar varias rondas para un mensaje con <100 letras y letras confusas.
Para el mensaje de 4 rotores, estamos hablando de al menos 100 veces este número. Es por eso que el Proyecto de ruptura de mensajes M4 distribuido M4 se lanzó en 2006, para descifrar un par de mensajes históricos sin resolver. Dos de ellos se resolvieron en unos pocos meses, utilizando miles de PC que realizan el algoritmo en tiempo de inactividad, cada uno cubriendo una cierta parte del espacio de teclas.