Cifrado y comunicación segura

Criptografía de clave pública

Lectura de aproximadamente 5 minutos

Qué es la criptografía de clave pública

La criptografía de clave pública (Public Key Cryptography) es un método criptográfico que utiliza dos claves diferentes (clave pública y clave privada) para el cifrado y descifrado. El concepto fue publicado por Diffie y Hellman en 1976 y el algoritmo RSA fue concebido en 1977 por Rivest, Shamir y Adleman, y publicado como artículo en 1978.

La clave pública se puede compartir con cualquiera, y la clave privada solo la posee el propietario. Los datos cifrados con la clave pública solo pueden descifrarse con la clave privada correspondiente, y los datos firmados con la clave privada pueden verificarse con la clave pública correspondiente. Esta asimetría es la base para comunicarse de forma segura en internet.

TLS/SSL, cifrado de extremo a extremo, certificados digitales, SSH, criptomonedas y muchas otras tecnologías de seguridad modernas dependen de la criptografía de clave pública.

Dos usos de la criptografía de clave pública

La criptografía de clave pública tiene dos usos principales.

1. Cifrado (garantía de confidencialidad)

El remitente cifra los datos con la clave pública del destinatario, y el destinatario los descifra con su clave privada. Como la clave pública está disponible para cualquiera, no es necesario compartir una clave secreta de antemano.

Ejemplo práctico: En el correo cifrado (PGP/GPG), el correo se cifra con la clave pública del destinatario, y solo el destinatario puede descifrarlo con su clave privada.

2. Firma digital (garantía de autenticidad)

El remitente firma los datos con su clave privada, y el destinatario verifica la firma con la clave pública del remitente. Si la firma es correcta, se demuestra que los datos no han sido manipulados y que fueron creados por ese remitente.

Ejemplo práctico: El distribuidor de software firma el binario, y el usuario verifica la firma después de la descarga para confirmar que no ha sido manipulado.

Principales algoritmos

  • RSA: El algoritmo más ampliamente utilizado. Su seguridad se basa en la dificultad de factorizar el producto de números primos grandes. Se recomienda una longitud de clave de 2048 bits o más. Tiene una larga historia y trayectoria, pero es desventajoso en velocidad de procesamiento debido a las claves grandes.
  • Criptografía de curva elíptica (ECC): Su seguridad se basa en el problema del logaritmo discreto sobre curvas elípticas. Puede lograr la misma seguridad que RSA con longitudes de clave mucho más cortas (alrededor de 256 bits). En TLS 1.3, el intercambio de claves basado en ECC es estándar. Especialmente ventajoso en entornos con recursos de cálculo limitados como dispositivos móviles e IoT.
  • EdDSA (Ed25519): Un tipo de criptografía de curva elíptica con generación y verificación de firmas rápidas. Ampliamente adoptado como clave SSH. La implementación es relativamente simple y tiene alta resistencia a ataques de canal lateral.

Cuando los ordenadores cuánticos se hagan prácticos, RSA y ECC podrían ser descifrados. El NIST publicó en agosto de 2024 los tres primeros estándares de criptografía post-cuántica: ML-KEM (FIPS 203), ML-DSA (FIPS 204) y SLH-DSA (FIPS 205).

Uso de la criptografía de clave pública en TLS

Cada vez que accede a un sitio HTTPS con un navegador web, se utiliza la criptografía de clave pública. Sin embargo, no todos los datos se cifran con criptografía de clave pública.

  1. Intercambio de claves: En el handshake TLS, se utiliza la criptografía de clave pública (ECDHE, etc.) para intercambiar de forma segura una clave común.
  2. Autenticación del servidor: El servidor presenta un certificado digital y realiza una firma con la clave privada para demostrar que es un servidor legítimo.
  3. Cifrado de datos: Para la comunicación real de datos, se utiliza cifrado de clave simétrica (AES, etc.) con la clave común intercambiada.

La criptografía de clave pública es cientos de veces más lenta que la criptografía de clave simétrica, por lo que no es adecuada para cifrar grandes cantidades de datos. TLS adopta un método híbrido donde "se intercambia de forma segura la clave común con criptografía de clave pública, y los datos reales se cifran con criptografía de clave simétrica de alta velocidad".

Consideraciones prácticas y gestión de claves

