Empieza aquí

Introducción

La criptografía es la ciencia de guardar secretos en presencia de adversarios. Empezó como un oficio de sacerdotes, generales y diplomáticos, fue un arma en dos guerras mundiales y hoy es matemática que funciona, sin que nadie lo note, cada vez que abres una web, pagas con tarjeta o desbloqueas el móvil. Esta web sigue esa historia desde los primeros cifrados de sustitución hasta los algoritmos poscuánticos estandarizados en 2024.

Para qué sirve la criptografía

Esconder un mensaje es solo una de sus tareas. La criptografía moderna protege cuatro cosas distintas, y cada capítulo de esta web construye las herramientas para una o varias de ellas:

  • Confidencialidad: solo el destinatario entiende el mensaje. Es lo que hacen los cifrados, desde el de César hasta AES.
  • Integridad: nadie puede cambiar el mensaje sin que se note. Lo consiguen las funciones hash y los códigos de autenticación de mensajes, y también los modos autenticados de los cifrados en bloque.
  • Autenticidad: el mensaje viene de verdad de quien dice. Una clave secreta compartida la da; una firma digital la da a cualquiera que tenga la clave pública.
  • No repudio: el autor no puede negar después haber firmado. Solo lo dan las firmas de clave pública, porque solo una persona tiene la clave privada.

Que dos personas que nunca se han visto acuerden un secreto por un canal que todo el mundo escucha parece imposible. Hasta 1976 todo el mundo lo creía. La revolución de la clave pública es la bisagra de esta historia: antes, la criptografía consistía en mantener secretas las claves; después, también en claves que se pueden publicar.

Un poco de vocabulario

Texto en claro y texto cifrado
El mensaje antes y después de cifrarlo. El cifrado Ek y el descifrado Dk dependen de una clave k, y Dk(Ek(m))=m para todo mensaje m.
Cifrado y código
Un cifrado transforma letras o bits según una regla; un código sustituye palabras enteras por palabras clave de un libro («ÁGUILA» por «atacad»). Para leer un código hay que capturar el libro; un cifrado hay que romperlo.
Criptoanálisis
El arte de romper cifrados: recuperar el texto en claro o la clave sin que te la den. Cada capítulo tiene sus ataques, porque cada diseño es la respuesta a un ataque.
Simétrica y asimétrica
En la criptografía simétrica las dos partes comparten la misma clave secreta; en la asimétrica (de clave pública) hay un par: una clave pública para cifrar o verificar y una privada para descifrar o firmar.
Codificar, cifrar y resumir
Tres cosas distintas que se confunden a menudo. Codificar (hexadecimal, Base64) solo cambia cómo se escriben los bytes: no hay clave y cualquiera lo deshace. Cifrar necesita una clave para deshacerse. Resumir (hash) no se puede deshacer: produce una huella de tamaño fijo de cualquier entrada.

El enemigo conoce el sistema

En 1883 el lingüista neerlandés Auguste Kerckhoffs publicó seis reglas para los cifrados militares. La segunda es el principio fundacional de la criptografía moderna:

El sistema no debe requerir secreto, y debe poder caer en manos del enemigo sin inconveniente.Auguste Kerckhoffs, «La cryptographie militaire» (1883)

Todo el secreto debe residir en la clave, que es pequeña y fácil de cambiar. El diseño del cifrado debe ser público, porque los diseños se filtran (se capturan máquinas, se desensamblan programas, los empleados cambian de trabajo) y porque solo merece confianza un diseño que muchos han atacado en público. Claude Shannon lo dijo más crudamente en 1949: «el enemigo conoce el sistema». Todos los estándares modernos (DES, AES, SHA-3, ML-KEM) se publicaron íntegros y se eligieron tras años de ataques públicos; los esquemas que dependían de un diseño secreto, del CSS de los DVD a los cifrados de la telefonía GSM, cayeron poco después de que su secreto saliera a la luz.

Bits, bytes y codificaciones

Los cifrados clásicos trabajan con letras. Los modernos trabajan con bytes, grupos de ocho bits, así que el primer paso es siempre convertir el texto en bytes. Hoy se hace con UTF-8: las letras sin acento ocupan un byte, una letra acentuada o la ñ dos, un emoji cuatro. El texto cifrado también son bytes, normalmente no imprimibles, así que para mostrarlo, copiarlo o mandarlo por correo se escribe con un alfabeto imprimible: el hexadecimal usa dos caracteres (0–9, a–f) por byte; Base64 reagrupa los bits de seis en seis y escribe cada grupo con uno de 64 caracteres, así que ocupa un tercio más que los bytes en lugar del doble.

