Firma digitale spiegata semplice: hash, chiave privata e verifica
Guida semplice alla firma digitale: perché non è una firma scannerizzata, come funzionano hash, chiave privata, chiave pubblica, integrità, autenticità e verifica.
Capire la firma digitale è importante perché sempre più attività che un tempo facevamo su carta oggi passano attraverso documenti informatici: contratti, dichiarazioni, pratiche amministrative, comunicazioni aziendali, moduli, approvazioni e documenti tecnici.
Quando il documento è cartaceo, siamo abituati a ragionare con strumenti molto concreti: la penna, la firma autografa, il timbro, il sigillo, la copia originale. Nel mondo digitale, invece, tutto diventa meno visibile. Un file può essere copiato, modificato, rinominato, inviato e duplicato in pochi secondi.
Da qui nasce una domanda fondamentale: come faccio a fidarmi di un documento digitale?
Come faccio a sapere chi lo ha firmato davvero? Come faccio a sapere se il contenuto è rimasto identico dopo la firma? Come posso evitare di confondere una firma valida con una semplice immagine incollata dentro un PDF?
La firma digitale nasce proprio per rispondere a queste domande. Non è una firma disegnata meglio, non è una scansione della nostra firma, non è una foto della firma autografa. È un meccanismo tecnico basato su crittografia asimmetrica, hash, chiave privata, chiave pubblica e verifica.
L’obiettivo di questa guida è spiegare la firma digitale in modo semplice, partendo dal problema reale e arrivando al meccanismo tecnico che permette di controllare autenticità e integrità di un documento.
Firma digitale: l’equivoco più comune
L’errore più comune è pensare che firmare digitalmente significhi inserire l’immagine della propria firma in un documento.
Il ragionamento sembra naturale: firmo un foglio con la penna, scansiono la firma, la salvo come immagine e poi la inserisco dentro un PDF. Oppure firmo su uno schermo con il dito o con una penna digitale e il programma mette una firma grafica in fondo al documento.
Dal punto di vista visivo sembra una firma. Il documento è digitale. Quindi viene spontaneo chiamarla “firma digitale”. Ma tecnicamente non è questo il punto.
Un’immagine può essere copiata. Una firma scannerizzata può essere ritagliata, incollata su un altro file, riutilizzata, spostata o applicata a un documento diverso. Può dare un’impressione visiva di approvazione, ma non crea da sola un legame tecnico forte tra il firmatario e il contenuto del documento.
Il problema non è solo estetico. Il problema è di fiducia.
Se ricevo un PDF con dentro una firma grafica, posso vedere che c’è una firma, ma non ho automaticamente una prova tecnica che quella persona abbia firmato proprio quel documento. E non ho automaticamente la certezza che il documento non sia stato modificato dopo l’inserimento dell’immagine.
La firma digitale, invece, funziona in modo diverso. Non si limita a mostrare un segno grafico. Produce un’informazione verificabile, collegata al documento e alla chiave del firmatario.
Questa è la prima distinzione da tenere a mente:
firma scannerizzata → elemento visivo
firma digitale → meccanismo crittografico verificabile
La firma scannerizzata si guarda con gli occhi. La firma digitale si verifica con un software.
Il problema da risolvere nel mondo digitale
Nel mondo fisico, un documento cartaceo ha alcune caratteristiche che ci aiutano a ragionare sulla sua autenticità. Possiamo guardare la carta, la firma, il timbro, eventuali segni di alterazione, la presenza di un originale o di una copia conforme.
Naturalmente anche nel mondo fisico esistono falsificazioni. Una firma può essere imitata, un documento può essere manomesso, un timbro può essere riprodotto. Però la modifica di un documento cartaceo spesso lascia tracce visibili o comunque richiede un intervento materiale.
Nel mondo digitale lo scenario cambia.
Un file può essere copiato infinite volte senza perdere qualità. Un documento può essere modificato in modo quasi invisibile. Una cifra può cambiare da 1.000 euro a 9.000 euro. Una clausola può essere aggiunta. Una parola può essere rimossa. Un allegato può essere sostituito.
A occhio nudo, soprattutto su documenti lunghi, può essere difficile accorgersi di una piccola modifica.
Per questo la domanda diventa:
come posso sapere se il documento che sto leggendo
è esattamente quello che è stato firmato?
E subito dopo:
come posso sapere chi lo ha firmato?
La firma digitale deve rispondere a entrambe le domande. Deve collegare il documento a un soggetto e deve permettere di scoprire se il contenuto è stato modificato.
Le tre garanzie della firma digitale
Una firma digitale deve garantire tre proprietà fondamentali: autenticità, integrità e non ripudio.
La prima proprietà è l’autenticità.
Autenticità significa che la firma deve essere riconducibile a un soggetto preciso. Non basta vedere un nome scritto in fondo a un documento. Serve un meccanismo che permetta di collegare quella firma a un’identità.
La seconda proprietà è l’integrità.
Integrità significa che il documento non deve essere stato modificato dopo la firma. Questo è un punto essenziale. Una firma non deve continuare a risultare valida se il contenuto del documento è stato cambiato.
Se firmo un documento con un certo testo, quella firma deve valere per quel contenuto. Se qualcuno cambia anche solo una cifra o una parola, la verifica deve accorgersene.
La terza proprietà è il non ripudio.
Non ripudio significa che chi ha firmato non può disconoscere facilmente la firma. Nella realtà possono esistere casi particolari, contestazioni, furto di credenziali o problemi procedurali. Però il principio è che una firma digitale correttamente apposta e verificata crea un legame forte tra il firmatario e il documento.
Quindi possiamo riassumere così:
| Garanzia | Domanda a cui risponde |
|---|---|
| Autenticità | Chi ha firmato? |
| Integrità | Il documento è rimasto identico dopo la firma? |
| Non ripudio | Il firmatario può negare facilmente la firma? |
Queste tre parole sono il centro del discorso. Tutto il meccanismo tecnico serve a produrre queste garanzie.
Il cuore tecnico: la crittografia asimmetrica
Per capire la firma digitale dobbiamo introdurre un concetto fondamentale: crittografia asimmetrica.
Nella crittografia asimmetrica non abbiamo una sola chiave, ma una coppia di chiavi:
chiave privata
chiave pubblica
La chiave privata deve rimanere sotto il controllo del titolare. È lo strumento usato per firmare. Deve essere protetta, custodita e usata con attenzione.
La chiave pubblica, invece, può essere distribuita. Serve agli altri per verificare la firma.
Questa idea può sembrare poco intuitiva all’inizio. Siamo abituati a pensare a una chiave come a qualcosa che apre e chiude. Qui, invece, abbiamo due chiavi matematicamente collegate: una viene usata per produrre la firma, l’altra per verificarla.
Il punto importante è questo:
quello che viene firmato con la chiave privata
può essere verificato con la chiave pubblica corrispondente
La chiave pubblica non permette di firmare al posto del titolare. Serve a controllare che una firma sia compatibile con la chiave privata collegata.
Questa separazione è alla base della firma digitale. Il firmatario custodisce la chiave privata. Chi riceve il documento può usare la chiave pubblica per fare la verifica.
Prima della firma: l’hash del documento
Prima ancora di parlare di firma, dobbiamo parlare di hash.
Un hash è una specie di impronta digitale del file. Tecnicamente è una stringa derivata dal contenuto del documento attraverso una funzione matematica.
L’idea è semplice: prendo un documento, applico una funzione di hash e ottengo una stringa.
documento → funzione hash → impronta
Questa impronta dipende dal contenuto del documento. Se il documento cambia, anche di pochissimo, l’hash cambia.
Questo comportamento è fondamentale per la firma digitale.
Immaginiamo due documenti quasi identici:
Contratto di fornitura - importo 1.000 euro
Contratto di fornitura - importo 9.000 euro
A occhio cambia una sola cifra. Per una persona il documento può sembrare quasi uguale. Per una funzione di hash, invece, sono due contenuti completamente diversi.
Questo ci permette di controllare l’integrità.
Se conosco l’impronta di un documento e qualcuno modifica il documento, anche l’impronta cambia. Quindi posso accorgermi che il file non è più quello di prima.
Una piccola demo con sha256sum
Per capire l’idea possiamo fare una piccola demo da terminale usando sha256sum.
Creiamo un file di esempio:
echo "Contratto di fornitura - importo 1000 euro" > contratto.txt
Calcoliamo l’hash:
sha256sum contratto.txt
Il comando restituisce una stringa lunga. Quella stringa è l’impronta del file.
Ora modifichiamo una sola cifra:
echo "Contratto di fornitura - importo 9000 euro" > contratto.txt
sha256sum contratto.txt
Il testo sembra quasi uguale. Abbiamo cambiato solo l’importo. Ma l’hash cambia completamente.
Questa demo non è ancora una firma digitale. È solo un modo pratico per vedere il concetto di impronta.
La firma digitale userà proprio questa logica: se il documento cambia, cambia l’impronta; se cambia l’impronta, la verifica della firma non torna più.
Cosa viene firmato davvero
Un altro punto importante è capire che, nella firma digitale, di solito non si firma direttamente “la carta” o l’intero documento nel senso intuitivo del termine.
Il processo è più raffinato.
In forma semplificata, il sistema fa questo:
- prende il documento;
- calcola l’hash del documento;
- firma l’hash con la chiave privata;
- produce una firma digitale collegata al documento.
Quindi possiamo dire che la firma digitale firma l’impronta del documento.
Questo è un passaggio centrale. La firma è legata al contenuto perché l’hash è derivato dal contenuto. Se il contenuto cambia, l’hash cambia. Se l’hash cambia, la firma non corrisponde più.
Il documento può rimanere leggibile. La firma è un’informazione aggiuntiva, associata al documento.
A seconda del formato, la firma può essere incorporata nel file oppure può essere contenuta in una struttura separata. Per esempio, nella pratica italiana si incontrano spesso file firmati in formato .p7m, oppure PDF con firma in formato PAdES. Questi aspetti pratici meritano un discorso dedicato, ma il principio di base rimane lo stesso: documento, impronta, chiave privata, verifica.
Come nasce una firma digitale
Immaginiamo Alice che deve firmare un documento.
Alice ha un documento digitale. Il sistema calcola l’hash del documento. Poi usa la chiave privata di Alice per produrre la firma digitale.
Il risultato non è soltanto un documento con un disegno in fondo. Il risultato è un documento associato a un’informazione crittografica verificabile.
Possiamo rappresentare il processo così:
Documento → Hash → Chiave privata → Firma digitale
Questa firma è collegata sia al documento sia alla chiave privata del titolare.
Se il documento viene modificato dopo la firma, l’hash del documento modificato non sarà più quello originario. Di conseguenza, la verifica fallirà.
Se qualcuno prova a copiare la firma e ad applicarla a un altro documento, anche in quel caso il controllo non torna. La firma era stata prodotta sull’impronta di un documento specifico, non su un contenuto qualsiasi.
Questo è il motivo per cui la firma digitale è molto diversa da una firma scannerizzata.
Una firma scannerizzata può essere copiata da un documento all’altro. Una firma digitale è legata al contenuto.
Come si verifica una firma digitale
Ora guardiamo il processo dal punto di vista di chi riceve il documento.
Bob riceve un documento firmato digitalmente. Il suo software di verifica deve fare alcuni controlli.
Prima di tutto ricalcola l’hash del documento ricevuto. Poi usa la chiave pubblica del firmatario per verificare che la firma corrisponda a quell’hash. Infine controlla anche gli elementi legati al certificato del firmatario.
In forma semplificata:
Documento ricevuto → nuovo hash → verifica con chiave pubblica → esito
Se tutto torna, significa che il documento è integro e che la firma è coerente con la chiave pubblica del firmatario.
Se qualcosa non torna, la firma risulta non valida oppure il software segnala un problema.
Questo è il motivo per cui non basta aprire un documento e guardarlo. Un documento firmato digitalmente deve essere verificato. La verifica non è un atto visivo, ma un controllo tecnico.
Naturalmente nella pratica entrano in gioco anche altri aspetti: il certificato può essere scaduto, revocato o non riconosciuto; il formato della firma può richiedere un software adeguato; la marca temporale può avere un ruolo in alcuni contesti.
Ma il primo livello concettuale resta quello visto finora: il sistema controlla che il documento ricevuto corrisponda alla firma apposta.
Cosa succede se il documento cambia
La firma digitale non impedisce tecnicamente di modificare un file.
Questo punto è importante. Un file può essere copiato, aperto, modificato, salvato o alterato con strumenti diversi. La firma digitale non crea una barriera fisica che impedisce ogni modifica.
Quello che fa è diverso e, per certi versi, ancora più importante: permette di scoprire che il documento è stato modificato.
Se qualcuno cambia il documento dopo la firma, cambia l’hash. Se cambia l’hash, la firma non corrisponde più. Se la firma non corrisponde più, la verifica fallisce.
Quindi la firma digitale non dice:
questo file non può essere modificato
Dice piuttosto:
se questo file viene modificato, me ne accorgo
Questa è la garanzia di integrità.
Possiamo fare un’altra piccola demo concettuale con sha256sum:
echo "Io sottoscritto approvo il documento" > documento.txt
sha256sum documento.txt
Poi cambiamo il contenuto:
echo "Io sottoscritto NON approvo il documento" > documento.txt
sha256sum documento.txt
A livello umano abbiamo aggiunto una parola decisiva. A livello tecnico abbiamo cambiato l’impronta del file.
Una firma digitale apposta prima della modifica non potrebbe più verificare correttamente il documento modificato.
Firmare e cifrare non sono la stessa cosa
Un’altra confusione molto comune riguarda firma e cifratura.
Firmare e cifrare non sono la stessa operazione.
Firmare serve a dimostrare chi ha firmato e che il documento non è stato modificato dopo la firma.
Cifrare serve a nascondere il contenuto a chi non è autorizzato a leggerlo.
Un documento firmato può essere perfettamente leggibile. Posso aprirlo, leggerne il contenuto e verificare la firma.
Un documento cifrato, invece, non è leggibile senza la chiave corretta.
La differenza può essere riassunta così:
| Operazione | Obiettivo principale |
|---|---|
| Firma | Fiducia, identità, integrità |
| Cifratura | Riservatezza del contenuto |
Le due cose possono anche essere combinate. Posso firmare un documento e poi cifrarlo. Oppure posso cifrare una comunicazione e includere elementi firmati. Ma concettualmente sono operazioni diverse.
Questa distinzione è importante perché la firma digitale non nasce prima di tutto per nascondere un documento. Nasce per renderlo verificabile.
Dove entra il certificato digitale
Nel primo livello di spiegazione abbiamo parlato di chiave privata e chiave pubblica. Però nella vita reale serve anche un altro pezzo: il certificato digitale.
La domanda è semplice: se ricevo una chiave pubblica, come faccio a sapere a chi appartiene davvero?
La crittografia ci permette di collegare una firma a una coppia di chiavi. Ma serve un meccanismo per collegare quella coppia di chiavi a una persona o a un soggetto identificato.
Qui entrano in gioco i certificati digitali e i prestatori di servizi fiduciari.
In modo semplificato, un certificato digitale collega una chiave pubblica a un’identità. Quando il software verifica una firma, non controlla soltanto la coerenza matematica tra documento, firma e chiave. Controlla anche il certificato associato al firmatario.
Questo tema sarà centrale nella seconda parte, perché ci porta verso domande molto pratiche:
- chi garantisce l’identità del firmatario?
- cosa succede se un certificato è scaduto?
- cosa succede se un certificato è stato revocato?
- che differenza c’è tra firma digitale, PEC, SPID e firma scannerizzata?
- come si verifica una firma con strumenti reali?
In questa prima parte, però, è sufficiente fissare l’idea principale: la firma digitale si basa su un meccanismo tecnico, ma quel meccanismo deve essere collegato a un’identità tramite certificati.
Perché la firma digitale è affidabile
La firma digitale è affidabile perché non si basa su un’impressione visiva. Non ci chiede di guardare una firma e decidere se ci sembra autentica.
Si basa su controlli tecnici.
Il documento produce un hash. L’hash viene firmato con una chiave privata. La firma viene verificata con la chiave pubblica corrispondente. Il certificato collega quella chiave a un’identità. Se il documento cambia, la verifica non torna.
Questa catena di controlli permette di ottenere le tre garanzie che abbiamo visto all’inizio:
- autenticità;
- integrità;
- non ripudio.
La parte interessante è che questi concetti, pur sembrando teorici, hanno conseguenze molto pratiche.
Quando firmiamo digitalmente un contratto, una dichiarazione o un documento amministrativo, non stiamo semplicemente mettendo un’immagine in fondo a un PDF. Stiamo generando un collegamento tecnico tra il nostro certificato, la nostra chiave privata e l’impronta di quel documento.
Quando qualcuno verifica la firma, non sta semplicemente guardando se c’è una scritta. Sta controllando se quel collegamento è ancora valido.
Errori comuni sulla firma digitale
Quando si parla di firma digitale, alcuni equivoci sono molto frequenti.
Il primo errore è pensare che una firma scannerizzata sia equivalente a una firma digitale. Come abbiamo visto, non è così. Una firma scannerizzata è un’immagine; una firma digitale è un controllo crittografico.
Il secondo errore è pensare che un documento firmato digitalmente sia sempre segreto. Anche questo non è corretto. Un documento firmato può essere leggibile. La firma serve a verificarne origine e integrità. La riservatezza riguarda la cifratura.
Il terzo errore è pensare che la firma digitale impedisca fisicamente ogni modifica. In realtà un file può essere alterato, ma la modifica rende la firma non valida o comunque non coerente con il documento originario.
Il quarto errore è non verificare la firma. Ricevere un documento firmato non basta: bisogna controllare l’esito della verifica con strumenti adeguati.
Il quinto errore è ignorare il ruolo del certificato. La chiave pubblica deve essere collegata a un’identità e il certificato deve essere valutato dal software di verifica.
Il sesto errore è confondere strumenti diversi. Firma digitale, PEC, SPID, marca temporale e scansione della firma rispondono a esigenze diverse. Possono convivere, ma non sono la stessa cosa.
Firma digitale spiegata semplice: riepilogo
La firma digitale serve a rendere verificabile un documento informatico.
Non è l’immagine della firma dentro un PDF. Non è una firma scannerizzata. Non è un elemento grafico da guardare a occhio.
È un meccanismo tecnico basato su crittografia asimmetrica, hash, chiave privata, chiave pubblica e certificati digitali.
Il documento viene trasformato in un’impronta, cioè in un hash. Questa impronta viene firmata con la chiave privata del titolare. Chi riceve il documento può verificare la firma usando la chiave pubblica corrispondente e controllando il certificato.
Se il documento viene modificato dopo la firma, l’hash cambia e la verifica non torna più.
Le tre garanzie principali sono:
autenticità → chi ha firmato
integrità → il documento non è cambiato
non ripudio → il firmatario non può disconoscere facilmente la firma
La firma digitale non serve necessariamente a nascondere il contenuto. Quello è il ruolo della cifratura. La firma serve prima di tutto a rendere il documento affidabile e verificabile.
Quando si capisce questo meccanismo, la firma digitale smette di essere un concetto burocratico e diventa una tecnologia molto concreta: uno strumento per portare nel mondo digitale alcune garanzie che nel mondo fisico associavamo a carta, penna, timbri e originali.
Prossimo passo: certificati, PEC, SPID e verifica pratica
In questa prima parte abbiamo costruito la base tecnica: documento, hash, chiave privata, chiave pubblica e verifica.
Nel prossimo episodio entreremo nella parte più pratica.
Vedremo chi garantisce l’identità del firmatario, che cosa sono i certificati digitali, quale ruolo hanno le Certification Authority e i prestatori di servizi fiduciari, che differenza c’è tra firma digitale, PEC, SPID e firma scannerizzata.
Faremo anche una demo più tecnica con OpenSSL, per vedere da vicino cosa significa generare una chiave, firmare un contenuto e verificarlo.
Il punto di partenza, però, è quello visto in questa guida: la firma digitale è un meccanismo di fiducia costruito su una base tecnica precisa.
Prima capiamo questa base, poi diventa molto più semplice capire anche gli strumenti pratici che usiamo ogni giorno.
Ti interessano tutorial su programmazione, sviluppo web, Linux, sicurezza, sistemi operativi e software open source? Iscriviti al canale YouTube:
https://www.youtube.com/@scrivocodice?sub_confirmation=1
Puoi seguire i nostri corsi su Udemy:
https://www.udemy.com/user/scrivocodice/
Seguici anche qui: