I timestamp RFC 3161 spiegati, come rendere legalmente durevole una firma digitale
C’è una domanda che emerge la prima volta che si verifica un archivio digitale: come fai a sapere che questo documento esisteva nella data che dichiara? Una normale firma digitale non risponde a questa domanda. Una firma prova chi ha firmato, non quando. I byte firmati includono un timestamp scritto dal firmatario, ma il firmatario può scrivere qualsiasi timestamp voglia. Per la maggior parte degli usi interni questo non conta. Per archivi legalmente vincolanti, conservazione fiscale e controversie sulla catena di custodia, conta moltissimo.
La risposta è RFC 3161, lo standard Internet che definisce un Time-Stamp Protocol (TSP). È più vecchio di quanto la maggior parte dei lettori si aspetti (pubblicato nel 2001), è presente ovunque nello stack di conformità UE, e il modo in cui funziona è più semplice di quanto l’acronimo lasci intuire.
Cos’è effettivamente un timestamp RFC 3161
Un timestamp RFC 3161 è un piccolo token firmato emesso da una Time-Stamping Authority (TSA). Il flusso funziona così:
- Calcoli un hash SHA-256 del documento che vuoi timestampare. La TSA non vede mai il documento stesso, solo l’hash.
- Invii l’hash alla TSA in un messaggio
TimeStampReq. - La TSA restituisce un
TimeStampRespcontenente unTimeStampToken. Il token è una struttura CMS firmata dal certificato della TSA e contiene: l’hash che hai inviato, l’ora dichiarata dalla TSA, l’OID della policy della TSA e un nonce crittografico che risponde al tuo. - Alleghi il token al tuo archivio, insieme al documento.
Quel token è il timestamp. Dice, in forma crittografica, “una TSA il cui certificato si collega a una root affidabile ha attestato che questo hash esisteva a questa ora UTC.” Poiché il documento è identificato dall’hash, non puoi modificare retroattivamente il documento senza invalidare il timestamp. Poiché la TSA sta firmando, non puoi modificare retroattivamente l’ora senza falsificare la firma della TSA.
Questo è il motivo per cui i timestamp sono non ripudiabili. Entrambe le parti (tu e qualsiasi futuro revisore) possono verificare il token senza contattare nuovamente la TSA.
Perché un timestamp normale non è sufficiente
L’orologio del tuo server è sbagliato. Lo diciamo con sicurezza perché ogni orologio ovunque sbaglia di qualche margine, e un tribunale non si preoccupa della deriva NTP. Il valore legale di un timestamp auto-dichiarato è approssimativamente uguale al valore legale di una data scritta a mano su uno scontrino stampato: è indicativo, non probatorio.
Un timestamp RFC 3161 è probatorio perché:
- La TSA è un’entità regolamentata, certificata secondo standard come ETSI EN 319 421.
- L’orologio della TSA è sincronizzato rispetto all’UTC con mezzi tracciabili (spesso un servizio orario nazionale o un riferimento a orologio atomico).
- Il certificato della TSA è emesso da una CA affidabile la cui root è nella Trusted List UE (LOTL).
- Il token di timestamp è verificabile offline da chiunque sia in possesso della catena di certificati della TSA, indefinitamente.
Il quadro giuridico che rende questo applicabile nell’UE è eIDAS (Regolamento UE 910/2014, revisionato nel 2024/1183). eIDAS definisce un “sigillo temporale elettronico qualificato” come quello emesso da una TSA nella Trusted List UE. Tale timestamp gode della presunzione legale di accuratezza in tutti gli Stati membri. Un timestamp non qualificato è comunque utile, ma non ottiene la presunzione automatica.
Validità a lungo termine: il vero motivo per cui gli archivi hanno bisogno di timestamp
Ecco il problema più sottile che i timestamp risolvono. Una firma digitale è valida fintanto che il certificato del firmatario è valido. I certificati scadono (tipicamente dopo 1-3 anni), vengono revocati o la loro CA emittente viene chiusa. Fra cinque anni, la firma sulla tua fattura potrebbe essere crittograficamente intatta ma legalmente non verificabile perché la catena di fiducia si è dissolta.
La soluzione è racchiudere un timestamp attorno alla firma nel momento in cui la firma è ancora valida. Il timestamp prova: “questa firma era valida quando è stata applicata.” Anche se il certificato scade successivamente, il registro crittografico del suo stato valido è preservato. Questo è il principio alla base di PAdES Long-Term Validation (LTV) e dei profili CAdES-A.
Per l’archiviazione PDF/A-3, la struttura pratica è:
- Creare il PDF/A-3 con la fattura XML incorporata.
- Applicare una firma digitale.
- Applicare un timestamp RFC 3161 alla firma.
- Facoltativamente, ri-timestampare ogni pochi anni prima che scada qualsiasi certificato TSA nella catena (questo è il significato di “timestamping archivistico”).
Una fattura correttamente archiviata prevede almeno i primi tre passi. Il quarto è ciò che fa funzionare un archivio trentennale senza interventi a ogni ciclo di rotazione dei certificati.
Verificare un timestamp da soli
Non devi riporre nella TSA più fiducia di quanta ne richiedano la crittografia. Verificare un timestamp comporta:
- Analizzare il
TimeStampToken(struttura CMS, ASN.1). - Estrarre l’impronta del messaggio (hash e algoritmo).
- Calcolare autonomamente l’hash del documento con lo stesso algoritmo. Confrontare.
- Verificare la firma della TSA sul token utilizzando il certificato della TSA.
- Verificare che il certificato della TSA si colleghi a una root affidabile e fosse valido al momento dichiarato dal timestamp.
- Facoltativamente, controllare il certificato della TSA rispetto ai dati di revoca acquisiti al momento dell’archiviazione.
OpenSSL può eseguire tutto questo dalla riga di comando (openssl ts -verify -in token.tsr -data file.pdf -CAfile chain.pem). Non è una scatola nera.
Dove si inserisce SealDoc
Quando il pipeline SealDoc produce una fattura PDF/A-3, esegue automaticamente il passaggio del timestamp. Il pacchetto di evidenze che generiamo insieme a ogni fattura emessa contiene:
- Il file PDF/A-3 con l’XML incorporato.
- Il token timestamp RFC 3161 separato.
- Un manifesto con hash SHA-256 di ogni artefatto nel pacchetto.
- La catena di certificati della TSA al momento dell’emissione, acquisita per la verifica offline successiva.
Questo è sufficiente per soddisfare una verifica fiscale in qualsiasi paese dell’UE, indipendentemente dal fatto che il revisore abbia accesso a Internet alla TSA originale. Puoi ri-verificare l’intero pacchetto offline usando OpenSSL o qualsiasi libreria compatibile PAdES. Il file Factur-X al suo interno è verificabile in modo indipendente su /check, e il timestamp è verificabile in modo indipendente con gli strumenti che ogni revisore ha già sul proprio computer.
Il punto chiave
Una firma digitale senza un timestamp affidabile è una firma con una data contestabile. Un timestamp RFC 3161 da una TSA elencata nell’UE trasforma quella firma in un registro legalmente durevole, verificabile offline, valido per decenni. Se stai archiviando fatture strutturate per il periodo di 7-10 anni richiesto dalla maggior parte delle leggi fiscali UE, questo non è un livello opzionale. È il livello che rende l’archivio degno di esistere.