CAdES-T: un formato di firma elettronica versatile e duraturo

Una firma non è valida per sempre

Una firma elettronica non è valida per sempre. È valida a una data. La formula sorprende a prima vista, ma si spiega molto bene.

Un certificato di firma ha una durata di vita. Scade, e può essere revocato prima del termine, per esempio se la sua chiave privata è compromessa. Che ne è allora di un documento firmato con un certificato simile? Bisogna considerarlo come non firmato?

No. Ma a una condizione: poter provare quando è stato firmato.

Firma autografa, firma elettronica

Una firma autografa lega una persona a un documento, ma non dice nulla del suo contenuto: nulla impedisce di modificarne una pagina a posteriori. E la verifica presuppone una perizia che può essere delicata.

Una firma elettronica risponde a questi limiti perché è calcolata a partire dal documento stesso. Offre tre garanzie:

  • Integrità: la firma riguarda l'impronta del documento. Un solo byte modificato, e la verifica fallisce.
  • Identità: la chiave di firma è associata a un certificato rilasciato da un'autorità che ha verificato l'identità del suo titolare.
  • Non ripudio: la chiave privata resta sotto il controllo esclusivo del firmatario, in particolare quando non lascia mai una smart card o un token.

A ciò si aggiunge una data verificabile, non appena la firma viene marcata temporalmente. È proprio ciò che manca di più alla firma autografa: una data scritta a mano non è che una dichiarazione.

I formati di firma

Il regolamento eIDAS riconosce diversi formati di firma normalizzati dall'ETSI. Si distinguono anzitutto per il tipo di file al quale si applicano:

  • XAdES per i documenti XML
  • PAdES per i PDF, dove la firma è integrata nel documento
  • JAdES per il JSON, in particolare gli scambi tra applicazioni
  • CAdES per qualsiasi tipo di file

CAdES è il formato generalista. Poiché non presuppone nulla della struttura del file firmato, la firma non vi si inserisce: lo accompagna. Si parla di firma separata. È questo che le consente di firmare un'immagine, un archivio, un file crittografato o un formato proprietario senza mai toccarlo.

Il livello T, quello che aggiunge la data

Ciascuno di questi formati si declina poi in livelli:

  • Livello B (Basic): la firma da sola, con gli attributi indispensabili
  • Livello T (Timestamp): un token di marca temporale si aggiunge alla firma
  • Livello LT (Long Term): gli elementi necessari alla verifica, catena di certificati e prove di revoca, sono incorporati nella firma
  • Livello LTA (Long Term Archive): vengono aggiunte marche temporali di archiviazione, poi rinnovate nel tempo

La differenza tra LT e LTA sta in ciò che si vuole proteggere. Il livello LT risponde a un problema di disponibilità: tra dieci anni il servizio di revoca dell'autorità sarà forse scomparso, per cui si conservano fin da oggi, all'interno della firma, le prove che ne permetteranno la verifica. Il livello LTA risponde inoltre a un problema di obsolescenza delle chiavi e degli algoritmi: un algoritmo ritenuto sicuro oggi non lo resterà indefinitamente, e lo stesso vale per le chiavi utilizzate. Infine, anche il certificato dell'autorità di marca temporale ha una fine vita. Una marca temporale di archiviazione viene quindi a sigillare periodicamente l'insieme, prove comprese, e ogni nuovo token prolunga la validità della catena prima che il precedente si indebolisca.

Una firma CAdES-T incorpora dunque un token di marca temporale emesso da un'autorità di fiducia che attesta che la firma esisteva in quel preciso istante.

Marcare un documento, marcare una firma

Sono due possibilità distinte, e non provano la stessa cosa.

Marcare temporalmente un documento, vale a dire la sua impronta, significa provare l'esistenza del file a quella data. Non dice nulla del suo autore: una marca temporale non è una firma.

