PGP: Pretty Good Pricvacy

Похожие документы
Elementi di Sicurezza e Privatezza Lezione 20 PGP cont d - Esercizi

Sicurezza della posta elettronica

GNU Privacy Guard - GnuPG/GPG

Laboratorio di Crittografia I - PGP/GPG

Pretty Good Privacy. PGP: cos è. PGP: cos è. Corso di Sicurezza su reti Barbara Masucci

Crittografia e OpenSource

Introduzione alla crittografia con OpenPGP

FIRMA ELETTRONICA. Il sistema di garanzia è stato individuato nella crittografia in quanto è in grado di assicurare:

Pretty Good Privacy. PGP fornisce crittografia ed autenticazione. creato da Phil Zimmermann nel in origine è un'applicazione per

Esercitazione 2 Certificati

Piccolo manuale PGP pubblica privata chiave pubblica chiave privata non firewall personale

Protezione della posta elettronica mediante crittografia

Usare la crittografia a chiave pubblica per tutelare la privacy nella corrispondenza elettronica.

Crittografia con Python

MSAck Hacklab. MSAck is prouds to announce: Metti al sicuro i tuoi dati: cifrali! MSAck::Hacklab C4Occupata WarmUp Hackit 0x0D

Disciplina: Sistemi e reti Classe: 5A Informatica A.S. 2015/16 Docente: Barbara Zannol ITP: Alessandro Solazzo

Domande di verifica su crittografia e Firma Digitale Esercitazione 15 Novembre per esame 2014 IC DAC 1 / 15

La crittografia open source ed il progetto GnuPG

Un messaggio cifrato è convertito in una stringa ASCII usando la conversione Radix-64 per fornire trasparenza alle applicazioni .

Crittografia. Crittografia Definizione. Sicurezza e qualità dei servizi su internet Università degli Studi di Pavia, C.

Introduzione alla Crittografia e a GnuPG. mario di raimondo

La sicurezza delle informazioni

Sicurezza nelle applicazioni multimediali: lezione 5, funzioni di hash. Funzioni crittografiche di hash

Sicurezza nelle applicazioni multimediali: lezione 6, posta elettronica e sicurezza. Posta elettronica e sicurezza

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

FIRMA DIGITALE E CIFRATURA

ISTITUTO DI ISTRUZIONE SECONDARIA SUPERIORE GALILEO FERRARIS ISTITUTO TECNICO TECNOLOGICO GALILEO FERRARIS - C.M. BATF06401B

Crittografia a chiave pubblica

Firma Digitale RSA con GnuPG

Sommario. Introduzione alla Sicurezza Web

Certificati digitali con CAcert Un'autorità di certificazione no-profit

TIM id. Guida all installazione del plugin per. l utilizzo della carta CNS

Corso di Crittografia Prof. Dario Catalano. Firme Digitali

Crittografia e firma digitale INTRODUZIONE INTRODUZIONE

RETI DI CALCOLATORI. Crittografia. La crittografia

Dicembre La Firma Digitale

Crittografia da Whatsapp a Wikileakes, tra spie e segreti di stato

PROCEDURA AGGIORNAMENTO LISTE MEDIANTE L INTERFACCIA WEB

PGP: cos è. PGP: cos è. Pretty Good Privacy (PGP) PGP ed e. Le versioni. Storia del PGP. Corso di Sicurezza su Reti 1.

Corso di Sicurezza Informatica. Sicurezza Web. Ing. Gianluca Caminiti

La funzione Hash. Garanzia dell integrità dei dati e autenticazione dei messaggi

firma digitale tra sicurezza per l utente ed esigenza della Rete

La privacy e il Web 2.0: una soluzione sicura per Google Documents e Mozilla Firefox

Seminario Formativo. Cenni di Crittografia

Il documento informatico e le firme elettroniche

Regione Liguria. Carta Regionale dei Servizi. Manuale di gestione

Firma Digitale. Avv. Gianmarco Cenci

P.G.P. P.retty G.ood P.rivacy

Funzioni di hash sicure: MD5 e SHA-1

Guida per i sistemi Windows (Compatibile con altri sistemi)

Protezione della posta elettronica sotto Linux

