Criptografía básica: qué es, cómo funciona y por qué importa
· 13 min de lectura
Aprende los fundamentos de la criptografía: cifrado simétrico con AES, cifrado asimétrico con RSA, hashing con SHA-256, firmas digitales, certificados TLS y la diferencia entre encoding, cifrado y hashing, con ejemplos prácticos usando openssl.
Es la decimotercera lección de la Tanda 12 de /aprende. Cada vez que inicias sesión en una web, envías un mensaje de WhatsApp o compras algo en línea, la criptografía trabaja en silencio para que nadie más lea esa información. Sin ella, tus contraseñas viajarían en texto plano, tus datos bancarios serían visibles para cualquiera en la red y no habría forma de verificar que un archivo no fue alterado.
Para alguien que empieza en ciberseguridad, entender criptografía es esencial. No necesitas ser matemático: basta con conocer qué tipos de cifrado existen, cuándo se usa cada uno y cómo funcionan las herramientas básicas. Esta lección te lo explica desde cero, con analogías simples y ejemplos que puedes ejecutar en tu terminal.
La criptografía es una herramienta defensiva. Los conceptos que aprenderás aquí son para proteger información y entender mecanismos de seguridad. Descifrar datos ajenos sin autorización es un delito. Practica solo en tus propios entornos o en los laboratorios de whoami-labs.
Qué es la criptografía#
La criptografía es la ciencia de proteger información transformándola en algo ilegible para quien no tenga la clave correcta. La palabra viene del griego: kryptós (oculto) y graphein (escribir). En la práctica, es el conjunto de técnicas que permite cifrar datos, verificar su integridad y confirmar la identidad de quien los envía.
Piensa en una carta que metes dentro de una caja fuerte. Solo quien tiene la llave puede abrirla y leer el contenido. La criptografía funciona de forma parecida, pero con matemáticas en lugar de metal: convierte un mensaje legible (texto plano) en uno incomprensible (texto cifrado) usando un algoritmo y una clave.

