aica prof. zambetti -majorana © 2008 esercitazione modulo 5 pgp - ssh - ppp
TRANSCRIPT
Prof. Zambetti -Majorana © 2008
AICA
ESERCITAZIONE MODULO 5
PGP - SSH - PPP
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
Schema SSH
1. 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
AICA
Schema SSH
2. 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
3. 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
4. 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
AICA
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
5. 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
AICA
Schema SSH
– Autenticazione RSA o DSA • Più sicura
1. Il client indica al server qual è la chiave che vorrà utilizzare
2. Il server genera un challenge (casuale) di 256 bit, lo cifra con la chiave pubblica dell’utente e invia il tutto al client
3. 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
AICA
Schema SSH
4. Il server confronta il digest ricevuto con quello calcolato, se corrispondono considera autenticato l’utente
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
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
AICA
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
AICA
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
AICA
Tool SSH
• Linux, Windows, MacOSX– OpenSSH
• ssh, ssh-keygen, sshd
• Google ......
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
Connessione
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
PGP
1. Il mittente scrive un messaggio
2. Il mittente crea un hash del messaggio
3. Il mittente cifra l’hash con la sua chiave privata
4. Il mittente inserisci l’hash cifrato prima del messaggio e trasmette entrambi
5. Il destinatario riceve la posta
6. Il destinatario decifra l’hash con la chiave pubblica del mittente
7. Il destinatario rigenera l’hash
8. Il destinatario confronta l’hash calcolato con quello ricevuto
9. Se i due hash coincidono il messaggio non è stato modificato
Prof. Zambetti -Majorana © 2008
AICA
PGP e confidenzialità
1. Il mittente scrive un messaggio
2. Il prog. di trasmissione crea un numero casuale usato per cifrare quel singolo messaggio (chiave di sessione)
3. Il prog. di trasmissione cifra il messaggio con un alg. Simmetrico usando la chiave di sessione
4. La chiave di sessione viene cifrata con la chiave pubblica del destinatario e premessa al messaggio
5. Il messaggio cifrato è inviato al destinatario
6. Il destinatario decifra la chiave di sessione usando al sua chiave privata (solo lui puo farlo)
7. Il destinatario decifra il messaggio
Prof. Zambetti -Majorana © 2008
AICA
PGP firma digitale
1. Il mittente scrive un messaggio
2. Il mittente lo firma con il procedimento visto in precedenza• Hash + messaggio
3. Il mittente cifra tutto il messaggio con il metodo della confidenzialità
4. Invio al destinatario
5. Il destinatario decifra il messaggio e verifica l’impronta
Prof. Zambetti -Majorana © 2008
AICA
GnuPG
• Tool openSource che implementa quanto visto su PGP • Diverse versioni • Software a linea di comando
Prof. Zambetti -Majorana © 2008
AICA
Generare una nuova coppia di chiavi
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
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
AICA
Generare una nuova coppia di chiavi
Prof. Zambetti -Majorana © 2008
AICA
Scambiarsi le chiavi
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
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
AICA
Importare una chiave pubblica
Prof. Zambetti -Majorana © 2008
AICA
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
AICA
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
AICA
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
AICA
Riepilogo comandi GPG
Prof. Zambetti -Majorana © 2008
AICA
Riepilogo comandi GPG