La Historia de la Criptografía: Desde los Jeroglíficos Egipcios hasta la Era Digital

Los Orígenes en el Mundo Antiguo

Desde que el ser humano inventó la escritura siempre ha tenido un afán por ocultar un mensaje en un canal inseguro. Hoy día seguimos haciéndolo y probablemente no se hayan parado a pensar que cuando utilizan su correo electrónico Gmail, transmiten un WhatsApp (si tienen activado el envío seguro) o ponen su canal favorito de TV en su decodificador están haciendo uso de la criptografía y el cifrado de datos.

Más o menos todo comienza en la época de los egipcios y sus famosos jeroglíficos que usaron para escribir durante casi 4000 años. Realmente solo los sacerdotes, la realeza y las capas sociales más altas del pueblo tenían la capacidad de leer y escribir esta forma de comunicación. Solía usarse para inscripciones en edificios oficiales y las paredes de tumbas funerarias.

 Siempre me llamaron la atención los jeroglíficos y no porque tengo un tío arqueólogo sino por el concepto de tratar de descifrar un mensaje que a simple vista casi no se puede leer.

¿Para qué ha querido el hombre (o mujer :)) ocultar un mensaje escrito ?

Pues bien, como mencioné al principio los medios de transmisión de la información han evolucionado hasta el correo electrónico de hoy en día, el WhatsApp o las redes sociales, pero no siempre ha sidoasí. Recordemos que los mensajes se enviaban con “mensajeros” y por tanto el mensaje tenía que ser secreto si no querías que todo el mundo se enterara. Más aún si el contenido del mensaje era militar con órdenes de ataque y conquista de un determinado emplazamiento o de una estrategia específica.

Curiosamente encontramos un ejemplo de cifrado de mensaje en la antigua Grecia donde el héroe mitológico Belerofonte entrega una carta cifrada al Rey Yóbates de Licia, el mensaje está cifrado, o encriptado (me gusta más) y el contenido aguardaba una desagradable sorpresa. El mensaje decía a su destinatario que debía dar muerte al mensajero que portaba el mensaje. Obviamente si estas cosas no se cifraban el mensaje nunca llegaba a su destino.

No me voy a extender mucho más pero a lo largo de la historia la criptografía se ha ido potenciando casi siempre con fines militares, la edad media, la segunda guerra mundial, con la invención de la famosa maquina Enigma del gran Alain Turing, o de Claude Shannon y su aportación a las telecomunicaciones con su teoría de la comunicación donde su famoso teorema de Shannon nos dice que es posible transmitir datos digitales sobre el mismo canal con ruido. Yo incluso he presenciado en un laboratorio de la Universidad hace muchos años un encriptador basado en la teoría del caos (dejemos eso para otro artículo).

La gran paradoja es que antiguamente se trataba de esconder la información para evitar su difusión y en la actualidad vivimos inmersos en todo lo contrario, excepto los temas militares el uso de la información es masivo. Con las redes sociales, youtube y otras tecnologías cada uno de nosotros se convierte literalmente en una pequeña o gran emisora de noticias, agencia de noticias o infobasura.

Estamos “infoxicados” por todas partes.

Con el incremento de la potencia de cálculo de los ordenadores se han ido mejorando las técnicas de cifrado ya que el disponer de máquinas capaces de hacer millones de operaciones por segundo hacen también más “fácil” la tarea de descifrar un mensaje codificado por lo que mis amigos los matemáticos y los informáticos tenemos que idear algoritmos y métodos de cifrado o codificación más robustos. Esta robustez se basa en que el tiempo de cómputo necesario para descodificar el mensaje por un ordenador actual sea tan alto que cuando lo consiga ya no queden ni nuestros huesos.

Esta es básicamente la estrategia general de la codificación, es decir, encontrar pares de operaciones matemáticas tales que una es la opuesta de la otra, y que la una es muy sencilla y la otra extremadamente compleja. Y ahí es donde intervienen los primos, pero no, no son los hijos de mi tío el arqueólogo J, que ellos también son mis primos… J, me refiero a los números primos.

Recordemos que un número es primo cuando solo es divisible por él mismo o por la unidad. Ya en su día el maravilloso Euclides demostró que había infinitose números primos.

Pero……..

¿Cómo podemos usar los números primos para codificar de forma robusta un mensaje?

Pues por ejemplo multiplicar dos números primos es una tarea muy sencilla, incluso aunque sean muy grandes una calculadora de bolsillo o un ordenador domestico lo hará en milésimas de segundo. Pero en cambio sí nos dan un número que resulta del producto de dos números primos y queremos encontrar cuales son esos dos números que lo forman debemos descomponer o factorizar el numero dado y eso resulta una tarea sumamente compleja.
La complejidad resulta del tiempo de cálculo necesario para encontrar esos dos números primos que multiplicados dan como resultado el numero inicial.

