Por Romain F. (ingeniero de seguridad de redes)
El cifrado, que se ha convertido en algo casi sistemático en la mayoría de las aplicaciones de mensajería, se ha impuesto como un elemento imprescindible de las herramientas de ciberseguridad.
Un anglicismo muy arraigado hace que a menudo se le denomine «cifrado», término que no utilizaremos aquí, ya que estamos entre personas civilizadas.
Hablando en serio, nos aseguraremos de decir «codificar» y no «cifrar». En cambio, sí hablaremos de «criptografía» (el hecho de hacer que un mensaje sea ilegible), ya que el término no es un anglicismo. Paradójicamente.
Pero, ¿cómo funciona exactamente? ¿Sabías que, ya desde la Antigüedad, la humanidad ha recurrido a soluciones de cifrado? ¿Que esta herramienta tuvo una influencia decisiva en los acontecimientos de la Segunda Guerra Mundial y que la informática surgió, en parte, de la necesidad de descifrar las comunicaciones alemanas de aquella época?
Eso es lo que vamos a ver juntos a lo largo de este artículo.
I – Definición
El cifrado es un proceso matemático destinado a hacer que un mensaje o una comunicación resulten ilegibles o inaudibles, con el fin de que dicha comunicación se mantenga confidencial.
Está protegido por lo que se conoce como una clave de cifrado. Esta clave puede ser una contraseña, un código o un archivo informático.
El cifrado tiene sus orígenes en la Antigüedad, con el código de César, que veremos con más detalle más adelante. Según Suetonio (alto funcionario e historiador romano del siglo I), Julio César utilizaba este método de cifrado para su correspondencia secreta.
Con el tiempo, las soluciones de cifrado se han vuelto más complejas y, en la actualidad, se basan principalmente en cálculos realizados por ordenadores.
II – El cifrado simétrico
El término «cifrado simétrico» se utiliza para referirse a todas las soluciones de cifrado protegidas por una contraseña o un código único.
Antes os hablaba del código de César. Es el ejemplo por excelencia. Su funcionamiento es sencillo.
Empecemos por asignar un número a cada letra; obtenemos la siguiente tabla
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
Ahora vamos a aplicar la clave de cifrado +3 a nuestro alfabeto. Podríamos utilizar una clave de cifrado más larga, pero prefiero mantener la sencillez en este ejemplo. De este modo, obtenemos los siguientes valores:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 3 |
Como nuestro alfabeto solo tiene 26 letras, cuando se llega a esa cifra, se vuelve a empezar por la 1.
Ahora vamos a codificar nuestro alfabeto sustituyendo los números por las letras a las que están asociados en la primera tabla.
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 3 |
| D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
Nuestro alfabeto cifrado tiene un desplazamiento de tres letras con respecto al alfabeto normal. Así, el mensaje «Hello world», cifrado con la clave de cifrado 3, se escribirá «Khoor zruog» (no, no es el nombre de un orco de Warcraft, sino un mensaje cifrado).
Podríamos resumir el código de César con la siguiente función matemática:
F(x) = x + y
Donde x es el número asociado a la letra original, y nuestra clave de cifrado y F(x) la letra cifrada.
Una persona que no tenga la clave de cifrado tardará varias horas en encontrar la solución.
Aquí os he explicado cómo funciona el sistema de cifrado más sencillo de entender. El código de César, como podéis imaginar, lleva siglos sin utilizarse, salvo con fines educativos.
Las soluciones de cifrado simétrico que se utilizan hoy en día se basan en funciones matemáticas mucho más complejas que se calculan por ordenador.
Por cierto, puedes divertirte con algunas de ellas en la página web https://www.dcode.fr
Aparte del código de César, una de las soluciones de cifrado simétrico más famosas es Enigma.
Inventada por los alemanes en la década de 1920, la Enigma se basaba en una máquina de escribir a la que se conectaba una tabla de permutación de letras. Estos aparatos fueron utilizados de forma masiva por Alemania durante la Segunda Guerra Mundial.
La máquina se configuraba previamente según un código predefinido; el usuario tecleaba su texto en la máquina, que generaba automáticamente un mensaje cifrado según la configuración de la tabla de permutación.
El código cambiaba cada 24 horas.
Era extremadamente difícil de descifrar si no se conocía el código, por lo que varios matemáticos ingleses se dedicaron a estudiar el asunto durante varios años. Finalmente, fue gracias a la iniciativa del matemático Alan Turing que se descifró el primer mensaje hacia 1942.
Este último había establecido en 1941 las especificaciones técnicas de unas máquinas electromecánicas capaces de calcular más rápido que un cerebro humano gracias al uso del código binario. Las «máquinas de Turing» o «bombas de Turing» fueron, de hecho, los primeros superordenadores y, por lo tanto, los lejanos antepasados del ordenador o del smartphone con el que estás leyendo este artículo.
Si te interesa el tema, te recomiendo la película *Imitation Game*, de Morten Tyldum, estrenada en 2014, inspirada en la biografía *Alan Turing o el enigma de la inteligencia*, de Andrew Hodges.
La vulnerabilidad del cifrado simétrico radica en el descubrimiento de su clave de cifrado, que puede obtenerse mediante lo que se conoce como un ataque de fuerza bruta, que consiste en probar todas las combinaciones posibles hasta obtener el mensaje en claro. Esto es, ni más ni menos, lo que hicieron Alan Turing y sus colegas en los años 40.
Con la diferencia de que los hackers de hoy en día utilizan scripts de ataque que prueban una biblioteca de códigos posibles, mientras que Alan Turing utilizaba un superordenador que ocupaba una habitación entera.
III – El cifrado asimétrico
Para subsanar las deficiencias del cifrado simétrico, los investigadores en seguridad se han centrado en otras soluciones y han desarrollado el cifrado asimétrico. Este se basa en un par de claves, una pública y otra privada.
Para entender el principio, vamos a ponernos todos juntos en la piel de unos personajes.
Estamos en 1780, usted es el barón o la baronesa de una pequeña región de Francia y ha sido invitado al salón de la marquesa de Montespan, donde conoce al conde de Amiens, con quien conversa sobre diferentes métodos para mejorar la agricultura en su región. Sí, usted es un noble preocupado por el bienestar de su gente, eso está bien. Ellos lo recordarán dentro de nueve años, lo que le permitirá, sobre todo, conservar la cabeza sobre los hombros.
Le entregas al Conde una clave, a la que llamaremos «clave pública», así como un cofre.
Una vez de vuelta en casa, el conde toma pluma, tinta y pergamino y te escribe una larga carta para continuar con vuestra correspondencia. Guarda la carta en el cofre que le has entregado y lo cierra con tu clave pública. La clave permite cerrar el cofre, pero no abrirlo.
Al recibir el cofre, recibirás otra llave, diferente de la anterior, a la que llamaremos «llave privada». Esta llave es única; tú eres el único que la posee. Con ella podrás abrir el cofre y acceder al mensaje que contiene.
De este modo, tendrá la seguridad de que:
- El remitente es efectivamente el Conde con el que se encontró, o al menos un remitente considerado «de confianza» al que le entregó su clave pública
- Nadie ha podido leer ni modificar el mensaje que contenía la caja fuerte
- Al remitente le resulta difícil negar que es el autor del mensaje
Los más versados habrán reconocido aquí tres de los cinco pilares de la seguridad informática: confidencialidad, integridad y no repudio. La autenticación y la disponibilidad no son aplicables en este caso (recuerdo que estamos en 1780).
Volvamos al presente y sustituyamos nuestras llaves por archivos informáticos y la cerradura de la caja fuerte por un programa de cifrado. Este programa cifra el mensaje mediante una función matemática y tu clave pública. Ese mismo programa utilizará otra función matemática junto con tu clave privada para descifrarlo. Así es como funciona el cifrado asimétrico.
La seguridad de estas herramientas se basa en la confidencialidad de la clave privada. Puedes compartir tu clave pública como mejor te parezca, pero tu clave privada debe seguir siendo, como su nombre indica, privada. En caso contrario, se dice que la clave se ha visto comprometida y se recomienda renovar el par de claves.
Para explicar cómo funciona, vamos a analizar juntos el cifrado RSA (siglas de Rivest, Shamir y Adelman, los nombres de los tres inventores de esta solución), que se considera uno de los métodos de cifrado asimétrico más fiables y que se publicó en 1978.
El RSA se basa en factores primos. Esta información puede parecer trivial, pero es fundamental. De hecho, un número primo solo es divisible por 1 o por sí mismo, lo que hace que sea muy difícil de factorizar, especialmente en el caso de los números grandes. Si bien la operación es factible para un ser humano con números como el 3 y el 11, se vuelve mucho más compleja con un número primo como el 3 000 251.
Dado que los cálculos de las claves de cifrado RSA son bastante laboriosos, los he incluido al final del artículo, por si te interesan.
A pesar de todo, estas son las funciones de cifrado C(x) y de descifrado D(x) del protocolo RSA:
C(x) ≡ xⁱ
D(x) ≡ 1/x^n
Donde i, n y a son componentes de la clave pública y de la clave privada (a es común a ambas, mientras que i solo aparece en la clave pública y n únicamente en la clave privada) [1].
La función de cifrado C(x) se lee «C(x) es congruente con x elevado a i módulo a». Lo cual es muy claro.
No te preocupes, eso solo significa que cuando se divide C(x) entre a, el resultado esxⁱ. El cifrado se garantiza siempre que se cumplan estas condiciones matemáticas.
El cifrado asimétrico también está expuesto al riesgo de sufrir ataques de fuerza bruta. Sin embargo, en el caso del RSA, por ejemplo, todo depende de la elección de los números primos utilizados. Cuanto más grandes sean los números, más tiempo llevará descifrarlos mediante un ataque, lo que supondrá una pérdida de tiempo.
Por lo tanto, es importante renovar periódicamente las claves de cifrado para no animar a un atacante a arriesgarse a emprender un proceso de descifrado que duraría varios años.
Por ejemplo, en 2010, unos investigadores en seguridad lograron descifrar un cifrado RSA de bajo nivel tras dos años y medio de cálculos (https://www.generation-nt.com/cle-rsa-768-bits-cassee-inria-actualite-939471.html)
El cifrado, que forma parte integrante de nuestra historia, ha evolucionado a lo largo de los tiempos para responder a las evidentes necesidades de confidencialidad y seguridad.
Ha permitido la aparición de herramientas que ahora utilizamos en nuestro día a día.
Lo usamos sin siquiera darnos cuenta, ya sea para proteger nuestras comunicaciones con nuestros seres queridos a través de las aplicaciones Signal y WhatsApp, o bien utilizando una VPN para teletrabajar.
He hablado mucho del cifrado aplicado a la mensajería porque es el ejemplo más concreto. Pero también existen soluciones de cifrado aplicadas a las redes o a los soportes de almacenamiento.
También se expone en el ámbito del arte. Como es el caso de Kryptos (https://fr.wikipedia.org/wiki/Kryptos_(sculpture)), un monumento expuesto en la sede de la CIA cuyo texto solo se ha descifrado parcialmente en 30 años.
El uso del cifrado para proteger la privacidad es también la punta de lanza del movimiento Cypherpunk, surgido a principios de los años 90 y que cuenta entre sus miembros con Philip Zimmermann (creador del software de cifrado asimétrico PGP) o Julian Assange.
Sin embargo, el cifrado no es infalible. En 2019, un ordenador cuántico logró descifrar el cifrado RSA en 8 horas (https://siecledigital.fr/2019/06/04/un-ordinateur-quantique-casse-le-cryptage-rsa-sur-2048-bits-en-8-heures/).
Lejos de preocupar a los investigadores en ciberseguridad, este suceso pone de manifiesto lo que ya sabíamos: la necesidad de no dormirse en los laureles y de trabajar constantemente en nuevas soluciones de protección que sean capaces de resistir y evolucionar al ritmo de las innovaciones tecnológicas. Como escribió Bruce Schneier en el año 2000, «la seguridad informática es un proceso, no un producto».
[1] En realidad, se utilizarán las letras e (encriptar), d (descifrar) y n, pero Word no me permite poner los exponentes correspondientes.
ANEXO: Cálculos de claves de cifrado RSA
On choisit deux nombres premiers entier p et q tel que p < q
A continuación, se calculan n y Ψ («phi») de tal manera que
n = p × q
Ψ = (p – 1) × (q – 1)
Se determina el número e de tal manera que el máximo común divisor (MCD) de e y Ψ sea igual a 1
Por último, el número d tal que d es congruente con e elevado a -1 módulo Ψ
La clave pública está formada por los valores (n; e), y la clave privada por los valores (n; d)
Aquí encontrarás varios ejemplos con números simples:
