¿Qué esquema de seguridad utiliza el cifrado de contraseña PDF y por qué es tan débil?

59

Muchos PDF se distribuyen como PDF encriptados para bloquear algunas de sus funciones (por ejemplo, impresión, escritura, copia). Sin embargo, el software de craqueo de PDF está disponible en línea, lo que generalmente agrieta las contraseñas de PDF en menos de 1 segundo.

No tiene sentido que el sistema PDF sea tan fácil de descifrar si Adobe implementó técnicas de cifrado adecuadas en la seguridad de sus documentos, y parece que hay un error de implementación importante en su esquema de cifrado PDF que permite que los documentos Se desbloqueará con cantidades triviales de trabajo.

¿Cuál es el esquema de seguridad utilizado en dichos archivos PDF bloqueados y por qué estos eliminadores de contraseñas de PDF tardan tan poco tiempo en vencerlo?

    
pregunta March Ho 03.08.2015 - 13:58
fuente

3 respuestas

47

Hay dos tipos de protección de PDF: el cifrado basado en contraseña y las restricciones de la interfaz de usuario. Está describiendo el segundo tipo de protección, a saber, el permiso faltante para copiar y pegar, para imprimir y así sucesivamente. Si hay restricciones de interfaz de usuario en un archivo PDF, el espectador aún necesita descifrar el contenido para mostrarlo en su pantalla, por lo que no se encuentra en un escenario de "cifrado basado en contraseña" en el que falta una clave para descifrar el archivo. documento, pero en un escenario "DRM" en el que confía en que las aplicaciones que pueden descifrar el archivo (según el conocimiento estático como las claves maestras) hacen solo lo que el autor quiere que hagan.

Nada impide que los expertos en computación realicen ingeniería inversa sobre cómo la aplicación legítima descifra los datos (no se necesita contraseña) y realiza el descifrado ellos mismos. Después de descifrar el documento, los derechos pueden "ajustarse" a, por ejemplo, Incluya el permiso de impresión o la aplicación de descifrado puede hacer cosas (como copiar todas las imágenes de mapa de bits) por sí misma.

Adobe intenta evitar "aplicaciones no autorizadas" que le permiten eludir las restricciones de uso según su licencia en la especificación PDF: revocan la licencia para usar la propiedad intelectual (reclamada) en esa especificación para aplicaciones que no obedecen al uso restricciones AFAIK algunas herramientas de código abierto tienen o tuvieron un interruptor de compilación para determinar si las restricciones de uso deben obedecerse o no. Esto es un punto de partida perfecto para las personas que venden el software "desprotector de PDF".

En el caso descrito anteriormente, la "contraseña de usuario" es la cadena vacía. Se requiere que los lectores de PDF intenten una contraseña de usuario vacía si se abre un archivo PDF protegido. Solo si eso falla la verificación de validez de la contraseña, se le pedirá una contraseña al usuario. begueradj describe la derivación de clave en su respuesta y, como ve, los "permisos DRM" (entrada / P) ingresan a la derivación de clave, por lo que si simplemente "arregla los permisos" en un archivo PDF protegido, un lector conforme obtendrá el clave incorrecta y no abrir el documento. Por otro lado, si un archivo PDF está completamente protegido por una contraseña (incluso contra la apertura), la contraseña del usuario ya no estará vacía, y este tipo de protección PDF es razonablemente segura.

    
respondido por el Michael Karcher 03.08.2015 - 16:42
fuente
40

La funcionalidad de bloqueo de PDF de Adobe obedece a la regla de seguridad a través de obscurity . Si los softwares de terceros pueden desbloquear un archivo PDF es porque si el  Si el archivo está encriptado, entonces contiene necesariamente la información necesaria para descifrarlo.

La clave de cifrado de un archivo PDF se genera de la siguiente manera:

   1. Pad the user password out to 32 bytes, using a hardcoded
       32-byte string:
           28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08
           2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A
       If the user password is null, just use the entire padding
       string.  (I.e., concatenate the user password and the padding
       string and take the first 32 bytes.)

    2. Append the hashed owner password (the /O entry above).

    3. Append the permissions (the /P entry), treated as a four-byte
       integer, LSB first.

    4. Append the file identifier (the /ID entry from the trailer
       dictionary).  This is an arbitrary string of bytes; Adobe
       recommends that it be generated by MD5 hashing various pieces
       of information about the document.

    5. MD5 hash this string; the first 5 bytes of output are the
       encryption key.  (This is a 40-bit key, presumably to meet US
       export regulations.)

