Horodatages et temps de confiance
Spec: RFC 3161RFC 3161Spec: RFC 5816RFC 5816Spec: ISO 32000-2, §12.8.5ISO 32000-2 §12.8.5
Un horodatage n’enregistre pas « le moment où ceci a été signé ». Il prouve quelque chose de plus restreint, mais aussi de plus solide. Il prouve qu’une donnée précise existait avant un instant précis, ce fait étant attesté par une partie qui n’est pas le signataire. Toute la valeur du temps de confiance tient à cette distinction, souvent mal comprise.
Pourquoi c’est important
Section intitulée « Pourquoi c’est important »L’heure de signature inscrite dans une signature n’est que ce que l’ordinateur du signataire a bien voulu déclarer. Une horloge peut être fausse par accident ou à dessein. Si la seule preuve du quand est l’affirmation du signataire lui-même, celui-ci peut antidater ou postdater un document à volonté. On peut donner l’apparence qu’un certificat révoqué hier a signé l’an dernier. Le « quand » n’est pas un détail. Il détermine si une signature réalisée avec un certificat désormais expiré ou désormais révoqué compte encore. Et si le temps de confiance est faux, tout argument de validité à long terme qui s’appuie sur lui s’effondre.
En résumé
Section intitulée « En résumé »- L’heure de signature propre à un signataire est une affirmation, pas une preuve. Elle se falsifie très facilement.
- Un horodatage RFC 3161 est un jeton signé émis par une autorité d’horodatage (TSA) qui lie une empreinte de tes données à l’heure de la TSA.
- Ce qu’il prouve est précis : les données existaient avant l’heure déclarée par la TSA. Il ne prouve pas le moment exact de création : seulement une borne supérieure.
- Le jeton renvoie ton nonce et ton empreinte de message, si bien qu’il ne peut pas être rejoué ni porter sur d’autres données.
- Un horodatage de document applique le même mécanisme au PDF entier, en ancrant tout ce qui se trouve en dessous — la signature et ses preuves de validation intégrées — à un instant de confiance.
L’approche de NextPDF
Section intitulée « L’approche de NextPDF »NextPDF traite un horodatage comme un élément à vérifier, pas comme un simple jeton à obtenir. Demander un jeton n’est que la moitié la plus facile du travail. Pour le moteur, un jeton non vérifié n’est pas une preuve.
Lorsque le moteur horodate une signature, il envoie à la TSA une empreinte des données et un nonce aléatoire fraîchement généré, jamais les données elles-mêmes. Le jeton renvoyé est ensuite contrôlé au regard de l’ensemble des propriétés qui le rendent significatif : le statut de l’autorité vaut « granted », le nonce du jeton correspond à celui envoyé, l’empreinte de message du jeton correspond à l’empreinte envoyée, la signature cryptographique propre au jeton se vérifie, le type de contenu du jeton est bien celui d’un horodatage, et l’heure déclarée reste dans une tolérance acceptable. Tout écart entraîne un échec strict, avec une raison typée. Il n’existe aucune voie du type « ça a l’air assez proche ». Un horodatage de document suit la même règle, appliquée au fichier entier plutôt qu’à la valeur d’une seule signature.
Les deux côtés sont symétriques à dessein. Lorsque le moteur horodate une signature, l’empreinte qu’il envoie à la TSA est celle de la valeur de signature du signataire ; lorsqu’il vérifie ensuite cet horodatage, il recalcule cette même empreinte et exige que l’empreinte du jeton corresponde. NextPDF expose la moitié « vérification » sous la forme d’une étape dédiée verifySignatureTimestamp qui prend la valeur de signature comme entrée obligatoire — si bien qu’un horodatage de signature ne peut jamais être « vérifié » sans réellement contrôler ce qu’il couvre. Cette étape échoue de façon fermée en cas d’entrée vide, d’algorithme d’empreinte non reconnu ou faible (SHA-1), d’empreinte malformée, ou d’une empreinte qui ne lie pas la valeur de signature. Un jeton produit par une version du moteur qui a calculé l’empreinte d’une entrée différente ne peut donc pas prouver la liaison, par conception.
- Hash the dataOnly a digest of the signature value (or the whole PDF, for a document timestamp) is computed — never the data itself.
- Send hash + nonceThe digest and a fresh random nonce go to the Time-Stamp Authority.
- TSA returns a tokenA signed token binds the digest to the TSA’s genTime and echoes the nonce.
- Verify the tokenStatus granted, nonce matches, message imprint matches, token signature verifies, time within tolerance.
- Conclude an upper boundThe data provably existed before the TSA’s stated time — attested by a party that is not the signer.
Exemple pratique
Section intitulée « Exemple pratique »Tu n’assembles pas un jeton d’horodatage à la main. Ce qui compte, c’est le raccord de confiance. Une TSA se configure et se protège, parce que son heure devient ta preuve.
<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// Asking for any level at or above B-T requires a TSA.$level = SignatureLevel::PAdES_B_T;$level->requiresTimestamp(); // true → a Time-Stamp Authority must be supplied
// The TSA endpoint, its transport security, and its trust anchor are// deployment-supplied. The engine sends a hash plus a fresh nonce — never the// document — and verifies the returned token before the signature is accepted.// A token that fails any check (status, nonce, imprint, signature, time)// is a hard error, not a warning.Le point à retenir, c’est que le moteur envoie une empreinte, pas le document, si bien que la TSA ne voit jamais ton contenu. Puis il vérifie la réponse. Une TSA que tu ne peux pas authentifier n’est pas du temps de confiance. Ce n’est qu’une horloge de plus.
Idée fausse courante
Section intitulée « Idée fausse courante »Le piège consiste à interpréter un horodatage comme « ceci a été signé à exactement 14:32 à cette date ». Ce n’est pas un chronomètre posé sur l’événement de signature. Il prouve que les données existaient au plus tard à l’heure de la TSA, c’est-à-dire une borne supérieure fixée par un tiers. La création a pu avoir lieu à n’importe quel moment avant cela. Un second piège consiste à supposer que n’importe quel serveur d’horodatage te fournit du temps de confiance. Un jeton dont tu ne peux pas vérifier la signature, ou émis par une autorité que tu n’approuves pas, ne prouve rien. C’est une horloge que tu n’as aucune raison de croire. Le temps de confiance provient d’une TSA que tu peux authentifier et d’un jeton que tu as vérifié, pas du simple fait de demander un nombre à un serveur.
Limites et frontières
Section intitulée « Limites et frontières »NextPDF construit la requête, n’envoie qu’une empreinte et vérifie le jeton renvoyé. Il ne se porte pas garant de l’autorité qui se trouve derrière. L’exactitude de la TSA, la validité de son propre certificat et sa fiabilité sont des propriétés du service et de la configuration de ton déploiement, pas du moteur. Un horodatage lie une empreinte à une heure. Il ne dit rien de la signification des données, de l’identité du signataire, ni de la validité du certificat du signataire. Ce sont des contrôles distincts, traités dans Valider correctement une signature. Le moteur ne peut pas rendre fiable une TSA qui ne l’est pas. Cette page n’affirme pas non plus de portée juridique particulière pour un horodatage ; cela dépend du statut de la TSA et de la juridiction. La manière dont le temps de confiance est réutilisé pour qu’une signature reste vérifiable pendant des décennies est traitée dans Validation à long terme.
Disponibilité de l’horodatage selon le palier :
| Edition | Availability |
|---|---|
| Core | Not in this edition |
| Pro | PAdES B-T — un horodatage RFC 3161 vérifié sur la valeur de la signature, auprès d’une TSA fournie par le déploiement. |
| Enterprise | Ajoute l’horodatage de document utilisé par B-LT et B-LTA pour ancrer les preuves de validation intégrées et piloter la boucle de renouvellement d’archivage. |
Documents associés
Section intitulée « Documents associés »- Validation à long terme — comment l’horodatage de document scelle les preuves intégrées et est renouvelé au fil du temps.
- Profils de référence PAdES — où se situent l’horodatage de signature (B-T) et l’horodatage de document (B-LTA) dans la progression des niveaux.
- Les signatures qualifiées, expliquées — où un horodatage qualifié s’inscrit dans le cadre de confiance eIDAS.
Glossaire
Section intitulée « Glossaire »- Horodatage (RFC 3161) — un jeton signé émis par une TSA qui lie une empreinte de données à l’heure de la TSA, prouvant que les données existaient avant cette heure.
- Autorité d’horodatage (TSA) — le service de confiance qui émet les jetons d’horodatage.
TSTInfo— la structure de contenu du jeton : empreinte de message, heure de génération, numéro de série et nonce facultatif.- Empreinte de message — l’empreinte des données horodatées, renvoyée dans le jeton.
- Nonce — une valeur aléatoire fraîchement générée, envoyée avec la requête et renvoyée dans le jeton, de sorte que la réponse ne puisse pas être rejouée.
- Horodatage de document — un horodatage RFC 3161 sur le PDF entier (tel que mis à jour par RFC 5816), qui ancre la signature et ses preuves à un instant de confiance.