Elige un algoritmo, escribe un mensaje y sigue lo que le pasa. Los pasos muestran el principio y el final de cada cálculo; la parte repetitiva del medio se omite.
CRC-32 suma de verificación
Una suma de verificación sirve para saber si un dato llegó completo sin tener que compararlo entero con el original. Quien envía calcula un número corto, quien recibe lo vuelve a calcular y, si los dos coinciden, lo más probable es que nada se haya dañado en el camino. La usan los archivos ZIP, las imágenes PNG y las redes Ethernet.
CRC-32 trata el mensaje como un número binario enorme y lo divide entre un polinomio fijo; el residuo, de 32 bits, es el resultado. En la práctica se calcula byte por byte con una tabla preparada de antemano, y por eso es tan rápido.
Debilidades
Protege contra errores accidentales, no contra alguien que cambia el mensaje a propósito. Cualquiera puede ajustar cuatro bytes para que un mensaje falso tenga el mismo CRC que el verdadero, como muestra el último paso. Para detectar cambios intencionales se necesita un hash criptográfico o, mejor aún, una firma.
Durante años MD5 fue el hash de uso general. Convierte cualquier mensaje en 128 bits, siempre los mismos para el mismo mensaje y sin relación visible con él. Se usaba para guardar contraseñas, verificar descargas y firmar certificados.
Rellena el mensaje hasta completar bloques de 512 bits y mezcla cada uno en 64 pasos de sumas, rotaciones y funciones lógicas sobre cuatro registros de 32 bits.
Debilidades
Desde 2004 se pueden fabricar colisiones, dos mensajes distintos con el mismo MD5, en segundos y con una computadora común. En 2012 el malware Flame usó una colisión de MD5 para falsificar un certificado de Microsoft. Además es tan rápido que una tarjeta gráfica prueba miles de millones de contraseñas por segundo. Hoy solo sirve como suma de verificación contra errores accidentales, igual que un CRC.
SHA-256 sostiene buena parte de internet, desde los certificados HTTPS y las firmas de software hasta Git y Bitcoin. Produce 256 bits y, a diferencia de MD5, nadie ha encontrado una colisión ni una forma de volver del resultado al mensaje.
Funciona de forma parecida a MD5, con ocho registros, 64 rondas y una expansión del bloque en la que cada palabra nueva depende de cuatro anteriores. Cambiar un solo bit del mensaje cambia, en promedio, la mitad de los bits del resultado.
Debilidades
Es un hash seguro, pero rápido, y por eso no basta para guardar contraseñas; quien ataca puede probar miles de millones de candidatas por segundo. Para eso existen algoritmos lentos a propósito, como Argon2id. Una computadora cuántica solo reduciría a la mitad su resistencia en bits (el algoritmo de Grover), y eso todavía deja un margen enorme.
SHA-3 es el estándar que el NIST eligió en 2015 mediante un concurso abierto. No fue porque SHA-256 estuviera roto, sino para tener una alternativa construida de una forma completamente distinta, por si algún día aparece una debilidad en la familia SHA-2.
En lugar de bloques encadenados usa una «esponja», un estado de 1600 bits que absorbe el mensaje por partes y después se exprime para sacar el resultado. Cada ronda aplica cinco pasos, θ, ρ, π, χ e ι, y solo χ no es lineal. Con la misma esponja se construyen SHAKE128 y SHAKE256, que ML-KEM y ML-DSA usan por dentro.
Debilidades
No se le conocen debilidades prácticas. Igual que SHA-256, es demasiado rápido para guardar contraseñas.
Para guardar contraseñas no conviene un hash rápido, sino uno lento a propósito. Argon2id ganó la Password Hashing Competition en 2015 y es el que hoy recomienda OWASP. Además de tiempo, exige memoria; cada intento llena varios megabytes en los que cada bloque depende de otros anteriores.
La sal es un valor aleatorio que se guarda junto al resultado. Con ella, dos personas con la misma contraseña obtienen resultados distintos, y quien ataca tiene que ir por cada cuenta por separado. Lo que guarda el servidor es la línea completa que ves al final, con el algoritmo, el costo, la sal y el resultado, pero nunca la contraseña.
Cambia la memoria y mira cómo crece el tiempo. Para ti es un instante al iniciar sesión; para quien prueba mil millones de contraseñas es un costo enorme.
Debilidades
Una contraseña corta o común se adivina igual, solo que más despacio. Aquí la memoria es poca para que la demostración funcione en cualquier equipo; en un servidor se usan al menos 19 MiB, como recomienda OWASP.
Julio César cifraba sus mensajes militares recorriendo cada letra un número fijo de lugares en el alfabeto. Con 3, la A se vuelve D y «hola» se vuelve «krod». Para descifrar, se recorren hacia atrás.
Debilidades
Solo hay 25 llaves posibles, así que basta con probarlas todas, como en el último paso; solo una da un texto legible. Además, una letra siempre se cifra igual, y las letras más frecuentes del idioma delatan la llave.
Vigenère cifrado histórico
Vigenère usa una palabra como llave, y cada letra de la llave indica cuánto recorrer la letra del mensaje que le corresponde. La misma letra del mensaje puede cifrarse distinto según su posición, y por eso se le llamó «el cifrado indescifrable» durante unos tres siglos.
Debilidades
La llave se repite. En el siglo XIX, Charles Babbage y Friedrich Kasiski descubrieron cómo encontrar su longitud a partir de secuencias repetidas en el texto cifrado. Con la longitud conocida, el texto se separa en columnas, y cada columna es un César simple que cae con un análisis de frecuencias. El último paso muestra esas columnas.
AES-256-GCM cifrado simétrico
AES es el cifrado simétrico estándar desde 2001; la misma llave cifra y descifra. Lo usan HTTPS, el Wi-Fi con WPA2 y WPA3, los discos cifrados y casi cualquier aplicación de mensajería. Trabaja con bloques de 16 bytes en una cuadrícula de 4×4 que pasa por 14 rondas de sustitución, desplazamiento, mezcla y suma de la llave.
GCM es el modo en que se usa. AES cifra un contador, el resultado se combina con el mensaje mediante XOR y, al final, se calcula una etiqueta que detecta cualquier alteración. El nonce es un número que nunca debe repetirse con la misma llave; aquí se genera uno nuevo cada vez, por eso el resultado cambia aunque el mensaje no.
Debilidades
Con una llave aleatoria de 256 bits no hay ataque práctico, ni siquiera con computadoras cuánticas. El peligro es usarlo mal; repetir un nonce con la misma llave permite recuperar mensajes y falsificar etiquetas. El problema de fondo es otro, ¿cómo comparten la llave dos personas que nunca se han visto? Para eso existe la criptografía de llave pública.
ChaCha20-Poly1305 hace el mismo trabajo que AES-GCM con otra construcción. Lo diseñó Daniel J. Bernstein y solo usa sumas, rotaciones y XOR (lo que se conoce como ARX), así que es rápido incluso en teléfonos sin instrucciones especiales para AES. Lo usan TLS 1.3, WireGuard y SSH.
ChaCha20 mezcla una cuadrícula de 16 palabras (constantes, la llave, un contador y el nonce) durante 20 rondas y produce un flujo de bytes que se combina con el mensaje. Poly1305 calcula la etiqueta evaluando un polinomio módulo 2¹³⁰ − 5.
Debilidades
No se conoce un ataque práctico, tampoco con computadoras cuánticas. Igual que con AES-GCM, un nonce nunca debe repetirse con la misma llave.
RSA (1977) fue el primer cifrado de llave pública práctico. Cualquiera puede cifrar con la llave pública, pero solo quien tiene la llave privada puede descifrar. Su seguridad descansa en que multiplicar dos primos enormes es fácil y separarlos de nuevo no.
Cifrar es elevar el mensaje, convertido en número, a la potencia e módulo n; descifrar es elevar el resultado a d. OAEP es un relleno aleatorio que se aplica antes, para que el mismo mensaje nunca dé el mismo resultado. En una llave de 2048 bits solo caben 190 bytes; en la práctica, RSA cifra una llave de AES y AES cifra los datos.
Debilidades
Una computadora cuántica lo bastante grande factorizaría n con el algoritmo de Shor y obtendría la llave privada. Por eso el NIST propone dejar de permitir RSA en 2035. Además, alguien puede guardar hoy mensajes cifrados para descifrarlos cuando esa computadora exista.
X25519 resuelve cómo compartir una llave sin enviarla. Alicia y Bob eligen cada uno un número secreto y publican el resultado de multiplicar un punto de una curva elíptica por ese número; después, cada uno multiplica el resultado del otro por su propio secreto. Los dos llegan al mismo punto, y quien solo vio los valores públicos no puede calcularlo.
Es el intercambio de llaves más usado hoy, en TLS 1.3, Signal, WhatsApp y SSH. Aquí el secreto compartido se convierte en una llave de AES-256-GCM que cifra tu mensaje.
Debilidades
Igual que a RSA, el algoritmo de Shor lo rompería en una computadora cuántica grande. Por eso los navegadores ya lo combinan con ML-KEM (X25519MLKEM768), que es lo que muestra la siguiente categoría.
ML-KEM (FIPS 203, 2024) es el reemplazo post-cuántico del intercambio de llaves. Su seguridad viene de un problema de retículas llamado «aprendizaje con errores». La llave pública es una matriz aleatoria A multiplicada por un secreto de números pequeños, más un poco de ruido. Sin el ruido sería un sistema de ecuaciones fácil de resolver; con él, nadie conoce una forma eficiente, ni siquiera con computadoras cuánticas.
Alicia elige 32 bytes al azar, los esconde en polinomios usando la llave pública de Bob y le envía el resultado. Bob usa su secreto para quitar casi todo el ruido; cada coeficiente queda cerca de 0 o de 1665, y al redondear se recuperan los bits. A partir de ahí, los dos derivan el mismo secreto de 32 bytes, que aquí cifra tu mensaje con AES-256-GCM.
Debilidades
Es joven comparado con RSA y las curvas elípticas, por eso hoy se usa junto con X25519; si alguno de los dos cae, el otro sigue protegiendo. Las llaves y los textos cifrados son mucho más grandes, 1184 y 1088 bytes contra 32 de X25519.
ML-DSA (FIPS 204, 2024) es la firma digital post-cuántica. Una firma prueba que un mensaje viene de quien tiene la llave privada y que nadie lo cambió; cualquiera con la llave pública puede comprobarla.
Para firmar se elige un vector aleatorio y, y se desplaza con el secreto según un desafío c que sale de un hash del mensaje. Si el resultado z pudiera revelar algo del secreto por ser demasiado grande, se descarta y se intenta otra vez; en promedio se necesitan unos cinco intentos. Para verificar se repite el cálculo con la llave pública y se comprueba que sale el mismo desafío. Al final verás que basta cambiar un carácter del mensaje para que la firma ya no sea válida.
Debilidades
Las firmas ocupan 3309 bytes, contra 64 de Ed25519, y eso pesa en los certificados y en los protocolos con muchas firmas. Igual que ML-KEM, es reciente, así que la transición se hace con cuidado y por etapas.