Criptografia e firma digitale con GnuPG - I miei file e la mia posta elettronica in piena sicurezza

Embed Size (px)

Citation preview

CRIPTOGRAFIA E FIRMA DIGITALEconGnuPGI MIEI FILE E LA POSTA ELETTRONICAIN PIENA SICUREZZA

Maurizio maury Antonellihttp://www.maury.it

Some rights reserved: http://www.maury.it#licenza

LINUXDAYGiulianova 26 ottobre 2013

LA POSTA ELETTRONICA NON UNO STRUMENTO SICURO

I messaggi e-mail viaggiano sulla rete in chiaro, senza alcuna forma di codifica. Segue che sono sniffabili in maniera estremamente semplice.

Falsificare il mittente di un messaggio una cosa a dir poco banale. Con pochissima furbizia si pu far credere di essere qualcun altro.

RENDIAMO SICURA LA NOSTRA POSTA: Iniziamo a criptarla...

Di sistemi di codifica il mondo ne pieno. Sostituzione di caratteri, anagrammare le parole, ecc. ecc. sono tutti sistemi di codifica. In comune hanno una cosa fondamentale: esiste una chiave di criptazione e solo chi la possiede pu criptare/decriptare.

Es.: Prendiamo un messaggio di posta elettronica. Viaggeranno in rete una serie di byte (valori da 0 a 255). Prima di spedirli aggiungiamo 2 ad ogni valore da 0 a 253; 254 e 255 li sostituiamo con 0 e 1. (Questa la nostra chiave).

Chi ricever, conoscendo la chiave, potr decodificare il messaggio. Gli altri no.

Abbiamo visto un semplice esempio di criptazione a chiave simmetrica.

Il sistema utilizzabile solo dalle stesse persone. Nel momento che A e B comunicano tra loro con una chiave, questa non dovr andare in possesso di terzi. Se A usasse la stessa chiave con C le comunicazioni con B non sarebbero pi strettamente riservate.

Se A, invece, si inventasse una chiave per ogni amico di penna, si ritroverebbe un'infinit di codici. Il sistema diventerebbe ben presto poco pratico.

La soluzione?

CERTIFICATO A CHIAVE ASIMMETRICA

Inventiamo un sistema che utilizzer un certificato digitale composto da una coppia di chiavi (e non pi da una chiave sola).

Coppia di chiavi:CHIAVE PRIVATACHIAVE PUBBLICA

La CHIAVE PRIVATA andr conservata MOOOOOOLTO gelosamente. Permetter al proprietario di decriptare i messaggi da lui ricevuti e permetter anche di apporre una firma digitale a quelli spediti.

La CHIAVE PUBBLICA sar distribuita ai vari conoscenti. Potr essere utilizzata per codificare i messaggi in modo tale che solo chi possiede la relativa CHIAVE PRIVATA ad essa collegata potr decriptare. Verr utilizzata anche per verificare la firma digitale data dalla relativa chiave privata.

La CHIAVE PUBBLICA potr essere diffusa senza problemi. Darla a terzi non costituir nessun pericolo. Se nessuno entrer in possesso della CHIAVE PRIVATA, il sistema potr essere dichiarato (almeno per ora) matematicamente sicuro.

Facciamo un semplice esempio di certificato a chiave asimmetrica. Non sar applicabile come forma di sicurezza, ma permette di capire come la cosa sia possibile con determinate funzioni matematiche.

Immaginiamo di avere questa serie di numeri: 4, -2, -1, 5.

Immaginiamo di criptare questi 4 byte con una chiave pubblica che consiste nell'elevare al quadrato. Otterremo:16, 4, 1, 25

Chi possiede solo la chiave pubblica andr incontro a difficolt. Infatti, conoscendo soltanto che la chiave pubblica eleva al quadrato, io posso tentare di invertire l'operazione con la radice quadrata, ma la radice di 4 2 o -2? e di 16 4 o -4?

La chiave pubblica non sufficiente per risalire al messaggio originale.

L'esempio precedente non utilizza un modo utile per lo scopo che vogliamo prefissarci (troppo semplice per garantire sicurezza), ma mostra come possano esistere delle funzioni non invertibili che potranno essere utilizzate per creare confusione sui dati di partenza ai quali sono state applicate.

Con funzioni molto pi avanzate, che utilizzano una coppia di chiavi diverse, una pubblica e l'altra privata, si pu raggiungere il nostro scopo:

- CRIPTARE CON LA CHIAVE PUBBLICA

- DECRIPTARE ESCLUSIVAMENTE CON LA CHIAVE PRIVATA

Il titolare diffonder la chiave pubblica del proprio certificato digitale e potr quindi fare in modo che i propri amici gli scrivano criptando le e-mail. Solo lui le potr decodificare.

LA FIRMA DIGITALE

Immaginiamo di usare lo stesso certificato digitale in questo modo:

- Uso la mia chiave privata sul messaggio di posta che sto per inviare tramite un'operazione che mi dar un risultato univoco (checksum).

Solo quel messaggio potr dare quel risultato. Un solo carattere fuori posto o sostituito modificher la checksum.

Inoltre solo con la mia chiave privata posso ottenere quella checksum.

