Criptografía

Criptografía

La historia de la criptografía es larga. Ya las primeras civilizaciones desarrollaron técnicas para enviar mensajes durante las campañas militares, de forma que si el mensajero era interceptado la información que portaba no corriera el peligro de caer en manos del enemigo

Desde los tiempos del Antiguo Egipto hasta hoy en día ha pasado mucho tiempo, pero hay algo que no ha cambiado: el anhelo del ser humano por esconder sus secretos

Antigüedad

Personajes como Cleopatra o El César ya aprendieron a valorar la importancia de esconder de ojos indiscretos sus mensajes. La Scilata que los espartanos usaban allá por el año 400 B. C. , o el propio código César (un simple desplazamiento alfabético) fueron los inicios

Con el desarrollo de las ciencias, y más concretamente de las matemáticas, la criptografía creció como un hermano menor, de la mano. En la Edad Media comenzó a adquirir una gran importancia cuando un siervo del Papa Clemente VII escribió el primer manual sobre el tema de la historia en el viejo continente

En 1466 León Battista Alberti ideó el sistema polialfabético basado en la rotación de unos rodillos. Un siglo más tarde, Giovanni Battista Belaso inventó la clave criptográfica basada en una palabra o texto que se transcribía letra a letra sobre el mensaje original

Siglo XX

Ya a principios del pasado siglo XX se idearon los denominados “traductores mecánicos”, basados en el concepto ideado en el siglo XV por Alberti de las ruedas concéntricas, y el sistema comenzó a tornarse sumamente complejo, ya no bastaba con analizarlo concienzudamente para comprenderlo. Y eso nos llevó a la Segunda Guerra Mundial, a los años 30 and 40 y a la máquina Enigma

Aunque mucha gente no lo sepa, la criptografía fue uno de los principales motivos para que los aliados ganaran la guerra, pues los alemanes creían el código de su máquina Enigma inviolable, y de hecho sí que era extremadamente complejo. Pero al igual que antes comentaba que el anhelo humano de esconder secretos es eterno, también lo es su anhelo por desenterrar secretos ajenos

Un equipo de criptoanalistas, matemáticos y otras mentes privilegiadas (entre ellos Alan Mathison Turing, uno de los padres de la informática) logró en 1942 lo que parecía imposible: romper el cifrado de Enigma

Para ello diseñaron las llamadas “bombas navales” (la bombe de Turing), aparatos de cálculo mecánicos que se encargaban de romper el cifrado alemán y entregar todos los secretos a los aliados

Igualmente, el Purple (versión japonesa de Enigma) fue roto en Midway por un equipo dirigido por el comandante Joseph J. Rochefort. El hecho de conocer los secretos, de tener todas las llaves (nunca mejor dicho), dio la vuelta a la guerra y cambió el curso de la historia. Y el mundo nunca volvió a ser el mismo

Criptografía en la actualidad

El nacimiento de la informática y de los criptosistemas informáticos supuso un cambio radical del concepto de criptografía, y también del criptoanálisis. Los criptosistemas y los algoritmos aumentaron repentinamente y de forma descomunal su complejidad

Desde el DES hace ya mucho, hasta los criptosistemas asimétricos de curvas elípticas actuales todo ha cambiado también mucho, pero uno de esos cambios ha supuesto el segundo gran punto de inflexión de la criptografía: PGP

Hasta entonces, el privilegio de guardar secretos estaba exclusivamente en manos de los gobiernos o los poderosos, y hoy día, seguramente gracias a PGP, es un derecho de cualquier ciudadano por humilde que sea (aunque en algunos países no sea así). Arriesgando mucho, Arthur Zimmermann nos abrió las puertas a la criptografía, y a la libertad de comunicarnos de forma segura

Por supuesto hay otros nombres que son capitales en el desarrollo de los criptosistemas informáticos, aparte de Zimmermann: Rivest, Shamir, Adleman, Diffie, Hellman, ElGamal, Rijmen, Daemen, Massey, Miller, Goldwaser… Todos ellos son padres de lo que hoy se llama criptografía

Conceptos básicos

Criptología

Criptografía arte de ocultar. La palabra tiene su origen en el griego: kryptos (oculto, escondido) y graphein (escribir). El arte de ocultar un mensaje mediante signos convencionales es muy antiguo, casi tanto como la escritura

Y efectivamente siempre ha sido considerado un arte hasta hace relativamente poco, cuando Claude Elwood Shannon publicó en dos años dos documentos que supusieron la fundación de la moderna Teoría de la Información. Esos documentos son:

  • A mathematical theory of communication
  • Communication theory of secrecy systems

Criptografía arte de escribir con clave secreta o de un modo enigmático

Criptoanálisis arte de descifrar criptogramas

Texto en claro y criptogramas

En el ámbito criptográfico, entendemos por texto en claro cualquier información que resulta legible y comprensible per se. Un texto en claro sería cualquier información antes de ser encriptada o después de ser desencriptada. Se considera que cualquier información es vulnerable si se encuentra en este estado

Así mismo, denominamos criptograma a cualquier información que se encuentre convenientemente cifrada y no resulte legible ni comprensible más que para el destinatario legítimo de la misma

