Oct 292010
 

lock2Articolo originale di Maurizio Antonelli.

Nella parte precedente abbiamo presentato  alcuni concetti base di cifratura e fatto alcuni esempi su chiavi simmetriche ed asimettriche, abbiamo concluso dicendo che un buon metodo per ottenere un certificato a chiave asimettrica e’ GnuPG

GnuPG è multipiattaforma ed open-source. Si utilizza nativamente da linea di comando come una shell o il prompt di MS-DOS.

Non mancano tuttavia le intefaccine grafiche:

Enigmail è l’estensione per i programmi Mozilla. Contiene un tool grafico per la gestione delle chiavi.



Gnu Privacy Assistant (o GPA), Seahorse e Geheimnis sono diverse interfaccine open-source.

WinPT è il pacchetto per Windows; contiene, oltre GnuPG precompilato, anche un’interfaccia grafica ed il plugin per Outlook Express. Un’altra ottima interfaccia grafica per Windows è GPGshell.

Vediamo l’utilizzo principale di GnuPG da linea di comando.

Una volta che il programma è stato installato, la prima cosa da fare è creare un certificato digitale. Il comando sarà:

gpg --gen-key

Verranno richieste alcune informazioni personali: nome e cognome, e-mail ed eventuali commenti. Successivamente sarà possibile inserire nel certificato altri indirizzi e-mail; in questa fase limitiamoci a dare solo il principale.

Verrà richiesta la lunghezza della chiave desiderata; per avere la miglior sicurezza è sempre bene chiedere la lunghezza maggiore possibile.

Verrà poi chiesta una passphrase, una specie di password, che verrà richiesta ad ogni utilizzo della chiave privata. Questa è un’ulteriore sicurezza in più, tante volte la nostra chiave privata cada in mani di terzi.

Riguardo alla scelta della passphrase è sempre meglio rispettare le solite regolette: evitiamo le parole di senso compiuto, mischiare caratteri maiuscoli, caratteri minuscoli e cifre e dare sempre una passphrase di almeno 8 caratteri.

Possiamo poi esportare od importare le chiavi pubbliche di altri o addirittura le nostre chiavi; questo è utile ad esempio se si vuole utilizzare i certificati su più PC o su più sistemi operativi.

gpg --export -a nome_chiave-o-stringa_contenuta

Dando l’output in un file con “> nome_file.asc“ verrà scritta la chiave su di un file. L’opzione -a permette l’esportazione in ascii a 7 bit, invece che in un file binario. GnuPG riconoscerà la chiave richiesta anche da una semplice stringa contenuta nell’indirizzo e-mail o nel nome e cognome.

Le chiavi esportate su di un file potranno poi essere importate con

gpg --import file_name

La revoca di una chiave è importante se la chiave privata cadesse in mani altrui e quindi la sicurezza ad essa collegata fosse compromessa.

Conviene quindi creare un certificato di revoca da subito, conservandolo in un luogo sicuro in caso di bisogno.

gpg --gen-revoke

anche qui si potrà riindirizzare il certificato ad un file. Se la chiave privata non sarà più utilizzabile (perché ne è compromessa la sicurezza o per un qualsiasi altro motivo), il certificato di revoca sarà la garanzia della validità decaduta. Ricordarsi, in caso di revoca di una chiave, di trasmettere il certificato di revoca ai vari keyserver dove la chiave era stata registrata.

Poiché per creare un certificato di revoca è necessaria la chiave privata e poiché questa potrebbe andare perduta, come detto sopra è buona norma creare la revoca da subito.

Le chiavi importate, compresa la propria, possono essere amministrate per aggiungere nuovi indirizzi e-mail, rimuovere indirizzi e-mail e molte altre modifiche e/o correzioni.

gpg --edit-key key_name-or_contained_string

Comparirà un prompt per i comandi; con help si avrà l’elenco di tutti i comandi disponibili per amministrare le chiavi.

Firmare una chiave pubblica

Quando importeremo una chiave pubblica di qualcuno, questa sarà inserita nel nostro archivio, una sorta di portachiavi virtuale. È qui che il client di posta andrà a verificare il messaggio firmato digitalmente. Se la chiave pubblica archiviata nel nostro portachiavi verificherà il messaggio, il client dirà che la firma digitale è corretta.

Bisogna però far sapere al client che la chiave pubblica appartiene realmente alla persona che ha mandato l’e-mail. Dopo esserci assicurati di persona ed in piena sicurezza di chi sia il proprietario di quella chiave, potremo firmare la sua chiave pubblica come “verificata”. Firmando la chiave diremo a GnuPG che quella chiave pubblica è affidabile.
notverified

Esempio di chiave pubblica non verificata in Mozilla
verified

Esempio di chiave pubblica verificata in Mozilla

Ecco come Mozilla Thunderbird segnala le e-mail firmate digitalmente. Nel primo caso l’e-mail è dichiarata correttamente firmata, ma non ci sono garanzie su chi sia il reale proprietario del certificato utilizzato. Nel secondo caso, invece, la firma è verificata da una chiave pubblica firmata.

Firmare dei file

Un ulteriore funzione di GnuPG dà la possibilità di apporre una firma digitale ad un file (un documento, una foto, ecc.).

gpg --sign -b -a nome_file

Questo comando genererà una firma digitale del file con la chiave privata. Si otterrà un file con ulteriore estensione .asc (.sig senza l’opzione -a che esporta la firma in file ASCII).
Per verificare la firma, avendo a disposizione la chiave pubblica relativa alla privata che l’ha firmato:

gpg --verify nome_file.asc (.sig)

Come ultimo utilizzo di GnuPG segnalo brevemente la criptazione di file.

gpg -e nome_file

cripterà il file con la chiave pubblica che verrà specificata alla domanda successiva al lancio del comando. Si otterrà un file con ulteriore estensione .gpg assolutamente non interpretabile se non dopo la decriptazione.

Per decriptare il file, avendo a disposizione la chiave privata relativa alla pubblica che l’ha criptato:

gpg -d nome_file.gpg > nome_file

Abbiamo così a disposizione uno strumento per criptare ad esempio dei file delicati, tipo quelli contenenti i nostri codici o le nostre password.

Grazie a Maurizio per avermi dato il permesso di ripubblicare questo utilissimo articolo su GnuPG e la cifrature di email in generale.

Popular Posts:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*