# Firma digitale

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. 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, le firme di Merkle (conosciute anche come "alberi di Merkle " o, più semplicemente, "alberi hash") e le firme di Rabin.
Nel 1988, Shafi Goldwasser, Silvio Micali, e Ronald Rivest, per primi definirono con rigore i requisiti di sicurezza degli schemi di firma digitale, 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 elettronica avanzata basata su un sistema di chiavi crittografiche, una pubblica e una privata (crittografia asimmetrica), correlate tra loro, che consente al titolare tramite la chiave privata e al destinatario 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 il destinatario possa verificare l'identità del mittente (autenticazione);
* che il mittente non possa disconoscere un documento da lui firmato (non ripudio);
* che il destinatario non possa inventarsi o 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, 1$^n$ 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 1$^n$, 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 l'impronta 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.
Chiunque può verificare l'autenticità di un documento: per farlo, decifra la firma del documento con la chiave pubblica del mittente, ottenendo l'impronta digitale del documento, e quindi confronta quest'ultima con quella che si ottiene applicando la funzione hash al documento ricevuto; se le due impronte sono uguali, l'autenticità e l'integrità del documento sono garantite.
Le operazioni di firma e di verifica possono essere demandate ad appositi programmi forniti, in caso di firme elettroniche avanzate o qualificate, dall'ente certificatore oppure dal proprio provider di posta elettronica, che, con una semplice configurazione, le effettuerà automaticamente.

### Schema di firme a doppia chiave

I due elementi fondamentali di uno schema di firme create con il sistema della crittografia a doppia chiave sono l'algoritmo di firma e l'algoritmo di verifica.
L'algoritmo di firma crea una firma elettronica che dipende dal contenuto del documento a cui deve essere allegata, oltre che dalla chiave dell'utente. Una coppia (documento, firma) rappresenta un documento firmato, ovvero un documento a cui è stata allegata una firma.
L'algoritmo di verifica può essere utilizzato da chiunque per stabilire l'autenticità della firma elettronica di un documento.
Si parte con l'impronta di un documento che è una sequenza di caratteri ottenuta applicando una funzione di calcolo, detta funzione di hash, al file. Uno stesso file a cui è applicata la stessa funzione di hash genera sempre la medesima impronta. La stringa di output è univoca per ogni file e ne è un identificatore.
L'utente calcola l'impronta digitale del documento con un algoritmo di hash che restituisce una stringa funzione del documento. La stringa viene poi cifrata con l'algoritmo a chiave asimmetrica usando la chiave privata del mittente. Il risultato di tale codifica è la firma elettronica del documento. La firma viene allegata al documento che ora risulta firmato elettronicamente. Il documento così firmato è in chiaro ma possiede la firma del mittente e può essere spedito in modo che esso possa essere letto da chiunque ma non alterato poiché la firma digitale ne garantisce l'integrità. Il ricevente ricalcola la stringa hash dal documento con l'algoritmo di hash. Poi decritta la firma digitale con la chiave pubblica del mittente ottenendo la stringa hash calcolata dal mittente, e confronta le due stringhe hash, verificando in questo modo l'identità del mittente e l'integrità e autenticità del documento.
Siano D un insieme finito di possibili documenti, F un insieme finito di possibili firme, K un insieme finito di possibili chiavi (spazio delle chiavi); se ∀ k ∈ K ∃ un algoritmo di firma sig$_k$:D→F, ∃ un corrispondente algoritmo di verifica ver$_k$:D×F→{vero, falso} tale che ∀ d ∈ D, ∀ f ∈ F: ver$_k$(d,f) = { vero se f = sig$_k$(d) ; falso se f ≠ sig$_k$(d) } allora (D, F, K, sig$_k$, ver$_k$) costituisce uno schema di firme.
Dato un d ∈ D solo il firmatario deve essere in grado di calcolare f ∈ F tale che ver$_k$(d,f) = vero.
Uno schema di firme è detto incondizionatamente sicuro se non esiste un modo per la falsificazione di una firma f ∈ F. Segue che non esistono schemi di firme incondizionatamente sicuri poiché un malintenzionato potrebbe testare tutte le possibili firme y ∈ F di un documento d ∈ D di un utente, usando l'algoritmo pubblico ver$_k$ fino a quando non trova la giusta firma. Naturalmente questo tipo di attacco alla sicurezza dello schema di firme risulta essere enormemente oneroso computazionalmente e praticamente irrealizzabile, anche adottando gli algoritmi più raffinati e i processori più potenti, poiché si fa in modo che la cardinalità dell'insieme di possibili firme sia enormemente elevata, in quanto legata alle dimensioni dello spazio delle chiavi che è proporzionale alla lunghezza della chiave privata, la quale può essere scelta arbitrariamente lunga.