El mecanismo de transformar un texto en claro en un criptograma lo denominamos encriptación o cifrado, y al proceso de recuperación de la información a partir de un criptograma lo denominamos desencriptación o descifrado

Es muy importante no confundir estos términos con codificación o decodificación

Codificación es el acto de representar la información de distintas formas, pero no necesariamente encriptadas. Por ejemplo, un número decimal puede codificarse como hexadecimal, y no por ello se convierte en un criptograma

Flujo de información

En un criptosistema la información sigue un flujo siempre fijo:

Flujo de información

El emisor cifra el texto en claro para obtener el criptograma, que viaja por un canal ruidoso. El receptor descifra el criptograma y obtiene de nuevo el texto en claro que el emisor le envió. Durante toda la transmisión, el mensaje es ilegible

Criptosistemas

Antes de nada, es conveniente definir qué entendemos «matemáticamente» por criptosistema. Un criptosistema es una cuaterna de elementos formada por:

  • Un conjunto finito llamado alfabeto, que según unas normas sintácticas y semánticas, permite emitir un mensaje en claro así como su correspondiente criptograma
  • Un conjunto finito denominado espacio de claves formado por todas las posibles claves, tanto de encriptación como de desencriptación, del criptosistema
  • Una familia de aplicaciones del alfabeto en sí mismo que denominamos transformaciones de cifrado
  • Una familia de aplicaciones del alfabeto en sí mismo que denominamos transformaciones de descifrado

Ya sabemos qué es un criptosistema, pero ¿qué es un criptosistema informático? Un criptosistema informático se definiría por los siguientes cuatro elementos:

  • Un conjunto finito denominado alfabeto, que permite representar tanto el texto en claro como el criptograma. A bajo nivel hablaríamos de bits, y a más alto nivel podríamos hablar de caracteres ASCII o MIME
  • Un conjunto finito denominado espacio de claves. Estaría constituido por la totalidad de las claves posibles del criptosistema
  • Una familia de transformaciones aritmético-lógicas que denominamos transformaciones de cifrado
  • Una familia de transformaciones aritmético-lógicas que denominamos transformaciones de descifrado

Se trata simplemente de un criptosistema adaptado a las posibilidades y limitaciones de una máquina. El alfabeto o espacio de caracteres suele ser un estándar de representación de información (típicamente MIME o UNICODE por motivos de compatibilidad) y a más bajo nivel, por bits. Las transformaciones de cifrado y descifrado se ciñen a las normas de programación de los ordenadores actuales

En realidad, a efectos prácticos no existe mucha diferencia entre criptosistema matemático e informático, pues los matemáticos suelen diseñarlos pensando en su programación en una máquina (pues solamente los ordenadores tienen la potencia necesaria para soportar los complejos algoritmos) y los informáticos se desarrollan siempre con una base matemática

Algoritmo criptográfico

Un algoritmo debe describir de forma unívoca y sin dar lugar a interpretaciones, la solución a un problema en un número finito de pasos concreto

Algoritmo de encriptación, es una descripción unívoca y concreta de cómo funciona un criptosistema determinado

Clave criptográfica

El concepto de clave criptográfica surge con el propio concepto de la criptografía, y es el alma de un algoritmo de encriptación

Obviamente un algoritmo tiene que poseer la capacidad de ser usado muchas veces sin que su mecanismo sea idéntico, pues de lo contrario cada persona debería tener su propio algoritmo de encriptación

Para implementar esta funcionalidad, se usan las claves. La clave es un dato que interviene de forma activa en la ejecución del algoritmo y lo personaliza

Atendiendo únicamente al tipo de clave, podemos distinguir dos criptosistemas:

  • Sistemas de clave única o criptosistemas simétricos
    Son aquellos en los que los procesos de cifrado y descifrado son llevados a cabo por una única clave
  • Sistemas de clave pública o criptosistemas asimétricos
    Son aquellos en los que los procesos de cifrado y descifrado son llevados a cabo por dos claves distintas y complementarias

Longitud de clave

A día de hoy, gracias a los ordenadores es posible realizar complejos cómputos matemáticos en un espacio de tiempo relativamente corto. Así pues, el campo del criptoanálisis está íntimamente ligado a esta potencia de cálculo

Para que un algoritmo se considere seguro, su criptoanálisis sin la clave necesaria debe ser computacionalmente imposible de resolver

Consideramos “imposible” de resolver un sistema cuya vulneración necesite mayores recursos (económicos o en tiempo) que el beneficio reportado. Por ejemplo, se consideraría seguro un criptosistema que requiriera miles de años para ser descifrado

Para lograr semejante complejidad, se tratan números o conjuntos de números enormes. Es obvio que a mayor tamaño de estos números, existe un mayor número de claves posibles, y la posibilidad de éxito del criptoanálisis es menor

Hoy en día este tamaño se denomina longitud de clave, y se mide típicamente en los bits que ocupa la clave. Así, una clave de un número de 1024 bits sería un número cualquiera desde el 0 hasta el 1,8\cdot 10^{308} (2^{1024})

Al representar las longitudes de clave como potencias de dos, es importante darse cuenta de la relación existente entre las longitudes de clave. Una clave de 1025 bits es el doble de larga que una de 1024 (2^{1025} frente a 2^{1024})

A día de hoy se usan claves que oscilan entre los 512 bits y los 4096 bits de longitud