2.1.3 – [Reto] Cifrado Asimétrico con Clave Pública y Privada

La criptografía asimétrica es uno de esos inventos humanos que parecen ciencia ficción pero sostienen la realidad cotidiana. Cada vez que abres una web HTTPS, envías un mensaje seguro, firmas un documento digital o te conectas por SSH, estás usando matemáticas diseñadas para resolver un problema aparentemente imposible: compartir secretos sin compartir el secreto.

En el cifrado simétrico ya viste que dos partes pueden proteger información usando una misma clave. Rápido, eficaz… pero con un punto débil crítico: ¿cómo intercambias esa clave sin que alguien la intercepte? Aquí entra la criptografía de clave pública, una idea brillante basada en funciones matemáticas fáciles de calcular pero extremadamente difíciles de invertir. Gracias a ello, cada entidad puede tener dos claves: una pública que puede compartir con el mundo y una privada que jamás debe revelar. Lo que una cifra, solo la otra puede descifrar; lo que una firma, la otra puede verificar.

Este modelo no solo permite cifrar mensajes. Permite algo mucho más profundo: crear confianza en sistemas donde las partes no se conocen previamente. De aquí nacen las firmas digitales, los certificados, las autoridades de certificación y, en última instancia, el funcionamiento seguro de Internet mediante TLS. Sin criptografía asimétrica no existirían el comercio electrónico, la identidad digital, ni la mayoría de servicios que hoy consideramos normales.

En este tema no solo aprenderás comandos. Comprenderás cómo se construye un canal seguro desde cero: cómo se generan identidades criptográficas, cómo se cifra para un destinatario concreto, cómo se garantiza que un mensaje no ha sido alterado, y cómo una infraestructura de certificados permite confiar en claves públicas desconocidas. Es el paso donde la seguridad deja de ser “ocultar datos” y se convierte en demostrar identidad, integridad y autenticidad en un entorno hostil.

Limitación del cifrado simétrico:

  • Necesita compartir clave secreta
  • Si se intercepta → seguridad rota

Problema fundamental:

¿Cómo compartir un secreto sin compartirlo?

Solución matemática:
Criptografía de clave pública

Cada usuario posee:

  • Clave pública → se puede compartir
  • Clave privada → nunca se revela

Lo cifrado con una solo puede descifrarse con la otra.

Resultado esperado:
El alumno comprende la diferencia simétrico vs asimétrico.


Conceptos Fundamentales

Conceptos clave:

  • Par de claves (Key Pair)
  • Clave pública
  • Clave privada
  • Cifrado
  • Descifrado
  • Firma digital
  • Verificación
  • No repudio
  • Confianza
  • Certificados

Idea central:
La clave pública cifra o verifica
La clave privada descifra o firma


Fundamento Matemático (Nivel Conceptual)

La criptografía asimétrica usa funciones:

  • Fáciles de calcular
  • Extremadamente difíciles de invertir

Ejemplo conceptual:

Multiplicar primos grandes → fácil
Factorizar resultado → extremadamente difícil

Este principio sostiene:

  • RSA
  • Diffie-Hellman
  • ECC

Algoritmos Asimétricos Principales

RSA

Basado en factorización de números grandes.
Usado para:

  • Cifrado
  • Firma digital
  • TLS clásico

Diffie-Hellman

Permite generar una clave compartida sin enviarla.
Base del intercambio seguro.

ECC (Elliptic Curve Cryptography)

Versión moderna y eficiente.
Usada en:

  • TLS moderno
  • Blockchain
  • SSH moderno
  • Certificados

Resultado esperado:
El alumno distingue funciones de cada algoritmo.


Generación de Claves (Práctica)

Objetivo: crear identidad criptográfica.

Ejemplo:

openssl genrsa -out privada.pem 2048
openssl rsa -in privada.pem -pubout -out publica.pem

Conceptos enseñados:

  • Tamaño de clave
  • Seguridad vs rendimiento
  • Protección de clave privada

Cifrado con Clave Pública

