Salta ai contenuti
getnextpdf.com

Tempo attendibile: come una marca temporale dimostra il quando

Spec: RFC 3161Spec: RFC 5816Spec: ISO 32000-2, §12.8.5

Una marca temporale risponde a un’unica domanda, sorprendentemente sfuggente: questi dati esistevano già? Non chi li ha prodotti, non se siano corretti — soltanto che, in un dato istante, questi byte esatti erano già nel mondo. Questa pagina costruisce l’idea dalle fondamenta: che cosa fa una Time-Stamp Authority, che cosa contiene davvero un token e perché un numero su un orologio diventa evidenza.

È il complemento dai primi principi alla pagina incentrata sul motore Marche temporali e tempo attendibile. Leggi prima questa se «tempo attendibile» suona come gergo.

L’orologio del tuo computer è una confessione, non una prova. Puoi impostarlo a qualsiasi valore tu voglia, e così può chiunque altro. Nel momento in cui una data conta per una seconda parte — un contratto che doveva essere firmato entro una scadenza, un record che doveva esistere prima di una controversia — il tuo orologio è privo di valore come evidenza, perché lo controlli tu. L’intero problema del tempo attendibile è trovare un orologio che non puoi spostare.

Non è una preoccupazione di nicchia. Ogni PDF firmato a lunga vita vi si appoggia. Un certificato di firma prima o poi scade; anni dopo, un verificatore ha bisogno di sapere che la firma è stata apposta mentre il certificato era ancora valido. Senza un record indipendente del «quando», quella domanda non ha risposta onesta. Il tempo attendibile è la fondazione silenziosa su cui poggia l’intero edificio delle firme durevoli.

  • Una marca temporale dimostra che un dato esisteva prima di un istante dichiarato. È un limite superiore all’età, nulla di più.
  • È prodotta da una terza parte, la Time-Stamp Authority (TSA), del cui orologio ti fidi proprio perché non è il tuo.
  • La TSA non vede mai i tuoi dati. Firma un hash di essi, legato a un valore temporale, e restituisce un piccolo token firmato.
  • Il token dimostra tre cose insieme: che i dati sono i dati (l’hash corrisponde), che il tempo è il tempo della TSA (la sua firma) e che la risposta corrisponde alla richiesta inviata (il nonce che riporta indietro, a protezione contro una risposta più vecchia ripetuta).
  • Non dimostra chi ha scritto i dati, che i dati siano veri, né l’esatto momento di creazione. Soltanto: non più tardi di questo.
  • La fiducia confluisce nella TSA. Una TSA pubblicamente attendibile è sufficiente per la maggior parte dei record; una TSA qualificata eIDAS porta con sé una presunzione giuridica nell’UE.

Parti dal trucco al centro di tutto. Vuoi che un estraneo garantisca quando i tuoi dati esistevano, ma non puoi mostrargli i dati — potrebbero essere riservati, e in ogni caso potrebbero essere enormi. Quindi non lo fai. Calcoli un hash: un’impronta corta e a lunghezza fissa che cambia completamente se anche un solo byte dell’originale cambia, e dalla quale l’originale non può essere recuperato. Invii l’impronta, non il file.

La TSA prende quell’impronta, vi allega il proprio tempo corrente, firma la coppia con la propria chiave privata e restituisce un token di marca temporale (Spec: RFC 3161, §2.1). Il token è il legame reso permanente: questa impronta, a questo tempo, garantita da me. Poiché il token è firmato, nessuno — nemmeno la TSA in seguito — può alterare il tempo senza rompere la firma. Poiché porta con sé la tua impronta, è inutile per qualsiasi altro file. E poiché la richiesta include un nonce casuale nuovo che la TSA riporta indietro immutato, puoi capire che la risposta corrisponde a questa particolare richiesta e non è il replay di una risposta più vecchia — il nonce attesta la freschezza, non chi ha chiesto (Spec: RFC 3161, §2.4.2).

Pensa a un sigillo di ceralacca premuto su una lettera piegata. Il sigillo non legge la lettera; dimostra soltanto che la lettera era intera e presente quando il sigillo è stato impresso. Una marca temporale è un sigillo impresso da un orologio che non possiedi, su un’impronta dei tuoi dati.

  1. Fingerprint the dataCompute a one-way hash of the file or the signature value. The data itself never leaves your hands.
  2. Ask the authoritySend the hash and a fresh random nonce to the Time-Stamp Authority.
  3. The TSA seals a timeIt signs the hash bound to its own clock and echoes your nonce, producing a small signed token.
  4. Store the tokenFor a PDF, the token is placed inside the file so the proof travels with the document.
  5. Verify laterAnyone who trusts the TSA can check the token: its signature against the TSA certificate, the matching hash, the echoed nonce, and the time — then concludes an upper bound on age.
Come si ottiene una marca temporale attendibile e che cosa dimostra: un hash più un nonce nuovo vengono inviati alla TSA, la TSA firma quell'hash legato al proprio tempo e riporta indietro il nonce, e il verificatore controlla ogni legame prima di trattare il token come prova che i dati esistevano prima del tempo dichiarato.

In un PDF, questo stesso meccanismo indossa due cappelli. Una marca temporale di firma sigilla quando una firma è stata apposta, marcando temporalmente il valore della firma. Una marca temporale di documento sigilla quando l’intero file esisteva, calcolando l’hash dell’intero PDF (escluso il placeholder che il token occuperà) e memorizzando il token restituito di nuovo in quel placeholder (Spec: ISO 32000-2, §12.8.5). Il secondo tipo è ciò che una firma archivistica a lunga vita rinnova negli anni per mantenere fresca la propria fiducia.