### Alcuni algoritmi di firma digitale

* Schemi di firma basati su RSA, come RSA-PSS
* DSA e la sua variante di crittografia ellittica ECDSA
* ElGamal e le varianti firma di Schnorr e l’algoritmo di firma Pointcheval–Stern
* Rabin
* Schemi come BLS
* Undeniable signatures
* Firme con protocolli efficienti sono schemi di firma che facilitano i protocolli crittografici efficienti come zero-knowledge proofs o secure computation

### Aspetti di sicurezza

Nel loro fondamentale lavoro, Goldwasser, Micali, e Rivest illustrarono una gerarchia di modelli di attacco alla firma digitale:
* in un attacco key-only, l’attaccante possiede solo la chiave pubblica di verifica;
* in un attacco known message, l’attaccante possiede diverse firme valide per un ampio numero di messaggi che egli conosce, ma non scelti da lui;
* in un attacco adaptive chosen message, l’attaccante per prima cosa studia le firme presenti su messaggi casuali a sua scelta.
Gli scienziati formularono anche una gerarchia basata sui risultati dei possibili attacchi:
* un attacco total break consente di impossessarsi della chiave di firma;
* un attacco universal forgery conduce alla falsificazione della firma per ogni messaggio;
* un attacco selective forgery ha la conseguenza di poter apporre la firma su un messaggio a scelta dell’avversario;
* un attacco existential forgery porta semplicemente a comporre una valida accoppiata messaggio/firma non ancora nota all’avversario.

### Formato dei documenti firmati con firma digitale

L'estensione dei file firmati elettronicamente è:
* .p7m per le firme in formato CAdES
* .PDF per le firme in formato PAdES
* .XML per le firme in formato XAdES

## Enrollment

Quando si trattano argomenti che includono certificati digitali, chiavi, firme elettroniche, impronte, dati biometrici, ecc. si usa spesso il termine inglese (non tradotto in italiano) enrollment (ed enrolled per indicare lo stato conseguente di un oggetto). Enrollment, in questi casi, significa registrazione (letteralmente "raccolta, sottoscrizione, accreditamento, iscrizione"). La procedura di enrollment ha lo scopo quindi di riconoscere, autenticare e registrare un oggetto digitale al fine di utilizzarlo per scopi successivi.

## Tipologie di documento e valore della firma

Una semplice firma elettronica, dunque, non costituisce prova di autenticità e integrità. La firma elettronica avanzata (FEA), ha invece (definizione AgID) le seguenti caratteristiche: riconducibile univocamente al firmatario e idonea a identificarlo, è creata mediante dati per la creazione di una firma elettronica che il firmatario può, con un elevato livello di sicurezza, utilizzare sotto il proprio esclusivo controllo, è collegata ai dati sottoscritti in modo da consentire l’identificazione di ogni successiva modifica di tali dati. Un ulteriore livello di sicurezza è dato dalla firma elettronica qualificata (Feq), che oltre a tutte le caratteristiche sopra esposte è anche creata su un dispositivo qualificato per la creazione di una firma elettronica, ed è basata su un certificato elettronico qualificato con effetto giuridico equivalente a quello di una firma autografa. Quest’ultima definizione è fondamentale, perché riconosce esplicitamente alla Feq il valore della firma autografa.
Attenzione: anche la firma elettronica avanzata, come visto sopra, può avere valore autografo, rendendo quindi autentico un documento informatico. Ma rispetto alla firma elettronica qualificata ha un livello di sicurezza inferiore, e di conseguenza non ha sempre lo stesso valore giuridico. Si può utilizzare la firma elettronica avanzata in tutti i contratti fra le parti o in altri atti specificamente previsti dalla legge (elencati nell’articolo 1350 del codice civile, comma 13) come l’atto costitutivo di una società, le convenzioni matrimoniali, donazioni, accordi fra le parti. È invece necessaria la firma elettronica qualificata o la firma digitale per qualsiasi tipo di contratto relativo a operazioni immobiliari. Così come deve essere sempre qualificata o digitale la firma del pubblico ufficiale su un qualsiasi atto. La firma invece dei contraenti, può essere anche firma elettronica avanzata.

