🔑 Criptografía Aplicada

Lección 2 de 6 — Cifrado, hashes, certificados y protocolos de comunicación segura.

1. Criptografía Simétrica

Usa la misma clave para cifrar y descifrar. Es rápida y eficiente para grandes volúmenes de datos.

AES (Advanced Encryption Standard)

# Ejemplo con OpenSSL
openssl enc -aes-256-cbc -salt -in datos.txt -out datos.enc -pass pass:MiClaveSegura

# Descifrar
openssl enc -d -aes-256-cbc -in datos.enc -out datos.txt -pass pass:MiClaveSegura

Otros algoritmos simétricos: ChaCha20 (moderno, usado en TLS 1.3), 3DES (obsoleto), Blowfish/Twofish.

2. Criptografía Asimétrica (Clave Pública)

Usa un par de claves: pública (para cifrar) y privada (para descifrar). Resuelve el problema del intercambio de claves.

RSA (Rivest–Shamir–Adleman)

# Generar par de claves RSA
openssl genpkey -algorithm RSA -out clave_privada.pem -pkeyopt rsa_keygen_bits:2048

# Extraer clave pública
openssl pkey -in clave_privada.pem -pubout -out clave_publica.pem

ECC (Elliptic Curve Cryptography)

Ofrece seguridad equivalente a RSA con claves mucho más pequeñas. Ej: ECC de 256 bits ≈ RSA de 3072 bits. Usado en TLS, Bitcoin, SSH.

RSA-2048
ECC-256
Ed25519
DH / ECDH

3. Hash y Funciones Hash

Transforman datos de cualquier tamaño en un resumen fijo (hash). Son unidireccionales: no se puede obtener el original desde el hash.

SHA (Secure Hash Algorithm)

# Calcular hash SHA-256
echo -n "Hola Mundo" | sha256sum
# Resultado: b1f4f9a523e36fd969f98b7b0e9b3c7c8b7b0e9b3c7c8b7b0e9b3c7c8b7b0e9b

# Verificar integridad de un archivo
sha256sum archivo.iso
⚠️ Importante: Los hash NO son cifrado. No se pueden "descifrar". Se usan para verificar integridad, almacenar contraseñas (con salt) y detectar cambios.

4. Certificados Digitales y PKI

Un certificado digital vincula una identidad (dominio, persona) con una clave pública. Está firmado por una Autoridad Certificadora (CA).

# Generar CSR
openssl req -new -newkey rsa:2048 -nodes -keyout miweb.key -out miweb.csr

# Verificar un certificado
openssl x509 -in certificado.crt -text -noout

5. SSL / TLS y HTTPS

TLS (Transport Layer Security) es el protocolo que cifra las comunicaciones en Internet. SSL es su predecesor (obsoleto). HTTPS = HTTP sobre TLS.

Handshake TLS (simplificado)

  1. Client Hello: el cliente envía versiones TLS y cifrados soportados.
  2. Server Hello: el servidor elige versión y cifrado, envía su certificado.
  3. Intercambio de claves: se genera una clave simétrica compartida (mediante RSA o Diffie-Hellman efímero).
  4. Conexión cifrada: a partir de aquí todos los datos viajan cifrados con AES/ChaCha20.
# Verificar la cadena TLS de un sitio
openssl s_client -connect ejemplo.com:443 -showcerts

# Obtener el certificado en texto
openssl s_client -connect ejemplo.com:443 < /dev/null 2>/dev/null | openssl x509 -text

Versiones de TLS

📌 Resumen