La marca temporale, spiegata
L'orologio del tuo computer si imposta a mano, in tre secondi, senza lasciare traccia. Ogni volta che un documento digitale porta una data scritta da te, quella data non prova nulla. Una marca temporale è il modo di far dire l'ora a qualcuno che non ha motivo di mentire, e di farglielo dire in modo verificabile da chiunque.
Il problema, in una frase
Puoi dimostrare che un file non è cambiato: basta l'impronta. Puoi dimostrare chi lo ha firmato: basta il certificato. Non puoi dimostrare quando esisteva, perché il tempo non lascia impronte nei byte.
La soluzione è procedurale, non matematica: si chiede a un terzo di firmare, insieme, l'impronta del tuo documento e l'ora corrente. Quel terzo è una TSA — Time Stamping Authority — e il protocollo con cui gli si parla è l'RFC 3161.
Come funziona lo scambio
La richiesta si chiama TimeStampReq e Probatio la costruisce con l'impronta SHA-256 del file, più un flag certReq impostato a vero, che chiede alla TSA di includere il proprio certificato nella risposta. Senza quel certificato, verificare la marca richiederebbe di procurarselo altrove.
La risposta si chiama TimeStampToken. È, di fatto, una busta CMS firmata dalla TSA — la stessa struttura di un .p7m — che contiene l'impronta ricevuta, l'ora, e i metadati del servizio. Probatio la salva accanto al file come sidecar .tsr.
Cosa contiene un token, e come si legge
- genTime — l'istante attestato, in UTC. È il dato per cui hai pagato.
- accuracy — l'incertezza dichiarata dalla TSA, spesso un secondo. Serve a dire: «l'ora vera è dentro questa finestra».
- serialNumber — identificativo univoco del token, che lo rende rintracciabile nei registri della TSA.
- policy — l'OID della policy di marcatura, cioè le regole che la TSA dichiara di seguire.
- messageImprint — l'impronta ricevuta, con l'indicazione dell'algoritmo usato.
Qualificata e non qualificata
Non tutte le marche sono uguali, e la differenza non è tecnica ma giuridica.
Probatio può usare TSA gratuite — Sectigo, DigiCert e GlobalSign, interrogate in cascata finché una risponde. Producono marche RFC 3161 tecnicamente ineccepibili: la matematica è identica a quella di una marca a pagamento.
Poi c'è la marca qualificata eIDAS, che Probatio richiede a InfoCert attraverso un proprio endpoint e che consuma uno slot. La differenza sta nell'articolo 41 del regolamento eIDAS: una validazione temporale elettronica qualificata «gode della presunzione di accuratezza della data e dell'ora che indica e di integrità dei dati ai quali tale data e ora sono associate». Chi la contesta deve dimostrare che è sbagliata, non il contrario.
Il primo paragrafo dello stesso articolo protegge però anche le altre: a una marca temporale non qualificata non possono essere negati gli effetti giuridici e l'ammissibilità come prova per il solo fatto di non soddisfare i requisiti di quella qualificata. Semplicemente, non gode della presunzione: la sua affidabilità va argomentata.
Per un backup interno, una marca gratuita è perfetta. Per un documento destinato a un giudizio, la presunzione dell'articolo 41 vale i pochi euro che costa. La scelta non è sulla robustezza crittografica — che è la stessa — ma su chi ha l'onere della prova.
Verificare un .tsr
La verifica non richiede la rete, se il token contiene il certificato — ed è per questo che Probatio chiede sempre certReq. Un .tsr archiviato oggi resta verificabile fra vent'anni, su un computer scollegato, purché si conservino insieme il file e il suo sidecar.
Marca sul documento, marca sulla firma
Sono due usi distinti, spesso confusi.
Marcare un documento significa attestare che quel contenuto esisteva a una certa data. Utile per una prova di anteriorità: un progetto, un manoscritto, un log.
Marcare una firma significa attestare che l'operazione di firma è avvenuta prima di una certa data. Il token viene inserito negli attributi non firmati della busta CMS, e fa passare la firma dal livello -BES al livello -T. È ciò che le permette di sopravvivere alla scadenza del certificato.
Quello che Probatio non fa
- Non salva il
.tsq. La richiesta esiste in memoria e viene scartata. Se ti serve, la si ricostruisce dall'impronta. - Non gestisce i
.tsd, il contenitore che impacchetta documento e marca insieme. - Non usa CRL per il certificato della TSA: la revoca, se controllata, passa da OCSP.
In pratica
- Marca appena acquisisci, non a fine perizia. La marca certifica il momento in cui l'hai chiesta, non quello in cui il fatto è avvenuto.
- Conserva insieme il file e il suo
.tsr. Separati, non valgono niente: l'uno senza l'altro non dimostra il legame. - Annota genTime, seriale e TSA in relazione. Sono i dati che permettono a un terzo di rifare la verifica.
- Non confondere la marca con la firma. La prima dice quando; solo la seconda dice chi. Un documento marcato ma non firmato è un documento anonimo con una data certa.
Nessuna quantità di crittografia può dire a un file che ora è. Può però far dire l'ora a qualcuno la cui parola, per contratto e per legge, vale più della tua — e legarla a un'impronta che nessuno può falsificare. È tutto qui, e basta.