[hack] Appunti crittografia

Marco Bodrato bodrato@linuz.sns.it
Gio 12 Giu 2003 02:50:03 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

#Ciao a tutti,

#Questa mail (in forma di script) contiene i miei appunti per la lezione di
#ieri sera

#Se qualcuno vorra` aggiungere o correggere, ne saro` felice....



#gpg spesso ha una piccola imperfezione nel creare le directory, quindi:
gpg --list-keys

#Creare una chiave
gpg --gen-key
#Standard... DSA ElGamal
#Ok... 1024
#Per sempre... o un paio di anni...
#Nome e Cognome, o pseudonimo
#Email
#Commento eventuale...(organizzazione, pseudonimo... et alias)
#
#pass... attenzione! Sceglierla con cura! NON e` recuperabile!!!
#
#random...
#Sulla riga che inizia con pub.... trovate l'ID della chiave, sono anche le
#ultime 8 cifre dell'impronta (fingerprint).

#Buona norma e` crearsi _subito_ un certificato di revoca:
gpg --gen-revoke <KEY-ID>
#Si'...
#"0"... nessuna ragione
#"Revoca di emergenza" (o qks di simile) poi una riga vuota

#verra` stampato sullo schermo il certificato.
#Conservare cio' che c'e` tra le righe "---BEGIN" e "---END" comprese.
#Magari stampandole su un foglietto che terremo con cura. Questo ci
#permettera` di revocare la chiave anche se la perdremo definitivamente.
#Fondamentale soprattutto se abbiamo generato una chiave senza scadenza.


#Scaricare una chiave dal key-server
gpg --keyserver keyserver.linux.it --search-keys hal@linux.it
#Oppure, meglio, se sappiamo l'ID
gpg --keyserver keyserver.linux.it --recv-keys 19C156F3
#Di alcune persone potete scaricare la chiave dal sito, ad esempio la mia:
wget http://linuz.sns.it/~bodrato/ciao00B0.html
#Quindi inserirla tra le chiavi conosciunte
gpg --import ciao00B0.html
#Questa chiave contiene parecchi riferimenti, se volete visualizzarli tutti
gpg --photo-viewer display --show-photos --list-keys bodrato
#che funziona se siete in grafica e avete il comando "display" installato.

#Firmare localmente una chiave... (quella di Hal)
gpg --edit-key 19C156F3
#dentro...
#> lsign
#...non facciamo scadere la nostra firma...
#In una firma locale l'affidabilita` non ci interessa...
#vogliamo firmare davvero. Per farlo serve sbloccare la nostra chiave
#segreta, con la password
#
#quindi un passo non strettamente necessario
#> trust
#Qui decidiamo quanto ci fidiamo delle firme fatte con questa chiave
#Il numero puo' essere da 1 a 4 (il 5 ha usi particolari)
#In ogni caso questo "giudizio" non sara` mai reso pubblico!
#>save

#Firmare ufficialmente una chiave (la mia)
gpg --edit-key c1a000b0
#> sign
#Questa chiave ha molteplici UID, vogliamo firmarli tutti? rispondiamono... firmiamo
#solo il primo... selezioniamolo
#> uid 1
#Quindi di nuovo
#> sign
#Per le firme non locali e` importante non prendere con leggerezza la
#dichiarazione di attenzione! Se non sapete che scrivere, date "0"
#Questa _non_ e` la fiducia che attestiamo alla persona, ma la certezza con
#cui possiamo affermare che questa chiave e` corretta.
#Firmiamo _solo_ se abbiamo _almeno_ ottimi indizi della correttezza del
#legame Chiave/Identita`. Possibilmente perche` abbiamo ricevuto "l'impronta
#digitale" della chiave dal proprietario.
#... poi salviamo i cambiamenti.
#> save
#PS: non si firmano chiavi solo perche' gia` le ha firmate qualcuno di cui
#ci fidiamo...

#Se si firma in modo esportabile una chiave, e` buona norma rispedirla al
#proprietario, la nuova versione contiene una firma in piu'(esempio con la mia)
gpg --armor --export bodrato@gulp.linux.it | mail bodrato@gulp.linux.it
#Sara` poi lui a decidere cosa fare della vostra firma, se tenerla da parte
#o pubblicarla. (la firma e` un indizio del fatto che ci si e` incontrati,
#con tanto di data indicativa) Tra l'altro in questo modo si fa una
#(piccola) verifica dell'indirizzo di posta elettronica, meglio ancora farlo
#con un messaggio cifrato:
gpg -a --export bodrato|gpg -r bodrato -a --encrypt|mail bodrato@gulp.linux.it



#Pubblicare una chiave: spedirla al key-server
gpg --keyserver keyserver.linux.it --send-key 19C156F3
#Al keyserver si mandano sempre e solo i dati pubblici, quind si possono
#mandare i propri come quelli di qualcun altro. In questo caso stiamo
#mandando la chiave di Hal. (ma si tenga conto di quanto appena detto, il
#proprietario potrebbe non essere contento) Altrimenti si metta l'id della
#propria chiave, che si puo' sempre recuperare con
gpg --list-secret-keys
#che ad esempio nella mia prova fornisce
#sec  1024D/FC70A8EA 2003-06-11 Pseudonimo <Ne@qui.ne.li>
#ssb  1024g/4EA4538C 2003-06-11
#Dove l'ID e` FC70A8EA

#Oppure si puo' pubblicare su un sito o speridla per posta, la parte
#pubblica della chiave e` cio' che esce dal comando:
gnupg --armor --export 19C156F3


#Come firmare un testo
gpg --clearsign testo.txt
#Per firmare serve la nostra chiave segreta, quindi la pass
#Il comando ha prodotto un file testo.txt.asc, che contiene il messaggio
#leggibile e la firma.

#Per verificare la firma
gpg --verify testo.txt.asc
#Che ci dice _quando_ e _con_quale_chiave_ il messaggio e` stato firmato.

#Se proviamo a modificarlo e a ricontrollare la firma
emacs testo.txt.asc
#Fatte modifiche anche piccole (Una maiuscola cambiata in minuscola)
gpg --verify testo.txt.asc
#Ci avverte che la firma NON e` valida.

#Per cifrare un file (qualunque)
gpg --encrypt testo.txt
#Ci chiede quali utenti devono poter leggere il messaggio, glieli diamo uno
#alla volta. Per cifrare serve la chiave pubblica delle persone! Quindi non
#servono password...
#Crea un file testo.txt.gpg che contiene le informazioni cifrate.

#...che serviranno invece per decifrare:
gpg testo.txt.gpg
#che ricrea il file con i contenuti originali, oppure
gpg --decrypt testo.txt.gpg
#Che non scrive su disco (pericoloso :-) ma visualizza soltanto il contenuto.

#Quando avrete configurato per bene il vostro programma di posta preferito,
#e scaricato la mia chiave pubblica, potrete verificare che questo messaggio
#e` firmato...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE+58hPhuDIK41F+n0RAmdwAKDQGxFT1Rv1oZP1dAv5NYQlekPB4QCbBbAV
+VHA88aBsP2OUAMBRTC/wZ8=
=DWSK
-----END PGP SIGNATURE-----



Maggiori informazioni sulla lista golem-hack