De caracteres a bytes y de vuelta a caracteres. Escribe lo que quieras: UTF-8 lo convierte en bytes; el hexadecimal escribe cada byte con dos dígitos; Base64 corta los mismos bits en grupos de seis y añade «=» cuando el último grupo de tres bytes está incompleto. Nada de esto es cifrar: no hay clave.

La aplicación de escritorio pone estas codificaciones en su propia familia, en gris, precisamente para insistir en ello: Base64 no es cifrado. Muchos sistemas reales se han «protegido» con él.

El viaje

Los capítulos siguen la historia, que aquí coincide con la lógica de la materia: cada cifrado nuevo responde al ataque que rompió el anterior.

  1. 01 Sustitución h. 1900 a. C. – 1863 Esconder letras: de César a Vigenère Durante dos mil años cifrar consistió en cambiar unas letras por otras. Los cifrados se volvieron más ingeniosos, del desplazamiento de César a la palabra clave de Vigenère, y quienes los rompían, más pacientes: de al-Kindi contando letras en el Bagdad del siglo IX a Babbage y Kasiski midiendo la distancia entre repeticiones.
    • Espacio de claves de una sustitución: 26!≈288
    • Análisis de frecuencias
    • Índice de coincidencia
    • Examen de Kasiski
  2. 02 Enigma 1918 – 1945 La máquina que perdió una guerra Un cifrado electromecánico con 159 trillones de configuraciones, usado por todos los ejércitos alemanes, roto primero por tres matemáticos polacos con la teoría de permutaciones y después, a escala industrial, en Bletchley Park. Su historia enseña que la parte más débil de un cifrado suele ser la forma de usarlo.
    • Enigma es una involución sin puntos fijos
    • Las permutaciones conjugadas tienen la misma estructura de ciclos
    • Espacio de claves ≈1,59×1020
  3. 03 Shannon 1882 – 1949 Irrompible, demostrado: la libreta de un solo uso Existe un cifrado que ninguna potencia de cálculo puede romper, y Claude Shannon lo demostró en 1949. También demostró su precio: una clave verdaderamente aleatoria tan larga como todo lo que vayas a enviar, usada una sola vez. Si se reutiliza, como hicieron los soviéticos, el mensaje se derrama.
    • La libreta de un solo uso tiene secreto perfecto
    • Cota de Shannon: |𝒦|≥|ℳ|
    • Distancia de unicidad
    • Confusión y difusión
  4. 04 DES y AES 1971 – 2001 Confusión y difusión: de DES a AES Un cifrado en bloque revuelve un bloque de bits de tamaño fijo bajo una clave, tan a fondo que sin la clave parece una permutación aleatoria. Lucifer, de IBM, se convirtió en el estándar estadounidense DES en 1977; veinte años después su clave de 56 bits cayó ante una máquina construida por 250.000 dólares, y un concurso abierto eligió a su sucesor: Rijndael, hoy AES, el cifrado más usado de la historia.
    • Una red de Feistel es invertible para cualquier función de ronda
    • Luby–Rackoff
    • Encuentro a medio camino: el doble DES no es el doble de fuerte
    • GF(28) es un cuerpo
  5. 05 Modos 1976 – 2018 Un bloque no basta: ECB, CBC, CTR, GCM AES cifra dieciséis bytes. Todo lo demás (cómo encadenar bloques, dónde va la aleatoriedad, cómo detectar manipulaciones) es trabajo del modo de operación, y ahí es donde se producen la mayoría de las roturas reales: patrones que se transparentan, oráculos de relleno, nonces repetidos, textos cifrados que un atacante puede editar.
    • El cifrado determinista revela igualdades
    • Repetir el nonce en CTR es una libreta de dos usos
    • Cifrar y luego autenticar es seguro (Bellare–Namprempre)
    • GHASH es un polinomio sobre GF(2128)
  6. 06 Hashes 1979 – 2020 Huellas dactilares de los datos Una función hash comprime cualquier entrada, una palabra o un disco entero, en una huella corta que cambia por completo si cambia un solo bit. Las huellas protegen descargas, contraseñas, firmas, Git y Bitcoin. Romperlas significa encontrar dos entradas con la misma huella, y la paradoja del cumpleaños dice que es mucho más fácil de lo que parece.
    • Cota del cumpleaños: colisiones tras ≈2n/2 intentos
    • Merkle–Damgård: una compresión resistente a colisiones da un hash resistente a colisiones
    • Extensión de longitud
    • Seguridad de la esponja ≈2c/2
  7. 07 Contraseñas 1976 – 2021 Lentas a propósito: sal, bcrypt, scrypt y Argon2 Las contraseñas son cortas, humanas y repetidas, y los servidores sufren brechas. Guardarlas bien es el arte de encarecer cada intento: una sal para que cada cuenta haya que atacarla por separado, y un hash deliberadamente lento y exigente en memoria, para que un intento le cueste a la GPU del atacante tanto como al servidor.
    • Entropía de una contraseña H=Llog2⁡N
    • La sal derrota al precálculo
    • Compromiso tiempo–memoria (Hellman)
    • Funciones exigentes en memoria
  8. 08 RSA y DH 1970 – 1998 Secretos en público: Diffie–Hellman y RSA Durante cuatro mil años, dos personas que querían comunicarse en secreto tenían que compartir antes una clave. En 1976 Whitfield Diffie y Martin Hellman mostraron cómo acordarla en público, y un año después Rivest, Shamir y Adleman construyeron un cifrado cuya clave de cifrado puede publicarse en un periódico. Los dos se apoyan en teoría de números que Fermat y Euler ya conocían en el siglo XVIII.
    • Pequeño teorema de Fermat
    • Teorema de Euler
    • Corrección de RSA
    • Teorema chino del resto
    • Elevar al cuadrado y multiplicar
  9. 09 ECC 1985 – 2013 La aritmética de las curvas: ECDH, ECDSA, Ed25519 Los puntos de una curva cúbica se pueden sumar con una regla: se traza la recta, se busca el tercer punto y se refleja. Sobre un cuerpo finito esta geometría se convierte en un grupo en el que los logaritmos son aún más difíciles que en los números de RSA, así que una clave de 256 bits hace el trabajo de una de 3.072. Es la criptografía que llevan dentro hoy todos los móviles, las passkeys y las conexiones TLS.
    • La ley de la cuerda y la tangente hace de E un grupo abeliano
    • Hasse: |#E(𝔽p)−(p+1)|≤2p
    • Rho de Pollard: ≈n pasos
    • Repetir un nonce de ECDSA revela la clave privada
  10. 10 Poscuántica 1994 – 2026 Después de Shor: retículos, ML-KEM y ML-DSA Un ordenador cuántico grande rompería RSA, Diffie–Hellman y todas las curvas elípticas de esta web. Todavía no existe, pero el tráfico cifrado que se graba hoy podría leerse cuando exista. Por eso en 2024, tras un concurso público de ocho años, el NIST estandarizó sustitutos basados en retículos y en hashes, y ha empezado la migración de todo Internet.
    • Shor: factorización y logaritmos discretos en tiempo polinómico
    • Grover: búsqueda en N, y no mejor
    • Aprender con errores es tan difícil como los problemas de retículos en el peor caso (Regev)
    • Corrección del cifrado de Regev

Cómo leer esta web

En orden, como un libro corto, o saltando al capítulo que te pique la curiosidad: cada uno se sostiene solo y enlaza hacia atrás cuando lo necesita. Los resultados se enuncian como teoremas, con demostraciones breves que puedes desplegar, y cada capítulo tiene figuras interactivas que ejecutan los algoritmos reales en tu navegador: el AES del capítulo 04 es el AES-128 completo, comprobado con los vectores de prueba oficiales, y la Enigma del capítulo 02 tiene el mismo cableado que las máquinas de Bletchley Park. Nada de lo que escribes se envía a ninguna parte.

La página de historia pone cuatro mil años de acontecimientos en una sola línea, y la app es el propio cryptoKit: una aplicación de escritorio libre (Java) con los 44 algoritmos de los que se habla aquí, para cifrar, descifrar, resumir y firmar tus propios datos, cada uno con un enlace al capítulo que lo explica.

Una advertencia. Entender cómo funciona un cifrado no es lo mismo que saber construir con él un sistema seguro. Las figuras de esta web están escritas para leerse, no para resistir ataques de canal lateral. Para datos reales, usa bibliotecas y protocolos bien revisados, como aquellos sobre los que está construida la aplicación de escritorio.