Escenario:

Alice quiere enviar mensaje seguro a Bob.

Proceso:

  1. Bob genera claves
  2. Bob comparte clave pública
  3. Alice cifra con clave pública de Bob
  4. Solo Bob puede descifrar

Concepto:
Cualquiera puede cifrar, solo el dueño puede leer


Firma Digital

Proceso:

  1. Emisor firma con su clave privada
  2. Receptor verifica con clave pública

Garantiza:

  • Autoría
  • Integridad
  • No repudio

Uso real:

  • Software firmado
  • Certificados
  • Emails seguros
  • Blockchain
  • Documentos legales

Intercambio de Claves Seguro (Diffie-Hellman)

El mayor avance criptográfico.

Permite:

  • Generar clave simétrica
  • Sin transmitirla
  • Incluso con atacante escuchando

Esto es lo que hace TLS.

Concepto clave:
El asimétrico no cifra grandes datos, crea la clave simétrica.


Criptografía Híbrida (Cómo funciona TLS)

En el mundo real:

  1. Asimétrico → intercambia clave
  2. Simétrico → cifra datos (rápido)

Esto es:

  • HTTPS
  • VPN
  • SSH
  • TLS
  • Internet seguro

Certificados Digitales

Problema:

¿Cómo sé que una clave pública es auténtica?

Solución:

Autoridades de Certificación (CA)

Un certificado vincula:

  • Identidad
  • Clave pública
  • Firma de una CA

Conceptos:

  • X.509
  • Cadena de confianza
  • Root CA
  • Certificado autofirmado
  • Validación

Ataques contra Criptografía Asimétrica

  • Robo de clave privada
  • MITM
  • Certificados falsos
  • Claves débiles
  • Mala implementación
  • RNG débil
  • Padding attacks (conceptual)

Mensaje:
La criptografía no falla por matemáticas → falla por humanos.


OWASP y Criptografía

Relación directa con:

OWASP A02 — Cryptographic Failures

Errores reales:

  • Claves expuestas
  • Sin validación de certificados
  • Uso de RSA débil
  • Sin forward secrecy
  • Mala generación de claves

Recomendaciones

  • Generar par de claves
  • Cifrar mensaje con clave pública
  • Firmar archivo
  • Verificar firma
  • Crear certificado autofirmado
  • Simular TLS
  • MITM conceptual
  • Ver handshake TLS con Wireshark

Conexión con el Mundo Real

Esto protege:

  • HTTPS
  • SSH
  • VPN
  • Git firmado
  • Docker firmado
  • Identidad digital
  • Blockchain
  • Infraestructura crítica

Sin criptografía asimétrica → Internet no existiría.


Comparativa — Clave Simétrica vs Clave Asimétrica

PropiedadCriptografía SimétricaCriptografía Asimétrica
Nº de clavesUna sola clave secreta compartidaDos claves: pública y privada
Distribución de clavesProblema crítico (debe compartirse en secreto)La pública se puede compartir libremente
VelocidadMuy rápida (apta para grandes volúmenes de datos)Mucho más lenta
Uso principalCifrado de datosIntercambio de claves, firma digital, autenticación
Seguridad depende deMantener la clave secretaProteger la clave privada
Tamaño de clave típico128 / 192 / 256 bits (AES)2048+ bits RSA / 256 bits ECC
Cifrado de grandes datosExcelenteIneficiente
Integridad / autenticidadNecesita mecanismos extra (HMAC, GCM)Incluido mediante firma digital
No repudioNoSí (firma digital)
Complejidad matemáticaModeradaAlta
Resistencia si interceptan el mensajeSegura si no tienen la claveSegura si no tienen la privada
Ejemplos de algoritmosAES, ChaCha20, BlowfishRSA, ECC, Diffie-Hellman
Uso en el mundo realDiscos cifrados, VPN, WiFi, bases de datosTLS, certificados, firmas, SSH
Papel en TLS/HTTPSCifra el tráficoIntercambia la clave simétrica
Escalabilidad (muchos usuarios)Mala (cada pareja necesita clave distinta)Buena (cada usuario tiene su par de claves)
Si roban la clavePueden leer todoSolo compromete esa identidad
Caso de uso idealProteger datos rápidamenteEstablecer confianza entre desconocidos

