Firma Digitale
Integrare la firma digitale in altre applicazioni: domande frequenti
Quali documenti possono essere firmati digitalmente?
In linea di principio qualunque documento digitale può essere firmato digitalmente, diventando un vero e proprio documento informatico provvisto di un valore probatorio.
Tuttavia, se si tiene conto che un documento informatico deve equivalere ad un documento cartaceo sottoscritto, occorre organizzare la propria applicazione in modo tale che il documento soddisfi alcuni requisiti:
- Il documento deve essere autoconsistente, ossia deve essere leggibile ed utilizzabile senza dipendenze da altri oggetti esterni al documento. Quindi vanno evitati documenti come le pagine HTML arricchite da link o da immagini; vanno assolutamente evitati documenti costituiti da sequenze di campi ottenuti dalla compilazione di form, privi di significato fuori dal form.
- Il documento deve essere riproducibile senza ambiguità: anche se trasferito da un sistema ad un altro non deve essere possibile rappresentare lo stesso documento in modi diversi. Quindi è molto opportuno ricorrere a formati basati su standard internazionali consolidati, possibilmente per i quali esistano diverse applicazioni di gestione da diversi produttori su diverse piattaforme (per esempio il .PDF), tanto più se si prevede una lunga durata di validità del documento stesso.
- Il documento non deve contenere macro o elementi variabili che possano modificarne la rappresentazione in tempi successivi. Questo è un punto molto importante, perché la presenza di elementi di questo tipo potrebbe annullare il valore probatorio del documento stesso.
Che forma assume un documento firmato digitalmente?
Esistono diversi standard che permettono la rappresentazione di un documento informatico firmato digitalmente.
Tuttavia l'attuale normativa italiana, per effetto di una Circolare di AIPA (Circolare 24/2000), stabilisce che il formato raccomandato per questo tipo di documenti sia il PKCS#7.
Questo formato consiste di una "envelope", ossia una sovrastruttura, che contiene sia il documento digitale oggetto della firma, sia la firma o le firme digitali associate al documento, sia il certificato o i certificati di chiave pubblica corrispondenti all'autore o agli autori delle firme stesse.
Il risultato è un file il cui nome viene modificato con l'apposizione di una ulteriore estenzione ".p7m" (per esempio, il documento CONTRATTO.pdf diventa, dopo la firma, CONTRATTO.pdf.p7m).
Poiché il documento originale è incapsulato in questa struttura, è sempre possibile estrarne una copia dal PKCS#7. Per questa ragione, nel contesto di una applicazione che gestisce documenti firmati, è sempre raccomandato memorizzare il documento firmato (.p7m) da cui estrarre - eventualmente previa verifica della firma al fine di rassicurarsi dell'integrità del documento - il documento originale (.pdf).
Quali strumenti sono necessari per firmare di gitalmente un documento?
Se per "firma digitale" si intende una "firma elettronica avanzata", basata su "certificati qualificati", generata per mezzo di un "dispositivo sicuro per la creazione di una firma" - ossia il più alto livello di sicurezza e di valore probatorio oggi raggiungibile in Italia e nella Comunità Europea - occorre disporre di alcuni strumenti fondamentali:
- Un certificato qualificato intestato al sottoscrittore: viene rilasciato da un Fornitore di Servizi di Certificazione operante secondo le norme. Meglio ricorrere ad un Certificatore Accreditato, ossia volontariamente iscritto in un Elenco Pubblico gestito da CNIPA (ex AIPA).
- Un dispositivo sicuro per la Creazione delle Firme (di regola una smartcard) che contiene la chiave privata necessaria a generare la firma. La normativa prescrive regole operative tali da associare in modo stretto una particolare smartcard ad un certificato di chiave pubblica e quindi al soggetto (utente) che genererà la firma.
- Un software client di firma digitale, in grado di gestire la smartcard, di presentare il contenuto del documento da firmare, di chiedere la conferma di generare la firma, di produrre il file PKCS#7 che rappresenta il documento firmato.
Naturalmente il client deve poter interagire con l'applicazione di gestione dei documenti, deve armonizzarsi con l'interfaccia utente sia in contesti client-server che stand-alone che web-based, deve poter funzionare con un'ampia gamma di formati di documenti e di accoppiate smartcard/certificato.
DigitalSign è il prodotto software che soddisfa questi requisiti in modo ottimale.
Come utilizzare i servizi dei diversi Fornitori di Servizi di Certificazione?
In Italia operano diversi Fornitori di Servizi di Certificazione in grado di emettere Certificati Qualificati.
In base alla normativa italiana ed europea, tali Certificatori hanno la facoltà di accreditarsi presso un Elenco pubblico gestito da CNIPA (ex AIPA); dal punto di vista dell'utente ricorrere ai servizi di un Certificatore Accreditato costituisce la miglior garanzia del fatto che i documenti firmati tramite le smartcard e i certificati forniti da tale provider avranno effettivamente pieno valore probatorio.
Ogni certificatore ha la responsabilità di erogare un certificato qualificato solo dopo aver identificato personalmente il richiedente tramite un proprio incaricato e dopo aver verificato che la chiave privata di tale soggetto si trova a bordo di una smartcard ben determinata, la quale possiede i necessari requisiti di sicurezza.
Questo vincolo di legge, giustificato da esigenze di sicurezza, dà origine a diverse famiglie di smartcard, ciascuna distribuita da un diverso provider, con diverse caratteristiche hardware e software.
Quasi tutti i certificatori, inoltre, forniscono propri strumenti software (client) rivolti agli utenti, per l'utilizzo delle proprie smartcard.
Alcuni di questi prodotti software consentono un certo grado di integrazione a livello programmatico, con una interfaccia proprietaria. La software house o il system integrator può certamente sviluppare un'integrazione con uno di questi prodotti e realizzare una applicazione che supporta così le smartcard e i certificati di quel dato provider.
È evidente, tuttavia, che se in seguito si rende necessario utilizzare, nel quadro di quella applicazione, smartcard e certificati emessi da un diverso provider sarà quasi certamente necessario ricorrere ad un diverso client di firma digitale e riprogettare e risviluppare l'integrazione con una interfaccia del tutto diversa.
La soluzione è DigitalSign: poiché CompEd non è legata in esclusiva ad alcun certificatore il suo prodotto è progettato e mantenuto aggiornato con il preciso obiettivo di essere compatibile con le smartcard ed i certificati di tutti i provider presenti sul mercato.
Come inserire facilmente in una applicazione il processo di apposizione della firma digitale?
Con DigitalSign l'implementazione della firma digitale in una applicazione preesistente è quanto mai semplice.
DigitalSign espone un controllo ActiveX che, a livello client, presiede a tutte le attività di:
- presentazione accurata del documento da firmare, qualunque sia il suo formato (si veda la scheda tecnica per il dettaglio dei formati supportati)
- gestione dei bottoni comando o predefinizione di bottoni definiti dall'utente
- interfacciamento della smartcard
- input del documento, da file, URL o buffer di memoria
- output del documento, su file o buffer di memoria.
Con pochissime istruzioni il programmatore può inserire nel proprio ciclo di gestione del documento il processo di apposizione di una o più firme digitali,
ignorando tutte le complicazioni derivanti dall'interfacciamento di smartcard, ettori, ecc.
L'ActiveX può anche essere impiegato per la semplice presentazione di un ocumento firmato, ma anche per cifrare/decifrare un documento, per marcarlo temporalmente, per esportarne o stamparne il documento digitale contenuto.
Come impostare una architettura completa?
Anche se molti progettisti si limitano, inizialmente, ad integrare nei propri sistemi la semplice procedura di apposizione di una firma digitale a un documento, a nessuno dovrebbe sfuggire che un'implementazione corretta e completa dovrebbe tener conto di alcuni altri fattori:
- Tutte le applicazioni, salvo quelle più elementari, sono distribuite in ambiente multiutente; quindi esistono uno o più stazioni "client" (quanto meno un browser) e una funzione "server" (quanto meno un database o un organo centrale di memorizzazione). In generale si può assumere che la sicurezza e l'accuratezza della gestione siano ottimizzabili lato "server", mentre è molto difficile controllare affidabilmente e stabilmente nel tempo tali parametri sulle varie stazioni "client".
- Poiché non si può mai dare per scontato il livello di sicurezza di qualunque controllo effettuato sul "client", è opportuno eseguire sul "client" soltanto le operazioni minime indispensabili (apposizione della firma), mentre tutte le perazioni di verifica e convalida dovrebbero essere svolte lato "server". Il progettista dovrebbe sempre assumere una mentalità di "diffidenza" nei confronti del client. Quindi dovrebbe porsi molte domande e realizzare sul server (o comunque su una stazione singola, controllata in modo particolare) tutti i controlli importanti.
Ecco alcune domande che il sistema dovrebbe sempre porsi riguardo ad un documento firmato che entra nel ciclo di gestione:
- Il documento firmato contiene le informazioni che mi aspetto?
(se il documento era stato generato dal server è possibile confrontare la copia inviata per la firma con quella ritornata firmata) - L'identità del sottoscrittore (ricavata dal documento firmato) corrisponde all'utente abilitato a quell'operazione?
(è un errore limitarsi a verificare l'utente al momento del logon, sarà il documento firmato a costituire elemento di prova) - La firma apposta al documento è valida?
(si veda in proposito la sezione che descrive i passi da compiere dopo l'apposizione della firma
Dopo aver ottenuto risposta positiva a tutte queste domande occorre porsi il problema della conservazione del valore probatorio del documento per tutto il tempo richiesto dalla particolare ipologia di documento stesso.
Quali passi vanno compiuti dopo che il documento è stato firmato?
Nella sezione dedicata all'impostazione di una architettura completa di gestione di documenti firmati digitalmente si illustra quali sono le domande che il sistema deve porsi (ed alle quali deve ottenere una risposta positiva) prima di considerare valido un documento firmato.
In questa sezione si intende approfondire il tema dell'ultima domanda sollevata a proposito di architettura generale.
La firma apposta al documento è valida?
Per rispondere positivamente a questa domanda (che peraltro si sottintende iterata per tutte le eventuali firme multiple associate ad un documento) il sistema deve eseguire una serie di passi di verifica:
- Verifica dell'autenticità del certificato del sottoscrittore (cioè verifica che sia stato emesso da un Certificatore ritenuto attendibile)
- Verifica dello stato di validità del certificato (cioè verifica che il certificato non sia scaduto)
- Verifica dell'eventuale stato di sospensione o revoca del certificato (cioè verifica, tramite accesso alla Lista di Sospensione e Revoca - CRL - pubblicata dal Certificatore, che il certificato del sottoscrittore non sia stato già evocato.
- Verifica che una revoca appena disposta (e quindi non ancora rilevabile dalla CRL del certificatore) non pervenga nel periodo immediatamente successivo, validando un documento che si era ritenuto valido. Questo problema è piuttosto sottile: dal momento in cui un utente dichiara di aver perduto il controllo della propria chiave privata e quindi chiede la revoca del certificato, al momento in cui questo fatto si riflette in una CRL pubblicata e visibile dal resto del mondo, trascorre un certo intervallo: il sistema deve tener conto di questo intervallo (cioè attendere) per essere certo che davvero non sia avvenuta la revoca nel frattempo.
- Associazione al documento di un riferimento temporale opponibile ai terzi (cioè con valore di prova), che collochi affidabilmente l'istante di verifica (e quindi di accettazione della validità di un documento), in un momento storico in cui il vertificato era certamente valido (il documento viene così "consolidato")
- Eventuale passaggio del documento consolidato (ed eventualmente delle copie rilevanti delle CRL) ad una fase di Conservazione a lungo termine.
Oltre alle ragioni di sicurezza indotte dalla difficoltà di controllare affidabilmente la configurazione dei client, altri motivi inducono a concentrare l'esecuzione di queste operazioni lato server: per esempio il fatto che il completamento di questi passi dipende da diverse risorse esterne (le CRL, il servizio di marcatura temporale) e comunque implica una attesa. Quindi non è una sequenza adatta ad un contesto interattivo, mentre è una tipica sequenza batch.
TrustDoc è il prodotto di CompEd che risolve in totale autonomia tutte queste operazioni: il programmatore deve solo:
- Passare a TrustDoc il documento appena firmato
- Attendere il completamento del ciclo di consolidamento da parte di TrustDoc
- Aggiornare il proprio archivio con il documento consolidato
- Gestire la situazione di allarme nel caso che una verifica non venga superata
Come si visualizza un documento firmato digitalmente?
Un documento in formato PKCS#7 richiede, per la sua "fruizione", un software in grado di estrarre il documento digitale contenuto nella envelope
Naturalmente il software dovrebbe anche verificare, prima di estrarre il documento, che la firma digitale sia valida e mostrare all'utente le informazioni disponibili sull'identità del sottoscrittore, sul grado di attendibilità del certificato, ecc.
DigitalSign, tramite il suo ActiveX permette di integrare con pochissime linee di codice la funzione di presentazione del documento. Il contenuto viene mostrato nella forma naturale, mentre una apposita area informativa organizzata con una struttura ad albero molto intuitiva mostra tutti gli aspetti connessi con la firma o le firme associate al documento, marche temporali, ecc.
Le stesse funzioni di visualizzazione e verifica sono disponibili con DigitalSign Reader, che è utilizzabile gratuitamente dagli utenti che devono aprire documenti firmati con software CompEd.
In ambiente web DigitalSign e DigitalSign Reader integrano automaticamente il proprio ActiveX di visualizzazione con il browser, per cui il programmatore deve solo fornire un link al documento in formato .p7m per ottenerne una presentazione e fruizione altamente professionale.
Come conservare nel tempo il valore probatorio di un documento firmato digitalmente?
Lo strumento normativo da impiegare per la Conservazione documentale è la Deliberazione CNIPA 11/2004 ("Regole tecniche per la riproduzione e conservazione di documenti su supporto ottico idoneo a garantire la conformità dei documenti agli originali... ").
La metodologia di produzione di questi supporti (che peraltro, secondo l'art. 8 della stessa Deliberazione, possono essere di qualsiasi tipo, anche non ottici) consiste nell'accumulare i documenti da conservare e creare quindi una sorta di file indice contenente - tra l'altro - le impronte di tutti i documenti conservati. Questo file indice deve essere quindi firmato digitalmente e corredato di una marca temporale.
CompEd offre diverse soluzioni, a diversi livelli di astrazione, per questo adempimento:
- DigitalFile - un completo sistema di archiviazione e conservazione, dotato di interfaccia programmatica, in grado di produrre supporti conformi alla norma CNIPA. Alcuni moduli di automazione consentono di popolare sequenze di volumi ottici, iniziarli e chiuderli automaticamente, notificare via mail al responsabile la necessità di firmare digitalmente i volumi pronti.
- DigitalSign - il progettista che conosce a fondo la normativa può produrre in proprio il file indice contenente i riferimenti e le impronte dei documenti trattati, utilizzando quindi soltanto i servizi di calcolo delle impronte, firma digitale e marcatura temporale offerti da DigitalSign.
Quali strumenti una software house deve acquistare per poter integrare il software di CompEd nelle proprie applicazioni?
Per utilizzare il prodotto DigitalSign in modo programmatico, cioè per poter scrivere applicazioni che richiamano i servizi esposti dalle interfacce di questo prodotto occorre sottoscrivere una CompEd Developer License, che oltre a tutto il materiale di riferimento ed al supporto tecnico necessari, contiene anche una dotazione di licenze client distribuibili.
Specifiche opzioni permettono di estendere la Developer License anche a DigitalFile, TrustDoc e ad altri prodotti attualmente in fase di sviluppo.
Quanto costa la CompEd Developer License?
Le informazioni commerciali sulla CompEd Developer License vanno richieste direttamente a CompEd, scrivendo a Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.