Ir al contenido
getnextpdf.com

Cómo funciona realmente el cifrado en PDF — y sus límites

Spec: ISO 32000-2, §7.6

El cifrado en PDF revuelve las palabras y las imágenes del interior de un documento de modo que solo quien tenga la contraseña correcta pueda leerlas. Es criptografía genuina, y hace bien el único trabajo que tiene. También se malinterpreta mucho, porque la misma función lleva un segundo mecanismo —los indicadores de permiso— que parece un candado y no lo es.

Esta página separa ambos. Explica qué protege realmente AES-256, para qué sirven de verdad las dos contraseñas y dónde se sitúa la frontera honesta.

La gente recurre al cifrado cuando un documento es sensible: un contrato, una nómina, una carta médica. La expectativa es razonable: mantén esto privado e impide que la gente lo imprima o lo copie. PDF cumple la primera mitad de ese deseo de forma convincente y la segunda mitad solo por el sistema del honor.

Confundir ambas cosas es donde recae el coste. Un equipo marca un archivo «sin copia», confía en que la plataforma lo haga cumplir y lo envía. Meses después alguien copia el texto en treinta segundos con otro lector, y la suposición que nunca se sostuvo se convierte en silencio en una fuga. El cifrado nunca se rompió. Simplemente se le pidió que hiciera algo que no hace.

  • El cifrado protege la confidencialidad. Con AES-256, el contenido de cadenas y flujos de un PDF es texto cifrado real. Sin la clave, es ilegible.
  • La contraseña de usuario abre el documento. Si la proporcionas, puedes ver el contenido. Sin ella, no hay nada que leer.
  • La contraseña de propietario gobierna los permisos. Es la clave de «derechos plenos». Los indicadores de permiso que protege —imprimir, copiar, modificar— están registrados dentro del documento cifrado.
  • Los indicadores de permiso dependen de la cooperación del lector. Son una petición a un lector que se porta bien, no una imposición. Un lector que los ignora puede imprimir, copiar o editar de todos modos.
  • La estructura permanece visible. El cifrado oculta el contenido, no el esqueleto del documento: el número de páginas y la disposición de los objetos no son el secreto.

El cifrado en PDF está definido por Spec: ISO 32000-2, §7.6. El modelo es preciso: un gestor de seguridad deriva una clave de cifrado de archivo a partir de una contraseña, las cadenas y los flujos del documento se cifran con esa clave, y un diccionario de cifrado —referenciado desde el tráiler del archivo— registra qué cifrado se usó, qué longitud tiene la clave y qué permisos declaró el autor.

El cifrado moderno y recomendado es AES con una clave de 256 bits. Cuando se cifra un PDF de esta manera, la carga útil legible —el texto que extraerías, los bytes de imagen, los datos de fuente— se transforma en texto cifrado. La forma externa del documento permanece legible por diseño: un lector tiene que encontrar el diccionario de cifrado y conocer la longitud de la clave antes de poder pedirte una contraseña. Por eso el cifrado se entiende mejor como confidencialidad del contenido, no como opacidad del archivo completo.

Las dos contraseñas se sitúan en capas distintas, y la distinción es la parte que más conviene acertar.

  1. Se proporciona una contraseñaLa contraseña de usuario (abrir) o la de propietario (derechos plenos).
  2. El gestor de seguridad deriva la claveISO 32000-2 §7.6.4 convierte la contraseña en la clave de cifrado de archivo.
  3. El contenido se descifraAES-256 vuelve a convertir las cadenas y flujos cifrados en bytes legibles.
  4. Se consultan los permisosLa clave de propietario concede todos los derechos; la clave de usuario queda ligada a los indicadores de permiso declarados, si el lector decide respetarlos.
How a password becomes readable content: the user password (or the owner password) is run through the standard security handler's key-derivation routine to recover the file encryption key, which then decrypts the document's strings and streams. The owner password additionally unlocks the full set of permissions; the user password is bound by whatever permission flags the author declared.

La contraseña de usuario es la contraseña de apertura. Responde a una pregunta: ¿puedes ver el contenido siquiera? Sin contraseña de usuario, no hay documento legible: esa parte se hace cumplir criptográficamente, porque sin la clave derivada no hay nada que descifrar.

La contraseña de propietario es la contraseña de permisos. Un archivo puede abrirlo cualquiera (sin contraseña de usuario) y aun así declarar una contraseña de propietario que controla las acciones de «derechos plenos»: imprimir a alta resolución, copiar texto, modificar el archivo. Es crucial que los bits de permiso que la contraseña de propietario protege estén protegidos en su integridad por el gestor de seguridad estándar: alterarlos se detecta y se rechaza en un lector conforme, porque el gestor liga los permisos declarados a las claves de cifrado. Los bits no son literalmente bytes ilegibles o ineditables —un atacante puede cambiarlos—, pero una copia alterada no validará, de modo que un lector conforme la trata como corrupta. Son a prueba de manipulación evidente. Simplemente no se imponen por sí mismos.

