La firma digitale è un meccanismo crittografico che garantisce tre proprietà fondamentali per un documento digitale: autenticità (il documento proviene dal titolare della chiave privata), integrità (il documento non è stato modificato dopo la firma) e non ripudio (il firmatario non può negare di aver firmato). Non è l’equivalente digitale di una firma autografa scannerizzata — è una costruzione matematica ben precisa che fornisce garanzie crittograficamente verificabili.
Schema generale
Una firma digitale è costruita combinando una funzione hash crittografica con la crittografia asimmetrica:
Firma:
Il firmatario calcola l’hash del documento e lo cifra con la propria chiave privata . Il documento viene distribuito insieme alla firma e alla chiave pubblica (o a un certificato che la contiene).
Verifica:
Il verificatore decifra la firma con la chiave pubblica, ottenendo il digest originale, e lo confronta con l’hash ricalcolato del documento ricevuto. Se coincidono, il documento è autentico e integro.
Non si firma il documento intero ma il suo hash perché la crittografia asimmetrica è lenta: firmare un hash di 32 byte (SHA-256) è efficiente anche per documenti di terabyte.
Algoritmi principali
RSA-PKCS1v1.5 e RSA-PSS: basati sulla difficoltà della fattorizzazione. RSA-PSS (con padding probabilistico) è più sicuro di PKCS1v1.5 e raccomandato per nuovi sistemi. Chiavi da 2048 bit (minimo) o 3072/4096 bit per sicurezza a lungo termine.
ECDSA (Elliptic Curve Digital Signature Algorithm, FIPS 186-5): basato sulla difficoltà del logaritmo discreto su curve ellittiche. Offre la stessa sicurezza di RSA con chiavi molto più corte (256 bit ≈ RSA 3072 bit). Usato nei certificati TLS moderni, in Bitcoin e Ethereum. Richiede un nonce casuale e unico per ogni firma: il riuso di rivela la chiave privata (vulnerabilità sfruttata per estrarre la chiave privata di Sony PlayStation 3 nel 2010).
EdDSA / Ed25519 (RFC 8032): basato sulla curva di Edwards twisted Curve25519. Elimina la dipendenza da un nonce esterno casuale (il nonce è derivato deterministicamente dall’hash del messaggio e della chiave privata), rendendo impossibile il bug del nonce riusato di ECDSA. Velocissimo, sicuro, preferito per nuovi protocolli (SSH, TLS 1.3, Signal).
Applicazioni
Le firme digitali sono fondamentali in: certificati X.509 (la CA firma il certificato del server, attestandone l’identità — base di tutta la PKI e HTTPS); aggiornamenti software (ogni aggiornamento è firmato con la chiave privata del vendor — il sistema verifica la firma prima di installare, impedendo la distribuzione di aggiornamenti malevoli); git commit signing (i commit possono essere firmati con GPG o SSH per autenticare l’autore); contratti elettronici e fatturazione elettronica (valore legale in UE tramite eIDAS); code signing per eseguibili Windows e macOS.
Firma digitale vs. firma elettronica
In ambito legale europeo (eIDAS), la firma elettronica qualificata è l’unica equiparata alla firma autografa: richiede un certificato qualificato emesso da un prestatore di servizi fiduciari qualificato (QTSP) e un dispositivo sicuro di creazione della firma (smart card, HSM). La firma digitale crittografica è la tecnologia sottostante, ma il riconoscimento legale dipende dal quadro normativo.