Tramite la firma digitale è possibile garantire l'autore di un documento informatico e verificare che tale documento non abbia subito modifiche successive alla sottoscrizione. Per queste ragioni, negli ultimi anni, la firma digitale è stata oggetto di interesse giuridico e tecnologico.
Generalità
La firma digitale è un'informazione che viene aggiunta ad un documento informatico al fine di garantire:- autenticazione del mittente
- il destinatario ha la possibilità di verificare l'identità del mittente;
- integrità
- è possibile provare che non sono state apportate modifiche al messaggio durante la trasmissione;
- riservatezza (opzionale)
- il messaggio è leggibile dal solo destinatario.
Vantaggi
- Il documento firmato realmente può essere modificato, mentre una sequenza di bit firmata digitalmente, a meno di perdita della chiave privata o di vulnerabilità dell'algoritmo, non è modificabile.
- La firma reale è sempre uguale e può essere riprodotta, la firma digitale varia a seconda dei bit del documento firmato.
Svantaggi
- La firma "reale" è direttamente riconducibile all'identità di chi la appone, poiché la calligrafia è un elemento identificativo della persona. La firma digitale manca di questa proprietà e necessita di un'autorità di certificazione.
- Bisogna prestare attenzione firmando alcuni tipi di documento in cui il contenuto non cambia ma quanto mostrato all'utente sì!
La firma autografa digitalizzata (riprodotta con uno scanner, tracciata su una tavoletta dotata di touch screen…) non è una firma, è una mera riproduzione.
Al contrario della firma autografa e della firma digitale, non è legata indissolubilmente al documento sulla quale viene apposta e per questo non ha valore legale.
Per usare le parole di Manlio Cammarata in Interlex:
In Italia, a partire dal 1997, una serie di provvedimenti legislativi hanno conferito valore giuridico al documento informatico ed alla firma digitale. Inoltre, con la pubblicazione della Direttiva Europea 1999/93/CE, del gennaio 2000, si è imposto un quadro comune agli stati dell'Unione Europea, fornendo, nel contempo, ulteriori impulsi al processo legislativo. Al contrario della firma autografa e della firma digitale, non è legata indissolubilmente al documento sulla quale viene apposta e per questo non ha valore legale.
Per usare le parole di Manlio Cammarata in Interlex:
Sul piano probatorio vale esattamente per quello che è: una rappresentazione meccanica, ai sensi dell'art. 2712 del codice civile. Se colui contro il quale viene prodotta ne disconosce la conformità alla propria firma autografa, l'onere della prova spetta alla controparte.
Le tecnologie coinvolte si stanno continuamente evolvendo, per seguire le esigenze, sempre più complesse, nella sottoscrizione digitale, nell'interscambio dei documenti e nella loro successiva conservazione.
Crittografia asimmetrica - concetti base
Prima di descrivere il funzionamento della firma digitale, è necessario introdurre alcuni elementi di crittologia. Nel 1976 Diffie, Hellman e Merkle (quest'ultimo indipendentemente dai primi due) introdussero un concetto che rivoluzionò le comunicazioni segrete: i cifrari a chiave pubblica.Cifrario simmetrico
Un cifrario simmetrico prevede:- una chiave segreta
k
; - una funzione per cifrare
Ck
, parametrica in k, iniettiva (altrimenti non sarebbe possibile ricostruire in modo univoco il messaggio in chiaro), che trasforma un generico messaggio in chiarom
in un crittogrammac
. - una funzione per decifrare
Dk
, parametrica in k, che permette di riottenere il messaggio in chiarom
partendo dal crittogrammac
.
Dk
eCk
sono l'una l'inversa dell'altra, quindiDk(Ck(m)) = m
;
- una procedura per cifrare ed una per decifrare, generalmente di pubblico dominio;
- una chiave di cifratura, segreta (nota solo a mittente e destinatario), in grado di determinare il funzionamento delle procedure per cifrare e decifrare.
- messaggio in chiaro: "vendere tutto";
- chiave segreta: 3;
- procedura per cifrare: sostituire ogni lettera del messaggio in chiaro con quella che, nell'alfabeto, la segue di 3 posizioni (3 è la chiave segreta);
- prodedura per decifrare: sostituire ogni lettera del messaggio cifrato (crittogramma) con quella che, nell'alfabeto, la precede di 3 posizioni;
- poiché v→y, e→h, n→q, d→g, r→u, t→w, u→x, o→r il messaggio cifrato risulta essere "yhqghuh wxwwr".
- una chiave pubblica
k[pub]
ed una chiave privatak[priv]
; - una funzione per cifrare
C(m,k)
; - una funzione per decifrare
D(c,k)
.
D(C(m,k[pub]),k[priv]) = m
;c = Ck[pub](m)
è semplice da calcolare per il mittente;m = Dk[priv](c)
è semplice da calcolare per il destinatario;- la coppia
<k[priv],k[pub]>
è facile da generare e la probabilità che due utenti scelgano la stessa coppia prossima a zero.
Protocollo 1: messaggio in chiaro firmato
- Il mittente A genera la firma
f=D(m,kA[priv])
. - A invia al destinatario B la tripla
<A,m,f>
costituente il messaggio firmato. - B riceve il messaggio firmato
<A,m,f>
e ne verifica l'autenticità calcolandoC(f,kA[pub])
e verificando che il valore sia uguale ad m.
kA[pub]
da utilizzare nel calcolo. - Firma e spedizione
- Il mittente cifra il messaggio da firmare con l'apposita procedura abbinata alla propria chiave privata. Viene ottenuto un messaggio cifrato. Il documento firmato è l'insieme del messaggio in chiaro, del messaggio cifrato (secondo il sistema sopra indicato) e dell'indicazione del mittente.
- Ricezione e verifica
- Il destinatario riceve le tre informazioni sopra dette (messaggio in chiaro, messaggio cifrato, indicazione del mittente). Con l'indicazione dell'utente/mittente recupera la chiave pubblica associata allo stesso (per esempio da un registro ufficiale). Con l'apposita procedura di decifratura, abbinata alla chiave pubblica recuperata, decifra il messaggio cifrato ed ottiene un messaggio in chiaro da confrontare con quello ricevuto per assicurarsi che tutto sia a posto.
Perché funziona?
- Se qualcuno altera il documento in chiaro, quando il destinatario decifra il documento cifrato otterrà un nuovo documento, diverso dall'originale, ed il confronto fra documento in chiaro ricevuto e documento in chiaro decifrato non avrà successo.
- Il tentativo di alterare il documento in chiaro e contemporaneamente quello cifrato non è possibile senza conoscere la chiave privata del mittente (segreta) o a meno di forzare il cifrario a chiave pubblica.
- Il mittente non può disconoscere la propria firma perché solo lui è a conoscenza della chiave privata necessaria per ottenere il messaggio cifrato a partire da quello in chiaro.
- Il sistema è legato ad un particolare mittente e non ad un particolare destinatario. Chiunque può convincersi della correttezza della firma perché per farlo è necessaria la sola chiave pubblica del mittente.
Perché non si adotta questo protocollo?
- Spedire un messaggio firmato in questo modo comporta un lavoro doppio: il messaggio cifrato ha, infatti, dimensione paragonabile a quella del messaggio in chiaro.
- Non si può garantire la riservatezza della comunicazione perché fra le tre informazioni inoltrate c'é il messaggio in chiaro.
Protocollo 2: messaggio firmato in hash
Funzioni hash
Una funzione hash (hash function)f: X → Y
è una regola che associa ad un elemento x un altro elemento y=f(x)
(detto immagine o fingerprint o digest). È caratterizzata da: -
n=|X| >> m=|Y|
.
Questa proprietà garantisce che la rappresentazione y sia più breve di x (log2m
bit controlog2n
bit). Oltre a questo può accadere che la minore cardinalità di Y permetta di individuare in questo insieme una qualche "struttura" assente in X (o troppo complessa per esser sfruttata). Il fatto chen < m
comporta che la funzione f non sia iniettiva (vale a dire che alcune elementi di X avranno la stessa immagine); - se con
X1, X2… Xm
indichiamo la partizione di X in sottoinsiemi disgiunti tali che per ogni valore dell'indicei
tutti gli elementi diXi
hanno come immagine uno stesso elemento di Y, una buona funzione hash deve assicurare che i sottoinsiemiXi
abbiano, all'incirca, la stessa cardinalità e che elementi "simili" di X appartengano a sottoinsiemi diversi.
- calcolabilità
f(x)
sia facile da calcolare;- proprietà one way
- per la maggior parte degli y in Y sia difficile determinare un x tale che
f(x)=y
; - proprietà claw free
- sia difficile determinare una coppia di elementi
x1
,x2
tali chef(x1)=f(x2)
.
Tecnica corrente per la firma digitale
- Il mittente A calcola:
h(m)
(doveh
è una funzione hash one-way ed m il messaggio in chiaro);- la firma
f=D(h(m),kA[priv])
; - il crittogramma
c=C(m,kB[pub])
.
- A invia al destinatario B la tripla
<A,c,f>
costituente il messaggio firmato. - B riceve il messaggio firmato
<A,c,f>
e calcolam1=D(c,kB[priv])
. Per verificarne l'autenticità controlla cheh(m)
eC(f,kA[pub])
siano uguali.