Firma digitale GnuPG

Il programma GnuPG è un programma open source di crittografia a chiave pubblica che permette (tra le altre cose) di firmare in modo attendibile documenti elettronici, consentendo a chiunque di verificare se sono stati alterati da estranei.
Questo e` lo scopo con cui lo uso nelle mie pagine web, o nella posta elettronica.
Rimando a www.gnupg.org per ogni ulteriore approfondimento; qui si trova la documentazione, anche in italiano, e il programma, per vari sistemi operativi.

Cenni sull'uso

Descrivo invece in breve come si usa il programma per verificare una firma digitale.
Occorre (oltre al programma!) il file della mia chiave "pubblica" (le chiavi crittografiche GnuPG hanno una parte privata e una pubblica, vedi la documentazione GnuPG). Una volta che la si e` scaricata, la si "importa" nel programma con il comando (da prompt dei comandi)

gpg ––import da_public_key.gpg

Questa operazione va fatta una volta sola.

Quindi, avendo a disposizione il file voti.pdf, e la relativa firma digitale, voti.pdf.sig, la si verifica con

gpg ––verify voti.pdf.sig voti.pdf

Il programma emette sullo schermo una serie di informazioni tra cui, se tutto è in ordine,

gpg: Good signature from "Daniele Andreucci (mathematician) <andreucci@dmmm.uniroma1.it>"

A volte la firma è contenuta all'interno del file (come in alcuni messaggi di posta elettronica), per esempio messaggio.txt. Si noti che la sequenza di caratteri ASCII che segue il messaggio di per sé potrebbe essere stata creata a caso con qualunque editor di testi; solo il programma gpg può garantirne l'autenticità, che si verifica con

gpg ––verify messaggio.txt

L'ultimo tocco decisivo

Resta un problema: come verificare che la mia chiave pubblica sia proprio la mia e non sia stata alterata essa stessa? È chiaro che se esiste questa possibilità, la procedura descritta sopra diviene inaffidabile.
Dopo aver "importata" la chiave pubblica, eseguite

gpg ––fingerprint Andreucci

Il programma emette "Key fingerprint = " seguito da 10 gruppi di 4 caratteri alfanumerici ciascuno. Si può ritenere, se questi sono quelli corretti, che la chiave sia genuina.
Infine: come sapere se questi sono corretti? La soluzione più semplice è ottenerli direttamente da me. Per esempio posso comunicarli in sede di lezione o ricevimento studenti.