Vai al contenuto | Salta in fondo

Home

Main.GnuPrivacyGuard r1.5 - 01 Jan 2007 - 17:14 - FrancescoMinafra Fine pagina


Inizio pagina | Salta alle attività

Gnu Privacy Guard

Introduzione

Quanto segue e' da prendere non come una guida completa sull'utilizzo di GnuPG ma come un riferimento pratico e sintetico. Una guida completa e' possibile trovarla sul sito ufficiale dell'upstream http://www.gnupg.org/(it)/index.html

Di cosa si tratta

GnuPG (GNU Privacy Guard) e' un sistema che permette di firmare e/o cifrare digitalmente i propri file, mail ecc. Utilizzabile su molte piattaforme e sistemi operativi diversi. Lo si usa principalmente da riga di comando, ma anche attraverso diverse interfacce grafiche che ne facilitano l'utilizzo in alcuni casi.

GNU Privacy Guard e' un sistema di cifratura che utilizza una DoppiaChiave. Ovvero, vi sono 2 chiavi diverse ma legate fra di loro, una privata e l'altra pubblica, che vengono create insieme come vedremo di seguito. La chiave pubblica e' quella che servira' alle persone le quali dovranno decriptare e/o autenticare i dati che gli invieremo. La chiave privata invece, dovra' essere custodita gelosamente sui nostri pc e non dovra' essere resa MAI pubblica per nessun motivo.

Creiamo le nostre chiavi

Una volta installato, dovremo per prima cosa generare le nostre chiavi, operazione che si esegue una sola volta. Eseguiremo questa operazione, utilizzando l'utente di sistema che normalmente usiamo, o se lo si preferisce da user root, indicando l'UID dell'utente per il quale vorremo generare la coppia di chiavi.

gpg --gen-key

lugbari@morpheus:~$ gpg --gen-key
gpg (GnuPG) 1.4.3; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING 
for
details. gpg: directory `/home/lugbari/.gnupg' created gpg: creato un nuovo file di configurazione `/home/lugbari/.gnupg/gpg.conf' gpg: ATTENZIONE: le opzioni in `/home/lugbari/.gnupg/gpg.conf' non sono ancora attive durante questa esecuzione del programma gpg: portachiavi `/home/lugbari/.gnupg/secring.gpg' creato gpg: portachiavi `/home/lugbari/.gnupg/pubring.gpg' creato Per favore scegli che tipo di chiave vuoi: (1) DSA and Elgamal (
default
) (2) DSA (firma solo) (5) RSA (firma solo) Cosa scegli?

Ci viene chiesto che tipo di chiave vogliamo utilizzare, la scelta consigliata e' la (1)

DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize 
do
you want? (2048)

quindi la lunghezza della stessa e ci viene consigliato 2048.

La dimensione richiesta della chiave è 2048 bit
Per favore specifica per quanto tempo la chiave sarà valida.
0 = la chiave non scadrà
<n>  = la chiave scadrà dopo n giorni
<n>w = la chiave scadrà dopo n settimane
<n>m = la chiave scadrà dopo n mesi
<n>y = la chiave scadrà dopo n anni
Chiave valida per? (0)
Key does not expire at all
Is 
this
correct? (y/N) y

Si puo' specificare anche la durata della chiave se occorre. Un lasso di tempo dopo del quale la chiave scadra' e non sara' piu' utilizzabile.

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in 
this
form: "
Heinrich Heine (Der Dichter) <heinrichh@********.de>
" Nome e Cognome:

A questo punto ci verranno richiesti dei dati, come Nome e Cognome, un commento e l'indirizzo mail, per generare un'identificativo utente che permettera' al sistema di riconoscere la chiave.

E' molto importante scegliere una password complessa, difficilmente intuibile e che ci si possa ricordare facilmente, visto che la utilizzeremo frequentemente.

Dobbiamo generare un mucchio di byte casuali. È una buona idea eseguire
qualche altra azione (scrivere sulla tastiera, muovere il mouse, usare i
dischi) durante la generazione dei numeri primi; questo da al generatore di
numeri casuali migliori possibilità di raccogliere abbastanza entropia.
+++++..+++++.++++++++++....++++++++++++++++++++++++++++++.+++++

Non ci sono abbastanza byte casuali disponibili. Per favore fai qualche
altra cosa per dare all'OS la possibilità di raccogliere altra entropia!
(Servono altri 282 byte) |

In questo caso, seguire il consiglio del sistema. Possiamo muovere il mouse (se ne abbiamo uno) o scrivere a casaccio con la tastiera, fino a quando non riprendera' con la generazione delle chiavi.

gpg: /home/lugbari/.gnupg/trustdb.gpg: creato il trustdb
gpg: key 0016A67E marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.

gpg: controllo il trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  
signed
: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 1024D/0016A67E 2006-05-14 Key fingerprint = DB83 7E52 173E 32AB 19A7 B174 ABDD B8B2 0016 A67E uid Giovanni Gentile (NetWalker) <netwalker@********.org> sub 2048g/06616A40 2006-05-14

