La firma digitale è un metodo matematico teso a dimostrare l'autenticità di un documento digitale autenticando l'autore di un documento. In Italia, è regolata dall'articolo 24 del Codice dell'amministrazione digitale.
Apposizione Per firmare digitalmente un documento occorre convertire il file da un formato modificabile (quale può essere quello risultante dall’utilizzo di un programma di scrittura per computer quale Word) a uno non immediatamente modificabile (come ad esempio il formato Acrobat PDF/A).
Il documento informatico da firmare digitalmente, infatti, deve essere redatto o previamente convertito in un formato statico (es. pdf, studiato appositamente per l’archiviazione nel lungo periodo di documenti elettronici).
Ad esempio, i documenti nei formati più diffusi come .doc (Word), .xls (Excel), .odt, .ods (Open Office), non sono idonei per essere firmati digitalmente in quanto sono modificabili anche dopo la sottoscrizione (quindi anche con l’estensione .p7m).
Una volta redatto o convertito il documento in formato statico, bisogna aprire il software di firma digitale del certificatore, caricare il file interessato e cliccare sul pulsante “firma documento”. Nella finestra che si apre, verrà richiesto la password o il pin del dispositivo (smart card o pennetta USB) che contiene il certificato di firma digitale.
Per firmare digitalmente un documento, infatti, è necessario avere: smart card o dispositivo USB con certificato digitale di sottoscrizione rilasciato da un certificatore accreditato; lettore di smart card; software di firma digitale, generalmente dato al momento dell’acquisto della firma digitale, oppure scaricabile gratuitamente da internet dal sito del certificatore.
Il sistema dà la possibilità di selezionare il tipo di file che si intende ottenere: a seguito dell’apposizione della firma, infatti, il file caricato si “trasformerà” in altro di estensione diversa. Più precisamente: formato p7m, contenente il documento originale e i file della firma digitale; pdf, disponibile solo per i file in formato pdf, consente di ottenere un file pdf con la firma digitale inclusa. La firma può essere invisibile o grafica, cioè visibile; xml, che crea un file in formato p7m.
Storia Nel 1976, Whitfield Diffie e Martin Hellman descrissero per primi la nozione di schema di firma digitale, sebbene solamente ipotizzassero l’esistenza di tali schemi"New Directions in Cryptography", IEEE Transactions on Information Theory, IT-22(6):644–654, Nov. 1976."Signature Schemes and Applications to Cryptographic Protocol Design ", Anna Lysyanskaya, PhD thesis, MIT, 2002.. Di lì a poco, Ronald Rivest, Adi Shamir e Leonard Adleman inventarono l’algoritmo RSA, che poteva essere utilizzato per produrre firme digitali primitive. Il primo pacchetto software ad avere un’ampia diffusione commerciale fu Lotus Notes 1.0, pubblicato nel 1989, che sfruttava l’algoritmo RSA.
In seguito furono sviluppati altri schemi di firma digitale, prime fra tutte le firme di Lamport"Constructing digital signatures from a one-way function.", Leslie Lamport, Technical Report CSL-98, SRI International, Oct. 1979., le firme di Merkle (conosciute anche come "alberi di Merkle" o, più semplicemente, "alberi hash")"A certified digital signature", Ralph Merkle, In Gilles Brassard, ed., Advances in Cryptology – CRYPTO '89, vol. 435 of Lecture Notes in Computer Science, pp. 218–238, Spring Verlag, 1990. e le firme di Rabin"Digitalized signatures as intractable as factorization." Michael Rabin, Technical Report MIT/LCS/TR-212, MIT Laboratory for Computer Science, Jan. 1979.
Nel 1988, Shafi Goldwasser, Silvio Micali, e Ronald Rivest, per primi definirono con rigore i requisiti di sicurezza degli schemi di firma digitale"A digital signature scheme secure against adaptive chosen-message attacks.", Shafi Goldwasser, Silvio Micali, and Ronald Rivest. SIAM Journal on Computing, 17(2):281–308, Apr. 1988., descrivendo una gerarchia di modelli di attacco per tali schemi. Inoltre presentarono lo schema di firma GMR, il primo a dimostrarsi sicuro contro gli attacchi chosen-plaintext.
La diffusione della firma digitale in Europa Nell’ambito del F.E.S.A. (Forum of European Supervisor Authority), il cui scopo è far incontrare rappresentanti dei vari organismi di vigilanza nazionali in Europa per l’armonizzazione dei principi e delle tecniche fondamentali che regolano la materia nei rispettivi Stati, si è proceduto alla verifica della diffusione della firma digitale. Da questa analisi, (eseguita nell’ottobre 2002) è emerso che l’Italia era, con 500.000 certificati lo Stato con la maggiore diffusione di certificati, seguita dalla Norvegia con 32.000, e dalla Germania (26.000).
Nel primo trimestre 2004 il numero dei dispositivi distribuiti in Italia per la firma digitale ha superato 1.250.000 unità.
La firma digitale generata in qualunque Stato membro della Comunità deve, sulla base dei trattati comunitari, essere riconosciuta dagli altri Stati. Al fine di rendere agevole tale mutuo riconoscimento è indispensabile che le norme nazionali di recepimento della Direttiva europea 1999/93/CE sulle firme elettroniche nei rispettivi Stati, forniscano un insieme comune di garanzie e certezze. Anche a tale fine diversi organismi fra cui l’EESSI, la Commissione sancita dall’articolo 9 della citata Direttiva europea, l’ETSI, il FESA, stanno lavorando per affinare la Direttiva stessa e realizzare nel contempo degli standard la cui applicazione consenta appunto di raggiungere un adeguato livello di fiducia in tutta la Comunità.
La diffusione della firma digitale in Europa e il suo utilizzo fra gli Stati è una sfida non da poco.
Basti pensare quanto è stato complicato raggiungere l’interoperabilità, perlomeno nel processo di verifica, in Italia, dove si aveva comunque il grande vantaggio derivante dal fatto che tutti i protagonisti (certificatori e titolari) dovevano sottostare alle medesime norme.
Descrizione Definizione In Italia il CAD definisce la firma digitale "un particolare tipo di firma qualificata basata su un su un sistema di chiavi crittografiche, una pubblica e una privata, correlate tra loro, che consente al titolare di firma elettronica tramite la chiave privata e a un soggetto terzo tramite la chiave pubblica, rispettivamente, di rendere manifesta e di verificare la provenienza e l'integrità di un documento informatico o di un insieme di documenti informatici".
Le firme elettroniche di un documento informatico e in particolare le firme elettroniche avanzate e qualificate, tra cui quella digitale, si propongono dunque di soddisfare tre esigenze che non tutte le tipologie di firma elettronica però soddisfano: che sia possibile verificare l'identità del sottoscrittore (autenticazione); che il sottoscrittore non possa disconoscere un documento da lui firmato (non ripudio); che non sia possibile modificare un documento firmato da qualcun altro (integrità).
Un tipico schema di firma elettronica basata sulla crittografia a chiave pubblica si compone dei seguenti algoritmi: un algoritmo per la generazione della chiave, che seleziona in modo casuale una chiave privata da un insieme di possibili valori, e restituisce una coppia di chiavi, la chiave privata con cui si firma il documento e la corrispondente chiave pubblica di verifica della firma; un algoritmo di firma che, presi in input un messaggio e la chiave privata, calcola il codice hash del messaggio e lo crittografa con la chiave privata, producendo una firma; un algoritmo di verifica che, presi in input un messaggio, la chiave pubblica e la firma, accetta o rifiuta la firma che compare nel messaggio. Sono richieste le seguenti due proprietà: primo, l’autenticità di una firma generata da un messaggio fisso e da una chiave privata deve essere verificata facendo uso della corrispondente chiave pubblica. In secondo luogo, dovrebbe essere computazionalmente impossibile generare una firma valida per un messaggio senza avere a disposizione la chiave privata.
Nella trattazione che segue, 1n indica un numero unario. Formalmente, uno schema di firma digitale è una tripla di algoritmi probabilistici in tempo polinomiale (G, S, V), con le seguenti proprietà: G (algoritmo generatore della chiave) genera una chiave pubblica, pk, e la corrispondente chiave privata, sk, a partire dal valore in input 1n, dove n è il parametro di sicurezza; S (algoritmo di firma) restituisce un tag t, elaborando in input la chiave privata sk e una stringa x; V (algoritmo di verifica) valuta i valori dati in input (la chiave pubblica pk, la stringa x e il tag t), determinando se la firma sia autentica o meno.
Creazione e verifica di firme elettroniche con crittografia asimmetrica Il sistema per la creazione e la verifica di firme elettroniche può sfruttare le caratteristiche della crittografia asimmetrica.
Un sistema crittografico garantisce la riservatezza del contenuto dei messaggi, rendendoli incomprensibili a chi non sia in possesso di una "chiave" (intesa secondo la definizione crittologica) per interpretarli. Nei sistemi crittografici a chiave pubblica, detti anche a chiave asimmetrica, ogni utente ha una coppia di chiavi: una chiave privata, da non svelare a nessuno, con cui può decifrare i messaggi che gli vengono inviati e firmare i messaggi che invia, e una chiave pubblica, che altri utenti utilizzano per cifrare i messaggi da inviargli e per decifrare la sua firma e stabilirne quindi l'autenticità.
Perché il sistema risulti sicuro, è necessario che solo l'utente stesso e nessun altro abbia accesso alla chiave privata. Il modo più semplice per ottenere questo è far sì che l'unica copia della chiave sia "in mano" all'utente (il quale deve impedirne l'accesso a terzi); tuttavia, esistono soluzioni alternative (come nel caso della firma digitale remota).
Per ogni utente, le due chiavi vengono generate da un apposito algoritmo con la garanzia che la chiave privata sia la sola in grado di decifrare correttamente i messaggi cifrati con la chiave pubblica associata e viceversa. Lo scenario in cui un mittente vuole spedire un messaggio a un destinatario in modalità sicura è il seguente: il mittente utilizza la chiave pubblica del destinatario per la cifratura del messaggio da spedire, quindi spedisce il messaggio cifrato al destinatario; il destinatario riceve il messaggio cifrato e adopera la propria chiave privata per ottenere il messaggio "in chiaro".
Grazie alla proprietà delle due chiavi un sistema di crittografia asimmetrica di questo tipo è adatto anche per ottenere dei documenti firmati, ma in modalità inversa rispetto a quella appena descritta cioè con la chiave privata a cifrare e quella pubblica a decifrare. Infatti, la chiave pubblica di un utente è la sola in grado di decifrare correttamente i documenti cifrati con la chiave privata di quell'utente. Se un utente vuole creare una firma per un documento, procede nel modo seguente: con l'ausilio di una funzione di hash (pubblica) ricava limpronta digitale del documento, detta anche message digest, un file di dimensioni relativamente piccole (128, 160 o più bit) che contiene una sorta di codice di controllo relativo al documento stesso, dopodiché utilizza la propria chiave privata per cifrare l'impronta digitale: il risultato di questa codifica è la firma. La funzione hash è fatta in modo da rendere minima la probabilità che da testi diversi si possa ottenere il medesimo valore dell'impronta, inoltre, è one-way, a senso unico, questo significa che dall'impronta è impossibile ottenere nuovamente il testo originario ovvero essa è non invertibile. La firma prodotta dipende dall'impronta digitale del documento e, quindi, dal documento stesso, oltre che dalla chiave privata dell'utente. A questo punto la firma viene allegata al documento insieme alla chiave pubblica.