Blog GlobalSign

31 août 2016

Guide pratique : la signature de documents électroniques par Bruno Lowagie

Bruno Lowagie est le développeur initial d’iText, une bibliothèque de PDF innovante devenue un éditeur de logiciels d’envergure internationale. Membre actif des communautés ISO et PDF, Bruno a écrit plusieurs livres sur iText, et continue à travailler avec la communauté à l’amélioration des fonctionnalités PDF. Lorsqu’il ne travaille pas sur des sujets liés au PDF, Bruno passe beaucoup de son temps avec sa femme et ses deux fils. 

En 2013, Eddy Haerens de Leefdaal règle la huitième facture envoyée par son prestataire. C’est du moins ce qu’il croit. En réalité, la facture a été interceptée par un imposteur qui n’a modifié qu’une seule chose sur la facture : le numéro de compte bancaire du prestataire. Eddy a donc payé 30 000 euros, mais le destinataire légitime n’a jamais reçu l’argent. Lorsqu’Eddy découvre la supercherie, il est trop tard. La banque ayant suivi ses instructions écrites, elle n’a pas pu annuler sur le virement. Pour couronner le tout, Eddy a quand même dû payer 30 000 euros à son prestataire.

La signature de document, la solution à quels problèmes ?

Cet exemple illustre les vulnérabilités inhérentes à notre manière d’aborder les documents. Lorsque nous recevons un document au format papier ou numérique, comment savoir que le contenu n’a pas été falsifié ? Comment savoir si l’expéditeur du document est bien la personne qu’il affirme être ? Et si l’on reçoit un contrat signé, comment empêcher – sans faire appel à un notaire – que le signataire s’exclame un jour « Mais, je n’ai jamais signé un tel document ! » ?

La réponse à ces trois questions correspond aux trois « garanties » que nous souhaiterions voir intégrées à nos documents :

  • Intégrité : nous voulons avoir l’assurance que le document n’a pas été modifié.
  • Authenticité : nous voulons avoir l’assurance que l’auteur du document est bien la personne qu’il affirme être.
  • Non-répudiation : nous voulons avoir l’assurance que l’auteur ne pourra pas renier le fait qu’il est bel et bien l’auteur du document.

Ces trois garanties sont intégrées aux documents PDF à l’aide de signatures numériques. Sur le plan technique, le fonctionnement est assez compliqué à expliquer, mais en voici les grandes lignes.

Concept no1 : les fonctions de hachage cryptographique

Un document numérique se compose d’une séquence d’octets organisés de telle sorte qu’un logiciel puisse l’afficher à l’écran ou l’imprimer. Une fonction de hachage cryptographique prend ces octets et les réduit en une empreinte (digest) d’une longueur prédéfinie. Il est impossible de reconstituer les octets d’origine à partir du digest. Mais, si l’on applique la fonction de hachage à la même séquence d’octets, on obtient toujours le même digest.

Prenons maintenant le cas où des documents sont envoyés à plusieurs destinataires. Exemple : l’envoi des bulletins trimestriels à l’ensemble des étudiants d’une université. Pour des raisons de confidentialité, l’université ne peut mettre en ligne l’intégralité de ces bulletins sur un serveur public. Or, si un étudiant envoie son bulletin à un autre établissement dans lequel il souhaite poursuivre ses études, il faudrait que cet établissement puisse vérifier que les notes n’ont pas été falsifiées.

La publication par l’université du digest de chaque bulletin envoyé permettrait de résoudre le problème. Ces digests ne peuvent être utilisés pour récupérer les notes des étudiants, mais tout destinataire d’un bulletin électronique peut générer un digest des octets composant le document pour le comparer avec le digest publié en ligne. Si les deux concordent, le bulletin de notes n’a pas été falsifié.

Concept no2 : l’infrastructure à clés publiques (PKI)

Sans entrer dans les détails, une infrastructure à clés publiques (PKI) fait intervenir une paire de clés asymétriques. L’une est la clé publique, l’autre est la clé privée. Aucune de ces clés ne découle de l’autre, mais si l’on chiffre des données avec une clé, on ne peut les décrypter qu’à l’aide de l’autre clé. La clé privée doit rester privée (elle est généralement stockée sur un périphérique physique à partir duquel elle ne peut être copiée). La clé publique peut être partagée avec n’importe qui.

Ces clés peuvent servir à deux choses :

  • Pour le chiffrement : si je veux partager des informations avec une personne en particulier, je peux lui demander sa clé publique et chiffrer mes données avec. Personne ne peut décrypter ces données, sauf le propriétaire de la clé privée correspondante.
  • Pour la signature numérique : si je veux partager des informations avec le reste du monde, je peux les chiffrer à l’aide de ma clé privée. Le reste du monde peut utiliser ma clé publique pour décrypter ces informations. Pour que ça marche, il faut que le document ait été chiffré à l’aide de ma clé privée.

