miércoles, 9 de febrero de 2011

(¿Me guarda un secreto?) El funcionamiento de la máquina Enigma.


Slbñvhrvnglwvolñzhvcgizml...

¿Cómo? ¿Que no entiende una palabra? ¡Ah, le ruego me disculpe! Decía que hoy me siento de lo más extraño... Sí. Gyjivivdhjeiñdknhvi. Vaya. ¿Lo he vuelto a hacer? ¡Disculpe de nuevo! No volverá a suceder (creo). Decía, que me siento un poco criptográfico hoy.

Verá usted, los dos mensajes anteriores son, más o menos, fácilmente descifrables. El primero de ellos sigue una regla monoalfabética: debe sustituirse cada letra por su posición simétrica en el abecedario (A=Z, B=Y, etc.). ¿Querría, querido lector, encontrar la relación criptográfica del segundo mensaje?

Mientras trata de solucionarlo, hoy me gustaría contarle la historia de la máquina Enigma, un aparato que cambió el curso de la historia, y tratar de entender su funcionamiento. ¿Le parece si empezamos?

Desde tiempos inmemoriales, y con mejor o peor fortuna, el hombre ha tratado de ocultar a los demás sus pensamientos e intenciones. A Leonardo, por ejemplo, le bastaba con escribir al revés para ahuyentar a todo curioso que pudiera mostrar interés en cualquier estudio peliagudo. Posiblemente, incluso, podamos encontrar códigos similares en una gran variedad de textos religiosos que estuvieran orientados a mejorar su memorización y posterior reproducción si en un momento dado había que salir corriendo.

Como decimos, con el paso de los siglos, la intención de mantener secretos permanece inalterada: lo único que cambia es la sofisticación del proceso. Sin embargo, como decía Franklin, tres personas son capaces de guardar un secreto únicamente si dos de ellas han muerto. Y si además (añado), la persona que queda viva es capaz de mantener la boca cerrada.

Durante la Gran Guerra (ya que por aquel entonces sus participantes no sabían que sus nietos la llamarían Primera Guerra Mundial), la ruptura del secreto de las comunicaciones fue vital para que los británicos terminaran de controlar la contienda desde el mismo centro del tablero. Irritado, Arthur Scherbius, un ingeniero eléctrico alemán, se propuso construir una máquina portátil y robusta que además resultara indescifrable. Meses después, una enorme caja repleta de engranajes vio la luz. Su nombre era Enigma. Si los cálculos de Scherbius eran correctos, sería extraordinariamente complicado descubrir caulquier mensaje que se enviara mediante el mecanismo que había inventado. Sin embargo, en la Europa de la posguerra, ni las empresas ni el ejército mostraron ningún interés por adquirir modelo alguno de su patente.

Y esta es, posiblemente, la razón por la cual uno solo puede hacerse rico vendiendo paraguas cuando está lloviendo, aunque este no es el tema que nos ocupa hoy. Pero entonces, ¿cómo funcionaba Enigma?

Comenzamos el post con un mensaje cifrado que podía averiguarse relacionando cada letra con otra letra del alfabeto. En nuestro caso, siempre la misma. Así, por ejemplo, la "C" equivale a la "X", o la "K" equivale a la "P". Para solucionar un mensaje cifrado de esta manera, debemos encontrar similitudes dentro del mismo (evidentemente, cuantos más elementos tenga, mejor). Trataremos de buscar cadenas que se repitan ("de", "el", "la"), formulismos que aparezcan al inicio o al final de la cadena ("hola", "saludos", o en el caso de alemania durante la guerra, "HH"), e identificar aquellas letras que sean más comunes, dependiendo del idioma.

Para complicar más el sistema, se nos puede ocurrir pensar lo siguiente: ¿Y si la equivalencia de las letras fuera variando? Por ejemplo, la letra "A" puede equivaler, la primera vez que la escribimos, a la letra "B". La siguiente, a la letra "C", y así sucesivamente. Mediante este sistema, el texto "AAAA" se transcribiría como "BCDE" y no "BBBB". La riqueza del código se agotará cuando tecleemos por 27ª vez la letra "A", que volverá a significar "B".
Ejemplo de código monoalfabético (válido para descifrar el saludo al inicio del post):
Ejemplo de código dinámico:
En la fila de abajo hemos movido una posición todas las letras hacia la derecha. Según el código de arriba, "C" equivalía a "X", mientras que ahora, casualmente, "C", equivale a "Y". 
Divertido, ¿no? ¿Podemos complicarlo? ¡Por supuesto! ¿Podría, querido lector, dejar de perder el tiempo leyendo este blog y hacer algo práctico? Su responsable de departamento y yo estamos profundamente convencidos de ello.

