Cos'è una Firma Digitale?
Home
Articoli
Cos'è una Firma Digitale?

Cos'è una Firma Digitale?

Intermedio
Pubblicato Aug 19, 2019Aggiornato Jan 31, 2023
7m

Una firma digitale è un meccanismo crittografico utilizzato per verificare l'autenticità e l'integrità di dati digitali. Possiamo considerarla come una versione digitale delle comuni firme scritte a mano, ma con livelli di complessità e sicurezza più elevati.

In termini semplici, possiamo descrivere una firma digitale come un codice che viene allegato a un messaggio o documento. Dopo essere stato generato, il codice agisce come prova che il messaggio non ha subito alterazioni lungo il suo percorso da mittente a destinatario.

Sebbene il concetto di protezione delle comunicazioni attraverso la crittografia risalga all'antichità, gli schemi di firma digitale sono diventati una realtà negli anni 70 - grazie allo sviluppo della Crittografia a Chiave Pubblica (PKC). Quindi, per capire come funzionano le firme digitali, dobbiamo prima comprendere le basi delle funzioni di hash e della crittografia a chiave pubblica.


Funzioni di hash

L'hashing è uno degli elementi fondamentali di ogni sistema di firma digitale. Il processo di hashing comporta la trasformazione di dati di qualsiasi dimensione in output a dimensione fissa. Questo avviene attraverso una tipologia speciale di algoritmi conosciuti come funzioni di hash. L'output generato da una funzione di hash è conosciuto come il valore di hash o message digest.
Quando combinate con la crittografia, le cosiddette funzioni crittografiche di hash possono essere usate per generare un valore di hash (digest) che funge da impronta digitale unica. Questo significa che qualsiasi modifica ai dati di input (messaggio) risulterebbe in un output (valore di hash) completamente differente. Questo è il motivo per cui le funzioni crittografiche di hash sono ampiamente utilizzate per verificare l'autenticità di dati digitali.


Crittografia a chiave pubblica (PKC)

La crittografia a chiave pubblica, o PKC, si riferisce a un sistema crittografico che si serve di una coppia di chiavi: una chiave pubblica e una chiave privata. Le due chiavi sono matematicamente correlate e possono essere usate sia per la cifratura di dati che per le firme digitali.

Come strumento di cifratura, la PKC è più sicura rispetto ai metodi più rudimentali della cifratura simmetrica. Mentre i sistemi più vecchi si basano sulla stessa chiave per cifrare e decifrare le informazioni, la PKC permette la cifratura dei dati tramite la chiave pubblica e la decifratura dei dati con la corrispondente chiave privata.

Inoltre, lo schema PKC può essere applicato nella generazione di firme digitali. In pratica, il processo consiste nell'hashing di un messaggio (o dati digitali) insieme alla chiave privata del firmatario. In seguito, il destinatario del messaggio può verificare che la firma sia valida usando la chiave pubblica fornita dal firmatario.

In alcune situazioni, le firme digitali possono comportare la cifratura, ma non è sempre così. Per esempio, la blockchain di Bitcoin utilizza la PKC e le firme digitali, ma a differenza di ciò che si tende a credere, non avviene nessuna cifratura nel processo. Tecnicamente, Bitcoin sfrutta il cosiddetto Elliptic Curve Digital Signature Algorithm (ECDSA) per autenticare le transazioni.


Come funzionano le firme digitali

Nel contesto delle criptovalute, un sistema di firma digitale è spesso composto da tre fasi fondamentali: hashing, firma e verifica.

Hashing dei dati

La prima fase consiste nel generare la hash del messaggio o dei dati digitali. Questo avviene passando i dati attraverso un algoritmo di hashing per produrre un valore di hash (ovvero il message digest). Come già menzionato, le dimensioni dei messaggi possono variare notevolmente, ma dopo l'hashing tutti i valori di hash hanno la stessa lunghezza. Questa è la proprietà più essenziale di una funzione di hash.

Tuttavia, l'hashing dei dati non è strettamente necessario per produrre una firma digitale, in quanto è possibile usare una chiave privata per firmare un messaggio che non è stato sottoposto ad hashing. Per le criptovalute, i dati vengono sempre sottoposti ad hashing per generare digest a lunghezza fissa che permettono di facilitare l'intero processo.

Firma

Dopo l'hashing delle informazioni, il mittente del messaggio deve firmarlo. Questo è il passaggio in cui la crittografia a chiave pubblica entra in gioco. Ci sono diversi tipi di algoritmi di firma digitale, ognuno con un meccanismo particolare. Essenzialmente, però, l'hash del messaggio viene firmato con una chiave privata, e il ricevente del messaggio può verificarne la validità usando la corrispondente chiave pubblica (fornita dal firmatario).

In altre parole, se la chiave privata non è inclusa quando la firma viene generata, il ricevente del messaggio non sarà in grado di usare la corrispondente chiave pubblica per verificarne la validità. Sia la chiave pubblica che quella privata sono generate dal mittente del messaggio, ma solo la chiave pubblica viene condivisa con il ricevente.

