La criptografía de clave pública (también llamada criptografía asimétrica) es la base de SSL/TLS. Usa un par de claves matemáticamente relacionadas — una pública, una privada — para cifrar datos, verificar identidades y establecer conexiones seguras. Cada conexión HTTPS depende de ella.
El concepto de par de claves
| Clave pública | Clave privada | |
|---|---|---|
| Quién la tiene | Todos (está en el certificado) | Solo el propietario del servidor |
| Puede cifrar | Sí | Sí |
| Puede descifrar | Solo lo que la clave privada cifró | Solo lo que la clave pública cifró |
| ¿Compartirla? | Sí — ese es el propósito | Nunca |
La magia: los datos cifrados con la clave pública solo pueden descifrarse con la clave privada correspondiente. Y viceversa. Las dos claves están matemáticamente vinculadas, pero no puedes derivar la clave privada a partir de la pública.
Cómo se usa en SSL/TLS
La criptografía de clave pública cumple tres propósitos en cada conexión HTTPS:
1. Intercambio de claves — establecer un secreto compartido
Durante la negociación TLS, el servidor y el navegador necesitan acordar una clave de sesión compartida para cifrar el tráfico. No pueden enviar esta clave en texto plano — alguien podría interceptarla.
Solución: Intercambio de claves Diffie-Hellman (específicamente ECDHE en TLS moderno). Ambas partes contribuyen valores aleatorios, y las matemáticas les permiten calcular el mismo secreto compartido sin nunca transmitirlo. La clave privada del servidor firma su contribución, probando la identidad del servidor.
2. Autenticación — probar la identidad
El certificado SSL del servidor contiene su clave pública. El certificado está firmado por una Autoridad Certificadora. Durante la negociación, el servidor prueba que posee la clave privada correspondiente. Esto prueba que el servidor es quien dice ser el certificado.
Sin este paso, cualquiera podría hacerse pasar por google.com.
3. Firmas digitales — probar la integridad de los datos
La clave privada puede crear una firma digital — una prueba matemática de que un dato específico fue firmado por el titular de la clave y no ha sido modificado. Los mensajes de la negociación TLS se firman para prevenir la manipulación.
Cifrado simétrico vs asimétrico
| Asimétrico (clave pública) | Simétrico (clave de sesión) | |
|---|---|---|
| Claves | Dos (pública + privada) | Una (secreto compartido) |
| Velocidad | Lento (~1000x más lento) | Rápido |
| Usado para | Intercambio de claves + autenticación | Cifrar los datos reales |
| Algoritmos | RSA, ECDSA, ECDHE | AES-GCM, ChaCha20 |
| En TLS | Solo durante la negociación | Después de la negociación (todo el tráfico) |
HTTPS usa ambos: cifrado asimétrico para la negociación (probar identidad, intercambiar claves), luego cifrado simétrico para la transferencia real de datos (porque es mucho más rápido).
Los algoritmos detrás de SSL
RSA
El algoritmo de clave pública más antiguo todavía en uso (1977). Basado en la dificultad de factorizar números primos grandes. Usado tanto para firmas como para intercambio de claves, aunque el intercambio de claves RSA (sin Diffie-Hellman) no proporciona secreto perfecto hacia adelante y fue eliminado de TLS 1.3.
ECDSA (Algoritmo de Firma Digital de Curvas Elípticas)
Algoritmo de firma moderno que usa matemáticas de curvas elípticas. Una clave ECC de 256 bits proporciona seguridad equivalente a una clave RSA de 3072 bits — claves más pequeñas, firmas más rápidas. GetHTTPS usa ECDSA P-256 por defecto.
ECDHE (Curvas Elípticas Diffie-Hellman Efímeras)
El mecanismo de intercambio de claves usado en TLS moderno. «Efímero» significa que se genera un nuevo par de claves para cada conexión — proporcionando secreto perfecto hacia adelante. Usado tanto en TLS 1.2 como en 1.3.
AES-GCM
El cifrado simétrico usado después de la negociación para cifrar el tráfico real. AES (Advanced Encryption Standard) con GCM (Galois/Counter Mode) proporciona tanto cifrado como autenticación. Acelerado por hardware en CPUs modernas vía instrucciones AES-NI.
Cómo GetHTTPS usa la criptografía de clave pública
Cuando usas GetHTTPS:
- Tu navegador genera un par de claves usando la Web Crypto API — las mismas primitivas criptográficas que TLS usa
- La clave pública va en un CSR enviado a Let’s Encrypt
- La clave privada permanece en la memoria de tu navegador — nunca se transmite
- Let’s Encrypt firma la clave pública y devuelve tu certificado
- Descargas tanto el certificado (público) como la clave privada a tu servidor
Que la clave privada exista solo en la memoria del navegador es por lo que GetHTTPS es más privado que las herramientas que generan claves en un servidor remoto.
Preguntas frecuentes
¿Pueden los computadores cuánticos romper la criptografía de clave pública?
Los computadores cuánticos actuales no pueden. Pero un computador cuántico suficientemente potente ejecutando el algoritmo de Shor podría romper RSA y ECC. La industria se está preparando con la criptografía post-cuántica — nuevos algoritmos (ML-KEM, ML-DSA) resistentes a ataques cuánticos. TLS los adoptará en modo híbrido (clásico + post-cuántico) sin cambiar cómo funcionan los certificados.
¿Por qué no usar solo cifrado asimétrico para todo?
Velocidad. Las operaciones asimétricas son aproximadamente 1000x más lentas que las simétricas. Cifrar una página web con RSA sería imprácticamente lento. En su lugar, TLS usa criptografía asimétrica solo para la negociación (~1ms), luego cambia a simétrica (AES) para los datos — que funciona a velocidad de hardware.
¿Una clave ECC de 256 bits es realmente segura?
256 bits de ECC proporciona ~128 bits de seguridad — lo que significa que un atacante necesitaría aproximadamente 2^128 operaciones para romperla. Eso es más operaciones que átomos en el universo observable. Es seguro para el futuro previsible (excluyendo computadores cuánticos, que requieren algoritmos completamente diferentes).
¿Cuál es la diferencia entre cifrar y firmar?
Cifrar: Proteger la confidencialidad. Cifrar con la clave pública del destinatario → solo su clave privada puede descifrar. Firmar: Probar la autenticidad. Firmar con tu clave privada → cualquiera con tu clave pública puede verificar que provino de ti y no fue modificado. Los certificados TLS usan firmas; la transferencia de datos TLS usa cifrado.