Criptografía: enséñame la pata por debajo de la puerta

La criptografía es una ciencia con un doble objetivo: asegurar la transmisión de información entre dos puntos (emisor y receptor) de manera que nadie pueda interceptarla, y asegurar que el emisor y el receptor son quienes dicen ser.

La mayor parte de los usos de la criptografía, hasta el advenimiento de Internet, fueron bélicos. Qué le vamos a hacer, así es la historia de nuestra especie. Se dice que Julio César empleaba un método de encriptación para codificar los mensajes que enviaba a sus legiones, de manera que si caían en manos del enemigo, éstos no pudieran descifrarlos. Aunque los historiadores no se ponen de acuerdo acerca de si Julio César utilizó realmente este método, en la actualidad se conoce como método César.

El método César es tan sencillo como una receta de cocina. Cójase un texto cualquiera; por ejemplo, “el sol salió anoche y me cantó”. Sustitúyase cada letra por la siguiente del alfabeto (la A por la B, la B por la C, y así sucesivamente). El resultado es un aparente galimatías: “fm tpm tbmjp bñpdif z nf dbñup”. Pero descifrarlo es fácil: basta con deshacer el cambio para obtener de nuevo el mensaje original limpio e impoluto.

Eso debieron pensar los espías enemigos (los militares en guerra siempre tienen presente a una entidad llamada “espía enemigo” en sus plegarias), de modo que el método César se complicó sustituyendo cada letra, no por la siguiente del alfabeto, sino por la que está dos, tres o veinte posiciones más allá. Para devolver los mensajes así encriptados a su estado original, no sólo hay que conocer el método de encriptación, sino también el número de desplazamientos que se han llevado a cabo. Podríamos decir que este número es la clave secreta, necesaria para desentrañar el mensaje oculto.

Lamentablemente, sólo hay 26 posibles desplazamientos (27, si contamos la eñe), por lo que un espía enemigo con la suficiente paciencia podría ir probando todas las posibilidades hasta dar con la clave. Definitivamente, el método César no es demasiado seguro en los tiempos que corren.

Durante la Edad Media, la criptografía vivió otro momento de gloria en la penumbra de los monasterios, a lomos de las intrigas papales. Surgieron imaginativos métodos que hoy nos parecen un poco ingenuos, pero así se va construyendo la ciencia. En los escritos medievales es habitual encontrar anagramas para ocultar determinada información, es decir, palabras con las letras descolocadas a propósito, que parecen decir una cosa pero quieren decir otra. Otro método frecuente es el de la fuga de vocales, donde las vocales de las palabras son sustituidas por consonantes elegidas al azar.

La criptografía moderna surgió en el siglo XIX, cuando el holandés Auguste Kerckhoffs escribió un sesudo tratado sobre el asunto en el que se basarían todas las técnicas posteriores. Durante la II Guerra Mundial, los alemanes construyeron una célebre máquina, llamada Enigma, que encriptaba sus comunicaciones de un modo que ellos juzgaron inviolable. Qué presuntuosos eran estos nazis; supongo que es algo que te ocurre inevitablemente cuando te crees superior al vecino de enfrente. Pueden ver el aspecto del artilugio en la fotografía de aquí abajo que he tomado prestada del artículo de la Wikipedia. El caso es que los científicos aliados, encabezados por Alan Turing (¿Se acuerdan de él? Era el “padre” de la informática y de la inteligencia artificial), destriparon de mala manera una parte importante de los mensajes transmitidos por Enigma, de forma que conocían con bastante exactitud los movimientos que los alemanes estaban planeando. Los criptógrafos tuvieron así su parte de responsabilidad en la caída final del III Reich.



¿Pero cómo narices funciona la criptografía moderna? Bien, existen dos filosofías básicas que se usan en la actualidad para encriptar mensajes: la criptografía simétrica y la asimétrica.

Criptografía simétrica (o de clave privada)

Se utilizan algoritmos similares al método César, pero mucho más enrevesados, para, literalmente, destrozar el mensaje hasta que queda ilegible. Por ejemplo, podemos hacer grupos de 10 caracteres y permutarlos entre sí de determinada manera. Después, podemos tomar 10 bloques de 10 caracteres y permutarlos del mismo modo que hicimos con los caracteres. El texto resultante será un galimatías, pero sería fácil aplicar los cambios en el sentido inverso para obtener el mensaje original.

Si hacemos muchas más permutaciones y, además, operamos a nivel de bit en lugar de a nivel de carácter, el resultado es mucho más impresionante.

La potencia de la criptografía simétrica no reside en el algoritmo de “destrozo”, que generalmente es conocido (en la Wikipedia pueden encontrar explicaciones muy asequibles acerca de los más comunes, como DES o RC5). No. La potencia reside en la clave, que es secreta. El algoritmo realiza sus permutaciones y zarandeos basándose en esa clave, de forma que una clave provoca una determinada encriptación, y otra clave ligeramente distinta nos proporciona una encriptación completamente diferente.

Así, aunque conozcamos el algoritmo utilizado, no podremos revertir los pasos sin conocer la clave.

Siempre nos queda la posibilidad de atacar el texto encriptado por fuerza bruta, es decir, probando todas las claves posibles hasta que una de ellas produzca un texto con sentido. Por ese motivo, las claves suelen ser de 64 o 128 bits. El número de combinaciones que se pueden obtener con esos bits es enorme, como ustedes ya sabrán. Con la potencia de cálculo de los ordenadores actuales se calcula que, si todas las máquinas disponibles en el planeta Tierra se pusieran a cooperar a tiempo completo para tratar de probar todas las posibilidades con una clave de 128 bits, tardarían más tiempo que la edad estimada del universo.

(Por ese motivo, comprenderán ustedes que aún me duelan las quijadas por el ataque de risa incontenible que me provocó una escena de la película Operación Swordfish, en la que el protagonista consigue reventar un RC5 de 128 bits en 45 segundos mientras le apuntan con una pistola en la cabeza y le practican una felación)

Los algoritmos simétricos de 128 bits son, por lo tanto, muy seguros. Cuando en un sitio web le pidan que introduzca una palabra clave de, al menos, no sé cuántos caracteres, piense que lo hacen por seguridad, no porque disfruten torturando a los visitantes obligándoles a recordar contraseñas kilométricas.

Sin embargo, la criptografía simétrica tiene un problema: si la clave cae en malas manos (otra vez el “espía enemigo”), toda el tinglado se viene abajo. Como lo que pretendemos, en principio, es enviar mensajes seguros a otra persona (el receptor), por fuerza este receptor tiene que conocer la clave que hemos usado para encriptar. ¿Pero cómo se la mandamos? Si se la hacemos llegar sin encriptar puede ser interceptada, y todo el mensaje quedará comprometido. Si se la enviamos encriptada, necesitaremos otra clave más para hacer esta otra encriptación, que a su vez debemos hacer llegar al receptor por un conducto seguro. Y así hasta el infinito y más allá.

No nos vale. El algoritmo de encriptado tiene que ser tal que, aunque el “espía enemigo” intercepte el mensaje, conozca el algoritmo y conozca la clave de encriptación, no tenga manera humana (ni computacional) de desencriptar el texto. ¿Es posible lograr esa maravilla? Por supuesto. Se llama criptografía asimétrica, un nombre, como ven, muy original. Es que los criptógrafos gastan toda su capacidad de inventiva en idear nuevos algoritmos. Pero de la criptografía asimétrica hablaremos otro día.

Comentarios