## Valore legale nel tempo

Un altro aspetto giuridico rilevante è rappresentato dalla validità della firma digitale nel tempo. Il meccanismo della firma digitale prevede che il certificato (che identifica il titolare) abbia un periodo determinato di validità, e possa essere sospeso, o revocato. È un problema che, come è facile intuire, non si pone con una firma autografa, il cui valore giuridico resta immutato nel tempo. Per garantire la validità di una firma digitale in un momento successivo a quello di validità del certificato, è necessario collocare con precisione il documento nel tempo dimostrando che la firma digitale, si legge nelle Linee Guida Agid, «è stata prodotta in un momento in cui il certificato era ancora valido». Bisogna quindi utilizzare il servizio di marcatura temporale (che consente di datare un documento), che i certificatori sono tenuti a fornire. Un altro sistema può essere rappresentato dall’utilizzo della posta elettronica certificata, che consente di collocare nel tempo il documento.

## I costi della firma digitale (anche gratis)

I costi di un dispositivo di firma o delle credenziali per la sottoscrizione remota (dispositivo disponibile in modalità server) sono variabili e dipendono dall’offerta del mercato e dai meccanismi di vendita connessi.
In generale l’ordine di grandezza è di qualche decina di euro (25/30 + IVA) anche per modalità di sottoscrizione remota. Il costo sale se si sceglie il chip installato in un token USB che fa anche da lettore il chip medesimo. La fascia è tra i 60 e gli 80 euro circa sempre più IVA.
Alcuni ordini professionali e le Camere di Commercio in sede di iscrizione dell’impresa rilasciano gratuitamente il dispositivo di firma.
Ovviamente anche le aziende lo fanno per i soggetti che svolgono attività professionali per le quali serve la firma digitale.
Da notare che spesso, tra privati, clienti o fornitori extra UE non riconoscono i provider italiani o bloccano, per sicurezza, il formato .p7m e quindi impongono i grandi player internazionali di firma (Adobe o DocuSign).

## Applicazioni

Data l’attuale tendenza delle organizzazioni e dei governi ad abbandonare i documenti cartacei con firma autografa, la firma digitale è in grado di fornire garanzia aggiuntiva sulla provenienza, identità e status di un documento elettronico oltre a riconoscere il consenso informato e l’assenso del firmatario. L’ufficio stampa del Governo degli Stati Uniti (GPO), ad esempio, pubblica versioni elettroniche del bilancio, e di leggi pubbliche e private, con apposta la firma digitale.
Di seguito sono riportati alcuni aspetti motivanti l’utilizzo della firma digitale nelle comunicazioni:

### Autenticazione

Sebbene i messaggi stessi spesso includano informazioni relative all'autore, tali informazioni possono non essere accurate. Le firme digitali si utilizzano proprio per autenticare l'autore.

### Integrità

Se un messaggio è firmato digitalmente, ogni cambiamento nel documento successivo all’atto della firma, rende nulla la firma.

### Non ripudio

Il non ripudio, più precisamente detto non ripudio dell’origine, è un aspetto importante della firma digitale. Grazie a questa proprietà, un’entità che ha firmato alcune informazioni non può in un secondo momento negare di averle firmate. Allo stesso modo, avere in possesso solo la chiave pubblica non mette in condizioni un attaccante di falsificare una firma valida.
Nota che le proprietà sopra descritte fanno affidamento sul fatto che la chiave privata non sia stata revocata prima del suo utilizzo. La revoca pubblica di una coppia di chiavi è indispensabile, altrimenti la validità della coppia di chiavi rubate continuerebbe a implicare il possesso legittimo delle stesse.

## Dispositivi

La vulnerabilità della firma digitale dipende dalle varie metodologie e dispositivi per apporla.

