Ir al contenido
HexaTransfer
Volver al blog
Cifrado y seguridad

Bases de criptografía de clave pública: compartir seguro

Aprende los fundamentos de la criptografía de clave pública y cómo permite compartir de forma segura. RSA, Diffie-Hellman explicados.

La criptografía de clave pública —también llamada criptografía asimétrica— usa dos claves matemáticamente vinculadas: una pública que puedes distribuir libremente y una privada que guardas. Cifra algo con mi clave pública, y solo mi clave privada puede leerlo. Esto resuelve el problema más antiguo de la criptografía: cómo dos desconocidos que nunca se han encontrado pueden compartir un secreto a través de un canal abierto. Inventada por Diffie y Hellman en 1976 y llevada a la práctica por RSA un año después, es ahora la base de TLS 1.3, Signal, SSH, la firma de código con Ed25519 y cualquier servicio de transferencia de archivos que autentique usuarios. Así es como funciona realmente.

La trampa matemática

Toda la criptografía de clave pública se basa en funciones «trampa» —cálculos fáciles de hacer hacia adelante pero prácticamente imposibles de invertir sin información adicional. Dos familias dominan:

  • Factorización de enteros (RSA): multiplicar dos primos grandes es trivial; factorizar su producto es exponencialmente difícil. Una clave RSA de 2048 bits usa dos primos de ~1024 bits. El mejor ataque conocido, la Criba de Cuerpos de Número General, requiere aproximadamente 2^112 operaciones, fuera de alcance.
  • Logaritmos discretos sobre curvas elípticas (ECDH, ECDSA, Ed25519): calcular la multiplicación de puntos en una curva es rápido; invertirlo para encontrar el multiplicador es difícil. Las curvas de 256 bits como Curve25519 dan una seguridad equivalente a RSA de 3072 bits.

Ambos problemas son fáciles para ordenadores cuánticos vía el algoritmo de Shor, razón por la que NIST estandarizó alternativas post-cuánticas (ML-KEM y ML-DSA) en FIPS 203–205 en 2024.

RSA en la práctica

Ron Rivest, Adi Shamir y Leonard Adleman publicaron RSA en 1977. El esquema es elegante:

  1. Elige dos primos grandes p y q.
  2. Calcula n = p × q (el módulo) y φ(n) = (p-1)(q-1).
  3. Elige e coprimo con φ(n), habitualmente 65537.
  4. Calcula d tal que e × d ≡ 1 (mod φ(n)).
  5. Clave pública: (n, e). Clave privada: (n, d).

Cifrado: ciphertext = message^e mod n. Descifrado: message = ciphertext^d mod n. Las matemáticas funcionan gracias al teorema de Euler.

El RSA real usa relleno OAEP (RFC 8017) para prevenir ataques de texto cifrado elegido. El RSA de libro de texto es catastróficamente inseguro. RSA-2048 es el mínimo actual para nuevos sistemas; RSA-3072 o 4096 para todo lo que tenga larga vida útil.

Diffie-Hellman: secretos compartidos sin enviar claves

RSA te permite cifrar para un destinatario conocido. Diffie-Hellman hace algo sutilmente diferente: permite a dos partes derivar un secreto compartido sobre un canal público, sin que ninguna envíe el secreto.

La versión clásica (DH sobre enteros módulo un primo grande):

  1. Ambas partes acuerdan un primo grande p y un generador g.
  2. Alicia elige el secreto a, envía A = g^a mod p.
  3. Roberto elige el secreto b, envía B = g^b mod p.
  4. Alicia calcula B^a mod p = g^(ab) mod p.
  5. Roberto calcula A^b mod p = g^(ab) mod p.

Ambos llegan a g^ab mod p sin enviar nunca a ni b. Un espía ve g, p, A, B pero calcular g^ab a partir de A y B requiere resolver el problema del logaritmo discreto.

El DH moderno usa curvas elípticas (ECDH). X25519 es la elección estándar: claves de 32 bytes, secretos compartidos de 32 bytes, implementación protegida contra ataques de temporización.

Curvas elípticas y por qué ganaron

RSA parece anticuado porque en gran medida lo es. La criptografía de curva elíptica lo reemplazó por tres razones prácticas:

  • Claves más pequeñas. Una clave EC de 256 bits da la seguridad de una clave RSA de 3072 bits. Eso es 32 bytes frente a 384 bytes.
  • Operaciones más rápidas. ECDH en Curve25519 tarda aproximadamente 70 microsegundos en una CPU moderna. La generación de claves RSA-3072 tarda segundos.
  • Mejor resiliencia ante aleatoriedad deficiente. Ed25519 es determinista — las firmas no requieren nonces aleatorios por mensaje, evitando el desastre ECDSA de la PS3 de Sony en 2010, donde un nonce constante filtró la clave maestra.

Las curvas NIST (P-256, P-384, P-521) tienen amplio soporte pero algunos criptógrafos las han desconfiado históricamente por constantes no explicadas. Curve25519 y Ed25519, diseñadas por Daniel Bernstein, son los estándares modernos usados en TLS 1.3, WireGuard, Signal y SSH.

