← Back to all articles

Horodatages RFC 3161 expliqués, comment rendre une signature numérique juridiquement durable

SealDoc Team · · 6 min read

Il y a une question qui surgit la première fois que quelqu’un audite une archive numérique : comment savez-vous que ce document existait à la date qu’il revendique ? Une signature numérique ordinaire n’y répond pas. Une signature prouve qui a signé, pas quand. Les octets signés contiennent un horodatage que le signataire a lui-même écrit, mais le signataire peut écrire l’horodatage qu’il veut. Pour la plupart des cas internes, cela n’a pas d’importance. Pour les archives juridiquement contraignantes, la rétention fiscale et les litiges de chaîne de preuve, cela en a beaucoup.

La réponse, c’est RFC 3161, le standard internet qui définit le Time-Stamp Protocol (TSP). Il est plus ancien que la plupart des lecteurs ne le pensent (publié en 2001), il est partout dans la stack de conformité européenne, et son fonctionnement est plus simple que l’acronyme ne le laisse croire.

Ce qu’est réellement un horodatage RFC 3161

Un horodatage RFC 3161 est un petit token signé émis par une Time-Stamping Authority (TSA). Le flux ressemble à ceci :

  1. Vous calculez un hash SHA-256 du document que vous voulez horodater. La TSA ne voit jamais le document lui-même, juste le hash.
  2. Vous envoyez le hash à une TSA dans un message TimeStampReq.
  3. La TSA renvoie un TimeStampResp contenant un TimeStampToken. Le token est une structure CMS signée par le certificat de la TSA, et il contient : le hash que vous avez envoyé, l’heure revendiquée par la TSA, l’OID de politique de la TSA et un nonce cryptographique reflétant le vôtre.
  4. Vous attachez le token à votre archive, à côté du document.

Ce token est l’horodatage. Il dit, sous forme cryptographique : “une TSA dont le certificat remonte à une racine de confiance a affirmé que ce hash existait à cette heure UTC”. Comme le document est identifié par hash, vous ne pouvez pas modifier rétroactivement le document sans invalider l’horodatage. Comme la TSA signe, vous ne pouvez pas modifier rétroactivement l’heure sans falsifier la signature de la TSA.

C’est pour cela que les horodatages sont non répudiables. Les deux parties (vous et tout auditeur futur) peuvent vérifier le token sans recontacter la TSA.

Pourquoi un horodatage ordinaire ne suffit pas

L’horloge de votre serveur est fausse. Nous le disons avec assurance parce que toute horloge, partout, est fausse d’une certaine marge, et un tribunal ne se soucie pas de la dérive NTP. La valeur juridique d’un horodatage auto-déclaré est à peu près celle d’une date manuscrite sur un reçu papier : elle suggère, elle ne prouve pas.

Un horodatage RFC 3161 est probant parce que :

  • La TSA est une entité réglementée, auditée selon des normes comme ETSI EN 319 421.
  • L’horloge de la TSA est synchronisée sur l’UTC par des moyens traçables (souvent un service horaire national ou une référence d’horloge atomique).
  • Le certificat de la TSA est émis par une AC de confiance dont la racine figure dans la EU Trusted List (LOTL).
  • Le token d’horodatage est vérifiable hors ligne par quiconque possède la chaîne de certificats de la TSA, indéfiniment.

Le cadre juridique qui rend cela exécutoire dans l’UE est eIDAS (Règlement UE 910/2014, révisé par 2024/1183). eIDAS définit un “horodatage électronique qualifié” comme étant émis par une TSA inscrite à la EU Trusted List. Un tel horodatage bénéficie de la présomption juridique d’exactitude dans tous les États membres. Un horodatage non qualifié reste utile, mais il n’obtient pas la présomption automatique.

Validité à long terme, la vraie raison pour laquelle les archives ont besoin d’horodatages

Voici le problème plus subtil que résolvent les horodatages. Une signature numérique est valide tant que le certificat du signataire l’est. Les certificats expirent (typiquement 1 à 3 ans), sont révoqués, ou voient leur AC émettrice fermée. Cinq ans plus tard, la signature sur votre facture peut être cryptographiquement intacte mais juridiquement invérifiable parce que la chaîne de confiance s’est dissoute.

La parade est d’envelopper la signature d’un horodatage au moment où la signature est encore valide. L’horodatage prouve : “cette signature était valide quand elle a été apposée”. Même si le certificat expire plus tard, le constat cryptographique de son état valide est préservé. C’est le principe derrière PAdES Long-Term Validation (LTV) et les profils CAdES-A.

Pour l’archivage PDF/A-3, la structure pratique est :

  1. Créer le PDF/A-3 avec la facture XML embarquée.
  2. Apposer une signature numérique.
  3. Apposer un horodatage RFC 3161 sur la signature.
  4. Optionnellement, ré-horodater toutes les quelques années avant qu’un certificat de TSA dans la chaîne n’expire (c’est ce que signifie “horodatage d’archivage”).

Une facture correctement archivée comporte au moins les trois premières étapes. La quatrième est ce qui permet à une archive de 30 ans de fonctionner sans intervention à chaque cycle de rotation de certificat.

Vérifier un horodatage soi-même

Vous n’êtes pas obligé de faire à la TSA plus confiance que la cryptographie ne l’exige. Vérifier un horodatage implique :

  1. Parser le TimeStampToken (structure CMS, ASN.1).
  2. Extraire l’empreinte de message (hash + algorithme).
  3. Calculer vous-même le hash du document avec le même algorithme. Comparer.
  4. Vérifier la signature de la TSA sur le token avec le certificat de la TSA.
  5. Vérifier que le certificat de la TSA remonte à une racine de confiance, et qu’il était valide à l’heure revendiquée par l’horodatage.
  6. Optionnellement, contrôler le certificat de la TSA contre les données de révocation capturées au moment de l’archivage.

OpenSSL peut tout faire en ligne de commande (openssl ts -verify -in token.tsr -data file.pdf -CAfile chain.pem). Ce n’est pas une boîte noire.

Où SealDoc s’insère

Quand le pipeline SealDoc produit une facture PDF/A-3, il exécute automatiquement l’étape d’horodatage. L’evidence pack que nous générons à côté de chaque facture émise contient :

  • Le fichier PDF/A-3 avec le XML embarqué.
  • Le token d’horodatage RFC 3161 détaché.
  • Un manifeste avec les hashs SHA-256 de chaque artefact du pack.
  • La chaîne de certificats de la TSA au moment de l’émission, capturée pour vérification hors ligne ultérieure.

Cela suffit à satisfaire un audit fiscal n’importe où dans l’UE, indépendamment du fait que l’auditeur ait accès à internet pour atteindre la TSA d’origine. Vous pouvez revérifier l’ensemble du pack hors ligne avec OpenSSL ou toute bibliothèque compatible PAdES. Le fichier Factur-X qu’il contient est vérifiable indépendamment sur /check, et l’horodatage est vérifiable indépendamment avec les outils que tout auditeur a déjà sur sa machine.

À retenir

Une signature numérique sans horodatage de confiance est une signature à date contestable. Un horodatage RFC 3161 issu d’une TSA inscrite dans l’UE en fait un dossier juridiquement durable, vérifiable hors ligne, valable pour des décennies. Si vous archivez des factures structurées sur la fenêtre de 7 à 10 ans qu’exigent la plupart des législations fiscales européennes, ce n’est pas une couche optionnelle. C’est la couche qui rend l’archive digne d’être conservée.


← Back to all articles