### Precisazione

Spesso, sui documenti (nell'area riservata alla firma) compare, accanto al riferimento di colui il quale ha redatto/approvato il testo contenuto, la dicitura "documento firmato digitalmente" (o diciture equivalenti), eventualmente la funzione/ruolo, nome e cognome "in chiaro" dell'autore, seguiti dalla scansione della firma autografa. Quest'ultimo elemento è solo un orpello "estetico" aggiunto per finalità comunicative e non ha alcun valore probatorio, dato che ciò che conta è la firma digitale. Le applicazioni informatiche di elaborazione o stampa di documenti e ovviamente quelle per firmare digitalmente, possono aggiungere la scansione della firma autografa, nella posizione prescelta, ai documenti firmati o marcati. È fondamentale comprendere che questo segno grafico non ha alcun valore legale, non rappresentando la firma digitale e potrebbe essere tranquillamente omesso (il suo scopo è unicamente accessorio/scenografico).
Invece, se l'applicazione utilizzata dal lettore dispone della funzione, è possibile, cliccando sopra gli estremi della firma (nome e cognome, giorno e ora), conoscere la validità della firma e gli estremi del certificato utilizzato dal dispositivo.

### Smart card

Tutti i crittosistemi a chiave pubblica e privata si basano sul fatto che la chiave privata non sia divulgata. Una chiave privata può essere memorizzata sul computer dell’utente a cui è stata data, e protetta da una password locale, ma ciò comporta due svantaggi:
* l’utente può firmare solo documenti su quel particolare computer;
* la sicurezza della chiave privata dipende interamente dalla sicurezza del computer.
Un’alternativa più sicura consiste nel memorizzare la chiave privata su una smart card. Molte smart card sono progettate per resistere efficacemente alla distruzione. In una tipica implementazione di firma digitale, l’hash calcolato a partire dal documento viene inviato alla smart card, la cui CPU firma l’hash usando la chiave privata in essa memorizzata, e restituisce l’hash controfirmato. Prima di ogni utilizzo, l’utente deve attivare la sua smart card inserendo un numero identificativo personale o codice PIN. Anche se non è implementato su tutti i dispositivi, è possibile programmare la smart card in modo che la chiave privata non sia accessibile all’esterno. In caso di furto, chi entra in possesso del dispositivo avrà comunque necessità del codice PIN per generare una firma digitale; l’utente che subisce il furto, procede immediatamente a revocare la validità del certificato collegato alla sua smart card.
La vulnerabilità più nota è strettamente correlata al fatto che una smart card è un calcolatore elettronico limitato, poiché manca dei dispositivi di I/O. Dovendola quindi interfacciare a un PC risulterà non completamente sicuro il processo di generazione della firma in dipendenza della potenziale insicurezza del PC utilizzato per generare l'impronta del documento da firmare. Il rischio concreto è che alla fine il PC possa ottenere dalla smart card una firma su un documento arbitrariamente scelto, diverso da quello visualizzato sullo schermo e effettivamente scelto dall'utente. Chiaramente l'utente potrebbe non essere consapevole dell'esistenza di un siffatto documento, per cui tale problema può essere considerato molto grave. Secondo il parere di Rivest esiste una contraddizione intrinseca tra possedere un dispositivo sicuro e usare un'“interfaccia utente ragionevolmente personalizzabile” che supporti il download delle applicazioni. In altri termini, si potrebbe pensare a un'applicazione molto sicura per la firma digitale che sia eseguibile su computer stand-alone (portatili), tali da non permettere l'esecuzione di altri programmi. In caso contrario, il processo di firma rimane intrinsecamente insicuro, poiché i PC non possono rappresentare piattaforme sicure. Secondo Rivest la firma elettronica, anche qualificata, non dovrebbe essere considerata come una prova non ripudiabile, ma semplicemente come un'evidenza plausibile. Così per gli utenti dovrebbero esistere casi ben definiti in cui poter ripudiare la firma. Il problema, ben noto in letteratura, è complesso e non ammette una soluzione completa fintanto che il PC è parte del processo di generazione della firma. Recentemente sono state proposte soluzioni euristiche che permettono di mitigarne le conseguenze.
Esistono anche lettori USB invece che smart card, e quindi non occorre un dispositivo HD specifico. Il certificato è installato nella chiavetta.

### Dispositivo OTP (One Time Password)

Sistema di firma remota (non occorre disporre di un lettore hardware specifico per la tessera fisica, sia essa magnetica o elettronica, perché la smart card è virtuale). L'utilizzo di un dispositivo OTP con display (che ha anche il vantaggio di possedere un codice seriale univoco) permette di leggere sul visualizzatore la password temporanea di sessione e quindi di apporre la firma senza utilizzare altro hardware. Ovviamente, va installata l'applicazione del provider per firmare, marcare, verificare.

### Chiavetta USB

Sistema di firma remota (non occorre lettore specifico). Un altro dispositivo hardware per rilasciare la firma digitale è la chiavetta USB fornita dal certificatore. Il vantaggio è quello che non occorre leggere e immettere manualmente la password temporanea perché viene inviata direttamente all'applicazione dalla chiavetta. Inoltre, non serve la batteria che occorre al dispositivo OTP con display (perché la chiavetta USB per generare l'OTP è alimentata dal PC quando la si sta utilizzando per firmare).