Firmas: probar quién envió qué

La criptografía de clave pública hace algo que la simétrica no puede: probar la autoría. Firmar invierte los roles de cifrado — «cifras» (firmas) con tu clave privada, y cualquiera con tu clave pública puede «descifrar» (verificar). Si se verifica, necesariamente tenías la clave privada.

Las firmas reales usan funciones hash para manejar mensajes de tamaño arbitrario:

  1. Calcula h = SHA-256(message).
  2. Firma h con la clave privada (RSA-PSS, ECDSA o Ed25519).
  3. El verificador hace hash del mensaje recibido, lo comprueba contra la firma con la clave pública.

Aplicaciones: certificados TLS (la CA firma la clave pública del sitio), firma de código (la notarización de Apple, Microsoft Authenticode), la firma de commits de Git, los gestores de paquetes de software (apt, Homebrew, npm).

Dónde usa la criptografía de clave pública la transferencia de archivos

Para transferencias anónimas basadas en enlace (SwissTransfer, HexaTransfer), la criptografía de clave pública a menudo no aparece directamente: una clave simétrica aleatoria en el fragmento de URL lo gestiona todo. Pero para los servicios con cuenta, las claves públicas importan:

  • Autenticación del servidor TLS 1.3. Cada conexión HTTPS comienza con el certificado del servidor, verificado contra una cadena de CA. El intercambio de claves ECDHE efímero deriva entonces la clave de sesión.
  • Cifrado de cuenta a cuenta. Tresorit, Proton Drive y Mega dan a cada usuario un par de claves al registrarse. Los archivos compartidos entre cuentas se envuelven con la clave pública del destinatario.
  • Clientes y actualizaciones firmados. Las apps de escritorio verifican las actualizaciones con firmas Ed25519 o RSA para prevenir ataques a la cadena de suministro.
  • Autenticación sin contraseña. WebAuthn y las Passkeys usan claves EC almacenadas en hardware seguro (Touch ID, Windows Hello, YubiKey).

Distribución de claves: el problema difícil restante

La criptografía de clave pública resuelve un problema de distribución de claves pero crea otro: ¿cómo sabes que una clave pública realmente pertenece a quien afirma? Tres modelos:

  • PKI (Infraestructura de clave pública). Las autoridades de certificación firman las claves públicas. Usado por TLS con raíces en Chrome, Firefox, Safari.
  • Web de confianza. El enfoque de PGP: los usuarios firman las claves de los demás. Flexible pero con problemas de escala que mantuvieron la adopción en nicho.
  • TOFU (Trust On First Use). El enfoque de SSH: acepta la clave la primera vez, avisa si cambia. Simple pero vulnerable a la intercepción inicial.
  • Transparencia de claves. Logs de árbol Merkle donde todas las claves públicas son auditables públicamente. Usado por WhatsApp, la Verificación de Clave de Contacto de iMessage y los sistemas modernos de passkey.

Para la transferencia de archivos con destinatarios desconocidos, el intercambio por fragmento de URL esquiva todo esto: el remitente entrega directamente la clave al destinatario a través del enlace, y la autenticidad depende del canal usado para compartir el enlace.

Qué cambia la computación cuántica

Un ordenador cuántico a gran escala ejecutando el algoritmo de Shor rompe tanto RSA como la criptografía de curva elíptica. Las estimaciones actuales sitúan el plazo en 10–20 años, pero el riesgo es inmediato para los datos con larga vida útil: los ataques de «cosechar ahora, descifrar después» registran el tráfico cifrado hoy y lo descifran en 2040.

Los estándares post-cuánticos de NIST de 2024:

  • FIPS 203 (ML-KEM) — reemplaza a Diffie-Hellman / ECDH para el intercambio de claves. Basado en problemas de retículas.
  • FIPS 204 (ML-DSA) — reemplaza a RSA/ECDSA para firmas.
  • FIPS 205 (SLH-DSA) — firma basada en hash como alternativa.

Cloudflare y Google ya admiten ML-KEM en el intercambio de claves TLS 1.3. Los servicios de transferencia de archivos seguirán en los próximos años. El cifrado simétrico (AES-256-GCM) queda prácticamente inalterado: el algoritmo de Grover solo reduce a la mitad su fortaleza efectiva.

Combinándolo todo

Para comparticiones sensibles hoy: TLS 1.3 con intercambio de claves X25519 protege la conexión, AES-256-GCM gestiona el cifrado en volumen, y para servicios basados en cuenta, ECDH con Curve25519 envuelve las claves por archivo. Los servicios basados en enlace omiten la capa de cuenta pero ganan simplicidad. Ambos modelos ofrecen seguridad robusta cuando se implementan correctamente.

Pruébalo en hexatransfer.com — gratis, sin cuenta, hasta 10 GB.

Envía archivos grandes de forma segura con cifrado de extremo a extremo

Transfiere archivos de hasta 10 GB gratis con cifrado de extremo a extremo. Sin necesidad de cuenta. Tus archivos se cifran en tu navegador antes de subirlos: nadie más puede leerlos.

Enviar un archivo