Mais le chiffrement asymétrique présente un gros inconvénient : plus l’on cherche à renforcer le chiffrement, plus le nombre d’octets explose. L’utilisation du hachage permet de pallier cet inconvénient.

Concept no3 : la signature numérique

Pour partager un document signé numériquement, vous devez produire trois éléments :

  • Les octets du document en l’état
  • Un certificat public émis par un tiers de confiance. Ce certificat contient une clé publique.
  • Un digest chiffré du document

Le bénéficiaire de ces trois éléments peut valider le document signé numériquement en trois étapes :

  • Création d’un digest à partir des octets du document (transmis en 1. » : hash1
  • Décryptage du digest (transmis en 3) à l’aide de la clé publique (transmise en 2) : hash2
  • Si hash1 = hash2, alors le document est correct.

Ces procédures répondent-elles à nos besoins en termes d’intégrité, d’authenticité et de non-répudiation ?

Comment faire confiance aux informations figurant dans le certificat public ?

Si le digest stocké dans le document correspond au digest calculé à la volée à partir des octets du document, l’intégrité est assurée – sous réserve que le digest ait été déchiffré correctement à l’aide de la clé publique. Pour savoir si le digest a été correctement déchiffré, les deux digests doivent concorder. Le propriétaire de la clé privée correspondante est alors authentifié comme l’auteur de la signature. Le signataire ne peut alors nier avoir signé le document à moins de prouver que sa clé privée a été volée.

Demeure cependant un point d’incertitude : comment faire confiance aux informations figurant dans le certificat public ? Comment vérifier l’identité du propriétaire de la clé privée ? Comment vérifier que la clé privée n’a pas été révoquée (dans le cas où le propriétaire aurait signalé son vol) ?

L’Autorité de Certification (AC) répond à l’ensemble de ces questions. Une Autorité de Certification ne délivre de clés publiques et privées qu’aux parties dont elle a soigneusement vérifié l’identité. L’AC gère également une base de données de l’ensemble des certificats publics émis, avec des renseignements sur les clés révoquées.

Comment valider une signature numérique ?

Il serait peu commode d’envoyer séparément le certificat public, le digest chiffré et le document. Il serait également bien compliqué de devoir valider une signature numérique en plusieurs étapes. La solution ? Le format PDF qui stocke toutes les informations de validation (VRI, Validation-Related Information) dans le document même. La validation de la signature numérique s’effectue automatiquement dans la visionneuse PDF.

La figure 1 indique le déroulement de la procédure.

Validation of the digital signature
Figure 1

La partie bleue présente la syntaxe d’un document PDF. La partie rose est réservée à la signature numérique. Tous les octets du document PDF sont signés, sauf la signature (qui n’est pas comprise dans la plage d’octets).

La figure 2 indique les informations qui peuvent être stockées à l’intérieur de la signature numérique.

which information can be stored inside the digital signature.

Figure 2

La signature comprend au moins un digest du message signé et un certificat public avec l’identité du signataire. Conformément aux bonnes pratiques, la signature peut également comprendre les informations suivantes :

  • La chaîne complète du certificat qui relie le certificat racine de l’AC au certificat public
  • Les informations de révocation avec la validité du certificat à un moment précis
  • Un horodatage indiquant de manière irréfutable l’heure à laquelle la signature a été créée

La figure 3 indique à quoi ressemble un document PDF dûment signé dans Adobe Reader.

what a correctly signed PDF document looks like in Adobe Reader

Figure 3

Pour créer des documents numériquement signés comme indiqué en figure 3, il vous faut un logiciel qui exécute les étapes présentées dans cet article, et des certificats émis par une AC ayant la confiance d’Adobe.

Partenaire technologique de GlobalSign, le groupe iText Software fournit des outils PDF qui rendent le travail avec des documents numériques plus intelligent. iText repousse les limites de l’interactivité des documents numériques. Le logiciel rend vos documents exploitables et intelligents, et vous permet de contrôler l’accès et les modifications apportées aux documents, de signer numériquement des documents, de pérenniser l’archivage numérique et bien d’autres fonctions. Logiciel gratuit/open source depuis 2000, iText propose le moteur PDF Open Source le mieux documenté, le plus performant et le plus riche en Java et C#.

GlobalSign peut fournir des signatures numériques de confiance et iText est un logiciel qui vous permet d’intégrer la signature numérique à vos documents PDF.

Partager ce blog