Sicurezza: necessità. Roberto Cecchini Ottobre

GNU/Linux e firma elettronica. Fabrizio Tarizzo - fabrizio@fabriziotarizzo.org 67FE D A0 23F A45 F1E8 E6E4

RISCHI CONNESSI ALL USO DELLA POSTA ELETTRONICA

Istruzioni per la gestione della password personale

Il certificato di origine della autorità di certificazione radice UNIROMA3RootCA : acquisizione ed installazione

Firma digitale aspetti tecnologici

Servizi Applicativi su Internet SMTP/POP/IMAP. La posta elettronica. Pierluigi Gallo, Domenico Garlisi, Fabrizio Giuliano

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

Guida per il PGP. Scritto da Spy. Indice:

Guida introduttiva: Uso dei voucher per la formazione

La sicurezza nelle reti di calcolatori

Architetture di rete. 4. Le applicazioni di rete

Principi di crittografia Integrità dei messaggi Protocolli di autenticazione Sicurezza nella pila di protocolli di Internet: PGP, SSL, IPSec

INFORMATICA SANITARIA Domande ed Esercizi di Preparazione all Esame (Parti 8-17)

Programmazione in Rete

Транскрипт:

PGP: Pretty Good Pricvacy Prof. O. Tomarchio Slide parzialmente tratte dal lavoro dello studente De Tommaso Davide

Cos'è PGP? PGP (Pretty Good Privacy) è un sistema crittografico, utilizzato principalmente nel sistema di posta elettronica, per garantire: scambio Autenticato di messaggi, Segretezza e Integrità dei dati. L'unico modo per garantire scambio autenticato e segretezza nello scambio dei messaggi è la cifratura - P.Zimmermann PGP è lo strumento che riesce ad avvicinarsi di più alla sicurezza in ambito militare - B. Schneier La sua sicurezza deriva da un corretto utilizzo della crittografia simmetrica e asimmetrica e da studi crittoanalitici che hanno dimostrato la robustezza degli algoritmi utilizzati.

PGP: un passato difficile Nel 1991 l' Ing. Philip Zimmermann pubblica su Usenet PGP 1.0 completo di sorgente, un prodotto in grado di ottenere un livello di sicurezza elevatissimo, utilizzabile senza alcuna licenza. In breve tempo si diffonde in tutto il mondo attraverso Internet. Nel 1993 Zimmermann viene accusato di esportazione illecita di armi dal Governo degli Stati Uniti. Nel 1996, conclusi i guai legali, Zimmermann fonda PGP Inc. Nel 1997 la PGP Inc. viene acquisita dalla Network Associates Inc.

PGP: un passato difficile Nel 1998 la NAI promuove la standardizzazione di PGP con il progetto OpenPGP. Nel 2001 Zimmermann lascia la NAI in seguito ad alcune dichiarazioni dello stesso su eventuali pressioni per l'inserimento di backdoor nelle release successive. Nel 2002 la NAI vende i diritti ad un gruppo di ex-sviluppatori PGP i quali fondano PGP Corp., di cui Zimmermann è ancora consulente, con l'idea di sviluppare nuovi progetti e continuare a supportare la comunità PGP già esistenti.

Quanto è sicuro PGP? C è sempre la possibilità che magari qualcuno conosca il modo di decriptarlo senza dover provare tutti i codici possibili. Magari si riesce a trovare dei punti deboli negli algoritmi di crittografia. Ma gli algoritmi che usiamo col PGP sono i migliori algoritmi che siano stati pubblicati nelle riviste universitarie sulla crittografia. Sono algoritmi che sono stati revisionati nella maniera più scrupolosa da altri crittografi e sono stati sottoposti a tentativi di decrittografia per parecchi anni. E quindi se riteniamo che questi siano algoritmi di crittografia efficaci e che sia necessario provare tutti i codici possibili per accedervi, ci vorrebbe un tempo più lungo della storia del pianeta Terra per usare tutti i computer esistenti al mondo in modo da decifrare uno di questi messaggi. - P.Zimmermann

