Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca...

30
Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: GNU Privacy Guard: Introduzione all’uso Introduzione all’uso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Depa Corso Svizzera, 185 – 10149, Torino, Italy [email protected] Sperimentazioni di sicurezza A.A. 2009-2010

Transcript of Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca...

Page 1: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

GNU Privacy Guard:GNU Privacy Guard:Introduzione all’usoIntroduzione all’uso

Speaker:Luca Maria Aiello, PhD studentUniversità degli Studi di Torino, Computer Science DepartmentCorso Svizzera, 185 – 10149, Torino, [email protected]

Sperimentazioni di sicurezza A.A. 2009-2010

Page 2: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Pretty Good Privacy & GNU Privacy Guard

o PGP è un programma di crittografia e firma digitale ideato e sviluppato da Phil Zimmermann nel 1991• Uno dei crittosistemi più usati al mondo• Divenuto un prodotto commerciale della PGP

corp.o OpenPGP è uno standard Internet (RFC 4880) che

è stato pubblicato sulla base della specifica originale di PGP

o GPG è un’implementazione open-source (licenza GPL) dello standard OpenPGP• Versione 1.0 nel 1999

PhilZimmermann

Page 3: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Download e installazione

o GPG website: http://www.gnupg.org/download• Directory listing a: ftp://ftp.gnupg.org/gcrypt/gnupg/• Scaricare la versione 1.4.9

o Installazione• ./configure --prefix=$HOME• make• make install

o Il comando gpg risiede nella cartella g10o Per poter eseguire il comando gpg da una cartella qualsiasi potete

semplicemente usare un alias• Nel file $HOME/.cshrc aggiungere:

alias gpg /usr/home/…/gnupg-1.4.9/g10/gpg

Page 4: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Struttura generale comando

o L’interazione con GPG avviene tramite linea di comando• Esistono anche interfacce e plug-in grafici, vedremo Enigmail

o Alcune opzioni utili sono• --armor → trasforma l’output binario in ASCII• --output file → scrive l’output sul file specificato

o gpg --help → lista dei comandio man gpg → guida completa dei comandi

gpg [opzioni] comando parametri

Page 5: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Generazione chiavi

o Richiede diversi parametri• Tipo di chiavi (DSA, ElGamal, RSA)

• Selezionare DSA (Firma) + ElGamal (Cifratura a chiave pubblica)• Dimensione chiave

• Selezionare la dimensione massima possibile• Scadenza della chiave• Nome, cognome, email• Una passphrase, per cifrare le chiavi private su disco

• Scegliere una passphrase sicura• Un po’ di input casuale…

gpg --gen-key

Page 6: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

I keyring

o Private keyring• KeyID• UserID• Timestamp• Chiave privata

o Public keyring• KeyID• UserID• Timestamp• Chiave pubblica• Validità• Trust• Firme

gpg --list-keys [id_chiave]gpg --list-secret-keys [id_chiave]

o Le chiavi sono mantenute in due strutture dati:

Page 7: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

I keyring: esempio

o Nella cartella HOME/.gnupg risiedono i keyring assieme ad altri file di configurazione

o Più avanti vedremo in dettaglio le operazioni di gestione dei keyring

pub 1024D/2C2E319E 2009-05-06uid Yagami Light <[email protected]>uid Kira <[email protected]>sub 2048g/291205D4 2009-05-06sub 2048R/5CC1DD2A 2009-05-06 [expires: 2009-06-08]sec 1024D/2C2E319E 2009-05-06uid Yagami Light <[email protected]>uid Kira! <[email protected]>ssb 2048g/291205D4 2009-05-06ssb 2048R/5CC1DD2A 2009-05-06ssb 1024R/8749C81F 2009-05-06

Public/private

Chiavisecondarie

D=DSAR=RSA

g/G=ElGamal

Datacreazione

Key ID

Datascadenza

#bit

Page 8: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Certificato di revoca

o Una volta creata, la chiave privata può essere compromessa, persa o rubata

o È bene creare, subito dopo la generazione della chiave, un certificato di revoca, firmato con la chiave privata• Tale certificato deve essere pubblicato per segnalare che la

chiave non è più valida• Non ha valore retroattivo sulle firme già effettuate• Da custodire al sicuro…

