Differenze tra le versioni di "GNU Privacy Guard"

Da GolemWiki.
Jump to navigation Jump to search
Riga 2: Riga 2:
 
[http://it.wikipedia.org/wiki/GNU_Privacy_Guard GNU Privacy Guard (GnuPG o GPG)] è un programma libero pensato per fornire un'alternativa opensource al [http://it.wikipedia.org/wiki/Pretty_Good_Privacy Pretty Good Privacy (PGP)].
 
[http://it.wikipedia.org/wiki/GNU_Privacy_Guard GNU Privacy Guard (GnuPG o GPG)] è un programma libero pensato per fornire un'alternativa opensource al [http://it.wikipedia.org/wiki/Pretty_Good_Privacy Pretty Good Privacy (PGP)].
  
 +
Nel PGP sono usate sia la crittografia asimmetrica (a chiave pubblica) che quella simmetrica.
 +
La chiave pubblica del destinatario serve al mittente unicamente per cifrare la chiave comune per un algoritmo di crittografia simmetrica che sarà usata per cifrare il testo in chiaro del messaggio.
 
Un destinatario decifra un messaggio protetto da GPG usando la chiave di sessione con l'algoritmo simmetrico. Tale chiave di sessione è inclusa nel messaggio in maniera criptata ed è decifrata usando la chiave privata del destinatario.
 
Un destinatario decifra un messaggio protetto da GPG usando la chiave di sessione con l'algoritmo simmetrico. Tale chiave di sessione è inclusa nel messaggio in maniera criptata ed è decifrata usando la chiave privata del destinatario.
 +
 +
L'utilizzo di due cifrature oltre che a velocizzare l'esecuzione del programma (la cifratura a chiave simmetrica è molto più veloce di quella asimmetrica) permette di poter cifrare uno stesso messaggio per più destinatari.
 +
 +
  
 
= Manuale =
 
= Manuale =
Riga 164: Riga 170:
  
 
(Da qua in poi c'è da aggiustare l'html delle formule)
 
(Da qua in poi c'è da aggiustare l'html delle formule)
 
= Approfondimenti =
 
 
Viene generata una chiave DSA -digital signature standard- firma con funzioni di hash e algoritmo a chiave pubblica per cifrare il valore di hash.
 
(Message Digest 5, Secure Hash Algorithm-1; non invertibili- resistenti alle collisioni)
 
 
Questa chiave raccoglie anche le firme delle altre persone che hanno confermato la nostra identità.
 
 
Viene anche generata una sottochiave ElGamal per cifrare documenti.
 
 
Diffie-Hellman (tanto per incuriosire un po')
 
 
</big>A e B possono scambiarsi un segreto in rete: A sceglie&nbsp; p
 
primo, un g&lt;p, pubblica p e g. A sceglie a segreto e calcola&nbsp;&nbsp; g<sup>a</sup>
 
mod p , lo dice a B. B sceglie b segreto e calcola&nbsp; g<sup>b</sup>
 
 
mod p , lo dice a A. A calcola (g<sup>b</sup>)<sup>a</sup> mod p, B
 
calcola (g<sup>a</sup>)<sup>b</sup> mod p, che forniscono lo stesso
 
valore, ed &egrave; il loro segreto.&nbsp;&nbsp; <br>
 
Es p=23 g=5&nbsp;&nbsp; A sceglie 7&nbsp; 5<sup>7</sup>mod 23
 
(=17);&nbsp; B sceglie 5&nbsp;&nbsp;&nbsp; 5<sup>5</sup> mod 23 (=20) .
 
A calcola 20<sup>7</sup>mod 23 (=21),&nbsp; B 17<sup>5</sup> mod 23
 
(=21).&nbsp; Il segreto scambiato &egrave; 21.<br>
 
 
</span>
 
<big style="font-family: serif;"><br>Crittografia a chiave pubblica <small>(e questo &egrave; anche peggio, e puramente indicativo)</small><br>
 
</big><span style="font-family: serif;">1978 - R.S.A. dal teorema di Eulero-Fermat:</span><br style="font-family: serif;">
 
<span style="font-family: serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
a <sup>k &#966; (m)+1</sup> = a (modm)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
 
dove &#966; (m)
 
 
&egrave; la funzione di Eulero di m</span><br style="font-family: serif;">
 
<span style="font-family: serif;">se due numeri s e t sono tali
 
che&nbsp; st&nbsp; = k&#966;(m)+1 allora uno
 
&egrave; la chiave privata e uno &egrave; la chiave pubblica. Il
 
sistema funziona scegliendo opportunamente m (prodotto di due primi
 
'grandi'). La chiave pubblica &egrave; (s, m),&nbsp; quella privata (t,
 
m).</span><br style="font-family: serif;">
 
 
<span style="font-family: serif;">Viene usato un sistema di
 
crittografia misto (messaggio cifrato con
 
cifrature simmetriche la cui chiave usata &egrave; inviata col
 
messaggio e cifrata a chiave pubblica).</span><br style="font-family: serif;">
 
  
 
[[Category: Howto]]
 
[[Category: Howto]]

Versione delle 11:20, 5 ott 2012

Introduzione

GNU Privacy Guard (GnuPG o GPG) è un programma libero pensato per fornire un'alternativa opensource al Pretty Good Privacy (PGP).

Nel PGP sono usate sia la crittografia asimmetrica (a chiave pubblica) che quella simmetrica. La chiave pubblica del destinatario serve al mittente unicamente per cifrare la chiave comune per un algoritmo di crittografia simmetrica che sarà usata per cifrare il testo in chiaro del messaggio. Un destinatario decifra un messaggio protetto da GPG usando la chiave di sessione con l'algoritmo simmetrico. Tale chiave di sessione è inclusa nel messaggio in maniera criptata ed è decifrata usando la chiave privata del destinatario.

L'utilizzo di due cifrature oltre che a velocizzare l'esecuzione del programma (la cifratura a chiave simmetrica è molto più veloce di quella asimmetrica) permette di poter cifrare uno stesso messaggio per più destinatari.


Manuale

Un veloce aiuto

man gpg

Un rapido promemoria delle opzioni più comuni

gpg --help

Generare una chiave

Da utente normale:

gpg --gen-key

e rispondere alle domande che fa il programma.

Controllare che sia stata davvero creata

gpg --list-keys

Fare subito il certificato di revoca

gpg --output revoca.asc --gen-revoke <ID>

dove <ID> è dato dalle ultime 8 cifre dell'impronta (fingerprint) della chiave


Utilizzo pratico

Criptare un documento

gpg -o file1.ext.gpg -e -r UserID file1.ext.

Es.: gpg -o tesi.odt.gpg -e -r spookyh@gmail.com tesi.odt


Decriptare un documento

gpg -o file1.ext -d file1.gpg


Firmare un documento

gpg -o file1.ext.sig -s file1.ext


Verificare un documento

gpg --verify file1.sig


Importare ed esportare chiavi (locali)

Importare una chiave (pubblica)

gpg --import chiave.asc (o .txt)

Esportare la propria chiave pubblica

gpg -a -o chiave_pubblica.asc --export


Esportare la propria chiave privata

ATTENZIONE!!! Esportare la chiave privata solo per effettuarne backup

gpg --export-private-keys chiave_privata.asc

Condividere le chiavi pubbliche

Inviare la chiave ad un keyserver

gpg --keyserver keyserver.linux.it --send-key <ID>

Importare una chiave da un keyserver

gpg --keyserver keyserver.linux.it --recv-keys <ID>

la chiave viene cercata sul keyserver e importata in /home/utente/.gnupg/pubring.gpg

in /home/utente/.gnupg/secring.gpg sono archiviate le chiavi segrete

Esempi di keyserver:

  • sks.keyserver.penguin.de
  • keyserver.kjsl.com
  • keyserver .linux.it


Editare una chiave

Per fare operazioni e modifiche dobbiamo "editare" le chiavi:

gpg --edit-key <ID>

per convalidarne il nostro uso dobbiamo firmarle

> sign

e rispondere alle domande

si possono fare molte altre cose, ad esempio: cambiare i valori di fiducia

> trust

vedere la fingerprint

> fpr

cambiare la data di scadenza

> expire

cambiare la password

> passwd

firmare localmente in modo non esportabile

> lsign

quindi ricordarsi di salvare

> save

oppure

> quit

Tutte le modifiche da rendere pubbliche vanno inviate ad un keyserver.

Revocare una chiave

Avendo già il certificato di revoca:

gpg --import revoca.asc
gpg --keyserver keyserver.linux.it --send-key <ID>

Rete di fiducia - web of trust Una chiave importata può essere firmata con un certo grado di fiducia con firma esportabile. Possiamo rispedirla al proprietario, se lui la importa nel suo portachiavi avrà la propria chiave firmata da noi. Ognuno può quindi aggiungere alla propria chiave le firme dei conoscenti, che hanno firme di altri....


Gestione delle chiavi

Controllare il database delle chiavi

gpg --list-keys --with-colons

Fornisce tutte le chiavi che abbiamo con molte informazioni

gpg --list-ownertrust

Fornisce tutti i valori di fiducia assegnati alle varie chiavi. (Informazioni private)

Controllo firme

gpg --check-sigs
gpg --list-sigs

Esportare le chiavi altrui

Abbiamo importato e firmato la chiave di <ID>.

Rimandiamola al proprietario:

gpg --armor -export -o firma1 <ID>

Crea un file di nome firma1 nella directory corrente che contiene la chiave firmata. Spedire al proprietario firma1.

Chi riceve la propria chiave firmata da altri può decidere inserirla nel proprio portachiavi, con

gpg --import firma1

si aggiungono al portachiavi le nuove firme ma anche i nuovi ID che il mittente ha sulla sua chiave, col rispettivo valore di fiducia. Bisogna fare molta attenzione a firmare le chiavi degli altri.

Facciamolo sapere Se vogliamo fare un uso pubblico di questa fiducia reciproca possiamo mandare la nostra chiave, contenente la nuova firma, al keyserver:

gpg --keyserver keyserver.kjsl.com --send-key <ID mia chiave>


Rete di fiducia

Una chiave non è valida solo se è firmata di persona, ma se:

  • è firmata da un numero sufficiente di chiavi valide, cioè da almeno una chiave di cui ci si fida pienamente o da tre chiavi con fiducia marginale
  • il percorso delle chiavi per risalire alla chiave in questione è al massimo di cinque passi.

Gestire la rete di fiducia gpg.conf ha due opzioni:

--completes-needed n numero di utilizzatori con fiducia piena che presentano un nuovo utente (default 1) --marginals-needed n numero di utilizzatori con fiducia parziale che presentano un nuovo utente (default 3)


GUI

Esistono vari programmi a interfaccia grafica: Seahorse, KGpg...

(Da qua in poi c'è da aggiustare l'html delle formule)