Por ejemplo si multiplicamos el numero primo 77,969 x otro número primo 80,141 = 6,248,513,629, esta operación es muy sencilla, basta con usar la calculadora de Windows con el que estoy escribiendo este articulo para instantáneamente obtener el resultado 6,248,513,629.

Pero si lo que nos dan es el número 6,248,513,629 y para descifrar la clave tenemos que descomponer ese número en el producto de los dos números primos iniciales (77,969 y 80,141) la tarea no es tan instantánea, de momento como el numero está formado por la multiplicación de dos números primos, solo será divisible únicamente por esos dos números de todos los infinitos números posibles, por tanto tenemos que ir probando a dividir el número 6,248,513,629 por todos los primos desde el 2 hasta encontrar el primer número que lo divide que es el 77,969 y su resultado será el otro numero que estabamos buscando, 80,141. El trabajo de encontrarlo resulta extremadamente tedioso.

Aunque la operación de división también puede hacerla más o menos rápida un ordenador, el lector habrá adivinado que si en lugar de coger un numero de 10 cifras como el 6,248,513,629 cogemos un número “gigante” de 600 cifras ni nuestro ordenador nuevo de Reyes ni probablemente el de la Agencia Estatal de Meteorología será capaz de encontrar los números primos factores al menos durante nuestra vida y la de muchas futuras generaciones.

Para que se hagan una idea de esto, es decir, del tiempo de cálculo y el número de bits (más o menos el número de dígitos del número) el algoritmo de cifrado AES (Advanced Encryption) que probablemente usa la conexión de red VPN de su oficina, funciona básicamente dividiendo los datos en muchos bloques pequeños y los mezcla. Pues bien, con 56 bits tarda unos 400 segundos en descifrarse, con 128 bits se tardarían 13,750 millones de años (ya no estaríamos aquí L) y con 256 bits tiende a infinito el tiempo de descifrado con la potencia de cálculo actual.

Hay una iniciativa muy interesante llamada Enigm@home que pretende descifrar mensajes codificados por la maquina Enigma de Turing que usaban los Nazis utilizando técnicas de informática distribuida, es decir, aprovechando la potencia de cálculo de decenas o centenas de miles de ordenadores por todo el mundo conectados para el mismo proceso. Hay que señalar que la máquina de Turing no se refiere propiamente a la maquina Enigma sino al modelo matemático que inventó Turing. La máquina Enigma utilizada por los Nazis para cifrar sus mensajes de 250 caracteres durante la segunda guerra mundial no es más que una aplicación de dichas teorías. El que quiera profundizar más sobre esto puede consultar aquí

¿Qué es una huella digital?

Al igual que los seres vivos tenemos una huella, pisada o algún rasgo característico que nos identifica, la información también puede tener su huella para poder evaluar si se trata del mismo conjunto de información.

Una función criptográfica hash o función Hash es un algoritmo matemático que transforma una serie de caracteres o bytes en una nueva cadena de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.

Esta peculiaridad permite utilizar las funciones hash para calcular una “huella” digital de la información que se quiere identificar. Hay muchos algoritmos Hash en función de cómo hacen el cálculo, los más utilizados son DES, MD5, SHA-1, SHA-256.

Asi pues cuando se quiere garantizar la integridad de la información se le aplica un función hash y se compara con el hash del mensaje transmitido o copiado o enviado y si ambos hash no coinciden significa que la información original ha sido alterada.

¿Para qué sirve la huella digital?

Esta es la base de uso que hacemos los peritos informáticos cuando hacemos la extracción de cualquier evidencia digital, bien sea un correo electrónico, un archivo o un disco duro entero. Calculamos varias funciones hash y la incluimos en el correspondiente acta notarial de la extracción para garantizar la cadena de custodia de las pruebas.

De esta forma en el futuro si se va a trabajar con la evidencia extraída no hay más que calcularle el hash y compararlo con el hash que se documentó en el acta por el Sr. Notario quedando completamente asegurada así la integridad de la información, garantizando que no ha sido alterado ni un solo bit.

Me sorprende ver como en muchos procedimientos judiciales se hacen fotos de un disco duro con el número de serie sin calcular ninguna huella, se presentan pruebas digitales en papel, o volcados de pantalla de correos electrónicos o WhatsApp sin la más mínima garantía de integridad de la información.

Las evidencias de naturaleza digital deben ir acompañadas de mecanismos que garanticen que no se han alterado en el tiempo para que en el futuro se pueda demostrar que la cadena de custodia no se ha roto y la información no se ha modificado. La huella digital y las funciones hash nos hacen precisamente esa labor.

Conclusión

En conclusión, la criptografía ha desempeñado un papel crucial a lo largo de la historia, desde los jeroglíficos egipcios hasta las técnicas modernas de cifrado. En un mundo cada vez más digitalizado, la seguridad de la información sigue siendo una prioridad, y la criptografía continúa siendo una herramienta esencial para proteger nuestros datos.