o Per cancellare una delle chiave dai keyring eseguire:

gpg --output revoca --gen-revoke id_chiave

gpg --delete-secret-keys id_chiavegpg --delete-keys id_chiave

Page 9: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Esportare ed importare chiavi

o Per diffondere la propria chiave pubblica è necessario esportarla• Il file risultante può essere inviato via mail, pubblicato su un sito

web o su un keyservero Quando si importa una chiave, è sempre bene verificarne l’integrità

tramite fingerprint• Usando un canale che assicuri l’identità del proprietario (e.g.

telefono)

gpg --armor --output file –-export user_idgpg –-import filegpg –-fingerprint user_id

Page 10: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Validità delle chiavi importate

o Se si è sicuri del legame tra la chiave ricevuta e l’identità associata, si firma la chiave con la propria chiave privata

o Come vedremo, le firme servono a calcolare il valore di validità della chiave• Se si firma direttamente una chiave, questa assume

automaticamente validità completa• Nota: è necessario un refresh per visualizzare la validità corretta

o È possibile verificare tutte le firme che sono allegate alla chiaveo Ogni chiave pubblica è self-signed dal suo proprietario

gpg --edit-key idCommand> signCommand> check

Page 11: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Cifrare con chiave simmetrica

o La cifratura a chiave simmetrica non usa le chiavi del keyring• È necessario immettere una password

o È possibile selezionare un particolare algoritmo di cifratura simmetrica• gpg --version → visualizza gli algoritmi disponibili

gpg [–-cypher-algo algoritmo] --symmetric filegpg --output decifrato --decrypt cifrato

Page 12: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Cifrare con chiave pubblica

o È necessario possedere la chiave pubblica del destinatarioo L’input della cifratura viene anche compresso

• Motivi di efficienza e sicurezza

gpg –-recipient id_dest --encrypt filegpg --output decifrato --decrypt cifrato

Page 13: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Firmare

o Esistono tre modalità diverse di firma e rispettiva verifica1. Compressione e firma2. Firma senza compressione3. Firma distaccata

o È possibile cifrare e firmare specificando sia --encrypt che --sign

1.gpg --sign filegpg --decrypt signedfile

2.gpg --clearsign filegpg --verify signedfile

3.gpg –-detach-sig filegpg --verify signature file

Page 14: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Gestione dei keyring

o Alcune operazioni nel menù key editgpg --edit-key

Command> key id – (de)seleziona una chiave secondariaCommand> uid id – (de)seleziona uno useridCommand> adduid – aggiunge un nuovo userid alla chiaveCommand> addkey – aggiunge una nuova chiave secondariaCommand> deluid – cancella l’userid selezionatoCommand> delkey – cancella la chiave selezionataCommand> revkey – revoca immediatamente la chiave selezionataCommand> revsig – revoca la firma della chiave selezionataCommand> expire – aggiorna la data di scadenza di una chiaveCommand> help – mostra tutti i comandi del menùCommand> quit – esce dal menù

Page 15: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

o Il menù key edit mostra i valori di trust e validity per ogni chiave

pub 1024D/FD54CEAC created: 2009-05-06 expires: mai utilizzo: SC fiducia: completa validità: completasub 1056g/4FA4C00C created: 2009-05-06 expires: mai utilizzo: E [ full ] (1). Misato <[email protected]>

pub 1024D/FEC62EF9 created: 2009-05-06 expires: mai utilizzo: SC fiducia: sconosciuto validità: completasub 2048g/C376884C created: 2009-05-06 expires: mai utilizzo: E [ full ] (1). John Linden <[email protected]>

Keyring: esempio

Page 16: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Usare la fiducia per convalidare chiavi

o Fino ad ora abbiamo comunicato con utenti che abbiamo potuto contattare direttamente al fine di verificare il legame tra la loro chiave e la loro identità• Nella realtà, questo contatto diretto non sempre è possibile

o In caso non sia possibile una verifica diretta, bisogna essere sicuri della validità del legame identità-chiave, che può essere modificato da un Man In The Middle

o A tale scopo ci si appoggia al concetto di fiducia per convalidare le chiavi• Se un certo numero di utenti certificano tramite firma il legame

