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 scritte a mano, ma con livelli più elevati di complessità e sicurezza.
Per semplificare, possiamo descrivere una firma digitale come un codice allegato a un messaggio o a un documento. Dopo essere stato generato, il codice serve come prova che il messaggio non è stato manomesso in alcun modo tra mittente e destinatario.
Sebbene il concetto di proteggere le comunicazioni utilizzando la crittografia risalga a molto tempo fa nella storia umana, i sistemi di firma digitale sono diventati realtà negli anni '70, grazie allo sviluppo della crittografia a chiave pubblica (PKC). Per sapere come funzionano le firme digitali, dobbiamo prima comprendere le basi delle funzioni hash e della crittografia a chiave pubblica.
Funzioni hash
L'Hash costituisce uno degli elementi principali di un sistema di firma digitale. Il processo di hashing prevede la trasformazione di dati di qualsiasi dimensione in un output con dimensioni predeterminate. Ciò si ottiene con un tipo speciale di algoritmo noto come funzione hash. L'output generato da una funzione hash è noto come valore hash o impronta digitale.
Se combinata con la crittografia, la funzione hash crittografico può essere utilizzata per generare un valore hash (impronta digitale) che funge da impronta digitale univoca. Ciò significa che qualsiasi modifica nei dati di input (messaggio) comporterebbe un output completamente diverso (valore hash). 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 di crittografia che utilizza 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 rispetto ai 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 una chiave pubblica e la decrittografia di tali 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 prevede l'hashing di un messaggio (o di dati digitali) con la chiave privata del firmatario. Quindi, il destinatario del messaggio può verificare se la firma è valida utilizzando la chiave pubblica fornita dal firmatario.
In alcune situazioni, le firme digitali possono includere la crittografia, ma non è sempre così. Ad esempio, la blockchain di Bitcoin utilizza PKC e firme digitali, ma contrariamente a quanto molte persone tendono a credere, non esiste alcuna crittografia nel processo. Tecnicamente, Bitcoin utilizza l’algoritmo di firma digitale della 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 è l'hashing del messaggio o dei dati digitali. Quest'ultimo si ottiene sottoponendo i dati a un algoritmo di hashing in modo da generare un valore hash (ovvero un riepilogo 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 dimensione. Questa è la proprietà fondamentale di una funzione hash.
Tuttavia, l'hashing dei dati non è una condizione obbligatoria per produrre una firma digitale, poiché una chiave privata può essere utilizzata per firmare un messaggio senza che sia stato sottoposto ad hashing. Per quanto riguarda le criptovalute, i dati vengono sistematicamente sottoposti ad hashing perché la manipolazione delle impronte digitali la cui dimensione è fissa e invariabile facilita il processo.
Firma
Dopo aver sottoposto ad hashing le informazioni, il mittente del messaggio deve firmarlo. È qui che entra in gioco la crittografia a chiave pubblica. Esistono diversi tipi di algoritmi di firma digitale, ciascuno con il proprio meccanismo. Ma in generale, 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).
Cioè, se la chiave privata non viene inclusa al momento della generazione della firma, il destinatario del messaggio non potrà utilizzare la chiave pubblica corrispondente per verificarne la validità. Le chiavi pubblica e privata vengono generate dal mittente del messaggio, ma solo la chiave pubblica viene condivisa con il destinatario.
È importante notare che le firme digitali sono direttamente collegate al contenuto di ciascun messaggio. Quindi, a differenza delle firme autografe, che tendono ad essere sistematicamente le stesse indipendentemente dal messaggio a cui sono allegate, ogni messaggio firmato digitalmente avrà una firma digitale diversa.
Verifica
Facciamo un esempio per illustrare l'intero processo fino allo step di verifica finale. 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 per 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é è l'unica a possedere la chiave privata che corrisponde a questa chiave pubblica (almeno questo è quello che Bob si aspetta).
Quindi è fondamentale per Alice mantenere segreta la sua chiave privata. Se qualcun altro mette le mani sulla chiave privata di Alice, quella persona sarà in grado di 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 tre scopi raggiunti dalle loro proprietà: integrità dei dati, autenticazione e non ripudio.
Integrità dei dati. Bob può verificare che il messaggio di Alice non sia stato modificato tra l'invio e la ricezione. Qualsiasi modifica al 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à negare di averla applicata in futuro, 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, per migliorare la sicurezza dei sistemi di comunicazione su Internet.
Finanza. Le firme digitali possono essere implementate per audit, note spese, contratti di prestito e altro ancora.
Il legale. Firma digitale di tutti i tipi di contratti business-to-business e accordi legali. Lo stesso vale per i documenti governativi.
Previdenza sociale. Le firme digitali possono fungere da prevenzione contro le frodi su prescrizioni e cartelle cliniche.
Blockchain. Le firme digitali garantiscono che solo il legittimo proprietario dei fondi sia in grado di firmare una transazione (a condizione che le sue chiavi private non siano compromesse).
Restrizioni
Le principali sfide che i sistemi di firma digitale devono affrontare dipendono da almeno tre requisiti:
L'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 compromesse in qualsiasi modo, 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 breve, le firme digitali sono un tipo speciale di firma elettronica, che si riferisce a qualsiasi metodo elettronico per firmare un documento o un messaggio. Pertanto, tutte le firme digitali sono firme elettroniche, ma non è sistematicamente vero il contrario.
La differenza principale tra loro è il metodo di autenticazione. Le firme digitali utilizzano sistemi crittografici, come funzioni hash, crittografia a chiave pubblica e tecniche di crittografia.
Concludere
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.
Nella 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 da individui che dispongono delle corrispondenti chiavi private.
Sebbene siano utilizzate da anni, c’è ancora molto da fare nel campo delle firme digitali ed elettroniche. Gran parte della burocrazia odierna fa ancora affidamento sull'uso della carta, ma è probabile che assisteremo a un'adozione diffusa delle firme digitali man mano che ci muoviamo verso una società sempre più digitalizzata.

