Cifrado en el cliente · Compartir PDF

Compartir PDF cifrado en el cliente, explicado como corresponde.

«Cifrado de extremo a extremo» se usa de manera vaga. Aquí está el mecanismo criptográfico real detrás de un enlace de PDF cifrado en el cliente — AES-256-GCM, gestión de claves, modos fragmento frente a frase de contraseña, y qué cosas literalmente no puede hacer el servidor. Nota: «conocimiento cero» en esta página se refiere a que el servidor no posee ninguna información que pueda descifrar tu archivo, no a las pruebas formales de conocimiento cero (ZKP) — el producto no usa ZKP.

lockAES-256-GCM vpn_keyPBKDF2-SHA256 · 310,000 linkFragmento o frase de contraseña memoryWeb Crypto API

Qué significa «conocimiento cero» aquí

Una desambiguación rápida antes de nada: este sistema no usa pruebas de conocimiento cero (ZKP). La frase «conocimiento cero» en esta página se refiere a la propiedad más débil pero útil en la práctica de que el servidor que almacena tu archivo compartido no tiene conocimiento — ni criptográfico ni operativo — que pueda usarse para descifrarlo. La clave nunca toca el servidor, por lo que el servidor no puede revelarla bajo ninguna circunstancia. El mecanismo es cifrado en el cliente puro más una clave que viaja solo en el fragmento de la URL (o se deriva de una frase de contraseña que el servidor nunca ve).

memory
El cifrado ocurre en tu navegador
No en el servidor, no en un worker que no controlas — en tu pestaña, mediante window.crypto.subtle. Verificable en DevTools.
cloud_off
Solo se sube texto cifrado
El cuerpo de la subida es texto cifrado AES-256-GCM. El PDF, el nombre de archivo y los metadatos nunca llegan al servidor en forma legible.
vpn_key
La clave viaja con el destinatario
Ya sea en el fragmento de la URL (que nunca se envía a servidores) o derivada de una frase de contraseña que elige el remitente. En cualquier caso, nosotros nunca la vemos.
block
Sin recuperación = sin puerta trasera
¿Perdiste el enlace u olvidaste la frase de contraseña? El archivo se ha perdido para siempre. Como la clave nunca llega a nuestro servidor, no existe la vía de recuperación que debilitaría la garantía.

Cómo se construye un enlace de PDF cifrado en el cliente

Un recorrido por lo que hacen el navegador del remitente, el servidor y el navegador del destinatario, con las llamadas reales de Web Crypto.

1 — Navegador del remitente
// 256-bit AES key, generated locally key = crypto.subtle.generateKey({name:"AES-GCM", length:256}) // fresh 96-bit IV per file iv = crypto.getRandomValues(new Uint8Array(12)) // encrypt locally; GCM gives us an auth tag for integrity ct = crypto.subtle.encrypt({name:"AES-GCM", iv}, key, pdfBytes) // upload ciphertext + iv (and salt, if passphrase mode) id = await PUT("/api/transfer", ct, {iv, expiry})
2 — Forma del enlace para compartir
// fragment mode: key lives after # link_f = `https://pdfpro.tools/s/<ID>#<KEY>` // passphrase mode: no key in the link; recipient must know the passphrase link_p = `https://pdfpro.tools/s/<ID>`
3 — El servidor almacena bytes opacos
ciphertext = ??? // random-looking, unreadable iv = 12-byte nonce salt = 16-byte random (passphrase mode only) expiry = 24h free / 30d Pro
4 — Navegador del destinatario
// browsers never transmit the URL fragment to the server rawKey = /* from location.hash OR */ PBKDF2(passphrase, salt, 310_000, "SHA-256") ct = await GET("/api/transfer/" + id) pdf = crypto.subtle.decrypt({name:"AES-GCM", iv}, importKey(rawKey), ct) // browser serves pdf to Downloads

Modo fragmento frente a modo frase de contraseña

Dos formas de llevar la clave al destinatario. Misma garantía de texto cifrado, distintos compromisos de usabilidad y fuga.

Modo Fragmento