La criptografía moderna se divide en tres grandes familias. El cifrado simétrico, donde la misma clave cifra y descifra. El cifrado asimétrico, donde se usan dos claves distintas: una pública y una privada. Y el hashing, que no es cifrado sino una función de un solo sentido que genera una huella única de los datos.
Por qué es importante#
Sin criptografía, internet no funcionaría como la conocemos. Estas son las tres razones principales por las que cualquier profesional de seguridad necesita entenderla.
La confidencialidad impide que alguien intercepte tus datos y los lea. Cuando visitas un sitio con HTTPS, todo el tráfico entre tu navegador y el servidor va cifrado con TLS. Un atacante que capture ese tráfico solo verá datos incomprensibles.
La integridad garantiza que los datos no fueron alterados. Cuando descargas un archivo y verificas su hash SHA-256, estás comprobando que nadie lo modificó en el camino. Si un solo bit cambió, el hash será completamente diferente.
La autenticación confirma quién envió un mensaje. Las firmas digitales permiten demostrar que un documento fue firmado por una persona concreta y que no se alteró después. Es lo que usan los certificados de los sitios web para demostrar que son quienes dicen ser.
Conceptos clave#
Antes de profundizar, es importante que distingas tres operaciones que mucha gente confunde: encoding, cifrado y hashing. Se parecen en que transforman datos, pero su propósito es totalmente diferente.
| Concepto | Propósito | Reversible | Usa clave | Ejemplo |
|---|---|---|---|---|
| Encoding | Representar datos en otro formato | Sí, siempre | No | Base64, URL encoding, UTF-8 |
| Cifrado (encryption) | Proteger la confidencialidad | Sí, con la clave | Sí | AES-256, RSA, ChaCha20 |
| Hashing | Verificar integridad, almacenar contraseñas | No (unidireccional) | No | SHA-256, bcrypt, MD5 |
Base64 es el ejemplo perfecto de la confusión. Mucha gente cree que codificar en Base64 protege la información, pero no es así. Base64 solo cambia la representación de los datos para que se puedan transmitir en formatos que no aceptan bytes arbitrarios (como el correo electrónico). Cualquiera puede decodificarlo al instante porque no hay ninguna clave.
# Codificar en Base64 (NO es cifrado)
echo "texto secreto" | base64
# Resultado: dGV4dG8gc2VjcmV0bwo=
# Decodificar (cualquiera puede hacerlo)
echo "dGV4dG8gc2VjcmV0bwo=" | base64 -d
# Resultado: texto secreto
Cómo funciona#
Cifrado simétrico#
En el cifrado simétrico, la misma clave sirve para cifrar y para descifrar. Es como una cerradura donde la misma llave abre y cierra la puerta. El algoritmo estándar hoy es AES (Advanced Encryption Standard), que trabaja con claves de 128, 192 o 256 bits.
La ventaja del cifrado simétrico es la velocidad: es muy rápido y eficiente, ideal para cifrar grandes volúmenes de datos. El problema es la distribución de la clave. Si necesitas enviar un mensaje cifrado a alguien, primero tienes que compartir la clave de forma segura, y ahí está el dilema: no puedes enviarla por el mismo canal inseguro.
Cifrado asimétrico#
El cifrado asimétrico resuelve el problema de la distribución de claves usando un par de claves: una pública (que compartes con todo el mundo) y una privada (que guardas solo tú). Lo que se cifra con la pública solo se descifra con la privada, y viceversa.
La analogía del candado abierto lo explica bien. Imagina que repartes candados abiertos (tu clave pública) a quien quiera enviarte un mensaje. Cualquiera puede meter su mensaje en una caja y cerrar el candado, pero solo tú tienes la llave (tu clave privada) para abrirlo. El algoritmo más conocido es RSA, que usa números primos muy grandes para generar las claves.
El cifrado asimétrico es más lento que el simétrico, así que en la práctica se combinan: se usa RSA para intercambiar de forma segura una clave simétrica AES, y luego AES cifra todo el tráfico. Esto es exactamente lo que hace TLS.
Hashing#
Una función hash toma datos de cualquier tamaño y produce una huella de tamaño fijo. La analogía más clara es una trituradora de papel: puedes meter cualquier documento y siempre sale confeti del mismo tamaño, pero no puedes reconstruir el documento original a partir del confeti.
Las características clave de un buen hash son las siguientes. Es determinista: la misma entrada siempre produce la misma salida. Es unidireccional: no puedes recuperar la entrada a partir del hash. Y tiene efecto avalancha: si cambias un solo carácter de la entrada, el hash cambia completamente.
# Calcular el hash SHA-256 de un texto
echo -n "hola mundo" | sha256sum
# ca8f60b2cc7f05837d98b208b57fb6481553fc5f1219d59618fd025002a66f5c
# Cambiar una sola letra produce un hash totalmente diferente
echo -n "hola Mundo" | sha256sum
# 4ae71336e44bf9bf79d2752e234818a5c96e2b8e09afb5e1ad0e1a55e4016caf
MD5 y SHA-1 están obsoletos para seguridad porque se les encontraron colisiones (dos entradas distintas que producen el mismo hash). SHA-256 es el estándar actual.
Firmas digitales#
Una firma digital combina hashing y cifrado asimétrico. El proceso es el siguiente: tomas un documento, calculas su hash y luego cifras ese hash con tu clave privada. Cualquiera puede verificar la firma descifrando con tu clave pública y comprobando que el hash coincide con el del documento.
Es como firmar un documento notarial: demuestra quién lo firmó (autenticación) y que no se alteró después (integridad).
Certificados y TLS#
Un certificado digital (estándar X.509) es un archivo que asocia una clave pública con una identidad (un dominio, una empresa). Lo emite una Autoridad de Certificación (CA) como Let's Encrypt, que actúa como notario digital verificando que el solicitante controla el dominio.
Cuando tu navegador se conecta a un sitio HTTPS, ocurre el handshake TLS de forma simplificada. El navegador envía un saludo al servidor y le dice qué algoritmos soporta. El servidor responde con su certificado (que contiene su clave pública). El navegador verifica el certificado con la CA. Si todo es válido, ambos acuerdan una clave simétrica de sesión. A partir de ahí, todo el tráfico va cifrado con esa clave simétrica (AES).
Uso práctico paso a paso#
Vamos a usar openssl, una herramienta que viene instalada en la mayoría de sistemas Linux y macOS. En Windows puedes usarla desde WSL o Git Bash.
Paso 1: cifrado simétrico con AES#
# Cifrar un archivo con AES-256-CBC
openssl enc -aes-256-cbc -salt -pbkdf2 -in secreto.txt -out secreto.enc
# Te pedirá una contraseña. Esa contraseña deriva la clave AES.
# Descifrar el archivo
openssl enc -d -aes-256-cbc -pbkdf2 -in secreto.enc -out recuperado.txt
El flag -pbkdf2 usa una función de derivación de clave que hace más difícil los ataques de fuerza bruta contra la contraseña.
Paso 2: generar un par de claves RSA#
# Generar una clave privada RSA de 2048 bits
openssl genrsa -out mi_clave_privada.pem 2048
# Extraer la clave pública correspondiente
openssl rsa -in mi_clave_privada.pem -pubout -out mi_clave_publica.pem
# Ver el contenido de la clave pública
cat mi_clave_publica.pem
Paso 3: cifrar y descifrar con RSA#
# Cifrar un mensaje corto con la clave pública
echo "mensaje secreto" | openssl rsautl -encrypt -pubin \
-inkey mi_clave_publica.pem -out mensaje.enc
# Descifrar con la clave privada
openssl rsautl -decrypt -inkey mi_clave_privada.pem \
-in mensaje.enc
# Resultado: mensaje secreto
RSA solo puede cifrar datos más pequeños que la clave. Para archivos grandes se usa cifrado híbrido: RSA cifra una clave AES, y AES cifra el archivo.
Paso 4: calcular y verificar hashes#
# Hash SHA-256 de un archivo
sha256sum archivo.iso
# 3d2e8b4f... archivo.iso
# Comparar con el hash publicado por el autor
echo "3d2e8b4f... archivo.iso" | sha256sum -c
# archivo.iso: OK
Paso 5: verificar un certificado TLS#
# Ver el certificado de un sitio web
openssl s_client -connect whoami-labs.com:443 -servername whoami-labs.com \
< /dev/null 2>/dev/null | openssl x509 -text -noout | head -20
Qué puedes hacer con esto#
| Situación | Técnica a usar | Herramienta |
|---|---|---|
| Proteger un archivo confidencial | Cifrado simétrico AES | openssl enc |
| Enviar un mensaje que solo un destinatario pueda leer | Cifrado asimétrico RSA | openssl rsautl, GPG |
| Verificar que una descarga no fue alterada | Hash SHA-256 | sha256sum |
| Comprobar la identidad de un sitio web | Certificado TLS (X.509) | openssl s_client, navegador |
| Almacenar contraseñas de forma segura | Hashing con sal (bcrypt, argon2) | Frameworks web, htpasswd |
| Firmar un documento o un commit de Git | Firma digital | GPG, openssl dgst |
Buenas prácticas#