Un dettaglio moderno che vale la pena conoscere: un formato di marca temporale più vecchio si vincolava a un unico algoritmo di hash per nominare il certificato della TSA stessa. Il profilo aggiornato consente a un token di nominare il proprio certificato con un digest corrente (Spec: RFC 5816, §2.1), così il tempo attendibile non eredita silenziosamente la crittografia di ieri.

Non si assembla a mano un token, e non si dovrebbe nemmeno volerlo. La cosa che vale la pena capire è il punto di innesto della fiducia: quale orologio si sceglie di credere. In NextPDF, chiedere un livello di firma che necessita di tempo attendibile rende quella scelta esplicita anziché implicita.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// A baseline signature trusts only the signer's own clock.
$baseline = SignatureLevel::PAdES_B_B;
$baseline->requiresTimestamp(); // false → no third party vouches for "when"
// Stepping up to B-T means a Time-Stamp Authority must be supplied:
// from here on, "when" is attested by a clock you do not control.
$timestamped = SignatureLevel::PAdES_B_T;
$timestamped->requiresTimestamp(); // true → a TSA is now part of your trust model
// The decision is now visible at the call site, not buried in a default.
// Choosing the TSA is choosing whose time becomes your evidence.

Il senso dell’esempio non è l’API. È che «ho tempo attendibile?» è un fatto sì-o-no riguardo al tuo documento, deciso dal fatto che una TSA fosse o meno nel circuito — e il motore si rifiuta di lasciare che quel fatto sia ambiguo.

La trappola è leggere una marca temporale come «questo è stato creato alle 14:32.» Non dice nulla del genere. Dice «questo esisteva non più tardi delle 14:32.» La differenza è l’intero punto. Una marca temporale è un limite superiore, mai un limite inferiore e mai un istante esatto. I tuoi dati potrebbero essere esistiti per anni prima che tu ti decidessi a marcarli temporalmente; il token tace su questo. Traccia una sola linea e dice: non oltre questo punto.

Un secondo equivoco, più costoso: che una marca temporale dimostri che il tuo documento sia genuino o corretto. Non fa né l’una né l’altra cosa. È indifferente al significato. Una bugia perfettamente marcata temporalmente è comunque una bugia — ora dimostrabilmente vecchia. L’autenticità viene dalla firma che dice chi; la verità viene dal mondo. La marca temporale parla sempre e soltanto del quando.

La portata di una marca temporale si arresta esattamente dove si arresta il suo modello di fiducia. Dimostra un limite superiore all’età, e soltanto quello, e soltanto se ti fidi dell’autorità che l’ha sigillata.

Ci sono due livelli di autorità da distinguere. Una TSA pubblicamente attendibile si concatena a un certificato che il tuo software accetta già; i suoi token sono ampiamente verificabili e adatti per la maggior parte dei record. Una TSA qualificata eIDAS è un prestatore vigilato su una lista di fiducia dell’UE, e una marca temporale elettronica qualificata porta con sé una presunzione giuridica di accuratezza della data e di integrità dei dati — una presunzione che una marca temporale ordinaria non ha (Spec: eIDAS, Art. 41). Scegliere tra le due è una questione relativa al peso probatorio di cui hai bisogno, non a come funzionano i byte; la crittografia è la stessa.

Una marca temporale eredita anche la durata dei propri ancoraggi di fiducia. Il certificato della TSA può scadere o essere revocato, e l’algoritmo di hash che ha usato può invecchiare. È proprio per questo che i documenti a lunga vita non si marcano temporalmente una sola volta per poi andarsene — si rinnovano, sovrapponendo una nuova marca temporale di documento alla vecchia evidenza prima che la vecchia evidenza si indebolisca. Quel ciclo di rinnovo è un argomento a sé; vedi Validazione a lungo termine.

RFC 3161 trusted timestamping (signature and document timestamps) — edition availability
EditionAvailability
Core

Supporta PAdES B-B e B-T. B-B è la firma baseline senza marca temporale; B-T richiede e incorpora una marca temporale di firma RFC 3161 verificata rispetto a una TSA fornita dal deployment, il cui orologio scegli tu.

Pro

Aggiunge i dati di validazione a lungo termine incorporati (certificati, OCSP, CRL) di cui B-LT ha bisogno per mantenere una firma verificabile dopo la scadenza dei suoi certificati.

Enterprise

Aggiunge il ciclo di rinnovo B-LTA, sigillando i dati di validazione sotto una nuova marca temporale di documento e ri-marcandoli prima che la protezione si indebolisca.

  • Time-Stamp Authority (TSA) — un servizio indipendente che emette token di marca temporale firmati. Ti fidi del suo orologio proprio perché non è il tuo.
  • Token di marca temporale — il piccolo oggetto firmato che una TSA restituisce, legando un hash dei tuoi dati a un valore temporale (Spec: RFC 3161, §2.1).
  • Hash (message imprint) — un’impronta corta e a senso unico dei dati. La TSA firma questa, mai i dati stessi, così il tuo contenuto resta privato.
  • Nonce — un valore casuale nuovo inviato con la richiesta e riportato immutato nella risposta, a mostrare che il token corrisponde a quella specifica richiesta e non è il replay di una vecchia risposta (attesta la freschezza, non l’identità del richiedente).
  • Limite superiore — ciò che una marca temporale stabilisce: i dati esistevano non più tardi dell’istante dichiarato. Mai un esatto momento di creazione.
  • Marca temporale qualificata eIDAS — una marca temporale di un prestatore UE vigilato che porta con sé una presunzione giuridica di accuratezza della data e di integrità dei dati.
  • Marca temporale di documento — una marca temporale sull’intero file PDF, usata per ancorare e rinnovare le prove di validazione a lungo termine (Spec: ISO 32000-2, §12.8.5).