La clave viaja en el hash de la URL (#)

El flujo más simple: copia el enlace, pégalo en un chat al destinatario, listo. La parte de la URL tras # nunca es enviada a ningún servidor web por ningún navegador conforme — eso es lo que mantiene la clave privada.

  • Un solo paso para el destinatario: hacer clic en el enlace.
  • Poca fricción, adecuado para compartir con sensibilidad de baja a media.
  • Riesgo: si el enlace se filtra en una captura de pantalla o por sincronización del navegador, el archivo se filtra con él.
  • Úsalo cuando confíes en el canal (mensajería firmada, chat interno).
Modo Frase de contraseña

Clave derivada de una frase de contraseña (PBKDF2)

El remitente elige una frase de contraseña. El navegador deriva una clave de 256 bits mediante PBKDF2-SHA256 con 310.000 iteraciones sobre una sal aleatoria de 128 bits. La sal se almacena en el servidor; la frase de contraseña se comparte por otro canal (teléfono, Signal, en persona).

  • Compartir en dos factores: el enlace y la frase de contraseña viajan por separado.
  • El enlace por sí solo no basta — el texto cifrado permanece ilegible.
  • La fortaleza de la frase importa: 310k iteraciones ralentizan la fuerza bruta pero no salvan una frase de 6 caracteres.
  • Úsalo cuando el enlace pueda reenviarse o almacenarse en un sitio en el que no confíes plenamente.
PropiedadModo fragmentoModo frase de contraseña
Portador de la claveHash de la URL (#)Frase de contraseña + sal
¿El servidor ve alguna vez la clave?NoNo
El servidor almacenaTexto cifrado + IVTexto cifrado + IV + sal
Fricción del destinatarioHacer clic en el enlaceHacer clic en el enlace + escribir la frase
Filtrable por captura de pantallaSí (enlace = clave)No (el enlace por sí solo es inútil)
Resistente a fuerza bruta256 bits aleatoriosDepende de la frase
Ideal paraCompartir con poca fricción por canales de confianzaCompartir de mayor sensibilidad

Por qué un texto cifrado almacenado en el servidor sigue protegiéndote

La gente suele preguntar: «si está en tu servidor, ¿cómo es privado?». La respuesta es que el texto cifrado no es el archivo. Sin la clave, son solo bytes de apariencia aleatoria. Esto es lo que significa en la práctica.

storage
Brecha en la base de datos = fuga de texto cifrado
Si un atacante comprometiera nuestra base de datos, se llevaría bytes opacos. Recuperar un solo archivo requeriría aplicar fuerza bruta a una clave de 256 bits — no factible con la física conocida.
gavel
Una citación produce texto cifrado
Un tribunal puede obligarnos a entregar lo que tenemos. Lo que tenemos es texto cifrado. Una orden judicial no puede crear retroactivamente una clave que nunca almacenamos.
group
El acceso interno queda neutralizado
Un empleado deshonesto con credenciales completas de la base de datos sigue sin poder leer los archivos. La garantía la impone las matemáticas, no el control de acceso.
timer
La expiración refuerza la garantía
El texto cifrado se elimina al expirar (24 h gratis, hasta 30 d en Pro). Después, incluso el texto cifrado desaparece — la única copia del archivo existe donde se descifró.

warningLimitaciones honestas

El cifrado en el cliente no resuelve la seguridad del extremo. El malware en el dispositivo del remitente o el destinatario puede robar la clave de la memoria. Una extensión de navegador comprometida puede leer el archivo descifrado. Y un enlace reenviado en un chat de grupo deshace cualquier garantía criptográfica. La arquitectura eleva el coste de una brecha; no elimina todo el riesgo.

Cifrado en el cliente frente a otras opciones «seguras»

Una comparación clara de las opciones comunes para compartir un PDF. La mayoría de las opciones etiquetadas como «seguras» están cifradas en transporte — protegen los datos en tránsito, pero el servidor receptor sigue conservando el texto plano y la clave.

OpciónTLS en tránsitoEl servidor puede leer el archivoExpiraciónCuenta del destinatario
Archivo adjunto de correoNormalmente síSí — en cada saltoPara siempreNo es necesaria
Enlace genérico de uso compartido en la nubeOpcionalA veces
PDF protegido por contraseñaSí (si el host tiene el archivo)NuncaNo es necesaria
PDF Pro (modo fragmento)No24 h / 30 dNo es necesaria
PDF Pro (modo frase de contraseña)No24 h / 30 dNo es necesaria

Compartir basado en confianza frente a conocimiento cero carrera en vivo

Mismo objetivo: compartir un PDF. Observa cómo terminan los dos modelos de confianza, uno al lado del otro.

cloud_upload
Compartir basado en confianza
El servidor conserva el texto plano
  1. Subir PDF al servidor
  2. El servidor conserva el texto planoTexto plano
  3. El servidor promete eliminarloConfianza
  4. Riesgo de brecha en su ladoRiesgo
  5. El destinatario descarga texto planoExpuesto
Copias de texto plano en el servidor
1+
El servidor puede leer
Claves en el servidor
shield_lock
Esta herramienta
Compartir de conocimiento cero
  1. Cifrar el PDF en el navegadorE2E
  2. El servidor conserva solo texto cifradoConocimiento cero
  3. El destinatario descifra localmenteHecho
check_circle
Ya compartido — y el servidor no puede leerlo.
Sin texto plano en el servidor. Sin custodia de claves. A prueba de brechas por diseño.
Copias de texto plano en el servidor
0
El servidor puede leer
No
Claves en el servidor
No
La animación se ejecuta una vez por vista — toca repetir para verla de nuevo.

Preguntas frecuentes

¿Qué significa realmente compartir PDF cifrado en el cliente?
Significa que el servidor que almacena tu archivo compartido literalmente no puede descifrarlo. La clave de cifrado se genera en el navegador del remitente, nunca se sube, y solo el navegador del destinatario puede reconstruirla — ya sea desde el fragmento de la URL o desde una frase de contraseña que el remitente comparte por otro canal. La garantía la impone la criptografía, no una política de control de acceso que podríamos cambiar. Nota: esto es distinto de las pruebas formales de conocimiento cero (ZKP), que este producto no utiliza.
¿Qué cifrado usa PDF Pro para compartir cifrado en el cliente?
Cifrado simétrico AES-256-GCM con un vector de inicialización aleatorio de 96 bits por archivo. En el modo frase de contraseña, las claves se derivan mediante PBKDF2-SHA256 con 310.000 iteraciones sobre una sal aleatoria de 128 bits. Toda la criptografía se ejecuta en la Web Crypto API nativa del navegador.
¿Cuál es la diferencia entre el modo fragmento y el modo frase de contraseña?
El modo fragmento coloca la clave de 256 bits en el hash de la URL (después de #), que los navegadores nunca envían a ningún servidor. Cualquiera con el enlace completo puede descifrar. El modo frase de contraseña deriva la clave de una frase elegida por el remitente; sin ella, el texto cifrado permanece ilegible. El modo frase es más seguro si el enlace se filtra; el fragmento es más fácil para compartir con poca fricción. Consulta la tabla comparativa anterior.
¿Es realmente seguro un fragmento de URL como portador de una clave de cifrado?
Los navegadores conformes nunca transmiten la parte fragmento de una URL (la parte tras #) al servidor. Permanece en el cliente y solo es visible para el JavaScript que se ejecuta en la pestaña del destinatario. Eso es lo que hace que el propio enlace para compartir sea la credencial de descifrado: la clave viaja con el destinatario, no con la subida. Puedes verificarlo en la pestaña Red de tu navegador: la URL de la solicitud queda truncada en ? o #.
¿Pueden PDF Pro o un tribunal leer los archivos almacenados mediante compartir cifrado en el cliente?
No. El servidor almacena texto cifrado AES-256-GCM más un vector de inicialización (más una sal en modo frase de contraseña). Sin la clave —que nunca recibimos— esos datos son criptográficamente indistinguibles de bytes aleatorios. Solo podemos divulgar texto cifrado, que es lo que tenemos.
¿Qué ocurre si pierdo el enlace u olvido la frase de contraseña?
El archivo es irrecuperable de forma permanente. Es por diseño: el cifrado en el cliente significa que no hay vía de recuperación, porque tal vía exigiría que guardáramos la clave. Guarda la frase de contraseña en un gestor de contraseñas y conserva el enlace en un lugar duradero.
¿Es gratis compartir PDF cifrado en el cliente?
Sí. El nivel gratuito admite cifrado AES-256-GCM y expiración del enlace a las 24 horas sin necesidad de registro. El límite de archivo del nivel gratuito es de aproximadamente 25 MB por transferencia; Pro amplía la ventana de expiración a 30 días y aumenta los límites de tamaño de archivo.
¿Necesita el destinatario una cuenta?
No. El destinatario hace clic en el enlace, su navegador descifra localmente mediante la Web Crypto API y descarga el archivo: sin registro, sin instalación, sin un muro de portal entre él y el archivo.

Envía un enlace cifrado de extremo a extremo. Deja que expire según lo previsto.

Cifrado AES-256-GCM en tu navegador. Sin registro, sin texto plano en el servidor, sin puerta trasera de recuperación.

sendCrear un enlace cifrado