### App

Sistema di firma remota (non occorre lettore specifico). Ulteriore variante è quella che prevede l'utilizzo della app OTP fornita dal provider (per smartphone) che fornisce la password temporanea di sessione. In questo modo non occorre ricevere alcun codice per tramite di SMS o chiamata vocale.

### Documenti contenenti macro-istruzioni o codice eseguibile

Un'altra ben nota vulnerabilità è derivante dalla possibilità per i documenti di incorporare macro-istruzioni (script) o codice eseguibile (si pensi per esempio alle macro che possono essere presenti nei documenti Word, oppure al codice JavaScript che può essere presente nei documenti PDF). Il problema è che un documento contenente istruzioni non è statico, nel senso che la visualizzazione (la presentazione) del suo contenuto potrebbe dipendere da tali istruzioni. Per esempio, si consideri il caso di un contratto che include un valore che dipende dalla data di sistema, in modo tale che, dopo una certa data, il valore visualizzato sia modificato. La firma digitale dovrebbe essere in grado di evitare la modifica di ciò che un documento mostra all'utente, allo scopo di garantire l'integrità dell'informazione, non solo in termini tecnici, ma anche dal punto di vista degli effetti (legali) prodotti dai bit che compongono i documenti digitali. Nell'esempio precedente, chiaramente i bit del contratto digitale non variano, ma il loro effetto, in termini di contenuto rappresentato, sì.
Sfortunatamente, la firma elettronica non è in grado di rilevare il comportamento dinamico del documento, tantomeno i suoi (pericolosamente dinamici) effetti legali, in quanto è ottenuta a partire dai bit che compongono il documento mediante l'applicazione di una funzione di hash crittografico prima, e l'esecuzione di un algoritmo di crittografia asimmetrica (tipicamente RSA) poi. Questa vulnerabilità è ben nota e il modo per contrastarla è banalmente quello di forzare l'utente a verificare la presenza di macro nel documento prima della firma, quindi assumendo che egli sia in grado di svolgere tale compito. Esistono anche alcuni lavori scientifici in letteratura che definiscono approcci sistematici per contrastare tale vulnerabilità.
Un ulteriore metodo suggerito è quello di restringere i formati permessi per i documenti a quelli che non supportano l'inclusione di istruzioni, come il puro testo (es. ASCII), PDF/A, le immagini. Altri possibili attacchi, documentati in letteratura, riguardano l'uso dei font e altre tecniche legate alla visualizzazione non statica del contenuto del documento (es, inclusione di oggetti esterni, attacchi basati sulla versione del browser per documenti HTML, testo nascosto attraverso il colore dei font, etc.).

### Vulnerabilità connesse all'ambiguità della codifica del documento