Chi in possesso della mia chiave pubblica non potr ottenere la stessa checksum sul messaggio, ma pu verificarla come corretta.

Ho trovato un modo per garantire che il mittente del messaggio possiede la chiave privata del certificato digitale. Segue che il mittente sono io.

HO FIRMATO DIGITALMENTE IL MIO MESSAGGIO

ATTENZIONE: Bisogna essere sicuri che la chiave pubblica sia realmente di un MIO certificato digitale. La cosa sempre meglio verificarla di persona, faccia a faccia (key-party, sito web, key-server).

DOVE TROVIAMO UN CERTIFICATO DIGITALE?

Alcune ditte (authority) di una certa visibilit rilasciano certificati digitali (S/MIME):

Thawte:Azienda sudafricana, riconosciuta da anni come authority per ilrilascio di certificati (http://www.thawte.com).Sistema dei notai per l'identit anagrafica.

In Italia:Poste ItalianeGlobalTrustVari istituti bancari...

L'authority si fa garante dell'identit della persona a cui rilascer il certificato.Questo significa che bisogner fidarsi di questa authority...

NON VOGLIO FIDARMI DI UN'AUTHORITY.

VOGLIO ESSERE IO A CREARMI UN CERTIFICATO E A GARANTIRE DELLA MIA IDENTIT.

GnuPG (o GPG)Gnu Privacy Guard

http://www.gnupg.org

GnuPG multipiattaforma.

Nativamente si utilizza da linea di comando (shell, prompt). Tuttavia esistono diverse interfacce grafiche.

Enigmail (estensione per i programmi Mozilla)GNU Privacy AssistantSeahorseGeheimnis

WinPT, GPGshell (per Windows)

Installato il programma

CREIAMO UNA COPPIA DI CHIAVI

gpg --gen-key

Nella chiave saranno inserite alcune vostre informazioni:Nome e cognomeIndirizzo e-mailEventuali commenti

Utilizzare sempre la lunghezza massima disponibile: 768, 1024, 2048 bit.

LA PASSPHRASE

Come ulteriore sicurezza, nel momento di creazione di un certificato digitale, verr chiesto di dare una passphrase (password).

Questa sar richiesta ad ogni operazione che si effettuer con la chiave privata.

Limita il danno tante volte la chiave privata cadesse in mani sbagliate.

Soliti consigli:niente parole di senso compiuto, mischiare caratteri maiuscoli, minuscoli e cifre, lunghezza di almeno 8 caratteri.

Importare ed esportare le chiavi

Ad esempio per utilizzarle su pi PC.

gpg --export -a nome-key_o_stringa-contenuta

gpg --import nome_del_file

Massima attenzione alla chiave privata. Non dovr andare in mano a nessuno, fuorch al relativo proprietario.

REVOCARE UNA CHIAVE

Ad esempio perch ne stata compromessa la sicurezza: chiave privata caduta in mani altrui.

Conviene sempre e da subito creare un certificato di revoca.

gpg --gen-revoke

AMMINISTRAZIONE DELLE CHIAVI

Naturalmente possibile fare diverse operazioni di gestione del proprio certificato digitale:

aggiungere indirizzi e-mailtogliere indirizzi e-mailimpostare un indirizzo e-mail di defaultmolte altre...

gpg --edit-key nome-key_o_stringa-contenuta

e quindi chiedere help per l'elenco delle funzioni disponibili.

FIRMARE UNA CHIAVE PUBBLICA

Importando una chiave pubblica, questa pu venire utilizzata; il client avviser che la firma digitale corretta, ma non ci sono verifiche sull'identit del titolare del certificato.

Una volta verificata la reale propriet della chiave (sempre di persona a tu per tu) si potr firmare la chiave e renderla credibile al 100%.

A questo punto i client di posta visualizzeranno sulle e-mail il messaggio che la firma digitale completamente OK.

Con GnuPG il garante dell'identit divento io stesso.

E-mail da mittente con chiave pubblica non verificata

E-mail da mittente con chiave pubblica verificata

FIRMARE DEI FILE

Come ulteriore utilizzo di GnuPG posso firmare dei file.

gpg --sign -b -a nome_file

Otterremo un nome_file.asc (.sig se non uso il -a).

gpg --verify nome_file.asc

Come per le e-mail, si firmer con la chiave privata. Quindi la firma sar rigorosamente stata apposta dal proprietario del certificato.

CRIPTARE E DECRIPTARE DEI FILE

Come ulteriore utilizzo di GnuPG posso criptare dei file delicati che ho sul PC.

gpg -e nome_file

Otterremo un nome_file.gpg

gpg -d nome_file.gpg > nome_file

Come per le e-mail, si cripter con la chiave pubblica. Solo chi possiede la chiave privata potr decriptare.

Bibliografia e tante tante info...

http://www.gnupg.org/(it)/howtos/it/GPGMiniHowto.html

http://thawte.ascia.net/

Pagine man di GnuPG

GRAZIE A TUTTI

PER L'ATTENZIONE

TeLUGTeramo Linux Users Grouphttp://[email protected]

OpenInformatixhttp://[email protected]

Maurizio Antonelli http://www.maury.it/blog - [email protected]