Plusieurs façons de simuler un PDF avec une signature numérique


Fig. 1. La procédure de sauvegarde incrémentielle sur laquelle sont basées les signatures numériques PDF. Selon les résultats du test, c'est le moyen le plus efficace de falsifier des documents

Théoriquement, les signatures numériques PDF authentifient de manière fiable l'auteur d'un document. Mais en pratique, le traitement PDF est généralement effectué par un logiciel propriétaire qui n'effectue pas correctement la validation. Des spécialistes de l'Université de la Ruhr à Bochum (Allemagne) ont décrit plusieurs options pour falsifier des documents PDF signés numériquement qui fonctionnent dans la plupart des visualiseurs PDF et des services de vérification en ligne.

La protection contre toutes les attaques n'est fournie que dans un seul programme, et même elle fonctionne sous Linux.

Structure PDF



Fig. 2. Structure du document PDF

La structure du document PDF est illustrée à la Fig. 2. Lors de l'enregistrement incrémentiel des modifications dans le document PDF, de nouveaux objets sont ajoutés au corps , ainsi qu'un nouveau tableau Xréf avec une description des nouveaux objets et une nouvelle bande-annonce avec des liens vers le catalogue (voir Fig. 1). Un répertoire est l'objet racine d'un fichier PDF; il définit la structure du document et peut éventuellement déterminer les autorisations d'accès.

Chaque objet commence par le numéro d'objet et le numéro de version, qui augmente avec chaque mise à jour de l'objet.


Fig. 2. Structure de l'objet PDF

Création de signature


L'ajout d'une signature numérique à un document PDF repose sur un mécanisme d'enregistrement incrémentiel (voir figure 1). Lors de l'ajout d'une signature lors de l'enregistrement incrémentiel, le contenu suivant est ajouté au document:

  • nouveau catalogue avec un nouveau paramètre Perms qui définit les autorisations de modifier le document; ce paramètre fait référence à l'objet Signature ;
  • Objet de signature ( 5 0 obj ) avec des informations sur les algorithmes cryptographiques utilisés pour hacher et signer le document, avec le paramètre Contents , qui contient le blob codé hexadécimal PKCS7 - il stocke les certificats et la valeur de la signature créée à l'aide de la clé privée qui correspond à la clé publique dans le certificat. Le paramètre ByteRange détermine quels octets du fichier PDF sont utilisés à l'entrée de la fonction de hachage pour calculer la signature (paires a, b et c, d ), c'est-à-dire quelle partie du fichier est signée;
  • Une nouvelle table Xref avec un lien vers un nouvel objet
  • nouvelle bande-annonce .

Dans la fig. La figure 3 montre un schéma simplifié d'un fichier PDF signé numériquement.


Fig. 3. Disposition simplifiée des fichiers PDF signés numériquement

Selon les spécifications actuelles, il est recommandé de signer l'intégralité du fichier, à l'exception du blob PKCS7.

La vérification de la signature est effectuée par l'application dans laquelle le document PDF est ouvert. Il extrait immédiatement la signature du PDF et utilise des opérations cryptographiques pour vérifier son exactitude, puis vérifier si le certificat X.509, dont les clés ont été utilisées pour signer, peut être approuvé.

En règle générale, tous les lecteurs PDF ne font pas confiance au magasin de clés intégré au système d'exploitation. Comme le navigateur Firefox, ils distribuent leur propre magasin de clés et permettent généralement à l'utilisateur de spécifier un magasin avec des certificats de confiance. Cette fonction vous permet de ne faire confiance qu'à certains certificats, par exemple, de votre propre autorité de certification.

Contrefaçon de signature numérique


Les chercheurs décrivent trois façons de contrefaire du contenu dans des PDF signés.

  • Faux signature universelle (USF);
  • Attaque ISA (Incremental Saving Attack)
  • attaque sur un wrapper de signature (Signature Wrapping Attack, SWA).

Fausse signature universelle (USF)


Une attaque USF désactive la vérification de signature dans une application qui ouvre un PDF. Dans le même temps, un message normal est envoyé à l'utilisateur concernant la réussite de la validation de la signature. Cela se fait en manipulant l'objet Signature dans le document: soit un enregistrement incorrect est créé à l'intérieur de ce document, soit le lien vers l'objet est supprimé du fichier. Bien que la visionneuse PDF ne puisse pas vérifier que la signature est correcte, dans certains cas, le programme montre toujours sa présence, ce qui répond aux objectifs de l'attaquant.

Les chercheurs ont formulé 18 vecteurs d'attaque USF, dont huit sont représentés sur la Fig. 4.


Fig. 4. Huit vecteurs d'attaque pour contourner la vérification de signature numérique

Toutes ces méthodes fonctionnent si la visionneuse PDF ne vérifie pas correctement la signature numérique.

Attaque de rétention incrémentielle (ISA)


Cette classe d'attaques consiste à redéfinir la structure et le contenu d'une section supplémentaire d'un document. L'idée est que la signature est calculée sur la base de la plage d'octets spécifiée dans ByteRange , et la section supplémentaire ne tombe pas dans cette plage, comme le montre la Fig. 5.


Fig. 5. Lors de l'ajout de contenu à la section supplémentaire, la signature numérique n'est pas violée

Il existe plusieurs façons de contourner la vérification des modifications du document et de bloquer l'affichage de l'avertissement correspondant dans la visionneuse PDF.

Signature Wrapper Attack (SWA)


Enfin, la dernière classe d'attaques vous permet de contourner la vérification de signature sans enregistrement incrémentiel, mais en déplaçant la partie signée du PDF à la fin du document et en réutilisant le pointeur xref dans la bande-annonce signée vers la table xref modifiée. Dans le même temps, pour éviter de traiter la pièce déplacée, elle peut être enveloppée dans un objet étranger, par exemple, un flux ou un dictionnaire .


Fig. 6. Comparaison des documents PDF originaux et modifiés

Performance d'attaque


Les chercheurs ont testé l'efficacité de chaque type d'attaque dans différents programmes de visualisation de PDF. Impossible de tromper uniquement Adobe Reader 9 sous Linux . Dans tous les autres programmes, la vérification de signature est contournée d'une ou plusieurs manières.



La situation avec les services de vérification de signature numérique PDF en ligne n'est pas meilleure.

Source: https://habr.com/ru/post/fr442066/


All Articles