Il 21 giugno 2008 viene divulgato un articolo in cui si descrive la scoperta fatta dal gruppo del Professor Francesco Buccafurri, ordinario alla facoltà di Ingegneria di Reggio Calabria, di una nuova vulnerabilità che affligge la firma digitale. Ciò che viene provato non è la vulnerabilità degli algoritmi di firma o dei dispositivi: si tratta di un attacco mai prima documentato che consente di firmare documenti con contenuto ambiguo e che sfrutta tecniche fino a quella data non note, agendo su formati ritenuti esenti da tale comportamento "dinamico". Dal punto di vista degli effetti, tale vulnerabilità è assimilabile a quella già nota determinata dalla presenza di istruzioni nei documenti. Tuttavia la tecnica con la quale opera è significativamente diversa.
La vulnerabilità sfrutta la caratteristica di quei Sistemi Operativi di identificare il tipo di file, e quindi il software da utilizzare per renderne intelligibile il contenuto, attraverso l'estensione (infatti il comportamento "dinamico" del documento viene attivato dalla modifica della sua estensione), risultando quindi applicabile solo in tali Sistemi Operativi (quali ad esempio Microsoft Windows). In linea di principio la vulnerabilità potrebbe essere facilmente risolta includendo negli “authenticated attributes” della busta PKCS#7 il mime-type del file soggetto a firma, di modo da eliminare l'ambiguità sul software da utilizzare per visualizzare il documento e neutralizzare l'attacco. Tuttavia una soluzione del genere comporterebbe l'adeguamento dei software di verifica della firma attualmente in uso, quindi non è di facile attuazione pratica.

## Valore giuridico della firma digitale in Italia