Funzionamento PGP PGP opera in 2 fasi: Fase 1 Consente di ottenere Autenticazione e Integrità dei dati tramite l'utilizzo della Firma Digitale. Fase 2 Consente di ottenere Segretezza nello scambio di messaggi, tramite cifratura simmetrica utilizzando una chiave effimera diversa per ogni messaggio generato.

PGP: autenticazione Al messaggio è applicata una funzione hash Algoritmi usati: MD5 (128 bit) o SHA (160 bit) Il valore hash (digest) viene cifrato con la chiave privata del mittente (firma digitale) Algoritmi usati: RSA o DSA

Fase 1 Garantire Autenticazione e Integrità 1. Viene calcolato l'hash del messaggio in chiaro. 2. Il codice hash viene cifrato con un algoritmo crittografico asimmetrico, utilizzando la propria chiave privata PR-KEY. 3. Il risultato viene concatenato al messaggio.

PGP: confidenzialità Il messaggio è cifrato con un algoritmo a chiave simmetrica (session key) generata dal mittente per ogni messaggio Algoritmi usati: AES, CAST, IDEA, 3DES, TWOFISH La session key è poi cifrata con la chiave pubblica del destinatario Algoritmi usati: RSA, DH/DSS

Fase 2 Garantire Segretezza 1. Viene generata casualmente una chiave temporanea SESS-KEY di 128 bit. 2. Viene cifrato il messaggio con un algoritmo crittografico simmetrico, utilizzandola chiave temporanea. 3. Il risultato viene concatenato alla chiave temporanea cifrata con un algoritmo crittografico asimmetrico, utilizzando la chiave pubblica del destinatario.

PGP: la combinazione vincente Per garantire Autenticazione, Segretezza e Integrità, PGP combina le due fasi precendenti, aggiungendo altri servizi. Frammentazione e Compressione Per ridurre la ridondanza, PGP esegue una compressione del messaggio firmato, utilizzando l'algoritmo ZIP. Per superare i limiti in termini di dimensioni massime del messaggio, PGP ricorre ad un'operazione di Frammentazione Codifica compatibile con RFC 822 Per superare i limiti imposti dall' RFC 822 il messaggio in chiaro viene codificato in Radix-64. In questo modo il messaggio conterrà solo caratteri ASCII a 7 bit.

PGP: la combinazione vincente Mittente 1. Il mittente genera un messaggio e una chiave di sessione di 128 bit SESS-KEY. 2. Calcola l hash di quel messaggio, utilizzando l algoritmo SHA-1. 3. Il codice hash viene cifrato con RSA utilizzando la sua chiave privata PRI-KEY. 4. La firma digitale viene concatenata al messaggio. 5. Si comprime il risultato ottenuto con l algoritmo ZIP. 6. Si cifra il messaggio compresso utilizzando un algoritmo simmetrico, con la chiave di sessione SESS-KEY. 7. Si cifra la chiave di sessione con RSA, utilizzando la chiave pubblica del destinatario PU-KEY concatenandolo al messaggio cifrato al passo precendente. 8. Si codifica il risultato con radix-64.

PGP: la combinazione vincente Destinatario 1. Il destinatario riceve un messaggio codificato in radix-64 ed esegue la decodifica. 2. Decifra la chiave di sessione SESS-KEY utilizzando RSA con la sua chiave privata PR-KEY. 3. Decifra il messaggio cifrato utilizzando l algoritmo simmetrico scelto con la chiave di sessione appena decodificata. 4. Decomprime il messaggio compresso con ZIP. 5. Verifica la firma del mittente calcolando l hash del messaggio e confrontandolo con il risultato ottenuto dalla decifrazione (RSA e chiave pubblica del mittente) dell hash cifrato dal mittente. 6. Se la verifica va a buon fine il messaggio è valido.

PGP: coppie di chiavi La crittografia asimmetrica si basa sulla conoscenza di una coppia di chiavi pubblica/privata, per ogni utente. PGP offre la possibilità di utilizzare più coppie di chiavi pubblica/privata al fine di migliorare la sicurezza e permettere agli utenti di cambiare le proprie coppie di chiavi ogni volta lo ritengano necessario. Come fa a sapere il destinatario con quale chiave privata è stato firmato il messaggio, e con quale chiave pubblica è stato cifrato, tra le possibili coppie? Ad ogni chiave pubblica viene associato un KEY-ID!