Nunca inventes tu propio algoritmo de cifrado. Usa los estándares probados: AES-256 para cifrado simétrico, RSA-2048 o superior (o mejor, curvas elípticas como Ed25519) para asimétrico, y SHA-256 o SHA-3 para hashing.
Protege las claves privadas como si fueran la llave de tu casa. Una clave privada comprometida invalida toda la seguridad que construiste sobre ella. Guárdalas con permisos restrictivos (chmod 600) y nunca las subas a repositorios públicos.
Para almacenar contraseñas, nunca uses MD5 ni SHA-256 directamente. Usa funciones diseñadas para contraseñas como bcrypt, scrypt o Argon2, que incluyen sal (un valor aleatorio) y son deliberadamente lentas para dificultar ataques de diccionario.
Mantén las bibliotecas de cifrado actualizadas. Las vulnerabilidades en implementaciones criptográficas (como Heartbleed en OpenSSL) aparecen regularmente, y un parche tardío deja una ventana de ataque.
Usa siempre HTTPS y verifica certificados. Si desarrollas aplicaciones, no desactives la verificación de certificados en producción, aunque sea tentador para pruebas.
Errores comunes de principiante#
- Creer que Base64 cifra datos. Base64 es encoding, no cifrado. Cualquiera puede decodificarlo. No protege nada.
- Usar MD5 o SHA-1 para seguridad. Están rotos para uso criptográfico. MD5 se puede colisionar en segundos con hardware moderno. Usa SHA-256 como mínimo.
- Cifrar sin entender la gestión de claves. El algoritmo puede ser perfecto, pero si la clave está en un archivo de texto en el escritorio o hardcodeada en el código fuente, no sirve de nada.
- Confundir hashing con cifrado. Si hasheas algo, no lo puedes recuperar. Si necesitas recuperar el dato original, necesitas cifrado, no hashing.
- Usar claves RSA demasiado cortas. RSA de 1024 bits ya no se considera seguro. Usa 2048 como mínimo, idealmente 4096 para usos de largo plazo.
- Olvidar la sal en los hashes de contraseñas. Sin sal, dos usuarios con la misma contraseña tendrán el mismo hash, y un atacante puede usar tablas rainbow precalculadas.
Preguntas frecuentes#
Diferencia entre cifrado simétrico y asimétrico#
El cifrado simétrico usa la misma clave para cifrar y descifrar, es rápido y se usa para datos grandes. El asimétrico usa un par de claves (pública y privada), es más lento y se usa para intercambiar claves o firmar. En la práctica se combinan: el asimétrico intercambia la clave y el simétrico cifra los datos.
Base64 es seguro#
No. Base64 es un esquema de codificación, no de cifrado. No tiene clave ni protección. Sirve para representar datos binarios como texto (por ejemplo, adjuntos en emails), pero no oculta nada. Nunca lo uses para proteger información sensible.
Por qué no usar MD5#
MD5 tiene colisiones conocidas: se pueden generar dos archivos distintos con el mismo hash MD5. Esto permite a un atacante sustituir un archivo legítimo por uno malicioso sin que el hash cambie. Para verificar integridad, usa SHA-256. Para contraseñas, usa bcrypt o Argon2.
Qué son hashcat y John the Ripper#
Son herramientas de auditoría de contraseñas. Toman hashes (por ejemplo, de una base de datos filtrada) e intentan encontrar las contraseñas originales probando millones de combinaciones. Los profesionales de seguridad las usan en auditorías autorizadas para evaluar la fortaleza de las contraseñas de una organización.
Qué pasa si pierdo mi clave privada#
Si pierdes la clave privada, no podrás descifrar nada que se cifró con la clave pública correspondiente. Por eso es crítico hacer backups seguros de las claves privadas. En el caso de certificados TLS, tendrías que generar un nuevo par de claves y obtener un certificado nuevo.
TLS y SSL son lo mismo#
SSL (Secure Sockets Layer) es el antecesor de TLS (Transport Layer Security). SSL está obsoleto y tiene vulnerabilidades conocidas. Cuando alguien dice SSL hoy, normalmente se refiere a TLS. Los sitios web modernos usan TLS 1.2 o TLS 1.3. Si ves que un servidor solo soporta SSL 3.0, es una señal de riesgo.
Resumen#
- La criptografía protege la confidencialidad, integridad y autenticación de los datos mediante operaciones matemáticas.
- El cifrado simétrico (AES) usa una sola clave y es rápido para grandes volúmenes. El asimétrico (RSA) usa dos claves y resuelve el problema de la distribución.
- El hashing (SHA-256) genera huellas únicas para verificar integridad, pero no es reversible ni es cifrado.
- Base64 es encoding: no protege nada, solo cambia la representación.
- Las firmas digitales combinan hashing y cifrado asimétrico para garantizar autenticación e integridad.
- TLS usa cifrado híbrido (asimétrico para intercambiar la clave, simétrico para el tráfico) y certificados X.509 para asegurar las conexiones web.
- Usa siempre algoritmos estándar, protege las claves privadas y mantén las bibliotecas actualizadas.