Para operar la criptografía de clave pública de forma segura, no solo la selección del algoritmo, sino también la configuración de la longitud de clave y la gestión del ciclo de vida de las claves son extremadamente importantes.

Longitudes de clave recomendadas: RSA requiere un mínimo de 2048 bits, y para uso a largo plazo más allá de 2030, se recomiendan 3072 bits o más. ECDSA con P-256 (secp256r1) es la opción estándar, logrando la misma seguridad que RSA 3072 bits con una longitud de clave mucho más corta. Ed25519 es el más eficiente para firmas y se adopta ampliamente como clave SSH. Las claves RSA de 1024 bits o menos ya no se consideran seguras y necesitan actualización inmediata.

Rotación de claves: Las claves privadas deben actualizarse (rotarse) periódicamente. El período de validez de los certificados digitales se está acortando por etapas según los requisitos del CA/Browser Forum: en agosto de 2026, los certificados emitidos a partir del 15 de marzo de 2026 pueden tener una validez máxima de 200 días, que baja a 100 días desde el 15 de marzo de 2027 y a 47 días desde el 15 de marzo de 2029. Es deseable regenerar los pares de claves junto con la renovación del certificado. Utilice herramientas de automatización (certbot de Let's Encrypt, AWS Certificate Manager, etc.) para prevenir omisiones en la actualización manual.

Riesgo del pinning de certificados: El pinning de certificados, que codifica un certificado o clave pública específica en la aplicación, es efectivo contra ataques de intermediario, pero si la actualización de la aplicación no se completa a tiempo durante la rotación de claves, puede causar una interrupción del servicio. Google Chrome eliminó el soporte para HPKP (HTTP Public Key Pinning) en enero de 2019 (Chrome 72), y desde entonces se recomienda la monitorización mediante registros de Certificate Transparency.

Criptografía post-cuántica (Post-Quantum Cryptography): Cuando los ordenadores cuánticos se hagan prácticos, RSA y ECC podrán descifrarse en tiempo polinomial mediante el algoritmo de Shor. El NIST publicó en agosto de 2024 los primeros estándares de criptografía post-cuántica: ML-KEM (FIPS 203, antes CRYSTALS-Kyber), ML-DSA (FIPS 204, antes CRYSTALS-Dilithium) y SLH-DSA (FIPS 205, antes SPHINCS+). En agosto de 2026 no se conocen públicamente ordenadores cuánticos capaces de romper RSA o ECC, pero para prepararse contra los ataques Harvest Now, Decrypt Later ("recopilar ahora, descifrar después"), se debería comenzar a considerar la introducción del intercambio de claves híbrido en TLS (combinación de ECDHE convencional + ML-KEM) para datos confidenciales que requieren almacenamiento a largo plazo.

Para obtener más información sobre este tema, consulte Cómo funcionan HTTPS y TLS - El cifrado detrás de la comunicación segura.

Conceptos erróneos comunes

Publicar la clave pública es peligroso
La clave pública es literalmente una clave para publicar. Calcular la clave privada a partir de la clave pública no puede completarse en un tiempo razonable con ordenadores convencionales, por lo que distribuir ampliamente la clave pública no compromete la seguridad. Solo la gestión de la clave privada es importante.
Cuanto más larga sea la clave, siempre es mejor
Aumentar la longitud de la clave mejora la seguridad, pero reduce la velocidad de procesamiento. En las tablas de fuerza equivalente del NIST, ECC 256 bits corresponde a RSA 3072 bits y ECC 224 bits a RSA 2048 bits, por lo que ECC alcanza la misma fuerza con claves mucho más cortas. El equilibrio entre la selección del algoritmo y la longitud de la clave es importante.

Comparación entre criptografía de clave pública y criptografía de clave simétrica

Criptografía de clave pública (clave asimétrica)

Utiliza claves diferentes para cifrar y descifrar. No requiere compartir claves de antemano. La velocidad de procesamiento es lenta. Se utiliza para intercambio de claves y firmas digitales. Ejemplos: RSA, ECC.

Criptografía de clave simétrica

Utiliza la misma clave para cifrar y descifrar. Requiere compartir la clave de forma segura de antemano. La velocidad de procesamiento es rápida. Se utiliza para cifrar grandes cantidades de datos. Ejemplo: AES.

Compartir

Términos relacionados

Artículos relacionados