Saltar al contenido
Nuevo

DeepSeek V4.1 Flash gratis por 7 días: 10M tokens al día tras cualquier recarga. Hasta el 30/11.

Cómo funciona

¿Qué es la criptografía? Cifrado, claves, hashes y ejemplos cotidianos

Criptografía desde cero: cifrado, claves, hashes, firmas digitales y por qué el cifrado César enseña ideas pero no protege nada.

Principiante5 min de lecturaPor NotHoly

La criptografía es el conjunto de métodos matemáticos que se usan para proteger la información. Esos métodos mantienen los datos en privado, muestran cuándo alguien los ha alterado, confirman quién envió un mensaje y permiten que dos partes confíen una en otra a través de una red que ninguna de las dos controla. La usas cada vez que un navegador abre un sitio HTTPS, cuando una actualización de software está firmada o cuando un sitio web comprueba tu contraseña sin guardarla como texto en claro.

El cifrado es una herramienta dentro de la criptografía, y el campo es más amplio que eso.

El cifrado convierte datos legibles en datos ilegibles

En el cifrado, el texto en claro y una clave pasan por un algoritmo y producen el texto cifrado. Quien tiene la clave correcta puede deshacer el proceso. Quien no la tiene no debería obtener nada útil del texto cifrado.

Una cerradura sirve de comparación. El mecanismo es el algoritmo, y la clave es el único objeto que la abre. La comparación se rompe pronto, porque una clave de software es un número y no una pieza de metal. Aun así, separa dos cosas que la gente suele mezclar: el método, que puede ser público, y el valor secreto, que debe quedarse en privado.

El principio de Kerckhoffs, formulado en el siglo XIX, dice que un sistema debe seguir siendo seguro aunque todo, salvo la clave, sea conocido. Los diseños criptográficos modernos siguen esa regla. Si un diseño solo funciona mientras el algoritmo se mantiene oculto, desconfía de él.

Cifrado simétrico y asimétrico

En el cifrado simétrico, una sola clave secreta cifra y descifra. AES es el cifrado por bloques simétrico estándar, especificado por el NIST en el FIPS 197. Es rápido, por eso se encarga de la mayor parte de los datos de un sistema. La parte difícil es que ambos lados tengan la misma clave sin que un atacante la vea.

Elegir AES es solo la primera decisión. El modo de operación, el manejo de los nonces y si el texto cifrado se autentica deciden si el diseño es seguro. "Usamos AES" es un punto de partida, no una explicación.

En el cifrado asimétrico, cada parte tiene un par de claves: una clave pública que cualquiera puede ver y una clave privada que se queda con su propietario. Los esquemas asimétricos permiten que dos partes acuerden un secreto compartido por un canal abierto y que quien firma demuestre que posee la clave privada. TLS 1.3 usa operaciones asimétricas en su handshake para acordar claves y verificar la identidad del servidor, y después pasa a cifrado simétrico para los datos. La RFC 8446 describe este diseño.

El hash no es cifrado

Una función hash criptográfica recibe una entrada de cualquier longitud y devuelve un resumen de longitud fija. SHA-256, especificado en el FIPS 180-4, siempre devuelve 256 bits. Un buen hash hace inviable encontrar dos entradas con el mismo resumen y hace inviable recuperar la entrada a partir del resumen. No hay clave ni paso de descifrado.

Los hashes sirven para comprobar la integridad. Si el resumen de un archivo descargado coincide con el valor que publica el fabricante, el archivo es muy probablemente el que se publicó. Los hashes también aparecen dentro de firmas y de muchos otros protocolos.

Las contraseñas necesitan más que un hash simple. Una función rápida como SHA-256 permite a un atacante probar una cantidad enorme de intentos por segundo en hardware adecuado. La OWASP Password Storage Cheat Sheet recomienda una función deliberadamente lenta y con uso intensivo de memoria, como Argon2id, con una sal única para cada contraseña y parámetros ajustados a tu hardware. La RFC 9106 define Argon2.

La codificación no es cifrado

Base64 convierte datos binarios en caracteres de texto para que pasen por sistemas que esperan texto. La transformación no usa ningún secreto, así que cualquiera puede revertirla. La codificación existe para hacer portables los datos, no para ocultarlos. Las tres ideas resuelven problemas distintos:

  • Codificación cambia el formato, y cualquiera puede revertirlo.
  • Cifrado oculta el contenido, y solo quien tiene la clave puede revertirlo.
  • Hash produce una huella digital del contenido, y no está hecha para revertirse.

