web-dev-qa-db-fra.com

Quel schéma de sécurité est utilisé par PDF cryptage du mot de passe, et pourquoi est-il si faible?

De nombreux fichiers PDF sont distribués sous forme de fichiers PDF cryptés pour verrouiller certaines de leurs fonctionnalités (par exemple, l'impression, l'écriture, la copie). Cependant, le logiciel de craquage PDF PDF est disponible en ligne, qui déchiffre généralement les mots de passe PDF en moins d'une seconde).

Cela n'a aucun sens que le système PDF PDF soit si facile à casser si Adobe a implémenté des techniques de cryptage appropriées dans la sécurité de leurs documents, et il semble qu'il y ait une erreur d'implémentation majeure dans leur = PDF schéma de cryptage qui permet de déverrouiller des documents avec des quantités de travail insignifiantes.

Quel est le schéma de sécurité utilisé dans ces fichiers PDF PDF verrouillés, et pourquoi ces suppresseurs de mot de passe PDF PDF prennent si peu de temps pour le vaincre?)

64
March Ho

Il existe deux types de protection PDF: cryptage par mot de passe et restrictions de l'interface utilisateur. Vous décrivez le deuxième type de protection, à savoir l'autorisation manquante de copier-coller, d'imprimer et de S'il y a des restrictions d'interface utilisateur placées sur un fichier PDF, le lecteur doit toujours décrypter le contenu pour l'afficher sur votre écran, donc vous n'êtes pas dans un "mot de passe" scénario de chiffrement "où il vous manque une clé pour déchiffrer le document, mais dans un scénario" DRM "où vous êtes sûr que les applications capables de déchiffrer le fichier (basées sur des connaissances statiques comme les clés principales) ne font que ce que l'auteur veut qu'ils fassent.

Rien n'empêche les experts en informatique de procéder à une rétro-ingénierie de la façon dont l'application légitime déchiffre les données (aucun mot de passe nécessaire) et d'effectuer le déchiffrement eux-mêmes. Après avoir déchiffré le document, les droits peuvent être "ajustés", par ex. inclure une autorisation d'impression ou l'application de décryptage peut faire des choses (comme copier toutes les images bitmap) elle-même.

Adobe essaie d'empêcher les "applications escrocs" qui vous permettent de contourner les restrictions d'utilisation par leur licence sur la spécification PDF: ils révoquent la licence pour utiliser la propriété intellectuelle (revendiquée) dans cette spécification pour les applications qui n'obéissent pas aux restrictions d'utilisation. AFAIK certains outils open source ont ou avaient un commutateur de construction pour savoir si les restrictions d'utilisation doivent être respectées ou non. Cela constitue un point de départ idéal pour les personnes vendant des logiciels "PDF deprotector".

Dans le cas décrit ci-dessus, le "mot de passe utilisateur" est la chaîne vide. PDF doivent essayer de saisir un mot de passe utilisateur vide si un fichier protégé PDF est ouvert. Ce n'est que si cela échoue que la vérification de la validité du mot de passe est demandée à l'utilisateur) un mot de passe. begueradj décrit la dérivation de clé dans sa réponse, et comme vous le voyez, les "autorisations DRM" (entrée/P) entrent dans la dérivation de clé, donc si vous "corrigez les autorisations" dans un PDF fichier, un lecteur conforme dérivera la mauvaise clé et ne parviendra pas à ouvrir le document. En revanche, si un fichier PDF PDF est complètement protégé par un mot de passe (même contre l'ouverture) , le mot de passe utilisateur n'est plus vide et ce type de protection PDF PDF est raisonnablement sécurisé.

48
Michael Karcher

Adobe PDF obéit à la règle de sécurité à travers l'obscurité . Si des logiciels tiers sont capables de déverrouiller a = PDF c'est parce que si le si le fichier est crypté alors il contient nécessairement les informations nécessaires pour le décrypter.

La clé de chiffrement d'un fichier PDF est générée comme suit:

   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.)

Cet algorithme prend en entrée le mot de passe de l'utilisateur et plusieurs autres données. Parmi ces données, vous pouvez trouver:

        /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

Le logiciel utilise comme processus de décryptage cet algorithme:

    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".)

Bien sûr, il s'agit du schéma général de chiffrement/déchiffrement, mais il existe plus ou moins de différences entre les différentes versions d'Adobe PDF.

Lectures complémentaires

41
user45139

Le principal problème avec la protection par mot de passe d'un PDF avec un mot de passe est que vous basez la sécurité sur un mot de passe , qui est un élément de données qu'un utilisateur humain, quelque part, a trouvé dans son esprit, et était assez arrogant pour juger "impossible à deviner". Il s'avère que la plupart des mots de passe sont devinables. La situation peut être quelque peu améliorée en créant le mot de passe -touche clé coûteuse (cela s'appelle hachage de mot de passe ) mais un mot de passe faible est toujours faible.

Un deuxième problème est qu'il n'y a pas un format pour le cryptage PDF, mais plusieurs. PDF a une longue histoire de schémas personnalisés, dont le premier prend racine à des moments où les États-Unis avaient des règles d'exportation strictes et strictes pour les logiciels sensibles à la cryptographie; pour faire court, pour permettre au logiciel d'être exporté sans aucun tracas administratif, le crypto devait être ridiculement faible. D'où le format de cryptage décrit par @begueradj dans sa réponse: le mot de passe est haché, et seuls les 40 premiers bits des résultats sont conservés comme "maître" clé "pour l'ensemble du fichier. Une clé de 40 bits se prête très bien à une recherche exhaustive avec les ordinateurs d'aujourd'hui, ce qui rend tout le chiffrement une plaisanterie. C'est maintenant possible de créer des fichiers PDF PDF fortement cryptés, que les versions modernes d'Adobe Reader peuvent traiter (j'ai personnellement écrit du code pour créer des fichiers PDF PDF qui pourraient être décryptés) uniquement avec une carte à puce), mais vous devez le faire explicitement.

La situation interne est aggravée par la structure interne PDF PDF. A PDF est un ensemble "d'objets", certains étant des flux d'autres objets ou des données brutes). L'idée générale est que le document doit être accessible à une variété d'accès, par exemple en sautant sur n'importe quelle page du document (éventuellement avant de l'avoir téléchargé en entier), ou en extrayant une table des matières. Puisque le cryptage est appliqué sur une base par flux , la conclusion habituelle est qu'une grande partie de la structure du document peut être obtenue sans casser le cryptage (par exemple nombre de pages, longueur de chaque paragraphe, nombre, taille et position des images ...). Que ce soit un problème grave ou non dépend du contexte, en particulier pourquoi vous voulez crypter. Le vrai problème ici est que la décision sur ce qu'il faut crypter et ce qu'il ne faut pas crypter est prise par certains logiciels génériques qui, par définition, ne peuvent pas être conscients du contexte.

En pratique, le point de protection par mot de passe d'un fichier PDF PDF n'est pas pas pour le rendre vraiment impénétrable par l'écoute clandestine; il est de documenter, de manière claire et incontournable, que le contenu du fichier est sensible et que le fichier doit être manipulé avec précaution, c'est l'équivalent d'un cachet rouge "top secret".

19
Thomas Pornin