A livello europeo il sistema delle firma elettroniche e quindi anche della firma digitale va ricondotto alla direttiva 1999/93/CE, Direttiva del Parlamento europeo e del Consiglio relativa a un quadro comunitario per le firme elettroniche. Pubblicata nella G.U.C.E. 19 gennaio 2000, n. L 13. è entrata in vigore il 19 gennaio 2000. Particolare importanza ha l'articolo 5 della direttiva, che prevede obblighi degli Stati membri relativi sia alle «firme elettroniche avanzate basate su un certificato qualificato e create mediante un dispositivo per la creazione di una firma sicura» sia ad altri sistemi di firma (che oggi vengono genericamente chiamati deboli o semplici). Si rinvia alla voce Teleamministrazione.
L'Italia si è adeguata alla direttiva nel 2002 (D. lg. 23 gennaio 2002, n. 10) e oggi nel codice dell'amministrazione digitale. Si usano i termini di firma elettronica semplice, firma elettronica avanzata e firma elettronica qualificata: quest'ultima differisce dalla firma digitale in quanto la firma digitale è l'unica che, per espresso dettato normativo, è vincolata a una precisa tecnologia (crittografia asimmetrica).
Nell'ordinamento giuridico italiano il termine firma digitale sta a indicare un tipo di firma elettronica qualificata, basato sulla crittografia asimmetrica, alla quale si attribuisce una particolare efficacia probatoria, tale da potersi equiparare, sul piano sostanziale, alla firma autografa.
La legge che disciplina la firma elettronica è il "Codice dell'amministrazione digitale" (Decreto Legislativo 7 marzo 2005, n. 82) che ha subito nel corso del tempo varie modifiche (da ultimo a opera del d.l. 18 ottobre 2012 n. 179 nel testo integrato dalla legge di conversione 17 dicembre 2012 n. 221).
La legge italiana prevede 4 tipologie di firma elettronica:
* firma elettronica generica (chiamata anche nella prassi firma elettronica "semplice"): l'insieme dei dati in forma elettronica, allegati oppure connessi tramite associazione logica ad altri dati elettronici, utilizzati come metodo di identificazione informatica.
* firma elettronica avanzata: insieme di dati in forma elettronica allegati oppure connessi a un documento informatico che consentono l'identificazione del firmatario del documento e garantiscono la connessione univoca al firmatario, creati con mezzi sui quali il firmatario può conservare un controllo esclusivo, collegati ai dati ai quali detta firma si riferisce in modo da consentire di rilevare se i dati stessi siano stati successivamente modificati.
* firma elettronica qualificata: un particolare tipo di firma elettronica avanzata che sia basata su un certificato qualificato rilasciato da un certificatore accreditato e realizzata mediante un dispositivo sicuro per la creazione della firma.
* firma digitale: un particolare tipo di firma elettronica qualificata basata su un sistema di chiavi crittografiche, una pubblica e una privata, correlate tra loro, che consente al titolare tramite la chiave privata e al destinatario 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.
La firma digitale è quindi solo un particolare tipo di firma elettronica qualificata basata su un sistema di chiavi crittografiche, una pubblica e una privata, correlate tra loro.
La firma elettronica qualificata ha in più della firma elettronica avanzata l'utilizzo di un dispositivo di firma sicuro e di un certificato qualificato rilasciato da un certificatore autorizzato.
La firma elettronica avanzata deve garantire una connessione univoca al firmatario, essere creata con mezzi sui quali il firmatario può conservare un controllo esclusivo, collegati ai dati ai quali detta firma si riferisce in modo da consentire di rilevare se i dati stessi siano stati successivamente modificati.
Tutti gli altri metodi di identificazione informatica sono firme elettroniche semplici.
Sotto il profilo probatorio è stata ribadita dal dlg. 82/2005 nel testo vigente la potenziale idoneità del documento informatico, anche non sottoscritto, a integrare la forma scritta: "L'idoneità del documento informatico a soddisfare il requisito della forma scritta e il suo valore probatorio sono liberamente valutabili in giudizio, tenuto conto delle sue caratteristiche oggettive di qualità, sicurezza, integrità e immodificabilità, fermo restando quanto disposto dall'articolo 21" (comma 1 bis art. 20).
Inoltre il documento informatico, cui è apposta una firma elettronica, sul piano probatorio è liberamente valutabile in giudizio, tenuto conto delle sue caratteristiche oggettive di qualità, sicurezza, integrità e immodificabilità (comma 1 art. 21).
L'efficacia automatica di scrittura privata e la presunzione semplice che il dispositivo di firma sia riconducibile al titolare, in precedenza appannaggio della sola firma elettronica qualificata, sono attribuite anche alla firma elettronica avanzata: "Il documento informatico sottoscritto con firma elettronica avanzata, qualificata o digitale, formato nel rispetto delle regole tecniche di cui all'articolo 20, comma 3, che garantiscano l'identificabilità dell'autore, l'integrità e l'immodificabilità del documento, ha l'efficacia prevista dall'articolo 2702 del codice civile. L'utilizzo del dispositivo di firma si presume riconducibile al titolare, salvo che questi dia prova contraria" (comma 2 art. 21).
Contrariamente al passato è stata però riservata alla sola firma elettronica qualificata la possibilità di sottoscrizione dei seguenti atti: contratti che, in relazione a beni immobili, ne trasferiscano la proprietà, costituiscano, modifichino o trasferiscano l'usufrutto, il diritto di superficie, il diritto del concedente o dell'enfiteuta, la comunione su tali diritti, le servitù prediali, il diritto di uso, il diritto di abitazione, atti di rinuncia dei diritti precedenti, contratti di affrancazione del fondo enfiteutico, contratti di anticresi, contratti di locazione per una durata superiore a nove anni; contratti di società o di assicurazione con i quali si conferisce il godimento di beni immobili o di altri diritti reali immobiliari per un tempo eccedente i nove anni o per un tempo determinato; gli atti che costituiscono rendite perpetue o vitalizie, salve le disposizioni relative alle rendite di Stato; gli atti di divisione di beni immobili e di altri diritti reali immobiliari; le transazioni che hanno per oggetto controversie relative ai diritti di cui sopra.
Il nuovo comma 2 bis dell'art. 21 infatti prevede che "Salvo quanto previsto dall'articolo 25, le scritture private di cui all'articolo 1350, primo comma, numeri da 1 a 12, del codice civile, se fatte con documento informatico, sono sottoscritte, a pena di nullità, con firma elettronica qualificata o con firma digitale."
Inoltre lo stesso comma prevede che "Gli atti di cui all'articolo 1350, numero 13), del codice civile soddisfano comunque il requisito della forma scritta se sottoscritti con firma elettronica avanzata, qualificata o digitale".
Si tratta degli altri atti (rispetto a quelli sopra indicati) per cui sia prevista la forma scritta ad substantiam e tra questi ci sono contratti importanti come i contratti bancari e di intermediazione mobiliari. Per questi atti la legge prevede quindi espressamente che "comunque" (cioè a prescindere da un'ulteriore valutazione del giudice rispetto alla sussistenza dei requisiti della tipologia di firma) la forma scritta è integrata anche da una firma elettronica avanzata.
È quindi da ritenere che tale ultima disposizione precluda solo al giudice ulteriori indagini una volta ritenuta nella firma la natura di firma elettronica avanzata ma non impedisca, attraverso una gamma più ampia di valutazioni su tutti gli elementi di fatto acquisiti, che anche la firma elettronica semplice possa integrare la forma scritta.
La titolarità della firma elettronica qualificata è garantita dai "certificatori" (disciplinati dagli articoli 26-32bis), soggetti con particolari requisiti di onorabilità e che garantiscano affidabilità organizzativa, tecnica e finanziaria. In particolare i certificatori hanno il compito di tenere i registri delle chiavi pubbliche, al fine di verificare la titolarità del firmatario di un documento elettronico. I certificatori, inoltre, possono essere accreditati presso l'Agenzia per l'Italia digitale (già Centro Nazionale per l'Informatica nella Pubblica Amministrazione o CNIPA, successivamente DigitPA) e in tal caso vengono chiamati certificatori accreditati. Fra le caratteristiche per svolgere l'attività di certificatore di firma elettronica vi è quella per cui occorre essere una società con capitale sociale non inferiore a quello richiesto per svolgere l'attività bancaria (2.000.000€, come una S.p.A.). I certificatori non sono quindi soggetti singoli (come i notai), ma piuttosto grosse società (per esempio, un certificatore è la società Poste Italiane).
L'acquisizione di una coppia di chiavi per i soggetti privati (chiave privata, inserita nel dispositivo di firma sicuro, e chiave pubblica, inserita nel certificato) è a pagamento, attraverso la sottoscrizione di un contratto con il certificatore accreditato, nonostante il fatto che la firma (sia manuale che digitale) sia un mezzo legale per l'esercizio di diritti naturali della persona. La coppia di chiavi ha una scadenza temporale, al momento fissata in 3 anni.
È chiaramente fondamentale che il rilascio avvenga previa identificazione certa del firmatario da parte del certificatore perché sia certa l'associazione che il certificato effettua tra chiave pubblica e dati anagrafici del titolare della firma.
Le firme elettroniche possono essere disconosciute, cioè non è garantito il non ripudio, ma l'utilizzo del dispositivo di firma elettronica qualificata o digitale si presume riconducibile al titolare, salvo che questi dia prova contraria (art. 21 d. lgs. 82/2005).
Le regole tecniche per la firma digitale, elettronica qualificata ed elettronica avanzata sono disciplinate, per la legislazione italiana, nel d.p.c.m. 22 febbraio 2013 “Regole tecniche in materia di generazione, apposizione e verifica delle firme elettroniche avanzate, qualificate e digitali, ai sensi degli articoli 20, comma 3, 24, comma 4, 28, comma 3, 32, comma 3, lettera b), 35, comma 2, 36, comma 2, e 71”.
Per quanto riguarda la tipologia di documenti contenenti macro-istruzioni o codice eseguibile, la vigente normativa italiana esclude espressamente la validità della firma digitale: l'art. 3, comma 3 del DPCM 30 marzo 2009 (nuove regole tecniche in vigore dal 6 dicembre 2009) recita infatti: "Il documento informatico, sottoscritto con firma digitale o altro tipo di firma elettronica qualificata, non produce gli effetti di cui all'art. 21, comma 2, del codice, se contiene macroistruzioni o codici eseguibili, tali da attivare funzionalità che possano modificare gli atti, i fatti o i dati nello stesso rappresentati" .
I documenti che presentano ambiguità della codifica, invece, non possiedono giurisprudenza applicabile al caso, a causa della novità della fattispecie, ma è presumibile che essi ricadano sotto l'applicazione dell'art. 3 comma 3 del DPCM 30 marzo 2009 (nuove regole tecniche in vigore dal 6 dicembre 2009), e che quindi i documenti con tale ambiguità non producano gli effetti probatori previsti dall'art. 21 del Codice dell'amministrazione digitale.
Un emendamento approvato nel settembre 2021 consente l'utilizzo della firma elettronica nella raccolta di firme per i referendum abrogativi e per le leggi di iniziativa popolare.