PGP: coppie di chiavi Ad ogni chiave pubblica PGP associa un KEY-ID, che è costituito dai 64 bit meno significativi della stessa. E una lunghezza sufficiente per ridurre la probabilità che un utente abbia identificatori uguali per chiavi a diverse. Mittente Il KEY-ID della chiave pubblica del mittente viene concatenato alla firma digitale. Il KEY-ID della chiave pubblica del destinatario viene concatenato alla chiave di sessione. Destinatario Prima di decifrare il messaggio e verificare la firma, il destinatario controlla i KEY-ID presenti per selezionare le chiavi corrispondenti.

PGP: coppie di chiavi KEY-ID nella Fase 1 KEY-ID nella Fase 2

PGP: key ring La sicurezza di PGP, nel suo insieme, è affidata alla conoscenza da parte di un singolo utente di quattro tipi di chiavi: 1. Chiavi di sessione (simmetriche) 2. Chiavi Pubbliche 3. Chiavi Private PGP utilizza 2 strutture dati per gestire il portachiavi personale di un utente: - Public-Key Ring - Private-Key Ring

PGP: portachiavi (key ring) Private Key Ring Memorizza la coppia di chiavi, pubblica e privata, dell utente La chiave privata è cifrata con una passphrase Public Key Ring Usato per memorizzare le chiavi pubbliche delle persone note all utente

PGP: distribuzione delle chiavi E necessario distribuire la nostra chiave pubblica per consentire agli altri utenti di mandarci messaggi cifrati per verificare la nostra firma E necessario ottenere le chiavi pubbliche di altri e inserirle nel nostro public keyring per mandare loro messaggi cifrati per verificare le loro firme

PGP: distribuzione delle chiavi Per ottenere la chiave pubblica di qualcuno si può chiederla direttamente alla persona interessata......oppure si possono usare i keyserver server dedicati al deposito e al prelievo delle chiavi pubbliche in rete tra loro: ogni chiave immessa in un server viene diffusa a tutti gli altri

PGP: l'anello debole della catena La debolezza maggiore dei sistemi di crittografia asimmetrica è la gestione delle chiavi pubbliche. Come fare a essere certi che una chiave pubblica appartenga effettivamente ad un determinato utente e/o che non sia stata falsata nel luogo in cui è stata memorizzata? PGP fornisce dei meccanismi (non obbligatori) basati su livelli di fiducia assegnati alle chiavi pubbliche, che dipendono dai firmatari dei certificati. Più alto sarà il livello di fiducia assegnato ad una chiave pubblica di un utente, maggiore sarà la probabilità che la chiave appartenga effettivamente a quell'utente.

Trust Model Direct Trust: l utente si fida della validità della chiave perché ne conosce la provenienza. Hierarchical Trust: esistono diversi certificati di root che garantiscono fiducia. Immaginiamo il tutto come un grande albero. Web of Trust (PGP): Modello di fiducia cumulativo dei precedenti. Non ha bisogno di CA certificanti. Si basa sul Principio dei sei gradi di separazione.

PGP: Web of Trust Architettura decentralizzata ed utente-centrica : ogni utente si rende responsabile certificando chiavi di altri utenti. Le chiavi sono memorizzate nei keyring Si considerano valide con un certo livello di fiducia È possibile, tramite le firme associate ad una chiave, derivare la fiducia nella stessa secondo il modello web of trust. Esistono diversi livelli di fiducia associati dall utente al proprietario delle chiavi inserite nel proprio portachiavi: Ultimate trust, Unknown, untrusted, meta-trusted, trusted. È possibile assegnare alle chiavi una o più firme e verificando il firmatario modificare il campo SIGTRUST al valore ownertrust di questo proprietario. Campo di legittimità della chiave:calcolato in base ai campi di trust delle firme presenti per questa voce.

Public Key-ring: I Keyring Memorizza le chiavi pubbliche delle persone note all utente. Campi di trust: Owner trust Firma Signature trust Key legitimacy Private Key-ring: Struttura dati che memorizza le coppie di chiavi, pubbliche e private, dell utente.

