12 votes

Intégrer une signature GPG dans un fichier PDF

Est-il possible d'intégrer des signatures GPG dans des fichiers PDF comme on peut le faire avec des signatures X.509 ?

(Jusqu'à présent, j'utilisais JSignPDF pour signer mes factures, mais la loi s'est un peu assouplie et n'exige plus X.509 (il suffit que je fournisse une garantie d'intégrité et d'authenticité, pour laquelle, je pense, GPG devrait suffire). Maintenant, je sais que je peux utiliser des signatures séparées, mais je ne veux pas confondre mes clients avec la raison pour laquelle je leur envoie ces fichiers *sig).

4voto

dirkt Points 15364

Réponse partielle :

Le processus de la signature X.509 est le suivant décrit par Adobe en détail : Une signature est juste un objet supplémentaire dans le fichier PDF, qui contient, entre autres éléments, la plage d'octets pour laquelle la signature est faite. Ensuite,

Le processus de signature est le suivant :

  1. Un document à signer est transformé en un flux d'octets.
  2. L'ensemble du fichier PDF est écrit sur le disque en laissant un espace de taille appropriée pour la valeur de la signature ainsi qu'avec les valeurs les plus défavorables dans le tableau ByteRange. ByteRange est un tableau de quatre nombres. Le premier nombre de chaque paire est le décalage dans le fichier (à partir du début, en partant de 0) du début d'un flux d'octets à inclure dans le hachage. Le second nombre est la longueur de ce flux. Les deux paires définissent deux séquences d'octets qui définissent ce qui doit être haché. La valeur réelle de la signature est stockée dans la clé /Contents entre la fin de la première séquence et le début de la seconde. Dans la figure 4, le hachage est calculé pour les octets 0 à 839, et 960 à 1200.
  3. Une fois que l'emplacement de la valeur de la signature est connu en termes de décalages dans le fichier, le tableau ByteRange est écrasé en utilisant les valeurs correctes. Comme les décalages d'octets ne doivent pas changer, les octets supplémentaires qui suivent la nouvelle instruction du tableau sont écrasés par des zéros.
  4. Le hachage du fichier entier est calculé, en utilisant les octets spécifiés par la valeur ByteRange réelle, à l'aide d'un algorithme de hachage tel que SHA-256. Acrobat calcule toujours le hachage pour une signature de document sur l'ensemble du fichier PDF, en commençant par l'octet 0 et en terminant par le dernier octet du fichier physique, mais en excluant les octets de la valeur de signature.
  5. La valeur de hachage est chiffrée avec la clé privée du signataire et un objet de signature PKCS#7 codé en hexadécimal est généré.
  6. L'objet de la signature est placé dans le fichier sur le disque, en écrasant la valeur du placeholder /Contents. Tout espace non utilisé pour l'objet de signature est remplacé par des zéros.
  7. Le fichier PDF est rechargé dans Acrobat pour s'assurer que les versions en mémoire et sur disque sont identiques.

Il n'y a aucune raison pour que l'on ne puisse pas faire cela avec une signature calculée par gpg.

Il devrait également être maintenant évident que l'intégration de la signature ne "contourne pas l'idée générale de la signature et de la vérification des documents", comme mentionné dans une autre réponse.

Cependant, je ne connais pas d'outils où un tel processus (et la vérification de signature correspondante) est déjà implémenté et facilement disponible. Donc, pour des raisons pratiques (pour l'instant), il n'est probablement pas recommandé d'essayer ceci, si vous envoyez la signature à d'autres personnes qui doivent s'en occuper.

3voto

Martin Zeitler Points 324

Je ne pense pas que ce soit possible... car cela contourne l'idée générale de la signature et de la vérification des documents. Manuel GPG - la signature est conservée séparément, simplement parce que l'intégrer modifierait le fichier et rendrait donc la signature intégrée invalide.

l'option de ligne de commande la plus proche pourrait être gpg --clearsign .

voir aussi le différence entre --sign et --clearsign :

--clearsign crée des données + signature où les données restent lisibles par l'homme. Vous avez besoin d'OpenPGP pour vérifier la signature, mais si vous avez juste besoin de lire le texte, vous n'avez pas besoin de logiciel spécial. Les données sont lisibles par l'homme.

LibreOffice semble également être en mesure de signer les fichiers PDF.

0voto

Andrew Myers Points 181

Réponse légèrement différente - peut-on faire des signatures avec des dongles PGP, comme Yubikey NEO ? Notre approche a consisté à obtenir un certificat X.509 pour une clé dans le dongle PGP, puis à l'utiliser avec JSignPdf - la partie difficile a été de créer une demande de certification.

-3voto

BlueMonster Points 61

PortableSigner est un outil permettant de signer numériquement (avec des certificats X.509) des fichiers PDF vous pouvez le télécharger à partir d'ici

http://sourceforge.net/projects/portablesigner/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X