Avremo quindi le chiavi appena generate nella directory ~/.gnupg, ed insieme ad esse viene creato il database della fiducia (TrustDB) sulle chiavi contenute nel nostro keyring.

Per una spiegazione del concetto di TrustDB, e delle righe che ne descrivono il contenuto, come quelle che compaiono dopo la generazione e firma delle chiavi generate, si veda la sezione TrustDB.

Iniziamo ad utilizzarle

E' buona norma, genere anche un certificato di revoca, che serve appunto per revocare la chiave in caso di necessita'

gpg --gen-revoke

e salvare tutto su un floppy o cd, da conservare con molta cura.

Per esportare la nostra chiave PUBBLICA:

gpg --export

E' possibile esportarla in un file di testo con l'opzione -a / --armor e -o

gpg --export -a -o nomefile

Con l'opzione -a, avremo l'output in un file con codifica ASCII a 7bit.

Sara' cosi' possibile reimportarla con:

gpg --import nomefile

Esportare ed importare le chiavi pubbliche serve per poterle scambiare con altre persone. Sara' cosi' possibile scambiarsi documenti firmati e/o cifrati.

Una volta ricevuta la chiave di un nostro corrispondente e quindi importata, il sistema la classifichera' come NON SICURA. Dovremo quindi essere noi a contrassegnarla come tale, firmandola.

gpg --edit-key lugbari

Dove lugbari è lo userid della chiave che vogliamo firmare.

gpg --edit-key lugbari
gpg (GnuPG) 1.4.3; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING 
for
details. È disponibile una chiave segreta. pub 1024D/0016A67E created: 2006-05-14 expires: mai usage: SC trust: ultimate validity: ultimate sub 2048g/06616A40 created: 2006-05-14 expires: mai usage: E [ultimate] (1). Giovanni Gentile (NetWalker) <netwalker@********.org>

a questo punto, useremo la funzione 'sign', per firmarla

Comando> sign|
"
Giovanni Gentile (NetWalker) <netwalker@********.org>
" was already
signed
by key 0016A67E Nothing to sign with key 0016A67E Comando> quit

Essendo nostra quella chiave, il sistema dira' che e' gia' firmata. Altrimenti ci chiedera' quale livello di sicurezza attribuire alla stessa.

E' di fondamentale importanze essere sicuri della chiave che si sta firmando. Ecco perche' si organizzano i cosi' detti 'key signing party'. Attraverso i quali e' possibile ricevere la chiave direttamente dalle mani del titolare della stessa.

Un'altro modo per accertarsi che la chiave (magari presa attraverso la rete) sia quella giusta e' il controllo del fingerprint, ovvero l'impronta digitale che ci viene fornita dal proprietario.

Per conoscere il fingerprint della nostra chiave:

gpg --fingerprint 0016A67E

gpg --fingerprint 0016A67E
pub   1024D/0016A67E 2006-05-14
Key fingerprint = DB83 7E52 173E 32AB 19A7  B174 ABDD B8B2 0016 A67E
uid                  Giovanni Gentile (NetWalker) <netwalker@********.org>
sub   2048g/06616A40 2006-05-14

E' quindi possibile mettere a disposizione di tutti la propria chiave pubblica, attraverso la rete internet, utilizzando un sever pubblico, come pgpkeys.mit.edu.

Possiamo inviare la chiave sul server, direttamente attraverso gpg:

gpg --keyserver pgp.mit.edu --send-key 0016A67E

gpg --keyserver pgp.mit.edu --send-key 0016A67E
gpg: sending key 0016A67E to hkp server pgp.mit.edu

In modo tale da rendere disponibile la chiave, per poi firmarla durante il key signing party.

Al contrario, chi volesse prendere la nostra chiave dovrebbe usare l'opzione --recv-key

gpg --keyserver pgp.mit.edu --recv-keys 0016A67E

e quindi proseguire con la fase di firma/autenticazione della stessa.

Qualche nota sul TrustDB

Il TrustDB è un database che viene mantenuto contestualmente alla nostra installazione personale di GnuPG, il quale contiene le informazioni sulla fiducia che noi attribuiamo alle chiavi presenti nel nostro keyring.

Abbiamo bisogno di questo database per tenere traccia di quello che viene denominato Web of Trust nella terminologia di GnuPG e del suo predecessore PGP.

Infatti per essere sicuri che una chiave sia fidata abbiamo due possibilità:

  • firmare personalmente la chiave in questione, essendoci preventivamente assicurati dell'identità della persona titolare;
  • affidarci ad un meccanismo di calcolo del livello di fiducia di una chiave, che si basa anche su presupposti soggettivi.

Nel primo caso non c'e' molto da dire, poiché se firmiamo una chiave pubblica utilizzando le nostre credenziali private assumiamo implicitamente che il valore di fiducia di quella chiave sia pieno.

Nel secondo caso invece possiamo fare in modo che sia GnuPG a stabilire per noi se una chiave che preleviamo ad esempio da un keyserver, e di cui non abbiamo mai incontrato il titolare, sia o meno affidabile.