Marcare temporalmente una firma significa provare che la firma del documento è avvenuta prima di quella data, e dunque che il certificato era ancora valido nel momento in cui è stata apposta. (E poiché il valore di firma copre già l'impronta del documento, la prova di data vale anche per il documento!)

Marcare temporalmente una firma è ciò che fa il livello T.

Verificare non è soltanto ricalcolare un'impronta

Verificare una firma non consiste soltanto nel confrontare due impronte. Significa rispondere a una questione di diritto: il certificato del firmatario era valido alla data attestata dal token?

Ciò presuppone tre controlli distinti:

  • Il periodo di validità del certificato copriva quella data?
  • Il certificato era revocato a quella data? La domanda vale per il certificato del firmatario, ma anche per quello dell'autorità che lo ha emesso.
  • La catena di certificazione risale a un'autorità di fiducia riconosciuta?

Quest'ultimo punto merita attenzione, perché non basta che una catena risalga: occorre sapere fino a dove. Ogni Stato membro pubblica una lista di fiducia eIDAS, firmata, che elenca i prestatori qualificati di servizi fiduciari e i certificati delle loro autorità. Queste liste nazionali sono a loro volta referenziate da una lista delle liste, pubblicata dalla Commissione europea, i cui certificati di firma compaiono nella Gazzetta ufficiale dell'Unione europea.

È questa catena di pubblicazione che dà il suo senso alla parola qualificato. Un'autorità non è qualificata perché il suo certificato lo afferma, ma perché uno Stato l'ha iscritta nella propria lista e perché tale iscrizione è verificabile da chiunque. Queste liste conservano lo storico degli stati, il che permette di rispondere all'unica domanda che conta qui: questa autorità era qualificata alla data del token?

Perché questi controlli si valutano alla data del token e non nel momento in cui si apre il file. Un certificato scaduto da due anni può benissimo portare una firma valida. Al contrario, un certificato ancora in corso di validità porta una firma che non prova granché se la sua catena non risale ad alcuna autorità riconosciuta.

Senza data dimostrabile, la firma muore con il suo certificato

È la conseguenza diretta. Una firma di livello B, senza token, non fornisce alcuna prova della propria data: la data che contiene è dichiarata dal firmatario, quindi non opponibile. Il giorno in cui il certificato scade o viene revocato, nulla permette più di stabilire che la firma gli è anteriore.

E in genere nessuno se ne accorge prima di averne bisogno. E non c'è più nulla da fare.

CAdES-T in Sigalion Vault

È per tutte queste ragioni che abbiamo scelto il formato CAdES-T per la firma in Sigalion Vault, disponibile su macOS, Windows e Linux:

  • CAdES baseline-T (ETSI EN 319 122-1), firma CMS separata (RFC 5652) riunita con il documento in un contenitore ASiC-S
  • Token RFC 3161 apposto sul valore di firma, a scelta marca temporale Sigalion o marca temporale qualificata eIDAS (consigliata)
  • Certificato software, smart card o token (IDOpte, YubiKey), a seconda del supporto di cui disponete
  • Autorità di fiducia e qualificazione eIDAS provenienti dalla Lista di fiducia ufficiale, stato di revoca del firmatario e del suo emittente controllato alla data attestata dalla marca temporale

Il file prodotto è un involucro .asics che riunisce il documento e la sua firma in un formato normalizzato, verificabile con gli strumenti conformi alle norme ETSI.

Firmare, marcare, cifrare: tre esigenze distinte

Più in generale, Vault risponde a tre esigenze distinte, complementari, ma spesso confuse:

  • Firmare, per garantire l'integrità del documento, l'identità del suo autore e tradurne l'accordo
  • Marcare temporalmente, per attestare che esisteva a una data determinata
  • Cifrare, per garantire la riservatezza e riservare la lettura ai destinatari designati

Le tre si combinano: un documento può essere firmato e marcato temporalmente, poi cifrato per il suo destinatario, e anche l'insieme può essere marcato temporalmente.