La primera complicación que podemos añadir sería, por ejemplo, seguir un alfabeto totalmente aleatorio. Por ejemplo, el texto "AAAA" podría ser "GTRS". Podríamos escribir un libro entero de alfabetos aleatorios y convenir, con el receptor del mensaje, cuál de ellos usar dependiendo del día de la semana o del clima. Nuestro problema sigue siendo que cada 27 turnos comenzarán a repetirse las letras. ¿Cómo solventar esto? Lo que queremos es escribir la letra "A" hasta desgastar el teclado y que nunca jamás se repita la secuencia de forma lógica (así somos, nuestra felicidad es efímera y caprichosa): queremos ruido blanco aparente.

¿Pero cómo lo conseguimos?

Hasta ahora tenemos una máquina que es capaz de convertir una letra en otra. En un alarde de originalidad, la llamaremos "La increíble máquina encriptadora que tenía un solo rotor". A riesgo de que parezca una obviedad y que usted, querido lector, cierre enfurecido su explorador y proceda a desinstalar ipso facto su sistema operativo, le comentaré que le llamamos "rotor" porque, cíclicamente, vuelve a su posición original.

En un arrebato de maldad, podríamos, por ejemplo, incluir un segundo rotor que haga exactamente lo mismo que el primero. Ahora el proceso sería el siguiente: 
  1. Tecleamos una letra. En nuestro caso, la "A".
  2. El primer rotor la identifica como "B", y la envía al segundo rotor.
  3. El segundo rotor identifica la letra "B" como "C".
  4. Hemos tecleado "A", y su equivalencia, según la máquina, es "C".
  5. El primer y el segundo rotor se mueven una posición (para que, la próxima vez, A no sea C sino E).
En esta situación, la segunda vez que la letra A signifique C, será la número 676 o, para que usted me entienda y yo me explique, casi 5 tuiteos (desconozco la medida relativa en campos de fútbol). Todavía no parece totalmente aleatorio, pero al menos hemos subido de 27 repeticiones a 676. Algo es algo.

Enigma tenía un funcionamiento muy similar incluyendo, además, un tercer rotor, de manera que necesitaba 17.576 para volver a repetir la misma letra. También contaba con un mecanismo de "espejo" que, con muy mala uva, hacía viajar la petición en sentido contrario, volviendo a transformar todas las letras antes de mostrar el resultado final.

Entonces, ¿qué era necesario para descifrar el código? No, una placa con 2.000 chips del EFF no. Se podría hacer, pero resultaría poco práctico, y además los microchips no existían por aquella época. Más sencillo: tener una máquina Enigma en propiedad, conocer la posición inicial de los rotores y saber cuáles de ellos (puesto que había varios) usar en cada ocasión.

Es decir, se necesitaba ser el enemigo o alguien increíblemente astuto.

La criptografía es apasionante, pero la pregunta que debe hacerse es ¿qué hacemos con la información obtenida? Ahora que sabemos cual será el siguiente movimiento, ¿podemos anticiparnos al mismo? ¿Queremos? ¿Creerá el enemigo que nuestra clarividencia se debe a nuestro sutil genio o a que hemos roto su código? Probablemente Winston Churchill se hizo las mismas preguntas cuando supo, gracias a gente como Alan Turing y el polaco Marian Rejevsky, que se produciría el bombardeo de Coventry.

Se conoce mejor a una persona por lo que calla que por lo que cuenta, y, sinceramente, creo que las personas que no guardan secretos inconfesables carecen totalmente de interés. Estamos acostumbrados a guardar nuestros secretos y creer en nuestras evidencias, porque es más sencillo, más amable, y te invitan a muchas más fiestas. Con suerte, con mucha suerte, y con tiempo, con mucho tiempo, a veces somos capaces de romper el código de otra persona, y por un momento el mundo parece un lugar menos hostil de lo que en realidad es. Mi recomendación de la semana, querido amigo, es que haga gala de la discreción que no acertó a tener quien le reveló sus secretos, y los guarde como si su vida misma dependiera de ello.

Tal vez, incluso sea verdad.

Por cierto, y para despedirme de usted, sepa que finalmente Churchill decidió no evacuar Coventry, y que los aliados terminaron ganando la guerra, pero esa es una historia que contaremos algún otro día.

2 comentarios:

  1. Del todo interesante.
    ;)
    Anele

    ResponderEliminar
  2. buuuuueeee...en un momento me aburriiii...pero resulto estar re bueenoo!! gracias, me re sirve para mi tareaa.. jejje..saludos.. gcufgdfjalkfkhrarquo..

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...