Los ajustes de cifrado son sencillos de expresar. Lo que importa es leer el resultado con honestidad: esto configura la intención, y la parte de permisos de esa intención es orientativa.

<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Security\Encryption\EncryptionMode;
use NextPDF\Security\Encryption\Permission;
$document = Document::createStandalone();
$document->setTitle('Confidential Offer');
$document->addPage();
// Confidentiality is real: AES-256 means the content is unreadable
// without the user password. This half is cryptographically enforced.
$document->encrypt(
userPassword: 'open-sesame',
ownerPassword: 'full-rights-key',
mode: EncryptionMode::Aes256,
// Permissions are a declared request to a cooperating reader,
// recorded inside the encrypted document — not a hard lock.
permissions: Permission::Print->value | Permission::CopyContent->value,
);
$document->save('offer.pdf');

Las contraseñas de usuario y de propietario son claves distintas con trabajos distintos. El argumento permissions declara lo que un lector que se porta bien debería permitir. Son metadatos honestos, protegidos en su integridad por el gestor de seguridad de modo que la manipulación sea detectable, y ese es el techo de lo que una biblioteca productora puede prometer.

La trampa es leer «permisos» como «imposición». Es intuitivo: el indicador dice imprimir no permitido, así que seguro que imprimir está bloqueado. Pero nada en el PDF puede llegar a desactivar el botón de imprimir de un lector. El entero de permisos se registra para que un lector que coopera lo respete. Un lector que elige no cooperar —y varios no lo hacen— es libre de imprimir, copiar y editar.

NextPDF es deliberado en esto. La ruta de cifrado de Core trata los indicadores de permiso como intención declarada y nunca finge imponerlos. Si necesitas que ciertas acciones se impidan de verdad, ese control tiene que vivir fuera del archivo: en a quién entregas el documento, o en un sistema de control de acceso a su alrededor.

Sé preciso sobre lo que garantiza cada mitad. El cifrado (la capa de la contraseña de usuario) es un control de confidencialidad real: fuerte si la contraseña es fuerte, y solo tan bueno como el secreto que elijas. Los permisos (la capa de la contraseña de propietario) son metadatos a prueba de manipulación evidente, no control de acceso.

Lo que podrías esperarLo que el cifrado realmente ofrece
Nadie puede leer el contenido sin la contraseñaCierto. Con AES-256 y una contraseña de usuario fuerte, las cadenas y los flujos son ilegibles sin la clave. Se hace cumplir de verdad.
Nadie puede reescribir «sin copia» como «copia permitida»A prueba de manipulación evidente, no imposible. Los indicadores de permiso están protegidos en su integridad por el gestor de seguridad estándar: un extraño puede editar los bytes, pero la copia alterada no validará, de modo que un lector conforme detecta y rechaza el cambio.
Se impedirá al lector copiar o imprimirNo lo garantiza ningún productor de PDF. Un lector que no coopera puede ignorar los indicadores. Esto es una propiedad del formato, no una limitación de NextPDF.

Conviene enunciar con claridad otras dos fronteras. Primera, el cifrado protege el contenido, no la estructura del documento: la disposición de objetos y el número de páginas permanecen visibles, lo cual es normal y necesario para que un lector localice el diccionario de cifrado. Segunda, un PDF cifrado no puede reclamar además conformidad de archivo PDF/A: ese perfil prohíbe la entrada Encrypt, así que eliges uno u otro. La página de solución de problemas de cifrado y permisos cubre en detalle las excepciones específicas y el rechazo de PDF/A.

  • AES-256: el Advanced Encryption Standard con una clave de 256 bits, el cifrado moderno recomendado para el cifrado de contenido en PDF.
  • Contraseña de usuario (contraseña de apertura): el secreto necesario para abrir y leer un documento cifrado. Sin él, el contenido no se puede descifrar.
  • Contraseña de propietario (contraseña de permisos): el secreto de «derechos plenos» que gobierna los indicadores de permiso. Un documento puede tener una sin requerir una contraseña de usuario para abrirse.
  • Indicadores de permiso: la intención declarada de imprimir/copiar/modificar almacenada en el diccionario de cifrado. Protegidos en su integridad para que la manipulación sea detectable, pero respetados solo por un lector que coopera.
  • Gestor de seguridad: el componente que deriva la clave de cifrado de archivo a partir de una contraseña, definido por el gestor de seguridad estándar en ISO 32000-2.
  • Cooperación del lector: un control que depende de que el software consumidor elija obedecerlo, en lugar de ser impuesto por el propio archivo.