TLS = combinación de ambas (criptografía híbrida)

Simétrica = rapidez para proteger datos

Asimétrica = confianza e identidad


MISIÓN DE LA FLOTA ESTELAR

CANAL SEGURO — CRIPTOGRAFÍA ASIMÉTRICA + FIRMA + CERTIFICADOS (OpenSSL)

Unidad: USS Horizon — División de Comunicaciones Seguras
Nivel: Cadete Técnico
Objetivo general: establecer un canal de comunicación confiable usando clave pública/privada, firma digital, y certificado.



PARTE 1 — “IDENTIDAD CRIPTOGRÁFICA” (Par de claves)

FASE 1 — Crear carpeta de misión

mkdir-p mision_canal_seguro && cd mision_canal_seguro

FASE 2 — Generar clave privada del oficial Bob (2048 bits)

Narrativa: Bob es el oficial de comunicaciones. Su clave privada es el “código genético” de su identidad.

openssl genrsa -out bob_privada.pem 2048

Comprobación rápida (sin mostrarla entera):

openssl rsa -in bob_privada.pem -check-noout

FASE 3 — Obtener la clave pública de Bob

Narrativa: esta es la clave que Bob puede compartir con toda la Flota.

openssl rsa -in bob_privada.pem -pubout-out bob_publica.pem

Verla en modo humano:

openssl rsa -pubin-in bob_publica.pem -text-noout

✅ Resultado esperado: los alumnos ven que la pública se puede inspeccionar sin revelar la privada.


PARTE 2 — “CIFRADO CON CLAVE PÚBLICA” (Confidencialidad)

FASE 4 — Crear mensaje secreto de Alice

echo "Coordenadas del punto de encuentro: Sector 7G. Acceso nivel Alfa." > mensaje_alice.txt
cat mensaje_alice.txt

FASE 5 — Cifrar para Bob usando su clave pública

IMPORTANTE (realidad): RSA no se usa para cifrar grandes datos. Aquí lo usamos con un mensaje pequeño para entender el concepto.

openssl pkeyutl -encrypt -pubin -inkey bob_publica.pem -in mensaje_alice.txt -out mensaje_para_bob.bin

Ver que es ilegible:

xxd mensaje_para_bob.bin | head

✅ Resultado: datos binarios “ruido”.

FASE 6 — Descifrar con la clave privada de Bob

openssl pkeyutl -decrypt -inkey bob_privada.pem -in mensaje_para_bob.bin -out mensaje_descifrado.txt
cat mensaje_descifrado.txt

✅ Resultado esperado: el texto original vuelve intacto.

Aprendizaje clave:

  • Cualquiera con la pública puede cifrar para Bob
  • Solo Bob con la privada puede leerlo

PARTE 3 — “FIRMA DIGITAL” (Integridad + Autoría)

Ahora el enemigo puede intentar modificar mensajes. La Flota exige que cada mensaje vaya firmado.

FASE 7 — Alice firma un mensaje

Primero Alice genera sus claves (identidad propia):

openssl genrsa -out alice_privada.pem 2048
openssl rsa -in alice_privada.pem -pubout -out alice_publica.pem

Mensaje oficial:

openssl dgst -sha256 -sign alice_privada.pem -out orden.firma orden.txt

FASE 8 — Crear el hash y firmarlo (firma con clave privada)

openssl dgst -sha256-sign alice_privada.pem -out orden.firma orden.txt

✅ “orden.firma” es la firma digital.

FASE 9 — Verificar la firma con la clave pública

openssl dgst -sha256-verify alice_publica.pem -signature orden.firma orden.txt

✅ Resultado esperado: Verified OK

FASE 10 — Simular sabotaje (modificación del mensaje)