Este algoritmo toma como entrada la contraseña del usuario y varios otros datos. Entre esos datos puedes encontrar:

        /Size 95         % number of objects in the file
        /Root 93 0 R     % the page tree is object ID (93,0)
        /Encrypt 94 0 R  % the encryption dict is object ID (94,0)
        /ID [<1cf5...>]  % an arbitrary file identifier    

        /Filter /Standard   % use the standard security handler
        /V 1                % algorithm 1
        /R 2                % revision 2
        /U (xxx...xxx)      % hashed user password (32 bytes)
        /O (xxx...xxx)      % hashed owner password (32 bytes)
        /P 65472            % flags specifying the allowed operations

El software utiliza como proceso de descifrado este algoritmo:

    1. Take the 5-byte file key (from above).

    2. Append the 3 low-order bytes (LSB first) of the object number
       for the stream/string object being decrypted.

    3. Append the 2 low-order bytes (LSB first) of the generation
       number.

    4. MD5 hash that 10-byte string.

    5. Use the first 10 bytes of the output as an RC4 key to decrypt
       the stream or string.  (This apparently still meets the US
       export regulations because it's a 40-bit key with an additional
       40-bit "salt".)

Por supuesto, este es el esquema general de cifrado / descifrado, pero existen más o menos diferencias entre varias versiones de Adobe PDF.

Lecturas adicionales

    
respondido por el user45139 03.08.2015 - 14:20
fuente
19

El principal problema con la protección de contraseña de un archivo PDF con una contraseña es que está basando la seguridad en una contraseña , que es una parte de los datos que un usuario humano, en algún lugar, encontró en su mente, y era lo suficientemente arrogante como para considerarlo "indiscutible". Resulta que la mayoría de las contraseñas son adivinables. La situación puede mejorarse de alguna manera haciendo que la transformación de contraseña a clave sea costosa (esto se denomina hashing de contraseña ) pero una contraseña débil aún es débil.

Un segundo problema es que no hay un formato uno para el cifrado de PDF, sino varios. El cifrado de PDF tiene una larga historia de esquemas personalizados, el primero de los cuales se arraigó en momentos en que los EE. UU. Tenían reglas de exportación estrictas y estrictas para el software con capacidad de cifrado; para hacer la historia corta, para permitir que el software sea exportado sin ninguna molestia administrativa, el cripto tenía que ser ridículamente débil. De ahí el formato de encriptación descrito por @begueradj en su respuesta: la contraseña está oculta, y solo los primeros 40 bits de los resultados se mantienen como "clave maestra" para todo el archivo. Una clave de 40 bits es altamente susceptible de búsqueda exhaustiva en las computadoras de hoy, haciendo que todo el encriptado sea una broma. Es ahora posible crear archivos PDF fuertemente encriptados, que las versiones modernas de Adobe Reader pueden procesar (personalmente escribí un código para hacer archivos PDF que podrían ser descifrados solo con una tarjeta inteligente), pero Hay que hacerlo explícitamente.

La estructura interna de PDF complica la situación. Un PDF es un conjunto de "objetos", algunos de ellos son flujos de otros objetos o datos sin procesar. La idea general es que el documento debe estar sujeto a una variedad de accesos, por ejemplo, saltar a cualquier página dentro del documento (posiblemente antes de haberlo descargado en su totalidad), o extraer una tabla de contenido. Debido a que el cifrado se aplica en una base por secuencia, la conclusión habitual es que se puede obtener gran parte de la estructura del documento sin romper el cifrado (por ejemplo, número de páginas, longitud de cada párrafo, número, tamaño y posición de las imágenes ... ). Si se trata de un problema grave o no, depende del contexto, en particular, por qué desea cifrar. El verdadero problema aquí es que la decisión sobre qué cifrar y qué no cifrar la toma un software genérico que, por definición, no puede ser consciente del contexto.

En la práctica, el objetivo de proteger con contraseña un archivo PDF es no para que sea realmente inescrutable para el intruso; Es para documentar, de manera clara e inevitable, que el contenido del archivo es sensible y que el archivo debe manejarse con cuidado. Es el equivalente a un sello rojo "de alto secreto".

    
respondido por el Thomas Pornin 03.08.2015 - 14:51
fuente

Lea otras preguntas en las etiquetas