Sam Greydanus, un físico que investiga sobre aprendizaje profundo (deep learning) y neurociencia explica cómo se puede crear una red neuronal recursiva (RNN) para descifrar mensajes cifrados por la famosa máquina Enigma que utilizaron los alemanes durante la Segunda Guerra Mundial.
Durante la Segunda Guerra Mundial el criptoanálisis de la máquina Enigma fue una auténtica proeza casi sobrehumana que requirió el trabajo de las mejores mentes de la época, como la de Alan Turing. Miles de matemáticos, criptólogos e ingenieros que resolvieron el problema y de paso crearon los que fueron los precursores de los ordenadores actuales. Todo ello está contado en Codebreakers: The Inside Story of Bletchley Park y muchos otros libros y películas. Es interesante que en el Siglo XXI esa tarea sea prácticamente un proyecto de «hacking casero» que se puede completar en un fin de semana, lo cual nos da una idea de cómo han avanzado los tiempos.
Con la llegada del aprendizaje automático todo esto está cambiando nuevamente. El criptoanálisis clásico resulta anacrónico; de hecho toda la complejidad de la máquina Enigma con sus rotores y claves secretas pasa a un segundo plano. Tal y como explica Greydanus en Decoding the Enigma with Recurrent Neural Networks simplemente se aplica la regla criptográfica de la «caja negra», según la cual da igual saber cómo funciona el algoritmo original si una simulación creada por el criptólogo puede obtener los mismos datos de salida para los mismos datos de entrada. En la práctica, de hecho, ni siquiera es necesario que esto funcione el 100% de las veces.
Para afinar el modelo primero se generaron textos de prueba con un simulador de Enigma para alimentar a la red neuronal recursiva con equivalencias del tipo texto cifrado de salida = f(texto de entrada). La RNN funcionaba sobre una GPU k40 y mostró resultados llegando hasta un millón de pasos con 3.000 unidades de LSTM («gran memoria de corto plazo»). El resultado fue que este modelo puede descifrar correctamente mensajes con un 96% de precisión. El código está en Github: crypto-rnn.
Lo relevante del asunto es que el modelo lo hace solo a partir de datos de entrada y de salida: no necesita saber cómo funciona la máquina internamente y –lo cual es también muy interesante– no hace falta que esos textos sean reales o tengan sentido. (Normalmente los criptógrafos buscan patrones y frecuencias en los textos originales para utilizarlos en el descifrado.) Vuelve a repetirse aquí esa idea de que las inteligencias artificiales se comportan como tales pero ni ellas ni muchas veces sus creadores sabemos muy bien qué están haciendo.
Tal y como añade al final, el Santo Grial de esta idea sería descifrar contenidos cifrados con el algoritmo RSA. La máquina Enigma es un buen reto, pero ya no se usa ni sirve para nada práctico. RSA en cambio sigue siendo el método por el que nos comunicamos por Internet de forma segura y también el que usamos para las transacciones y el comercio electrónico.
Por desgracia (o por suerte) el problema criptográfico del RSA es que emplea operaciones matemáticas diseñadas específicamente para ser difíciles de resolver, algo que probablemente queda fuera del alcance incluso de estas redes neuronales. En otras palabras: estaríamos pidiendo a la máquina que descubriera cómo factorizar números pseudoprimos sumamente grandes, algo que sabemos que es difícil y ha escapado del análisis de los matemáticos durante décadas.