E' importante notare che le firme digitali sono direttamente correlate al contenuto di ciascun messaggio. Quindi, a differenza delle firme scritte a mano, che tendono ad essere uguali a prescindere dal messaggio, ogni messaggio firmato digitalmente avrà una firma digitale diversa.

Verifica

Facciamo un esempio per illustrare l'intero processo fino alla fase finale della verifica. Supponiamo che Alice scriva un messaggio a Bob, ne generi l'hash e combini il valore di hash con la sua chiave privata per generare una firma digitale. La firma agirà da impronta digitale unica per quel particolare messaggio.

Quando Bob riceve il messaggio, può verificare la validità della firma digitale usando la chiave pubblica fornita da Alice. In questo modo, Bob può essere certo che la firma è stata creata da Alice in quanto solo lei ha la chiave privata che corrisponde a quella chiave pubblica (o almeno questo è quello che ci aspettiamo).

Quindi, è cruciale che Alice mantenga la sua chiave privata in segreto. Se un'altra persona riesce a mettere le mani sulla chiave privata di Alice, può creare firme digitali e fingere di essere Alice. Nel contesto di Bitcoin, questo significa che qualcuno potrebbe usare la chiave privata di Alice per spostare o spendere i suoi bitcoin senza il suo permesso.


Qual è l'importanza delle firme digitali?

Le firme digitali vengono spesso usate per ottenere tre risultati: integrità dei dati, autenticità e non disconoscibilità.

  • Integrità dei dati. Bob può verificare che il messaggio di Alice non è stato alterato lungo il suo percorso. Qualsiasi modifica al messaggio produrrebbe una firma completamente diversa.
  • Autenticità. Finché Alice conserva la sua chiave privata in segreto, Bob può usare la chiave pubblica per confermare che le firme digitali sono state create da Alice e nessun altro.
  • Non disconoscibilità. Una volta che la firma è stata generata, Alice non potrà in futuro negare di avere firmato, a meno che la sua chiave privata venga compromessa in qualche modo.


Casi d'uso

Le firme digitali possono essere applicate a varie tipologie di documenti e certificati digitali. Di conseguenza, hanno diverse applicazioni. Alcuni dei casi d'uso più comuni includono:  

  • Informatica. Per migliorare la sicurezza dei sistemi di comunicazione su Internet.
  • Finanza. Le firme digitali possono essere implementate su audit, rapporti di spesa, contratti di prestito e tanto altro.
  • Legale. Firma digitale di ogni sorta di contratti commerciali e accordi legali, compresi documenti governativi.
  • Sanità. Le firme digitali pososno prevenire frodi di ricette mediche e cartelle cliniche.
  • Blockchain. Gli schemi di firma digitale garantiscono che solo i legittimi proprietari delle criptovalute possono firmare una transazione e spostare i fondi (purché le loro chiavi private non vengano compromesse).


Limiti

Le sfide principali affrontate dai sistemi di firma digitale si basano su almeno tre requisiti: 

  • Algoritmo. La qualità degli algoritmi utilizzati in uno schema di firma digitale è importante. Questo include la scelta di funzioni di hash e sistemi crittografici affidabili.
  • Implementazione. Se gli algoritmi sono validi, ma l'implementazione non lo è, il sistema di firma digitale presenterà probabilmente dei difetti.
  • Chiave Privata. Se le chiavi private vengono diffuse o compromesse in qualche modo, le proprietà di autenticità e non disconoscibilità saranno invalidate. Per gli utenti di criptovalute, perdere una chiave privata potrebbe risultare in perdite finanziarie significative.


Firme elettroniche vs. firme digitali

In poche parole, le firme digitali sono un tipo particolare di firme elettroniche - le quali si riferiscono a qualsiasi metodo elettronico per firmare documenti e messaggi. Quindi, tutte le firme digitali sono firme elettroniche, ma il contrario non è sempre vero.

La differenza centrale tra le due categorie è il metodo di autenticazione. Le firme digitali utilizzano sistemi crittografici, come funzioni di hash, crittografia a chiave pubblica e tecniche di cifratura.


In chiusura

Le funzioni di hash e la crittogafia a chiave pubblica sono alla base dei sistemi di firma digitale, i quali vengono applicati a una vasta gamma di casi d'uso. Se implementate correttamente, le firme digitali possono migliorare la sicurezza, garantire l'integrità e facilitare l'autenticazione di ogni genere di dati digitali.

Nel campo della blockchain, le firme digitali vengono usate per firmare e autorizzare transazioni di criptovalute. Sono particolarmente importanti per Bitcoin in quanto le firme garantiscono che le monete possono essere spese solo dagli individui che possiedono le chiavi private corrispondenti.

Anche se utilizziamo le firme elettroniche e digitali ormai da anni, c'è ancora un ampio margine di crescita. Gran parte della burocrazia di oggi si basa ancora su documenti cartacei, ma probabilmente assisteremo a una maggiore adozione degli schemi di firma digitale man mano che migriamo verso un sistema più digitalizzato.