echo "Orden de misión: desactivar escudos y abrir bahía de carga." > orden.txt
openssl dgst -sha256 -verify alice_publica.pem -signature orden.firma orden.txt

✅ Resultado esperado: Verification failure

Aprendizaje clave:

  • La firma no cifra (no oculta).
  • La firma garantiza que el mensaje no fue modificado y que viene de quien dice venir.

PARTE 4 — “CERTIFICADOS” (Confianza en la clave pública)

Aquí está la pregunta mortal:
¿cómo sabe Bob que la clave pública de Alice es realmente de Alice y no del enemigo?

Respuesta: certificados.

Vamos a simular una mini-PKI de la Flota (una CA).


FASE 11 — Crear la CA de la Flota Estelar

CA = Autoridad de Certificación (el “notario” criptográfico).

Clave privada de la CA:

openssl genrsa -out starfleet_ca_privada.pem 4096

Certificado autofirmado de la CA (válido 365 días):

openssl req -x509 -new -key starfleet_ca_privada.pem -sha256 -days 365 -out starfleet_ca.crt \
-subj "/C=ES/O=Starfleet Academy/OU=Security Division/CN=Starfleet Root CA"

Ver certificado:

openssl x509 -in starfleet_ca.crt -text-noout | head -n40

FASE 12 — Alice solicita un certificado (CSR)

CSR = Certificate Signing Request (petición de certificado).

openssl req -x509 -new -key starfleet_ca_privada.pem -sha256 -days 365 -out starfleet_ca.crt \
-subj "/C=ES/O=Starfleet Academy/OU=Security Division/CN=Starfleet Root CA"

FASE 13 — La CA firma el certificado de Alice

openssl x509 -req -in alice.csr -CA starfleet_ca.crt -CAkey starfleet_ca_privada.pem \
-CAcreateserial -out alice_cert.crt -days 365 -sha256

Ver contenido:

openssl x509 -in alice_cert.crt -text-noout | head -n60

FASE 14 — Verificar que el certificado de Alice “cuelga” de la CA

openssl verify -CAfile starfleet_ca.crt alice_cert.crt

✅ Resultado esperado: alice_cert.crt: OK

Aprendizaje clave:

  • Ahora Bob no confía “porque sí” en la clave pública de Alice.
  • Confía porque la CA de la Flota la certifica.

PARTE 5 — “HÍBRIDO” (Cómo funciona Internet de verdad)

Verdad del universo:
El asimétrico es lento para datos grandes.
Se usa para intercambiar/validar una clave simétrica, y luego se cifra todo con AES/ChaCha20.

Mini-demostración conceptual (sin meternos aún en DH real)

  1. Alice y Bob se validan con certificados (asimétrico)
  2. Se acuerda una clave de sesión (simétrica)
  3. Todo el tráfico va con AES-GCM / ChaCha20-Poly1305

Eso es TLS.


INFORME FINAL (lo que tienes que entregar)

  1. Capturas o salida de:
  • creación de claves
  • cifrado/descifrado RSA
  • firma y verificación (OK)
  • verificación fallida tras manipulación
  • creación de CA
  • emisión del certificado de Alice
  • verificación openssl verify
  1. Explicación breve:
  • diferencia cifrado vs firma
  • por qué se necesitan certificados
  • por qué TLS es híbrido

OPCIONALES (Modo “Cadete con rango”)

A) Ver handshake TLS real con Wireshark (si tienes tiempo)

  • abrir un sitio HTTPS
  • filtrar tls y ver certificados, cipher suite, etc.

B) Pasar a ECC

  • generar claves con curvas elípticas y comparar tamaños

C) Forward secrecy (conceptual)

  • por qué DH/ECDHE evita que roben sesiones antiguas si se filtra una clave

Registro del Capitán:

“Cadete, hoy no solo has cifrado un mensaje. Has creado confianza en un universo hostil.
La seguridad no es ocultar información: es demostrar identidad, detectar manipulación y sobrevivir a la interceptación.”