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

In termini semplici, possiamo descrivere una firma digitale come un codice allegato a un messaggio o documento. Una volta generato, il codice funge da prova che il messaggio non è stato manomesso nel suo percorso dal mittente al destinatario.

Sebbene il concetto di proteggere le comunicazioni utilizzando la crittografia risalga a tempi antichi, gli schemi di firma digitale sono diventati una realtà possibile negli anni '70, grazie allo sviluppo della crittografia a chiave pubblica (PKC). Quindi, per imparare come funzionano le firme digitali, dobbiamo prima comprendere le basi delle funzioni hash e della crittografia a chiave pubblica.


Funzioni hash

L’hashing è uno degli elementi fondamentali di un sistema di firma digitale. Il processo di hashing prevede la trasformazione di dati di qualsiasi dimensione in un output di dimensione fissa. Ciò viene fatto da un tipo speciale di algoritmi noti come funzioni hash. L'output generato da una funzione hash è noto come valore hash o digest del messaggio.

In combinazione con la crittografia, le cosiddette funzioni hash crittografiche possono essere utilizzate per generare un valore hash (digest) che funge da impronta digitale univoca. Ciò significa che qualsiasi modifica nei dati di input (messaggio) comporterebbe un output completamente diverso (valore hash). E questo è il motivo per cui le funzioni di hash crittografico sono ampiamente utilizzate per verificare l’autenticità dei dati digitali.


Crittografia a chiave pubblica (PKC)

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

Come strumento di crittografia, PKC è più sicuro dei metodi più rudimentali di crittografia simmetrica. Mentre i sistemi più vecchi si affidano alla stessa chiave per crittografare e decrittografare le informazioni, PKC consente la crittografia dei dati con la chiave pubblica e la decrittografia dei dati con la chiave privata corrispondente.

Oltre a ciò, lo schema PKC può essere applicato anche nella generazione di firme digitali. In sostanza, il processo consiste nell’hashing di un messaggio (o di dati digitali) insieme alla chiave privata del firmatario. Successivamente, il destinatario del messaggio può verificare se la firma è valida utilizzando la chiave pubblica fornita dal firmatario.

In alcune situazioni, le firme digitali possono comportare la crittografia, ma non è sempre così. Ad esempio, la blockchain di Bitcoin fa uso di PKC e firme digitali, ma a differenza di molti tendono a credere, non esiste alcuna crittografia nel processo. Tecnicamente, Bitcoin utilizza il cosiddetto algoritmo di firma digitale a curva ellittica (ECDSA) per autenticare le transazioni.


Come funzionano le firme digitali

Nel contesto delle criptovalute, un sistema di firma digitale spesso consiste di tre passaggi fondamentali: hashing, firma e verifica.

Hashing dei dati

Il primo passo è eseguire l'hashing del messaggio o dei dati digitali. Ciò viene fatto inviando i dati tramite un algoritmo di hashing in modo da generare un valore hash (ovvero il digest del messaggio). Come accennato, i messaggi possono variare in modo significativo in termini di dimensioni, ma quando vengono sottoposti ad hashing, tutti i relativi valori hash hanno la stessa lunghezza. Questa è la proprietà più elementare di una funzione hash.

Tuttavia, l’hashing dei dati non è obbligatorio per produrre una firma digitale perché è possibile utilizzare una chiave privata per firmare un messaggio su cui non è stato eseguito alcun hashing. Ma per le criptovalute, i dati vengono sempre sottoposti ad hashing perché gestire digest a lunghezza fissa facilita l’intero processo.

Firma

Dopo che le informazioni sono state sottoposte ad hashing, il mittente del messaggio deve firmarlo. Questo è il momento in cui entra in gioco la crittografia a chiave pubblica. Esistono diversi tipi di algoritmi di firma digitale, ciascuno con il proprio meccanismo particolare. Ma in sostanza, il messaggio con hash verrà firmato con una chiave privata e il destinatario del messaggio potrà quindi verificarne la validità utilizzando la chiave pubblica corrispondente (fornita dal firmatario).

In altre parole, se la chiave privata non viene inclusa al momento della generazione della firma, il destinatario del messaggio non sarà in grado di utilizzare la chiave pubblica corrispondente per verificarne la validità. Sia la chiave pubblica che quella privata vengono generate dal mittente del messaggio, ma solo la chiave pubblica viene condivisa con il destinatario.

