Cifrado PDF explicado: RC4 vs AES-128 vs AES-256
El cifrado PDF es la protección criptográfica aplicada a los flujos de contenido de un PDF para que el archivo no pueda leerse sin contraseña. La especificación PDF ha soportado varios algoritmos a lo largo de su historia, y no todos siguen siendo seguros. Esta página explica qué hace cada algoritmo, qué versión de PDF lo introdujo y cuál deberías elegir al proteger un archivo hoy.
Mecanismo
Cómo funciona el cifrado PDF
Cuando un escritor PDF cifra un archivo, genera una clave de cifrado de archivo aleatoria, usa esa clave para cifrar los flujos de contenido (y ciertas otras cadenas del archivo) y luego almacena la clave de cifrado de archivo en un diccionario de cifrado protegido por la contraseña del usuario. Para abrir el archivo, un visor pide la contraseña, deriva una clave de ella, usa esa clave para descifrar la clave de cifrado de archivo y luego usa la clave de cifrado de archivo para descifrar el contenido.
La consecuencia importante: la contraseña no se almacena en el archivo. Lo que se almacena es un valor cifrado con la contraseña. Para verificar una contraseña, el visor intenta descifrar ese valor y comprueba el resultado contra un marcador de texto plano conocido. Por eso no hay recuperación de contraseña — el archivo no contiene la contraseña, solo algo bloqueado por ella.
Algoritmo
RC4 — obsoleto y roto
RC4 es un cifrador de flujo diseñado en 1987 y muy usado en los 90 (PDF, SSL, WEP). PDF 1.2 introdujo RC4 de 40 bits; versiones posteriores lo extendieron a RC4 de 128 bits. RC4 ahora está obsoleto en PDF y considerado roto para uso de seguridad moderno. Específicamente:
- RC4 de 40 bits es trivialmente fuerza-brutable en hardware moderno.
- RC4 de 128 bits no es fuerza-brutable, pero RC4 tiene sesgos estadísticos que filtran información sobre el texto plano, y se han publicado varios ataques prácticos sobre PDFs cifrados con RC4.
- Los visores modernos advierten o se niegan a abrir archivos cifrados con RC4 en algunas configuraciones.
No crees nuevos PDFs cifrados con RC4. Si encuentras uno, descífralo (con la contraseña) y recífralo con AES-128 o AES-256.
Algoritmo
AES-128 — sólido, ampliamente soportado
AES-128 se introdujo en PDF 1.5 (2003, Acrobat 6/7). AES es un cifrador de bloque; AES-128 usa una clave de 128 bits. El modo AES de PDF usa CBC con un vector de inicialización aleatorio de 16 bytes por cadena. AES-128 no tiene ataques prácticos contra él y es ampliamente soportado por todo visor PDF moderno. Es un default razonable cuando AES-256 no está disponible.
Algoritmo
AES-256 — el estándar actual
AES-256 se introdujo en PDF 1.6 Extension Level 3 (2008, Acrobat 9). Usa una clave de 256 bits y, en el diseño original de PDF 1.6 Ext Level 3, deriva la clave de la contraseña con SHA-256. Una revisión posterior (PDF 2.0 / Extension Level 8) añadió una derivación de clave más fuerte que usa PBKDF2 con muchas iteraciones, haciendo la fuerza-bruta mucho más difícil. Esto se llama a veces "AES-256 R6" o "compatibilidad Acrobat X".
Prefiere AES-256 siempre que tu herramienta lo ofrezca. Si tienes elección entre la derivación de clave antigua y la nueva, elige la nueva (basada en PBKDF2).
Historia
Qué versión de PDF introdujo qué algoritmo
- PDF 1.2 (1996) — RC4 de 40 bits.
- PDF 1.3 (1999) — RC4 de 128 bits.
- PDF 1.5 (2003) — AES-128 (V4, R4).
- PDF 1.6 Ext Level 3 (2008) — AES-256 (V5, R5).
- PDF 2.0 / Ext Level 8 (2017) — AES-256 con derivación de clave PBKDF2 (V5, R6).
Práctico
Qué algoritmo elegir
Para archivos nuevos: AES-256 con derivación de clave PBKDF2 (R6) si tanto el firmante como los visores del destinatario lo soportan; si no, AES-128. Nunca elijas RC4 para un archivo nuevo. La contraseña importa más que el algoritmo: una contraseña de 6 caracteres en AES-256 es más débil que una contraseña aleatoria de 20 caracteres en AES-128, porque la superficie de ataque es la contraseña, no el cifrador.
Para abrir archivos antiguos: cualquier visor moderno manejará los tres. Si controlas el archivo, descífralo y recífralo con AES-256.
Una comprobación útil: tras proteger un PDF, intenta abrirlo en un visor distinto al que usaste para cifrarlo. Si un segundo visor puede abrirlo sin advertencias, el cifrado es ampliamente compatible. Si solo la herramienta original puede abrirlo, puede que hayas usado un modo no estándar.
IXPDF
Capacidad de cifrado de IXPDF hoy
El motor PDF actual de IXPDF (pdf-lib) no soporta escribir ni leer PDFs cifrados. Las páginas deProteger PDF yDesbloquear PDFexplican la limitación honestamente y están marcadas Investigación necesaria. Estamos evaluando una librería de cifrado compatible con navegador que nos permita ofrecer protección AES-256 completamente en el navegador, sin subida. Hasta entonces, consulta nuestraguía de protección con contraseñapara herramientas locales de confianza.
Seguir leyendo