diff options
-rw-r--r-- | guides/crittografia/00-info.rst | 9 | ||||
-rw-r--r-- | guides/crittografia/01-intro.rst | 34 | ||||
-rw-r--r-- | guides/crittografia/02-asimmetrica.rst | 90 | ||||
-rw-r--r-- | guides/crittografia/04-gpg.rst | 57 | ||||
-rw-r--r-- | guides/crittografia/05-otr.rst | 35 | ||||
-rw-r--r-- | guides/crittografia/06-approfondire.rst | 32 |
6 files changed, 257 insertions, 0 deletions
diff --git a/guides/crittografia/00-info.rst b/guides/crittografia/00-info.rst new file mode 100644 index 0000000..aa352af --- /dev/null +++ b/guides/crittografia/00-info.rst @@ -0,0 +1,9 @@ +=============================== +Crittografia per tutti i giorni +=============================== + +:Author: Elena \`\`of Valhalla'' Grandi +:Copyright: Copyright (c) 2011 Elena Grandi +:Abstract: Questa miniguida affronta il tema della riservatezza + delle comunicazioni online. + diff --git a/guides/crittografia/01-intro.rst b/guides/crittografia/01-intro.rst new file mode 100644 index 0000000..53beb63 --- /dev/null +++ b/guides/crittografia/01-intro.rst @@ -0,0 +1,34 @@ +Fino all'avvento dell'informatica di massa, la crittografia era +un'esigenza di nicchia, utile a governi, eserciti e grandi aziende, +ma non alla portata della gente comune, le cui esigenze di +comunicazione riservata erano generalmente soddisfatte da una +semplice busta chiusa. +Non tutti sanno che nelle comunicazioni digitali non si ha questa +possibilità: la maggior parte dei messaggi trasmessi via internet +viaggia in un formato leggibile da chiunque e ad esempio chi gestisce +le infrastrutture è tecnicamente in grado di sbirciare i messaggi +senza che nessuno se ne accorga, come un postino poteva leggere +quanto scritto su una cartolina postale. +D'altro canto, gli stessi strumenti informatici che consentono +la trasmissione dei messaggi permettono anche di applicare in +tempo reale tecniche di crittografia forte che pochi decenni +fa richiedevano apparati costosi e specializzati. + +La maggior parte di noi fa già uso di crittografia forte, +magari senza saperlo: serve a proteggere le comunicazioni +nel protocollo https usato per i siti web sicuri di banche, +commercio elettronico e tanto altro. +Usando programmi non molto più complicati da usare dei browser +è possibile dare la stessa riservatezza ad altri tipi di comunicazioni +online come email ed instant messaging, senza doversi accontentare +di raccontare i propri fatti sull'equivalente di una cartolina. + +Questa guida è un'introduzione sufficiente per +difendersi ad esempio da vicini smanettoni o sysadmin curiosi; +nel caso ci si debba proteggere da governi, grosse associazioni +criminali o addiritura dal Complotto Globale sarà ovviamente +il caso di approfondire altrove gli argomenti trattati. +Molti degli strumenti da usare saranno gli stessi, ma in quel +caso si dovrà essere molto più rigorosi nel loro uso, e sarà +utile una maggiore consapevolezza sulle problematiche correlate. + diff --git a/guides/crittografia/02-asimmetrica.rst b/guides/crittografia/02-asimmetrica.rst new file mode 100644 index 0000000..bc37789 --- /dev/null +++ b/guides/crittografia/02-asimmetrica.rst @@ -0,0 +1,90 @@ +Crittografia asimmetrica +------------------------ + +Ogni metodo di crittografia moderno consiste in un algoritmo +da applicare al messaggio che si vuole crittare usando come +parametro una chiave, ovvero un numero o dei caratteri; +il metodo è considerato abbastanza sicuro se conoscendo l'algoritmo +e il messaggio codificato, ma non la chiave, non è possibile +risalire al messaggio originario in un tempo abbastanza breve perché +le informazioni in esso contenute siano utili o interessanti. + +La crittografia tradizionale richiede l'esistenza di una chiave +segreta nota sia al mittente che al destinatario del messaggio: +il trasferimento di questa chiave deve avvenire su canali sicuri +e comporta difficoltà logistiche significative, specie quando +le persone coinvolte non possono vedersi frequentemente di persona. + +Per ovviare a tale problema, sono stati sviluppati degli algoritmi +di crittografia asimmetrica, nel quale esiste una coppia di chiavi +legate tra loro da una relazione matematica che fa sì che +un messaggio codificato con una delle due chiavi possa +essere decodificato esclusivamente conoscendo l'altra chiave. +Una delle due chiavi è detta chiave privata, e deve essere custodita +in modo sicuro, mentre l'altra è detta chiave pubblica e può +essere distribuita senza alcun rischio. + +La maggior parte della crittografia usata su internet fa uso +di uno di questi algoritmi, sia per la loro maggiore praticità +che per la capacità aggiuntiva di garantire l'identità del mittente. + +Crittare +^^^^^^^^ + +L'invio di un messaggio crittato con chiave pubblica può essere +visualizzato con un esempio pratico. +Alice vuole inviare a Bob +un messaggio, ma sospetta che il postino sbirci nelle buste; +Alice può allora chiedere a Bob di inviarle un lucchetto aperto +(la chiave pubblica) di cui solo lui ha la chiave (chiave privata). +Quando Alice riceve il lucchetto lo usa per chiudere una cassetta +in cui ha messo il messaggio; da quel punto in poi solo Bob +può aprire la cassetta, che può essere così spedita senza rischi. + +Con la crittografia asimmetrica via internet la procedura è simile: +Alice cerca su internet la chiave pubblica di Bob, si assicura +che sia veramente sua, codifica il messaggio e sa che solo Bob, +con la sua chiave privata potrà leggerlo; se Bob vuole rispondere dovrà +fare la stessa cosa con la chiave pubblica di Alice. + +Firmare +^^^^^^^ + +La firma dei messaggi sfrutta le proprietà delle chiavi al contrario: +un messaggio codificato con una chiave privata di Alice può essere +letto da chiunque abbia la sua chiave pubblica, ma non può essere +stato scritto da nessun'altro. + +Alice può quindi mandare a Bob un messaggio in chiaro accompagnato +dallo stesso messaggio crittato con la sua chiave privata: se +Bob ha dei dubbi sull'identita` del mittente può decodificare il +messaggio con la chiave pubblica di Alice e controllare che i due +messaggi siano identici. + +Certificate Autority e Web of Trust +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Il sistema di crittografia asimmetrica è stato pensato per evitare +che le persone debbiano incontrarsi continuamente di persona per +scambiarsi delle chiavi segrete, ma rimane un problema: come +accertarsi che una chiave pubblica appartenga veramente alla +persona a cui crediamo appartenga? + +Una soluzione a questo problema è data dalle *certificate autority*, CA, +degli enti che verificano l'identità di chi ha generato una +chiave, la firmano con la loro chiave privata e in questo modo +certificano l'appartenenza della chiave generata ad un proprietario. +Questo sistema è usato ad esempio per le connessioni web sicure, +ma ha il limite di dipendere da una gerarchia rigida e nella quale +riuscire a violare la sicurezza di una CA rischia di compromettere +tutto il sistema. + +Un'altra soluzione è quella della *web of trust* in cui non esistono +autorità centrali, ma ogni utente verifica le chiavi della sua +cerchia di conoscenti, eventualmente facendosene garante nei +confronti di chi decide di fidarsi delle sue verifiche. +Questo è l'approccio usato ad esempio da gpg, usato nella comunità +del software libero per firma e crittografia di email, ma anche +per la firma dei rilasci di software, ed ha il vantaggio di +essere scalabile a comunità di dimensioni disparate. + diff --git a/guides/crittografia/04-gpg.rst b/guides/crittografia/04-gpg.rst new file mode 100644 index 0000000..bfc1e80 --- /dev/null +++ b/guides/crittografia/04-gpg.rst @@ -0,0 +1,57 @@ +GPG +--- + +Il sistema di crittografia più diffuso nel mondo del software +libero è OpenPGP, ed in particolare la sua implementazione libera +GNU Privacy Guard, abbreviato GnuPG o GPG. + +Oltre ad essere adatto alla crittografia e/o firma di comunicazioni +digitali da scambiare ad esempio via email, è lo strumento usato per la +firma dei rilasci di software libero ed internamente dai +gestori di pacchetti delle distribuzioni GNU/Linux per +la verifica di quanto installato. +La corretta identificazione dei proprietari delle chiavi gpg +è affidata ad una Web of Trust, popolata anche tramite +keysigning party che si tengono in occasione degli incontri +della comunità del software libero. + +Sebbene per motivi di efficienza usi internamente anche degli +algoritmi di crittografia simmetrica, all'utente appare come +un sistema a chiave asimmetrica. +Usando gpg o uno dei suoi front-end grafici si genera una +coppia di chiavi pubblica e privata; per le normali esigenze +si potranno accettare i default di tutte le scelte proposte, +ma è fondamentale usare una passphrase sicura, non una semplice +parola, ma una combinazione di più parole, in modo da avere +una lunghezza significativa, difficile da indovinare ma facile da ricordare. + +Una volta generata la coppia di chiavi si può iniziare ad usare +gpg, ma prima è meglio prendere alcune precauzioni: innanzitutto +generare un certificato di revoca, da usare in caso di +smarrimento o compromessione della chiave, quindi fare una +copia della chiave privata e del certificato di revoca +e custodirle in un luogo sicuro. + +A questo punto è possibile inviare la propria chiave pubblica +ad uno dei keyserver usati dalla comunità del software +libero e degli utenti gpg, così da facilitarne la reperibilità. +Infine, si può impostare il proprio client di posta +per firmare automaticamente i messaggi inviati e per +verificare le firme presenti sui messaggi ricevuti. + +Per entrare nella Web of Trust sarà necessario incontrare di persona +altri utenti gpg, verificare reciprocamente l'identità +controllando anche un documento ufficiale (carta d'identità, +passaporto, patente...) e scambiarsi i fingerprint delle +rispettive chiavi. +In un secondo tempo, dal proprio computer, si potranno scaricare +le chiavi da un keyserver, controllare la corrispondenza +dei fingerprint e quindi firmare le chiavi altrui con la propria, +in modo da testimoniare la loro appartenenza alla persona incontrata. +In questa fase è anche possibile impostare un grado di fiducia +nelle firme apposte da un certo utente a chiavi altrui, +scegliendo se accettarle indiscriminatamente (sconsigliato), +se accettarle purché corroborate da altre testimonianze concordanti +o se ignorarle (ad esempio nel caso di persone propense +a firmare qualunque chiave senza le opportune verifiche). + diff --git a/guides/crittografia/05-otr.rst b/guides/crittografia/05-otr.rst new file mode 100644 index 0000000..1d244b9 --- /dev/null +++ b/guides/crittografia/05-otr.rst @@ -0,0 +1,35 @@ +OTR +--- + +Off The Record è un protocollo pensato per offrire riservatezza +alle comunicazioni della messaggistica istantanea. +Il modello tradizionale a cui si ispira non è, come GPG, quello +della lettera firmata in busta chiusa, ma quello della +conversazione in una stanza privata, in cui poter parlare +liberamente senza essere ascoltati da estranei e senza +lasciare tracce permanenti ed ufficiali di quanto detto. + +Per raggiungere tale obiettivo OTR usa chiavi temporanee, generate +al bisogno e non riutilizzate per conversazioni successive; +in questo modo se anche una chiave viene compromessa le +conversazioni passate non sono a rischio. +Dal punto di vista dell'identificazione, OTR garantisce che +i partecipanti alla conversazione non cambino, ma i messaggi +non vengono firmati, e alla fine della conversazione non +rimangono prove che possano attribuire quanto detto ad un partecipante. + +Sia i messaggi veri e propri che le comunicazioni tra due client +per iniziare la conversazione OTR sono inviati come normale testo, +in modo da poter usare OTR su qualunque sistema di chat, +compresi ad esempio Jabber (e Google Talk), MSN, AIM e molti altri. + +OTR è supportato nativamente da alcuni client di messaggistica +multiprotocollo, ed esistono plugin per altri client di maggior +diffusione come Pidgin, Kopete o Miranda. + +La maggior parte dei client permettono di impostare delle preferenze +di riservatezza con ogni singolo contatto, facendo scegliere +se essere protetti da OTR in ogni comunicazione in cui sia possibile +farlo, o se attivare esplicitamente la crittografia con un +apposito comando. + diff --git a/guides/crittografia/06-approfondire.rst b/guides/crittografia/06-approfondire.rst new file mode 100644 index 0000000..939daaf --- /dev/null +++ b/guides/crittografia/06-approfondire.rst @@ -0,0 +1,32 @@ +Per approfondire +---------------- + +In questa guida si sono volutamente evitati gli aspetti tecnici +e matematici della crittografia; delle buone spiegazioni si possono +trovare sulle pagine della wikipedia inglese, a partire dall'articolo +dedicato alla `crittografia +asimmetrica <http://en.wikipedia.org/wiki/Public-key_cryptography>`_ + +Per quello che riguarda i programmi da usare, innanzitutto +si segnala `GnuPG <http://www.gnupg.org/>`_, alcuni frontend +al quale sono segnalati sull'articolo di +`wikipedia su GnuPG <http://en.wikipedia.org/wiki/GNU_Privacy_Guard>`_, +così come sono elencati alcuni client di posta che lo supportino +direttamente o tramite plugin. + +Anche per quello che riguarda la crittografia della messaggistica +istantanea un buon punto di partenza è su wikipedia inglese alla +voce `Off-the-Record +Messaging <http://en.wikipedia.org/wiki/Off-the-Record_Messaging>`_ +comprendente anche un elenco di client con tale supporto. + +L'articolo `OpenPGP Best Practices +<https://we.riseup.net/riseuplabs+paow/openpgp-best-practices>`_ +fornisce un elenco di criteri utili per la scelta delle opzioni +della propria chiave. + +Ulteriori informazioni utili si trovano sulla pagina di +`documentazione sul sito GnuPG <http://www.gnupg.org/documentation/>`_, +dove è possibile trovare sia guide tecniche che materiale +teorico, anche tradotti in italiano. + |