<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>PGPSigningParty</title><revhistory><revision><revnumber>13</revnumber><date>2009-11-14 13:50:03</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>12</revnumber><date>2009-11-13 19:48:22</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>11</revnumber><date>2009-11-13 19:44:49</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>10</revnumber><date>2009-11-13 19:14:35</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>9</revnumber><date>2009-11-13 16:52:39</date><authorinitials>stefanopilla</authorinitials><revremark>Ripristinata la revisione 7.</revremark></revision><revision><revnumber>8</revnumber><date>2009-11-13 16:37:41</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>7</revnumber><date>2009-11-13 16:36:30</date><authorinitials>93-40-135-19.ip39.fastwebnet.it</authorinitials></revision><revision><revnumber>6</revnumber><date>2009-11-12 15:32:52</date><authorinitials>ZioPRoTo</authorinitials></revision><revision><revnumber>5</revnumber><date>2009-11-12 15:13:44</date><authorinitials>ZioPRoTo</authorinitials></revision><revision><revnumber>4</revnumber><date>2009-11-09 13:50:23</date><authorinitials>2002:a050:516a:1234:219:cbff:fe54:87a7</authorinitials></revision><revision><revnumber>3</revnumber><date>2009-11-08 10:34:47</date><authorinitials>93-40-107-75.ip38.fastwebnet.it</authorinitials></revision><revision><revnumber>2</revnumber><date>2009-11-07 22:01:38</date><authorinitials>stefanopilla</authorinitials></revision><revision><revnumber>1</revnumber><date>2009-11-07 21:28:55</date><authorinitials>93-45-216-63.ip104.fastwebnet.it</authorinitials></revision></revhistory></articleinfo><section><title>Chi lo organizza?</title><para><inlinemediaobject><imageobject><imagedata fileref="http://wiki.ninux.org/moin_static181/ninuxtheme02/img/ninux_logo.png"/></imageobject><textobject><phrase>http://wiki.ninux.org/moin_static181/ninuxtheme02/img/ninux_logo.png</phrase></textobject></inlinemediaobject> </para></section><section><title>Quando?</title><para>Giovedì 12 Novembre 2009 presso il <ulink url="http://www.fusolab.net">Fusolab</ulink> - <ulink url="http://www.fusolab.net/index.php/Come-raggiungerci">Via Giorgio Pitacco, 29 - Roma</ulink> durante uno dei <ulink url="http://www.fusolab.net/index.php/20091015248/Collaborazioni/GIOVEDI-DA-NERD">Giovedì Nerd</ulink> della programmazione. </para><para><emphasis role="strong">INGRESSO LIBERO</emphasis> </para></section><section><title>Resoconto</title><para>La serata è stata molto divertente e grazie a Mara, che conosceva il programma descritto a fine pagina, abbiamo ottenuto un fantstico Web Of Trust </para><para><inlinemediaobject><imageobject><imagedata fileref="http://ninux.org//PGPSigningParty?action=AttachFile&amp;do=get&amp;target=ninux.gpg.png"/></imageobject><textobject><phrase>ninux.gpg.png</phrase></textobject></inlinemediaobject> </para></section><section><title>Che cos'è?</title><para><inlinemediaobject><imageobject><imagedata depth="579px" fileref="http://www.stefanopilla.it/Immagini/locgpg.jpg" width="411px"/></imageobject><textobject><phrase>http://www.stefanopilla.it/Immagini/locgpg.jpg</phrase></textobject></inlinemediaobject> </para><para>Un key signing party è una riunione di persone che usano il sistema di   crittografia PGP, durante la quale ogni partecipante ha la possibilità di   firmare la chiave degli altri. I key signing party aiutano in modo consistente   a estendere la propria rete della fiducia (Web Of Trust - WOT), inoltre offrono un'opportunità per   discutere di questioni sociali e politiche che riguardano la crittografia   forte, la sovranità e le libertà individuali, dell'implementazione di   tecnologie crittografiche, o perfino degli sviluppi futuri del software libero   per la crittografia. </para></section><section><title>Che cosa significa firmare una chiave?</title><para>Firmare una chiave significa apporre una firma digitale su una chiave   pubblica e sullo user id che la accompagna. La firma delle chiavi serve   per verificare che un dato user id e una data chiave pubblica appartengano   veramente alla persona che sembra possedere la chiave, ossia in termini più   generali, a verificare che la rappresentazione dell'identità contenuta nel   pacchetto user id sia valida. Di solito, ciò significa che il nome associato   alla chiave PGP corrisponde al nome scritto sul documento di identificazione   che una persona vi presenta quando chiede di firmare la sua chiave. </para><para>Il termine &quot;chiave pubblica&quot; ha due significati nell'ambito di PGP. Può riferirsi   sia alla vera e propria chiave pubblica di cifratura, che fa parte di una   coppia di chiavi, oppure può riferirsi alla chiave di cifratura e a tutte le   firme apposte su quella chiave, come anche ad eventuali sotto-chiavi di   cifratura auto-firmate con quella chiave. Per evitare confusioni, in questo   documento userò sempre il termine &quot;chiave pubblica&quot; per riferirmi alla chiave,   comprese le firme e le sottochiavi. Userò invece &quot;pacchetto chiave pubblica&quot;   per riferirmi solo alla chiave pubblica di cifratura facente parte di una   coppia di chiavi. </para><para>È possibile firmare il proprio pacchetto chiave pubblica e qualsiasi user id   associato a quella chiave pubblica, oppure la coppia chiave - user id di   un'altra persona. La firma delle proprie chiavi impedisce di aggiungere false   chiavi di cifratura o di firma alla vostra chiave pubblica a chiunque se la   possa procurare (ad esempio perché la chiave è disponibile su un archivio   pubblico, o perché viene intercettata durante il suo trasferimento).   Se un avversario fosse in grado di aggiungere alla chiave una falsa chiave di   firma o di cifratura, potrebbe aggiungere un pacchetto chiave pubblica di cui   lui solo possiede la corrispondente chiave privata. Ciò potrebbe far sì che   chiunque volesse comunicare con voi in modo cifrato, si troverebbe a   trasmettere inavvertitamente informazioni confidenziali alla persona che è   riuscita ad alterare la vostra chiave pubblica. Per impostazione predefinita,   GnuPG e la maggior parte delle altre implementazioni dello standard openPGP   eseguono l'auto-firma su tutti i pacchetti user id generati per una chiave   pubblica. </para><para>In un certo senso le firme convalidano le chiavi. Rappresentano una   dichiarazione di approvazione della validità di una chiave pubblica e dell'id   associato, ad opera di una terza parte. In questo senso la firma delle chiavi   aiuta a costruire la rete della fiducia. </para></section><section><title>Come prepararsi per il party e cosa bisogna portare?</title><para>Per partecipare ad un Key Signing Party è necessario (oltre ad essere nerd :-D ) anche avere un paio di chiavi (una pubblica e una privata) e generare un fingerprint. La procedura per generare un paio di chiavi è abbastanza semplice. In pratica dovete eseguire: </para><screen><![CDATA[gpg --gen-key]]></screen><para>In ogni caso, è raccomandabile generare anche un certificato di revoca per la   propria chiave, nel caso si perdesse l'accesso alla propria chiave privata (ad   es. se si dimentica la passphrase o si perde la chiave privata). </para><para>Le istruzioni dettagliate che seguono sono basate sulle migliori pratiche di   sicurezza (in modo paranoico). Ad esempio: </para><itemizedlist><listitem><para>Generare chiavi della massima dimensione possibile, in modo che siano     resistenti ad attacchi a forza bruta; </para></listitem><listitem><para>Generare chiavi con una durata limitata, per evitare che cambiamenti     inattesi nel campo della tecnologia di decifrazione le rendano insicure. </para></listitem><listitem><para>Tenere le chiavi su dispositivi rimuovibili (es. USB) per evitare che     qualcuno possa rubarle, una volta ottenuto l'accesso (fisico o remoto)     al proprio computer. </para></listitem><listitem><para>Generare un certificato di revoca per consentire una futura revoca     della chiave pubblica nel caso di compromissione o perdita della chiave. </para></listitem></itemizedlist><para>Alcuni potrebbero sentirsi a proprio agio anche senza adottare queste   precauzioni di sicurezza. Ad esempio, se avete un computer portatile o desktop   su cui leggete tutta la vostra posta, potete salvare la vostra chiave sul disco   rigido di quel computer. Potete anche generare un paio di chiavi senza scadenza   da usare per identificarvi e per la maggior parte delle comunicazioni, e   generare altre paia di chiavi per le comunicazioni estremamente delicate (se   doveste averne). Le istruzioni riportate di seguito tengono conto delle migliori   precauzioni di sicurezza: non dovete necessariamente seguirle, visto che tutto   quello di cui avete bisogno è un paio di chiavi, ma se siete un paranoico   ossessionato dalla sicurezza come me, seguirle vi procurerà quel piacevole senso   di calma di cui avete così bisogno. </para><para>1)  Andate sul <ulink url="http://www.gnupg.org/">sito di GnuPG</ulink> e   scaricate l'ultima versione di gnupg, gnupg-x.x.x.tar.gz. Scaricate anche la   firma PGP dell'archivio, gnupg-x.x.x.tar.gz.sig. </para><para>Attenzione: assicuratevi di usare almeno la versione 1.0.6 di GnuPG.  Le   versioni precedenti alla 1.0.6 avevano almeno un problema di sicurezza   significativo. </para><para>2)  Controllate le firme PGP e il Checksum SHA-1 dell'archivio GnuPG: </para><screen><![CDATA[bash$ gpg --verify gnupg-x.x.x.tar.gz.sig gnupg-x.x.x.tar.gz
bash$ sha1sum gnupg-x.x.x.tar.gz]]></screen><para>3)  Estraete l'archivio, configurate, compilate e installate: </para><screen><![CDATA[bash$ tar xzf gnupg-x.x.x.tar.gz
bash$ cd gnupg-x.x.x
bash$ ./configure
bash$ make
bash$ su
bash# make install
bash# exit
bash$ cd]]></screen><para>Se il sistema su cui installate GnuPG è condiviso con altri utenti,   probabilmente vorrete rendere gpg setuid root, in modo da usare memoria   sicura. Se scegliete di fare questo, per precauzione controllate sempre   l'archivio con la firma sha1 e la firma pgp per essere sicuri di non installare   un cavallo di Troia. </para><para>4)  Procuratevi un dispositivo USB su cui conservare le chiavi, partizionatelo e formattatelo. </para><screen><![CDATA[bash# /sbin/fdisk /dev/sda
bash# /sbin/mkfs.ext3 /dev/sda1]]></screen><para>4a) Montate il dispositivo USB e create una directory di cui siete il proprietario: </para><screen><![CDATA[bash$ mount /mnt/usbfs
bash$ mkdir /mnt/usbfs/.gnupg]]></screen><para>se necessario (a seconda di come è regolato l'accesso ai dispositivi sul   vostro sistema), eseguite: </para><screen><![CDATA[bash$ chown <vostro_uid>:<vostro_gid> /mnt/usbfs/.gnupg]]></screen><para>4b) Create un symlink dalla vostra directory personale al dispositivo USB </para><screen><![CDATA[  bash$ ln -s /mnt/usbfs/.gnupg .gnupg]]></screen><para>5)  Generate la coppia di chiavi gnupg </para><screen><![CDATA[  bash$ gpg --gen-key]]></screen><para>5a) Selezionate i tipi di chiave che volete (le scelte predefinite vanno   bene). </para><screen><![CDATA[Per favore scegli che tipo di chiave vuoi:
   (1) DSA and Elgamal (default)
   (2) DSA (firma solo)
   (5) RSA (firma solo)
Cosa scegli? <invio>]]></screen><para>5b) Selezionate la dimensione della chiave:  4096 </para><screen><![CDATA[DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096<invio>]]></screen><para>5c) Impostate la durata della chiave: 5 anni è una buona scelta </para><screen><![CDATA[La dimensione richiesta della chiave è 4096 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) 5y<invio>
Key expires at Fri Nov  5 00:19:43 EST 2011
Is this correct (y/n)? y<invio>]]></screen><para>5d) Inserite il vostro nome e il vostro indirizzo e-mail (o anche più indirizzi) </para><screen><![CDATA[Nome e Cognome: Utente di Prova<invio>
Indirizzo di Email: utente@dominio.qualsiasi<invio>
Commento:
Hai selezionato questo User Id:
    "Utente di Prova <utente@dominio.qualsiasi>"
]]><![CDATA[
Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit?]]></screen><para>5e) Scegliete una passphrase. Dovete sceglierla bene: dev'essere lunga e molto   difficile da indovinare: la tecnologia di cluster computing attuale permette   di indovinare passphrase più corte di 12 caratteri. La passphrase deve anche   esere difficile da dimenticare: se la dimenticate, non potrete recuperare la   vostra chiave. </para><para>5f) Muovete il mouse e premete qualche tasto, o eseguite in background un   comando come updatedb o find. GPG leggerà /dev/random per raccogliere dei   numeri casuali necessari per generare le chiavi, e /dev/random è popolato in   parte anche dagli interrupt del computer. </para><para>6) Modificate la vostra chiave, se volete. Ad esempio, se avete più di un   indirizzo e-mail e volete che compaiano tutti sulla vostra chiave: </para><screen><![CDATA[bash$ gpg --list-secret-keys
]]><![CDATA[
/home/prova/.gnupg/secring.gpg
----------------------------
sec  1024D/C01BAFC3 2006-11-05 Utente di Prova <utente@dominio.qualsiasi>
ssb  2048g/7A4087F3 2006-11-05
bash$ gpg --edit-key C01BAFC3
Command> help
Command> adduid
[...]
Command> save]]></screen><para>7) Spedite la vostra chiave pubblica al keyserver: </para><screen><![CDATA[bash$ gpg --keyserver <keyserver> --send-key <vostro_key_id>]]></screen><para>Dovreste ottenere un messaggio di successo simile a questo: </para><screen><![CDATA[  gpg: inviata con successo a `<keyserver>' (status=200)]]></screen><para>8) Spedite le vostre informazioni al coordinatore, dicendo che avete   intenzione di partecipare al key signing party. Se la vostra chiave è   disponibile sui keyserver, il comando qui sotto mostrerà tutte le informazioni   che dovete spedire al coordinatore; la spedizione può avvenire ad esempio   tramite un messaggio e-mail cifrato. </para><screen><![CDATA[bash$ gpg --fingerprint  <vostro_Key_ID>]]></screen><para>9)  Smontate il dispositivo USB e rimuovetelo: </para><screen><![CDATA[bash$ umount /mnt/usbfs]]></screen><para>Nota: potete portare con voi il dispositivo USB per sicurezza, o potete   lasciarlo in un posto sicuro, in un cassetto sotto chiave ecc. In generale è   una pessima idea lasciare la vostra directory .gnupg, che contiene le vostre   chiavi, in un posto accessibile via internet. Se un malintenzionato riesce ad   avere accesso al vostro portachiavi privato, può tentare un attacco basato su   dizionari (cercando di indovinare la passphrase a forza bruta) per entrare in   controllo delle vostre chiavi. </para><para>10) Andate al party. </para></section><section><title>Perchè organizzare un Key Signing Party?</title><para>Ci sono tre motivi principali per organizzare quanti più key signing party è   possibile. </para><para>Il primo motivo, forse il più importante, per cui dovreste organizzare quanti   più key signing party possibili è per espandere la rete della fiducia: più   questa diventa profonda e interconnessa, più risulta difficile comprometterla.   Questo è molto importante per la comunità del software libero, sia per gli   sviluppatori che per gli utenti.  I membri della comunità usano la tecnologia   PGP per proteggere crittograficamente i loro pacchetti software, gli annunci,   i comunicati riguardanti la sicurezza.  La forza e la protezione che PGP   fornisce alla comunità, contro minacce per la sicurezza come cavalli di Troia,   virus, messaggi fasulli, ecc, sono direttamente proporzionali alla forza e   alla robustezza della rete della fiducia. </para><para>In secondo luogo, i key signing party aiutano ad acquisire una cultura della   sicurezza e una conoscenza del funzionamento di PGP e delle altre tecnologie   per la crittografia forte.  Per sfruttare i benefici della crittografia forte,   occorre usarla, e usarla nel modo corretto. Questo richiede la comprensione   della tecnologia che ne sta alla base, una comprensione che può risultare   difficile a chi non ha familiarità con i computer o la cultura del software   libero. Far incontrare persone che non conoscono la crittografia con persone   più esperte è sicuramente di aiuto per chi vuole imparare. </para><para>Infine, i key signing party aiutano a costruire comunità.  Aiutano i tecnici   a conoscersi meglio, a lavorare in rete e discutere di importanti questioni   riguardanti i diritti civili, il diritto alla crittografia e i meccanismi di   regolamentazione di internet.  La discussione è importante, non solo perché   rappresenta il primo passo, ma anche perché è il passo che precede l'azione.   Quando ho scritto la prima versione di questo documento non c'erano al mondo   reti della fiducia molto complesse, ma la situazione è ora molto migliorata: ci   sono molte più reti e molto più profonde, rispetto a qualche anno fa. Resta   sempre il fatto che se volete costruire una rete della fiducia nella   vostra zona, è molto probabile che i primi a farne parte saranno i leader della   comunità internet locale: sono le persone che hanno la possibilità di   introdurre tecnologie di crittografia forte nelle infrastrutture che   gestiscono, se decidono di farlo.  L'introduzione di queste tecnologie e   protocolli toglierebbe pericolosità a iniziative dannose per la privacy, come il    sistema carnivore dell'FBI, o le intercettazioni illegali compiute dalla   National Security Agency. </para><section><title>Parte del materiale per questa pagina è stato preso da: http://www.gnupg.org/howtos/it/keysigning_party.html</title></section></section><section><title>Misc</title><para>Tool per disegnare la rete di web of trust: </para><para><ulink url="http://git.debianit.it/?p=users/debianit/map.git;a=blob;f=create-graph"/> </para><screen><![CDATA[git clone http://git.debian-it.it/git/users/debianit/map.git]]></screen><para>Dopo aver applicato le patch (sotto) si possono eseguire i comandi: </para><screen><![CDATA[./add-keys ninux.org BCEB9E24 00685483 3EDBF9E1 39D5BCEF 019788AC 0DFD7CBB 68729FAF 1458F41C 39D5BCEF C4125E74 BC2C0F21 7A14FB6C BD774009 BC2C0F21
./create-graph ninux.org]]></screen><para>patch (sconsigliate da Mara) di claudyus <inlinemediaobject><imageobject><imagedata depth="16" fileref="http://ninux.org//moin_static197/ninuxtheme02/img/smile4.png" width="16"/></imageobject><textobject><phrase>;)</phrase></textobject></inlinemediaobject> </para><screen><![CDATA[Usa solamente il keyring locale, la png finale eredita il nome del keyring
]]><![CDATA[
diff --git a/add-key b/add-key
index 60cfa42..e095092 100755
--- a/add-key
+++ b/add-key
@@ -1,21 +1,20 @@
-#!/bin/bash
+#!/bin/sh
+# usare $0 <keyring.gpg> <uid1> [uid2] ... [uidn]
 
-_KEYRING=debian-it.gpg
-_OUTFILE=table.html
+_KEYRING=$1
+shift
 
-#_DD=/usr/share/keyrings/debian-keyring.gpg
-#_DM=/usr/share/keyrings/debian-maintainers.gpg
-
-if [ -n "$1" ]
-then
+while [ ! -z $1 ]; do 
        #gpg --keyring $_DD --keyring $_DM --export $1 | \
-       gpg --keyserver subkeys.pgp.net \
+       gpg --no-default-keyring --keyring ./$_KEYRING \
+               --keyserver subkeys.pgp.net \
                --keyserver pgp.mit.edu \
                --keyserver wwwkeys.eu.pgp.net \
                --recv-keys $1
-       gpg --export $1 | \
+       gpg --no-default-keyring --keyring ./$_KEYRING --export $1 | \
                gpg --no-default-keyring --keyring ./$_KEYRING --import
        #./party-table.pl ./$_KEYRING > ./$_OUTFILE
-fi
+       shift 
+done 
 
-./create-graph ./$_KEYRING
+echo ora ./create-graph $_KEYRING 
diff --git a/create-graph b/create-graph
index e763197..c48e075 100755
--- a/create-graph
+++ b/create-graph
@@ -10,6 +10,6 @@ _TMPPS=$(basename $_TMPGRAPH .dot).ps
 gpg --no-default-keyring --keyring ./$_KEYRING --list-sigs | \
        sig2dot -a > $_TMPGRAPH
 neato -Tps $_TMPGRAPH > $_TMPPS
-convert $_TMPPS debian-it-wot.png
+convert $_TMPPS `basename $_KEYRING.png`
 
 rm -rf $_TMPGRAPH $_TMPPS]]></screen></section></article>