Fundamentos de Criptografía
Por Qué la Criptografía Sostiene la Seguridad Moderna
La criptografía es la ciencia de proteger la información transformándola de modo que solo las partes autorizadas puedan entenderla. Es el motor invisible que hace posible la confidencialidad y la integridad de la tríada CIA: cada vez que compras algo en línea, envías un mensaje por una app de mensajería cifrada o inicias sesión en un sitio seguro, hay criptografía trabajando por debajo, aunque nunca la veas.
Un principio fundamental es el de Kerckhoffs: la seguridad de un sistema no debe depender de mantener el algoritmo en secreto, sino únicamente de la clave. Dicho de otro modo, un buen sistema criptográfico sigue siendo seguro aunque el atacante conozca exactamente cómo funciona, siempre que no tenga la clave. Por eso los algoritmos sólidos son públicos y han resistido años de análisis por parte de la comunidad mundial. Desconfía siempre de soluciones que prometen seguridad mediante "algoritmos secretos propietarios": si nadie pudo revisarlos, nadie puede garantizar que no tengan fallos, y la historia está llena de esos algoritmos secretos que se rompieron apenas salieron a la luz.
En esta lección no nos convertiremos en criptógrafos —no vas a diseñar algoritmos ni a hacer matemática avanzada—, sino que entenderemos los bloques de construcción esenciales y cómo se combinan para proteger datos en reposo (guardados en un disco) y en tránsito (viajando por la red). Ese entendimiento te permite tomar buenas decisiones e interpretar las señales de seguridad que ves todos los días.
Cifrado Simétrico
En el cifrado simétrico, la misma clave se usa para cifrar y para descifrar. Piénsalo como una caja fuerte con una única combinación: quien la conoce puede tanto guardar como sacar el contenido. Es rápido y eficiente, ideal para proteger grandes volúmenes de datos. El estándar dominante hoy es AES (Advanced Encryption Standard), típicamente con claves de 128 o 256 bits (AES-256), considerado seguro y usado en todo: desde el cifrado de discos (BitLocker, FileVault) hasta las conexiones seguras y las copias de seguridad.
El desafío del cifrado simétrico es la distribución de la clave. Ambas partes deben compartir el mismo secreto, pero ¿cómo se lo intercambian de forma segura a través de un canal potencialmente vigilado? Si un atacante intercepta la clave mientras viaja, toda la protección se desmorona: ya puede leer todo. Es el clásico problema del huevo y la gallina — para comunicarte de forma segura necesitas una clave compartida, pero para compartir esa clave de forma segura ya necesitarías un canal seguro. Este dilema motivó el desarrollo de la criptografía asimétrica.
Cuando se usa correctamente —con claves de longitud adecuada y modos de operación seguros— el cifrado simétrico es extraordinariamente robusto: ni el hardware más potente puede quebrar AES-256 por fuerza bruta en tiempos útiles. El eslabón débil casi nunca es el algoritmo, sino la gestión de las claves: dónde se guardan, quién tiene acceso, cómo se rotan. Una clave escrita en un archivo de texto en el escritorio anula el mejor algoritmo del mundo.
Cifrado Asimétrico
El cifrado asimétrico, o de clave pública, resuelve el problema de la distribución usando un par de claves matemáticamente relacionadas: una pública, que se puede compartir abiertamente con cualquiera, y una privada, que se mantiene en secreto absoluto. Lo cifrado con la clave pública solo puede descifrarse con la privada, y viceversa. La genialidad está en que puedes publicar tu clave pública en cualquier lado sin comprometer nada.
Una analogía útil: la clave pública es como un buzón con ranura en tu puerta. Cualquiera puede echar una carta por la ranura (cifrar con tu clave pública), pero solo tú, con la llave del buzón (tu clave privada), puedes abrirlo y leer las cartas. Esto habilita dos usos poderosos:
- Confidencialidad: cualquiera puede cifrar un mensaje con tu clave pública sabiendo que solo tú, con tu clave privada, podrás leerlo.
- Autenticidad e integridad (firma digital): puedes firmar un documento con tu clave privada, y cualquiera puede verificar la firma con tu clave pública. Si la verificación es válida, prueba que el mensaje vino de ti y no fue alterado.
Algoritmos como RSA y los basados en curvas elípticas (ECC) implementan estos mecanismos. En la práctica, el cifrado asimétrico es más lento que el simétrico, por lo que rara vez se usa para cifrar grandes volúmenes. En cambio, se emplea para intercambiar de forma segura una clave simétrica, combinando lo mejor de ambos mundos: la seguridad de distribución del asimétrico y la velocidad del simétrico. Este esquema híbrido es exactamente lo que usa, entre otros, el protocolo TLS que veremos al final.
Puedes ver un par de claves real generándose con una herramienta legítima y cotidiana como la de SSH (usada para administrar servidores de forma segura):
# Genera un par de claves: una privada (secreta) y una pública (compartible)
ssh-keygen -t ed25519 -C "tu-correo@ejemplo.com"
# Crea: ~/.ssh/id_ed25519 (privada: NUNCA se comparte)
# ~/.ssh/id_ed25519.pub (pública: se puede entregar sin riesgo)
Hashing: Integridad y Huellas Digitales
Una función hash criptográfica toma una entrada de cualquier tamaño —una palabra, un archivo de 10 GB— y produce una salida de longitud fija, llamada hash o resumen. Tiene tres propiedades clave: es determinista (la misma entrada produce siempre el mismo hash), es prácticamente irreversible (del hash no se puede reconstruir la entrada) y tiene efecto avalancha (un cambio mínimo en la entrada altera radicalmente la salida).
Es importante no confundir hashing con cifrado: no se puede "deshashear", porque no es una transformación reversible. El hashing no sirve para ocultar datos y recuperarlos después, sino para verificar integridad: comprobar que algo no cambió. Fíjate el efecto avalancha con un ejemplo — cambiar una sola letra transforma por completo el resultado:
echo -n "hola mundo" | sha256sum
# 0b894166d3336435c800bea36ff21b29eaa801a52f584c006c49289a0dcf6e2f
echo -n "Hola mundo" | sha256sum # solo cambió una mayúscula
# c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
Un uso cotidiano es verificar descargas: muchos sitios publican el hash del archivo original para que compruebes que lo que bajaste no fue alterado ni se corrompió en el camino. Si el hash coincide, el contenido es idéntico. Algoritmos como SHA-256 son el estándar actual; los antiguos MD5 o SHA-1 se consideran rotos para usos de seguridad y no deben emplearse, porque se demostró que es posible fabricar colisiones (dos entradas distintas con el mismo hash).
Un uso crítico del hashing es el almacenamiento de contraseñas. Los sistemas nunca deben guardar contraseñas en texto plano, sino su hash, calculado con funciones lentas y diseñadas para resistir ataques, como bcrypt, scrypt o Argon2, junto con un valor aleatorio único llamado salt que impide ataques con tablas precalculadas. Por eso, cuando un servicio bien diseñado sufre una brecha, los atacantes obtienen hashes robustos y no tus contraseñas directamente — lo que te da tiempo de reaccionar. Cuando uno mal diseñado guardaba las contraseñas en texto plano, la brecha es inmediata y total.
HTTPS, TLS y Certificados
Cuando ves el candado en tu navegador, estás usando HTTPS, que es HTTP sobre TLS (Transport Layer Security). TLS es el ejemplo perfecto de cómo se combinan todos los bloques anteriores en un solo protocolo: usa criptografía asimétrica para autenticar al servidor e intercambiar de forma segura una clave, luego cifra todo el tráfico con esa clave simétrica por eficiencia, y emplea hashes para verificar que los datos no fueron manipulados en tránsito. Simétrico, asimétrico y hashing trabajando juntos.
¿Cómo sabes que el servidor es realmente quien dice ser, y no un impostor? Mediante certificados digitales emitidos por Autoridades de Certificación (CA) de confianza. El certificado vincula la identidad de un sitio con su clave pública y está firmado por una CA en la que tu navegador (y tu sistema operativo) confían de fábrica. Es una cadena de confianza: confías en la CA, la CA firmó el certificado del sitio, por lo tanto confías en la clave pública del sitio. Si el certificado es inválido, está vencido o no coincide con el dominio, el navegador te advierte — y esa advertencia hay que tomarla en serio.
Puedes inspeccionar el certificado de cualquier sitio con una herramienta legítima:
# Ver emisor, dominio y fechas de validez del certificado de un sitio
openssl s_client -connect ejemplo.com:443 -servername ejemplo.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
Comprender esta cadena de confianza te ayuda a interpretar las advertencias de seguridad en lugar de ignorarlas, y a valorar por qué nunca deberías introducir credenciales en un sitio sin HTTPS. Un matiz importante, que retomaremos en la lección de navegación: el candado prueba que la conexión es privada, no que el sitio sea honesto. Un sitio de phishing también puede tener un certificado válido.
En la Práctica: Criptografía en tu Día a Día
- Verifica los hashes de los instaladores importantes que descargues, cuando el fabricante los publique.
- Busca siempre HTTPS antes de ingresar credenciales o datos de pago; si el navegador marca "no seguro", frena.
- No ignores las advertencias de certificado, sobre todo en redes públicas: pueden señalar una interceptación.
- Activa el cifrado de disco (simétrico, AES) en laptops y teléfonos para proteger los datos en reposo.
- Usa apps de mensajería con cifrado de extremo a extremo para conversaciones sensibles.
- Cuida tus claves privadas como cuidas las llaves de tu casa: si se filtra una clave privada, se pierde toda la protección que dependía de ella.
Errores Comunes
- Confundir hashing con cifrado: el hash no se revierte; sirve para verificar integridad, no para ocultar y recuperar datos.
- Usar MD5 o SHA-1 para seguridad: están rotos; usa SHA-256 o superior.
- Creer que el candado certifica honestidad: HTTPS asegura la conexión, no la legitimidad del sitio.
- Descuidar la gestión de claves: el algoritmo más fuerte no sirve si la clave está mal guardada o es accesible para cualquiera.
- Fiarse de "algoritmos secretos propietarios": la seguridad seria se basa en algoritmos públicos y auditados (principio de Kerckhoffs).
Puntos Clave
- La criptografía sostiene la confidencialidad y la integridad; los algoritmos sólidos son públicos y su seguridad depende de la clave, no del secreto del algoritmo.
- El cifrado simétrico (AES) es rápido pero enfrenta el problema de distribuir la clave; el asimétrico (RSA, ECC) lo resuelve con un par de claves pública/privada.
- El hashing (SHA-256) verifica integridad y protege contraseñas (con bcrypt/Argon2 y salt); es irreversible, no es cifrado.
- TLS/HTTPS combina los tres bloques: asimétrico para autenticar e intercambiar clave, simétrico para cifrar el tráfico, hashing para la integridad.
- Los certificados y las CA crean una cadena de confianza; el candado prueba una conexión privada, no un sitio honesto.
En la próxima lección llevaremos la protección al dispositivo: la seguridad de endpoints.