Prof. Zambetti -Majorana © 2008 ESERCITAZIONE MODULO 5 PGP - SSH - PPP Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Protocollo SSH Due attori Client : attiva la richiesta di collegamento Server : cui è indirizzata la richiesta Esistono due versioni del protocollo tra loro non interoperabili (ver 1, ver 2) Ver 1: meno recente, supportata da tutti i prodotti Ver 2: nuovo, non supportata da tutti i prodotti Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Schema SSH Il client stabilisce una connessione col server, il server risponde con una stringa del tipo SSH-1.99-OpenSSH_2.3.0 Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Schema SSH Il server genera un numero casuale di 64 bit (cookie), cui concatena Dimensione e dati della chiave pubblica del server Rigenerata ogni ora chiave pubblica dell’host (fissa dall’installazione) Identifica unvicamente quell’host Il client verifica che la chiave pubblica dell’host coincida con quanto memorizzato in precedenza, se no, IN BASE ALLA CONFIGURAZIONE (StrictHostKeyChecking in ssh_config del client), interrompe la comunicazione, Visualizza finger print e chiede conferma Inserisce automaticamente la chiave pubblica del server Il client genera due oggetti: MD5 a 128 bit di : chiave host + chiave server + cookie Chiave di sessione : numero casuale a 256 bit Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Schema SSH Viene eseguito l’XOR tra identificativo sessione e i primi 128 bit della chiave di sessione prima generata Viene cifrata con la chiave pubblica del server e poi con quella pubblica dell’host Si invia il tutto al server Il server decifra i dati ricevuti, estrae la chiave di sessione che verrà usata per lo scambio di dati (algoritmo simmetrico) Stabilita la connessione inizia la fase di autenticazione User e password nel caso più semplice Poco sicura (password semplici) Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Schema SSH Autenticazione RSA o DSA Più sicura Il client indica al server qual è la chiave che vorrà utilizzare Il server genera un challenge (casuale) di 256 bit, lo cifra con la chiave pubblica dell’utente e invia il tutto al client Il client usa la chiave privata per decifrare il challenge Viene di solito chiesta la password all’utente che non viene trasmessa, ma usata per la decrittazione della chiave privata dell’utente (viene salvata cifrata) Calcola un digest MD5 del challenge Lo invia al server Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Schema SSH Il server confronta il digest ricevuto con quello calcolato, se corrispondono considera autenticato l’utente Prof. Zambetti -Majorana © 2008
File di configurazione Client etc/ssh/ssh_config Server etc/ssh/sshd_config Parametri Protocol Ciphers MACs PermitEmptiPasswords (solo sshd) PasswordAuthentication (solo sshd) PermitRootLogin (solo sshd) StrictHostKeyChecking Prof. Zambetti -Majorana © 2008
File con chiavi di autenticazione Client /home/<nomeutente>/.ssh/known_hosts (deve contenere la chiave pubblica del server che voglio verificare) Server /home/<nomeutente>/.ssh/authorized_keys2 (deve contenere la chiave pubblica dell’utente che voglio autenticare) Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Comandi ssh Avvio-riavvio-stop server da root /etc/inet.d./sshd start /etc/inet.d./sshd restart (dopo modifica parametri) /etc/inet.d./sshd stop Generazione coppia chiavi ssh-keygen Opzioni –l per ottenere la finger print di una chiave (richiede –f per specificare il file che la contiene) -f specifica file -t tipo chiave (rsa/dsa) Comandi connessione ssh <ip server>/<nomeserver> Opzioni –l <nome> -i <chiave> -v Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Problemi con SSH Utlizzo di una crittografia simmetrica debole Mai usare autenticazione basata su nome e password Aggiornare sempre i programmi (preferibile la versione 2) Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Tool SSH Linux, Windows, MacOSX OpenSSH ssh, ssh-keygen, sshd Google ...... Prof. Zambetti -Majorana © 2008
Creare una chiave con OpenSSH Autenticazione tramite crittografia asimmetrica (RSA) Ogni utente deve avere una copia di chiavi (pubblica e privata) e deve fornire la chiave pubblica al server Generazione tramite OpenSSH Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Connessione Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 PGP Pretty Goog Privacy : ideato nel 1991 da Phil Zimmerman Servizi offerti per la posta elettronica Firma elettronica Confidenzialità Compressione Conversione in base 64 GnuPG : versione open source www.gnupg.org Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 PGP Il mittente scrive un messaggio Il mittente crea un hash del messaggio Il mittente cifra l’hash con la sua chiave privata Il mittente inserisci l’hash cifrato prima del messaggio e trasmette entrambi Il destinatario riceve la posta Il destinatario decifra l’hash con la chiave pubblica del mittente Il destinatario rigenera l’hash Il destinatario confronta l’hash calcolato con quello ricevuto Se i due hash coincidono il messaggio non è stato modificato Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 PGP e confidenzialità Il mittente scrive un messaggio Il prog. di trasmissione crea un numero casuale usato per cifrare quel singolo messaggio (chiave di sessione) Il prog. di trasmissione cifra il messaggio con un alg. Simmetrico usando la chiave di sessione La chiave di sessione viene cifrata con la chiave pubblica del destinatario e premessa al messaggio Il messaggio cifrato è inviato al destinatario Il destinatario decifra la chiave di sessione usando al sua chiave privata (solo lui puo farlo) Il destinatario decifra il messaggio Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 PGP firma digitale Il mittente scrive un messaggio Il mittente lo firma con il procedimento visto in precedenza Hash + messaggio Il mittente cifra tutto il messaggio con il metodo della confidenzialità Invio al destinatario Il destinatario decifra il messaggio e verifica l’impronta Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 GnuPG Tool openSource che implementa quanto visto su PGP Diverse versioni Software a linea di comando Prof. Zambetti -Majorana © 2008
Generare una nuova coppia di chiavi Prof. Zambetti -Majorana © 2008
Generare una nuova coppia di chiavi GnuPG è in grado di creare diversi tipi di coppie di chiavi, L'opzione 1 crea in realtà due coppie di chiavi: una coppia di chiavi di tipo DSA che rappresenta la coppia di chiavi primaria ed è utilizzabile solo per firmare; una coppia di chiavi subordinata di tipo ElGamal, usata per criptare. L'opzione 2 è simile alla precedente ma crea solo una coppia di chiavi DSA. L'opzione 4[1]crea una singola coppia di chiavi ElGamal utilizzabile sia per firmare che per criptare. In tutti i casi è possibile in un secondo momento creare sotto-chiavi addizionali per cifrature e firme. Prof. Zambetti -Majorana © 2008
Generare una nuova coppia di chiavi È necessario anche scegliere la dimensione della chiave. La dimensione di una chiave DSA deve essere compresa fra 512 e 1024 bit La chiave ElGamal può essere di qualsiasi dimensione. GnuPG richiede che le chiavi non siano più piccole di 768 bit. Prof. Zambetti -Majorana © 2008
Generare una nuova coppia di chiavi Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Scambiarsi le chiavi Prof. Zambetti -Majorana © 2008
Esportare una chiave pubblica Per spedire una chiave pubblica ad un corrispondente è necessario prima esportarla. Si usa l'opzione a linea di comando --export. Essa necessita di un ulteriore argomento che identifichi la chiave pubblica da esportare. Così come con l'opzione --gen-revoke, sia l'ID della chiave che ogni altra parte dello User ID possono servire per identificare la chiave da esportare. Prof. Zambetti -Majorana © 2008
Esportare una chiave pubblica La chiave è esportata in un formato binario sconveniente quando la chiave viene spedita per posta elettronica o pubblicata in una pagina web. l'opzione a linea di comando --armor[1] forza l'output ad essere generato in un formato protetto da un'armatura ASCII Prof. Zambetti -Majorana © 2008
Importare una chiave pubblica Prof. Zambetti -Majorana © 2008
Cifrare e decifrare documenti Opzione --encrypt. È necessario possedere le chiavi pubbliche dei destinatari a cui si intende spedire il messaggio. Il programma si aspetta il nome del documento da cifrare come ingresso se omesso, legge lo standard input. Il risultato cifrato è stampato sullo standard output oppure dove specificato con l'opzione --output. Il documento, oltre ad essere criptato, viene compresso per ragioni di maggior sicurezza. Prof. Zambetti -Majorana © 2008
Cifrare e decifrare documenti L'opzione --recipient viene utilizzata una sola volta per ogni destinatario e richiede un argomento extra che specifichi con quale chiave pubblica debba essere criptato il documento. Tale documento può essere decriptato solo da qualcuno in possesso di una chiave privata che complementi una delle chiave pubbliche dei destinatari. In particolare non è possibile decifrare un documento criptato da voi stessi, a meno che non abbiate incluso la vostra chiave pubblica nella lista dei destinatari. Prof. Zambetti -Majorana © 2008
Cifrare e decifrare documenti Per decriptare un messaggio si usa l'opzione --decrypt. È necessario possedere la chiave privata con la quale era stato cifrato il messaggio. Analogamente al processo di cifratura, il documento da decifrare è l'ingresso e quello decifrato è l'uscita. Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Riepilogo comandi GPG Prof. Zambetti -Majorana © 2008
Prof. Zambetti -Majorana © 2008 Riepilogo comandi GPG Prof. Zambetti -Majorana © 2008