PGP: key ring La Public-Key Ring è una tabella che mantiene informazioni su chiavi pubbliche di nodi conosciuti. Ogni voce di questa tabella è un certificato di chiave pubblica. Di seguito sono elencati alcuni campi della tabella: Timestamp: la data/ora in cui è stata generata la voce. Key ID: i 64 bit meno significativi della chiave pubblica. Public Key: la chiave pubblica in questione. Codice utente: identifica il proprietario della chiave. Firma: Una o più firme digitali del garante del certificato.

PGP: key ring La Private-Key Ring è una tabella che mantiene informazioni sulle coppie di chiavi pubblica/privata di proprietà del nodo. Di seguito sono elencati alcuni campi della tabella in questione: Timestamp: la data/ora in cui è stata generata la voce. Key ID: i 64 bit meno significativi della chiave pubblica. Public Key: la chiave pubblica in questione. Private Key: la chiave privata crittografata. Codice utente: identifica il proprietario della chiave. La chiave privata è crittografata utilizzando una chiave a frase segreta (4)

PGP: Trust della chiave pubblica Le informazioni sui livelli di fiducia vengono memorizzati nel Public-Key Ring, nei seguenti campi: Trust della chiave pubblica Trust della/delle firma/e del certificato Trust del proprietario della chiave pubblica Quando un nodo riceve un certificato, valorizza i campi di fiducia nel seguente modo: 1. PGP richiede all utente di assegnare un livello di fiducia al proprietario di quella chiave pubblica, tra: sconosciuto, non fidato, parzialmente fidato o completamente fidato. In questo modo viene assegnato un valore corrispondente al livello di fiducia, specificato dall utente, al campo Trust del proprietario della chiave pubblica.

PGP: Trust della chiave pubblica 2. PGP verifica che esista nel public-key ring una chiave pubblica di chi ha firmato il certificato. Viene quindi assegnato un valore al campo Trust della firma del certificato, che indica se il firmatario è fidato o sconosciuto. 3. Infine viene calcolato un valore numerico da assegnare al campo Trust della chiave pubblica, in base ai livelli di fiducia di chi ha firmato il relativo certificato. Più alto è il livello di fiducia dei firmatari, maggiore sarà il livello di fiducia assegnato a quella chiave pubblica.

PGP: certificato di revoca Un certificato di revoca avvisa che una data chiave pubblica non è più valida E firmato con la chiave privata corrispondente alla chiave pubblica che si vuole revocare PGP installa il certificato nel keyring di chiunque lo riceva, impedendo l uso della chiave compromessa

PGP: applicazioni Innumerevoli le applicazioni che sfruttano PGP www.pgpi.org Informazioni su PGP, OpenPGP, e sulle applicazioni che utilizzano PGP

GnuPG: GNU Privacy Guard GnuPG è un software della Free Software Foundation, sostenuto dal governo tedesco. GnuPG è un implementazione libera dello standard OpenPGP, che permette di cifrare e firmare dati e comunicazioni. Possiede un sistema integrato per la gestione delle chiavi. E' distribuito per parecchi sistemi operativi: FreeBSD, OpenBSD, e NetBSD, GNU/Linux, Microsoft Windows e Mac OS X.

GnuPG: GNU Privacy Guard E uno strumento a linea di comando, ma dispone anche di numerosi frontend grafici, come GPA (Gnu Privacy Assistant), che semplificano notevolmente il lavoro dell utente. La versione 2 di GnuPG è compatibile con S/MIME. gnupg.org/

GnuPG for Developers GnuPG Java Wrapper API http://www.macnews.co.il/mageworks/java/gnupg/ Python GPG module http://www.amk.ca/python/code/gpg GnuPG::Interface Perl http://gnupg interface.sourceforge.net/ GnuPG PHP Module http://pecl.php.net/package/gnupg

FireGPG FireGPG è un plugin per il browser Mozilla Firefox che consente di cifrare, decifrare, firmare e verificare firme di qualsiasi contenuto web, utilizzando GnuPG E' rilasciato sotto licenza GPL. FireGPG rende GnuPG accessibile direttamente dalla toolbar di Gmail, la nota webmail di Google. http://firegpg.tuxfamily.org/

FireGPG