El cifrado César: buena lección, mala cerradura

El cifrado César desplaza cada letra la misma cantidad de posiciones. Con un desplazamiento de tres, A se convierte en D, H en K, y así sucesivamente. Es un cifrado por sustitución, y ya contiene el vocabulario básico: texto en claro, clave, texto cifrado y algoritmo.

Falla con datos reales por una razón simple. El alfabeto tiene 26 letras, así que solo 25 desplazamientos cambian el texto. Una computadora los prueba todos al instante, y una persona puede probarlos en papel. La frecuencia de las letras en un mensaje largo revela el desplazamiento todavía más rápido. Por eso sirve para clase y no para proteger nada.

Los comandos de abajo se ejecutaron en Git Bash, en Windows 11, usando tr, sha256sum y base64. Ejecútalos tú mismo en tu equipo. No pegues contraseñas reales ni textos confidenciales en ningún sitio web para probarlos.

Desplazar un mensaje hacia adelante y hacia atrás

bash
printf 'HELLO' | tr 'A-Z' 'D-ZA-C'

Salida:

text
KHOOR

Deshacer el desplazamiento:

bash
printf 'KHOOR' | tr 'D-ZA-C' 'A-Z'

Salida:

text
HELLO

Ver cómo reacciona un hash ante una letra cambiada

bash
printf 'HELLO' | sha256sum | cut -d' ' -f1
printf 'HELLP' | sha256sum | cut -d' ' -f1

Salida:

text
3733cd977ff8eb18b987357e22ced99f46097f31ecb239e878ae63760e83e4d5
d37f1f826f924dcd23aacbdc875edd4808b9e118d35adb9dce1c80cb23c4a9c1

Cambiar una letra cambia todo el resumen. Nada en la salida te permite recuperar HELLO. Para comprobar un intento, calculas el hash del intento y comparas.

Codificar sin cifrar

bash
printf 'HELLO' | base64

Salida:

text
SEVMTE8=

Quien vea SEVMTE8= puede decodificarlo. Trátalo como un formato, no como un secreto.

Errores comunes

  • Llamar "cifrado" a un dato codificado. Base64 no ofrece confidencialidad.
  • Tratar un hash como un contenedor reversible. Un hash no devuelve la contraseña original. Solo puedes probar candidatos contra él.
  • Guardar contraseñas con un hash rápido, o sin sal.
  • Crear tu propio cifrado o protocolo. Usa bibliotecas revisadas y protocolos estándar, y sigue sus recomendaciones sobre modos y parámetros.
  • Suponer que el cifrado por sí solo hace seguros los datos. El almacenamiento de claves, el control de acceso y el software alrededor del cifrado suelen decidir el resultado.

Qué estudiar después

Empieza por los objetivos básicos de la seguridad: confidencialidad, integridad y disponibilidad, que aparecen en el artículo sobre fundamentos de ciberseguridad. Después lee el artículo sobre el cifrado César, que profundiza en la sustitución y en el análisis de frecuencias. Luego estudia hashes, claves simétricas y TLS, usando las fuentes primarias listadas con este artículo en lugar de resúmenes.

Practica en tu propia máquina, con datos sintéticos o en un laboratorio que sea tuyo o que tengas autorización por escrito para probar.

Fuentes

  1. NIST Cryptography glossary
  2. NIST Encryption glossary
  3. FIPS 197, Advanced Encryption Standard (AES)
  4. FIPS 180-4, Secure Hash Standard (SHS)
  5. RFC 8446, The Transport Layer Security (TLS) Protocol Version 1.3
  6. RFC 9106, Argon2 Memory-Hard Function for Password Hashing and Other Applications
  7. OWASP Password Storage Cheat Sheet
  8. MDN Web Docs: Base64 (glossary)

Más en Criptografía

Criptografía

Contraseñas y hash con Argon2id

Por qué los hashes rápidos fallan con contraseñas, qué hacen la sal y el factor de trabajo, y cómo hashear y verificar con Argon2id en Python.

Intermedio11 min de lectura