Il meccanismo che GnuPG usa di default per stabilire se una chiave è affidabile è il così detto PGP trust model. Secondo questo modello una chiave appartenente ad un soggetto sconosciuto (cioè non firmata da noi personalmente) è valida se è firmata da una chiave (firmata da noi) in cui noi poniamo fiducia piena (fully trusted) oppure da almeno tre chiavi (firmate da noi) nelle quali noi poniamo una fiducia marginale.

Vediamo di spiegare meglio che cosa si intende per chiave in cui poniamo un certo livello di fiducia. In effetti il livello di fiducia a cui ci riferiamo è riferito al titolare della chiave stessa. Infatti il titolare può a sua volta firmare altre chiavi utilizzando le sue credenziali private, e prima di farlo dovrebbe accertarsi dell'identità del possessore. All'atto pratico però questo potrebbe non avvenire, in quanto le operazioni di firma avvengono nei contesti sociali più disparati, oltre che nei già citati keysigning party.

In mancanza di informazioni (soggettive) sul modo con cui riteniamo che una persona verifichi l'identità degli altri suoi conoscenti, potremmo decidere di non riporre una fiducia totale nelle chiavi firmate da questa persona! In tal caso possiamo attribuire alla sua chiave pubblica un livello di trust marginale oppure negare del tutto la fiducia.

Se d'altra parte sappiamo che il titolare di una chiave che noi abbiamo firmato è una persona coscienziosa, scrupolosa o addirittura paranoica quando si tratta di verificare l'identità dei soggetti di cui firma le chiavi, allora potremmo decidere di assegnare alla sua chiave pubblica un livello di trust pieno, e conseguentemente considerare completamente fidate le chiavi da lui firmate.

Vediamo ora come si fa a visualizzare in pratica il riassunto delle informazioni contenute nel nostro database della fiducia.

Ogni volta che si firma una chiave contenuta nel nostro keyring, GnuPG esegue un controllo ed un aggiornamento del trustdb. Possiamo ripetere questo controllo anche indipendentemente dalle operazioni di firma, ogni qual volta riteniamo che ciò sia necessario, con il seguente comando:

gpg --update-trustdb

che produce ad esempio un output come il seguente:

user@host:~$ gpg --update-trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  
signed
: 7 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: depth: 1 valid: 7
signed
: 3 trust: 0-, 0q, 4n, 3m, 0f, 0u gpg: the next trustdb check will be done on 2007-09-15

Analizziamo l'output del comando:

La prima riga mostra la politica di trust in uso dalla nostra installazione di GnuPG (tale politica è infatti configurabile). Essa afferma, come si è detto, che una chiave contenuta nel keyring è valida se è firmata da almeno 3 chiavi con un livello di trust marginale oppure da almeno una chiave con livello di trust pieno.

La seconda riga descrive la chiave o le chiavi di livello 0, ovvero la chiave di cui noi, possessori delle credenziali private di questo keyring, siamo titolari. Essa afferma in definitiva che nel keyring vi è una sola chiave di livello 0, firmata da 7 chiavi pubbliche di altri utenti, contenute nello stesso keyring. Inoltre, tra tutte le chiavi di livello zero, per 0 di esse non abbiamo ancora assegnato una valutazione del livello di trust (0-), per 0 di esse non si ha idea di quale livello di trust assegnare alla chiave (0q, q="I don't know or won't say"), per 0 chiavi avete negato un qualsiasi tipo di fiducia (0n, n="I do NOT trust"), per 0 chiavi si ha un livello di trust marginale (0m, m="I trust marginally"), per 0 chiavi si ha una fiducia piena (0f, f="I trust fully"), ed infine per una chiave si ha una fiducia assoluta (1u, u="I trust ultimately"). E questo è ovvio, dal momento che la chiave appartiene a noi smile

La terza riga dell'output analizza le chiavi di livello 1 nel nostro keyring. Abbiamo 7 chiavi pienamente valide, dal momento che sono state firmate utilizzando le nostre credenziali private. Inoltre tra le chiavi presenti nel keyring, 3 di esse non sono state firmate da noi ma hanno una firma di almeno una delle chiavi pienamente valide. I contatori dei livelli di trust hanno lo stesso significato di quelli della seconda riga. Questa volta abbiamo 4 chiavi firmate direttamente da noi, ma per le quali non si ripone alcuna fiducia nel titolare per quanto riguarda la sua capacità di verificare l'identità delle persone di cui firma le chiavi. D'altra parte, 3 delle 7 chiavi firmate da noi hanno un livello di trust marginale, ovvero siamo solo marginalmente confidenti che la persona titolare di queste chiavi possa adeguatamente verificare l'identità delle persone di cui firma le chiavi.

-- NetWalker - 14 May 2006

Inizio pagina


Sei qui: Main > TipsAndTricks > GnuPrivacyGuard



Inizio pagina

Copyright © 2008 dei contributori. Tutto il materiale di questo sito è sotto copyright dei rispettivi autori.
Idee, richieste, problemi riguardanti LUGBari? Invia suggerimenti