Vale la pena 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 le stesse indipendentemente 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. Immagina che Alice scriva un messaggio a Bob, ne effettui l'hashing e quindi combini il valore hash con la sua chiave privata per generare una firma digitale. La firma funzionerà come un'impronta digitale unica di quel particolare messaggio.

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

Pertanto, è fondamentale per Alice mantenere segreta la sua chiave privata. Se un’altra persona mette le mani sulla chiave privata di Alice, può creare firme digitali e fingere di essere Alice. Nel contesto di Bitcoin, ciò significa che qualcuno potrebbe utilizzare la chiave privata di Alice per spostare o spendere i suoi Bitcoin senza il suo permesso.


Perché le firme digitali sono importanti?

Le firme digitali vengono spesso utilizzate per ottenere tre risultati: integrità dei dati, autenticazione e non ripudio.

  • Integrità dei dati. Bob può verificare che il messaggio di Alice non sia stato modificato nel corso del suo percorso. Qualsiasi modifica nel messaggio produrrebbe una firma completamente diversa.

  • Autenticità. Finché la chiave privata di Alice viene mantenuta segreta, Bob può utilizzare la sua chiave pubblica per confermare che le firme digitali sono state create da Alice e da nessun altro.

  • Non ripudio. Una volta generata la firma, Alice non potrà più negare di averla firmata, a meno che la sua chiave privata non venga in qualche modo compromessa.


Casi d'uso

Le firme digitali possono essere applicate a vari tipi di documenti e certificati digitali. In quanto tali, hanno diverse applicazioni. Alcuni dei casi d'uso più comuni includono:

  • Tecnologie dell'informazione. Migliorare la sicurezza dei sistemi di comunicazione Internet.

  • Finanza. Le firme digitali possono essere implementate per audit, note spese, contratti di prestito e molto altro.

  • Legale. Firma digitale di tutti i tipi di contratti commerciali e accordi legali, compresi i documenti governativi.

  • Assistenza sanitaria. Le firme digitali possono prevenire la frode di prescrizioni e cartelle cliniche.

  • Blockchain. Gli schemi di firma digitale garantiscono che solo i legittimi proprietari delle criptovalute siano in grado di firmare una transazione per spostare i fondi (a condizione che le loro chiavi private non siano compromesse).


Limitazioni

Le principali sfide 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. Ciò include la scelta di funzioni hash e sistemi crittografici affidabili.

  • Implementazione. Se gli algoritmi sono buoni, ma l’implementazione non lo è, il sistema di firma digitale probabilmente presenterà dei difetti.

  • Chiave privata. Se le chiavi private vengono divulgate o in qualche modo compromesse, le proprietà di autenticità e non ripudio verranno invalidate. Per gli utenti di criptovaluta, la perdita di una chiave privata può comportare perdite finanziarie significative.


Firme elettroniche e firme digitali

In poche parole, le firme digitali si riferiscono a un tipo particolare di firme elettroniche, che si riferiscono a qualsiasi metodo elettronico di firma di documenti e messaggi. Pertanto, tutte le firme digitali sono firme elettroniche, ma non è sempre vero il contrario.

La differenza principale tra loro è il metodo di autenticazione. Le firme digitali implementano sistemi crittografici, come funzioni hash, crittografia a chiave pubblica e tecniche di crittografia.


Pensieri conclusivi

Le funzioni hash e la crittografia a chiave pubblica sono al centro dei sistemi di firma digitale, che ora vengono applicati a un’ampia gamma di casi d’uso. Se implementate correttamente, le firme digitali possono aumentare la sicurezza, garantire l’integrità e facilitare l’autenticazione di tutti i tipi di dati digitali.

Nel regno della blockchain, le firme digitali vengono utilizzate per firmare e autorizzare le transazioni di criptovaluta. Sono particolarmente importanti per Bitcoin perché le firme garantiscono che le monete possano essere spese solo dalle persone che possiedono le corrispondenti chiavi private.

Sebbene utilizziamo sia la firma elettronica che quella digitale da anni, c’è ancora molto spazio di crescita. Gran parte della burocrazia odierna si basa ancora su pratiche burocratiche, ma probabilmente vedremo una maggiore adozione di schemi di firma digitale man mano che migreremo verso un sistema più digitalizzato.