GPG e crittografia dei documenti

Se voglio spedire un documento criptato al mio destinatario, usero’ la sua chiave pubblica per farlo.
Sempre dalla nostra beneamata linea di comando:

$ gpg –output thedoc.pgp –encrypt –recipient trusted@myfriends.net thedoc.rtf

–output nomefile specifica il nome del file criptato
–encrypt e’ l’opzione per cifrare
–recipient indirizzo_di_cui_possiedo_chiave_pubblica per specificare il destinatario del documento
nome_file_documento

Un file crittato con il comando riportato qui sopra sara’ possibile decrittarlo con

$ gpg –output thedoc –decrypt thedoc.gpg

–decrypt nome-file-crittato specifica il nome del file da decifrare
–output thedoc specifica il file su cui trasferire l’output (se viene omesso, il documento decifrato viene sparato su standard output)

Guardiamo
adesso ad un altro interessante aspetto: la firma digitale di un documento. Essa, oltre a certificare la provenienza del documento, ne fissa la data di ultima modifica; puo’ quindi venire utilizzata come strumento per scoprire eventuali manomissioni.
Al contrario di quello che avviene per la cifratura che abbiamo visto qui sopra, la
firma digitale si realizza utilizzando la chiave privata, e puo’ essere verificata da chi e’ in possesso della corrispondente chiave pubblica.

$ gpg –output thedoc.signed –sign thedoc

come al solito con l’opzione –output andiamo a specificare il file di destinazione (che sara’ il documento firmato) mentre thedoc e’ il documento originale da firmare

l’esecuzione di questo comando richiedera’ naturalmente la digitazione della passphrase; da notare che l’output (binario) sara’ compresso.

a questo punto si possono fare due cose col documento firmato:
1) verificare semplicemente l’autenticita’ della firma ($ gpg –verify thedoc.signed)
2) …anche estrarre il documento originale ($ gpg –decrypt thedoc.signed –output thedoc)

oltre alla firma digitale in formato binario appena vista, e’ possibile firmare i documenti in chiaro ($ gpg –clearsign $thedoc) che praticamente ingloba il documento originale in un blocco ASCII-armored senza modificarne il contenuto.

Se
altri utenti, come e’ molto frequente che avvenga, dovranno successivamente editare/firmare il documento, si utilizza la cosiddetta “firma distaccata”, che produce un nuovo file di firma legato pero’ strettamente al file originale (servono sia il documento primario che tutte le firme distaccate per poter verificare od estrarre il documento
originale, cio’ indipendentemente dal fatto che la firma sia stata fatta in chiaro o binaria).

il comando per generare una firma distaccata e’ : $ gpg –output thedoc.signed –detach-sig detf

per la verifica $ gpg –verify thedoc.signed detf (e’ come se il documento firmato e la firma distaccata fossero un tutt’uno ai fini della decifratura).
_
Vi rimando come sempre al Manuale GNU sulla privacy per un completo approfondimento.