identità-chiave, allora tale legame viene considerato valido valido (Web of Trust)

Page 17: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Web of trust: esempio

A

B

C

o L’utente A conosce solo B• Ha verificato l’identità di B e

ha firmato la sua chiave• Si fida di B

o B conosce C• Ha verificato l’identità di C e

ha firmato la sua chiave• Invia ad A la chiave di C

firmatao Dato che A si fida nella capacità

di B di verificare chiavi, accetta la chiave di C come valida

• Questo non implica che A si debba fidare di C!

Ritiene valida la chiave diSi fida diRitiene valida, per fiducia, la chiave di

Page 18: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Web of trust in PGP

Page 19: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Trust in GPG

o Trust può assumere 5 diversi valori• Unknown, never, marginal, complete, ultimate

o La validità della chiave è automaticamente posto a 1 se:• È firmata da un numero sufficiente di chiavi valide

• Da se stessi, da 1 utente con trust complete o da 3 con trust marginal

• La catena di trust non è più lunga di 5 passio I parametri del numero di firme necessarie e della lunghezza della

catena possono essere cambiati nel file di configurazione

gpg --edit-key idCommand> trust

Page 20: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Accettare delle chiavi sulla base del trust

o Ponete a marginal il trust verso gli utenti che conosceteo Fatevi “presentare” un utente che non conoscete da diversi utenti

noti, fino a quando la validità della chiave del nuovo utente non diventa complete

o La chiave pubblica la cui validità non sia complete può essere utilizzata, ma GPG visualizza un avvertimento

o Giocate con i parametri di trust per prendere confidenza con il meccanismo

Page 21: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

PGP: considerazione metodologica

o L’approccio completamente decentralizzato di PGP evita il costo dell’introduzione di una terza parte fidata

o Di contro, il trust deve essere riposto nella capacità degli utenti di riconoscere dei validi legami identità-chiave pubblica…

Sperimentazioni di Sicurezza, A.A. 2009/2010

Page 22: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o Usare la linea di comando per un uso privacy-aware della mail può risultare scomodo…

o Enigmail è un plug-in per Mozilla Thunderbird che premette l’uso di GPG nel MUA• Necessita che GPG sia già installato sulla macchina

o Download:• https://addons.mozilla.org/it/thunderbird• http://enigmail.mozdev.org• http://likir.di.unito.it/packages/enigmail.zip

o Installazione, dal menù di Thunderbird:• Strumenti > Componenti aggiuntivi > Installa

Page 23: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o Una volta installato il plug-in, compaiono nuove opzioni

Page 24: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o È possibile cifrare e firmare le mail in uscita

Page 25: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o In occasione della spedizione del primo messaggio, verrà richiesto di selezionare la coppia di chiavi in uso

o In Avanzate si possono selezionare diverse proprietà aggiuntive…

Page 26: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o Ogni operazione che necessita l’uso della chiave privata richiede l’immissione della password

Page 27: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

Enigmail

o È possibile decifrare i messaggi in entrata. Le firme dovrebbero essere verificate automaticamente

Page 28: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

GPG vs S/MIME

o S/MIME (Secure Multipurpose Internet Mail Extention) è uno standard di crittografia a chiave pubblica• Utilizzato per la sicurezza della posta elettronica• Offre gli stessi servizi di autenticazione, integrità del messaggio,

non-repudiabilità• Sostituisce la web of trust con un più classico sistema basato su

certificati emessi da CAo Enigmail offre anche il supporto per S/MIME

Page 29: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

GNU Privacy Guard:GNU Privacy Guard:Introduzione all’usoIntroduzione all’uso

Speaker:Luca Maria Aiello, PhD studentUniversità degli Studi di Torino, Computer Science DepartmentCorso Svizzera, 185 – 10149, Torino, [email protected]

Sperimentazioni di sicurezza A.A. 2009-2010

Grazie per l’attenzione!

Page 30: Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,

Sperimentazioni di Sicurezza, A.A. 2009/2010

©2009 by Luca Maria Aiello. Permission to make digital or hard copies of part or all of this material is currently granted without fee provided that copies are made only for personal or classroom use, are not distributed for profit or commercial advantage, and that new copies bear this notice and the full citation.