Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenSSL: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer.

Slides:



Advertisements
Presentazioni simili
Sperimentazioni di Sicurezza, A.A. 2009/2010
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
APRIRE PROGRAMMA DI POSTA OUTLOOK EXPRESS
Sperimentazioni di Sicurezza, A.A. 2009/2010
Identity Based Cryptosystems
Sperimentazioni di Sicurezza, A.A. 2009/2010 GNU Privacy Guard: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino,
Microsoft Visual Basic MVP
Configuring Network Access
SSL/TLS.
Public Key Infrastructure
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
La sicurezza nelle Griglie
Dr. Giovanni Stracquadanio
Responsabile: Ing. Daniele Bocci CORSO INTEGRATO DI INFORMATICA Master in Management Infermieristico.
NESSUS.
Per crittografia si intende la protezione
Ordine dei Dottori Commercialisti e degli Esperti Contabili di Ivrea, Pinerolo, Torino1 effettuate le operazioni di generazione dell'Ambiente di sicurezza.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
Secure Shell Giulia Carboni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
OPEN OFFICE e IMPRESS Masucci Antonia Maria.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
CORSO DI INFORMATICA LAUREA TRIENNALE-COMUNICAZIONE & DAMS
Gruppo ISP1 Commessa tuttipunti.org. Sommario Descrizione commessa Organizzazione del lavoro Lavoro svolto Problematiche di sicurezza Impostazioni di.
Certification Authority Fase I : Setup e Configurazione Componenti del gruppo : Marino Pasquale Marra Maria Cristina Molaro Alfonso Rullo Esterino.
Certification Authority Fase II : tuning e richieste.
SSL (Secure Socket Layer)
Prof. Zambetti -Majorana © 2008
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Ambienti di programmazione Stefano Cagnoni e Monica Mordonini.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Corso di PHP.
1 Applicazioni contabili
Istruzioni d’uso per invio telematico
Modulo 7 – reti informatiche u.d. 2 (syllabus – )
Ottobre 2006 – Pag. 1
LA CRITTOGRAFIA QUANTISTICA
Guida IIS 6 A cura di Nicola Del Re.
MetodoEvolus Evolvere nella continuità. Certificazione Windows 7 logo Nuova procedura di setup Certificazione SQL 2008 R1 Consolle di produzione.
Centro di Assistenza Multicanale (C.A.M.) di Cagliari
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VI Un primo programma Programmazione di Calcolatori: Un primo programma 1.
“ Firma Digitale “ Informatica e Teleradiologia
Il Comune di Pavia è tra i pochi comuni italiani a svolgere direttamente funzioni di Registration Authority.
“La firma elettronica per Pavia Digitale”
Creare pagine web Xhtlm. Struttura di una pagina.
Un problema importante
Backup and Migrate, Captcha ReCaptcha e Spamicide Docente: Simone Zambenedetti. Moduli per la Sicurezza.
BIOINFO3 - Lezione 301 CGI-BIN Abbiamo visto che CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. In particolare.
Amministrazione della rete: web server Apache
Il processo per generare una Firma Digitale
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Analisi e sperimentazione di una Certification Authority
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Sicurezza II, A.A. 2011/2012 OpenID Speaker: André Panisson, PhD student Università degli Studi di Torino, Computer Science Department Corso Svizzera,
UNIVERSITÀ DEGLI STUDI DI PAVIA Anno accademico 2009/2010 Sicurezza e frodi informatiche in Internet: la Firma Digitale come garanzia di autenticità e.
La Crittografia nell’ambito del protocollo HTTP Classe: V istituto professionale (gestione aziendale) Obiettivo 1: Generazione di competenze e preparazione.
PKI e loro implementazione Corso di Sisitemi Informativi Teledidattico A.A. 2006/07
Concetti Fondamentali sulla Programmazione
Universita` degli studi di Perugia Corso di Laurea in Matematica Attribute Certificate Valentina Hamam Rosa Leccisotti.
1 Certificati a chiave pubblica strutture dati che legano una chiave pubblica ad alcuni attributi di una persona sono firmati elettronicamente dall’ente.
Informatica e Informatica di Base
CORSO INTERNET la Posta elettronica
Comunicazioni. 5.1 POSTA ELETTRONICA 5.1 POSTA ELETTRONICA.
IT SECURITY Comunicazioni. Posta elettronica I messaggi ( ) commerciali viaggiano in rete “criptati”, cioè scritti con una “chiave pubblica” nota.
La firma digitale. Che cosa é la firma digitale? La firma digitale è una informazione aggiunta ad un documento informatico al fine di garantirne integrità.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
Crittografia e crittoanalisi Crittografia: tecnica che consente di rendere visibili o utilizzabili le informazioni solo alle persone a cui sono destinate.
Transcript della presentazione:

Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenSSL: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department Corso Svizzera, 185 – 10149, Torino, Italy Sperimentazioni di sicurezza A.A

Sperimentazioni di Sicurezza, A.A. 2009/2010 Introduzione o OpenSSL è un progetto open source che ha lo scopo di sviluppare una libreria portabile e multi-piattaforma che offra le seguenti funzionalità: SSL versione 2 e 3 TLS versione 1 Algoritmi di crittografia simmetrica e asimmetrica o Come per la maggior parte dei progetti open source, esiste una comunità su base internazionale che si occupa di svilupparla o La licenza di OpenSSL ne permette luso e la redistribuzione, anche a scopi commerciali

Sperimentazioni di Sicurezza, A.A. 2009/2010 Descrizione o OpenSSL è composta di tre parti distinte: libssl.a: libreria che contiene limplementazione e le funzioni utili al corretto funzionamento di SSLv2, SSLv3 e TLSv1, lato client o server libcrypto.a: libreria che contiene le funzioni crittografiche e le funzioni di gestione dei certificati; più dettagliatamente: cifrari simmetrici: DES, 3DES, RC2, RC4, Blowfish, AES, … nelle modalità ecb, cbc, cfb e ofb cifrari asimmetrici: RSA, DSA, Diffie-Hellman funzioni di HASH: MD2, MD5, SHA-1, MDC2, … funzioni per la lettura, creazione e gestione di certificati in formato X509 (PEM, DER, …); funzioni per la gestione di una Certification Authority. … openssl: un tool a linea di comando che permette di utilizzare la maggior parte delle funzioni presenti in libcrypto.a

Sperimentazioni di Sicurezza, A.A. 2009/2010 Download e installazione o Download dei sorgenti: o A oggi, lultima versione disponibile è la beta2, ma per la nostra esercitazione useremo la 0.9.7m o Dopo aver scaricato i sorgenti è necessario scompattarli: gunzip openssl-0.9.7m.tar.gz tar xvf openssl-0.9.7m.tar (mv openssl-0.9.7m /tmp) (cd /tmp/openssl-0.9.7m) o Successivamente è possibile iniziare la procedura di compilazione descritta nel file INSTALL

Sperimentazioni di Sicurezza, A.A. 2009/2010 Installazione $./config $ make $ make test o Al termine dellesecuzione del make, dovreste poter eseguire correttamente il comando o Lesecuzione del comando provoca lapertura di una shell Digitare ? per ottenere lelenco delle istruzioni Provare ad esempio il comando rand rand –base openssl-0.9.7m/apps/openssl

Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenSSL da riga di comando o Per accedere alla shell, basta eseguire il comando openssl o Si noti che tutti i comandi che è possibile inviare tramite la shell di openssl, possono essere utilizzati anche come parametro di openssl stesso: OpenSSL> rand –base /openssl rand –base o È possibile trovare la documentazione sullutilizzo di OpenSSL da linea di comando sul sito ufficiale di OpenSSL (si noti che la documentazione non è sempre aggiornata): o man openssl

Sperimentazioni di Sicurezza, A.A. 2009/2010 Script da shell o Per eseguire gli esercizi proposti è necessario saper scrivere semplici script di shell o Nel seguente esempio, prepariamo uno script che calcola 2 stringhe random rispettivamente lunghe 100 e 200 byte o vi test.sh #!/bin/bash openssl rand -base openssl rand -base o chmod +x test.sh o./test.sh

Sperimentazioni di Sicurezza, A.A. 2009/2010 Esercizi preparatori (1) o Preparare uno script che calcoli lhash MD5, DHA1 e Ripemd160 di un file (comando dgst ) o Preparare uno script che esegua la cifratura simmetrica di un file con AES256, blowfish e Triple-DES in modalità CBC (comando enc ) o Preparare uno script che decifri i file cifrati al passo precedente (comando enc ) o Preparare uno script che calcoli il base64 di un file in input e che decodifichi un file codificato con base64 (comando enc )

Sperimentazioni di Sicurezza, A.A. 2009/2010 Esercizi preparatori (2) o Preparare uno script che: generi una chiave privata RSA da 2048 bit (comando genrsa ). generi la corrispondente chiave pubblica (comando rsa - pubout ). stampi a schermo le informazioni sulle chiavi (comando rsa - text ) o Preparare uno script che esegua la cifratura e la decifratura con RSA utilizzando le chiavi precedentemente generate (comando rsautl ) o Preparare uno script che esegua la firma e la verifica della stessa con RSA utilizzando le chiavi precedentemente generate (comando rsautl )

Sperimentazioni di Sicurezza, A.A. 2009/2010 PKI con OpenSSL o OpenSSL mette a disposizione una serie di metodi per creare e gestire una Public Key Infrastructure o I certificati emessi con le PKI create con OpenSSL rispettano lo standard X.509 o Il primo passo per creare la propria PKI consiste nel creare il certificato relativo alla root CA o Più precisamente è necessario creare una coppia di chiavi ed un certificato relativo alla chiave pubblica: certificato autofirmato o Successivamente è possibile emettere certificati per server e persone

Sperimentazioni di Sicurezza, A.A. 2009/2010 Creazione del certificato della CA o È necessario creare la chiave privata relativa alla CA (comando genrsa ) Salvare la chiave nel file CAkey.pem. o Successivamente è necessario creare il certificato di chiave pubblica relativo alla CA; il comando da utilizzare è req o I parametri da utilizzare sono i seguenti: -config ~/openssl-0.9.7m/apps/openssl.cnf : indica ad OpenSSL dovè il file di configurazione di default -key CAkey.pem : indica quale chiave privata utilizzare per la generazione del certificato -new : indica che si tratta di un nuovo certificato -x509 : indica di generare un certificato in formato x509 -days 365 : indica che il certificato avrà validità per 365 giorni -out CAreq.pem : indica in quale file salvare il certificato

Sperimentazioni di Sicurezza, A.A. 2009/2010 Creazione del certificato della CA o Dopo aver lanciato il comando appena indicato verranno richiesti i dati relativi al certificato che si intende creare: Country Name (2 letter code): IT State or Province Name (full name): Torino Locality Name (eg, city): Torino Organization Name (eg, company): Università di Torino Organizational Unit Name (eg, section): DipInfo Common Name (eg, YOUR name): CA Aiello Address:

Sperimentazioni di Sicurezza, A.A. 2009/2010 Creazione del certificato della CA o Visualizzare il certificato appena creato (comando x509 ) o Installare il certificato nel browser e visualizzarlo con il browser stesso o È fondamentale proteggere la chiave privata della CA, cifrandola con un algoritmo simmetrico (comando rsa )

Sperimentazioni di Sicurezza, A.A. 2009/2010 Procedura di emissione dei certificati o La procedura di emissione dei certificati è divisa in più fasi: generazione della chiave privata generazione della richiesta di certificato generazione del certificato o Dei tre passi appena indicati, solo lultimo in genere è a carico della CA o Lutente che desidera ottenere un certificato crea la propria chiave privata e successivamente crea una richiesta di certificato che contiene: La chiave pubblica da certificare I dati dellutente che richiede il certificato o La richiesta di certificato viene firmata con la chiave privata del richiedente Questo permette alla CA di essere certa che lutente sia in possesso della chiave privata corrispondente alla chiave pubblica che sta certificando

Sperimentazioni di Sicurezza, A.A. 2009/2010 Procedura di emissione dei certificati o La generazione della chiave avviene come abbiamo già visto in precedenza (comando genrsa ) o La generazione della richiesta avviene tramite il comando req e prevede i seguenti parametri: -config ~/openssl-0.9.7m/apps/openssl.cnf -key newkey.pem -new -out newreq.pem o Si noti che, a differenza dei parametri utilizzati in precedenza, non sono presenti le opzioni –x509 –days ### questo dipende dal fatto che si sta generando una richiesta di certificato e non un certificato

Sperimentazioni di Sicurezza, A.A. 2009/2010 Procedura di emissione dei certificati o Durante la generazione della richiesta, viene richiesto allutente di specificare i dati relativi al certificato. Due dei parametri richiesti hanno un significato particolare: Common Name (eg, YOUR name) [] il Common Name (CN) è particolarmente significativo quando si intende generare un certificato per un server che utilizza SSL (https, imaps, pops, …). Per evitare che ci siano errori durante la comunicazione SSL è necessario che il CN corrisponda al nome DNS del server che si sta contattando. Provare a contattare e Provare a visualizzare i dati relativi al certificato SSL utilizzato. Address [] questo parametro è particolarmente significativo per i certificati che vengono rilasciati alle persone fisiche; infatti deve corrispondere al reale indirizzo di posta elettronica della persona, per evitare che ci siano errori legati a incongruenze fra mittente delle firmate e indirizzo indicato nel certificato.

Sperimentazioni di Sicurezza, A.A. 2009/2010 o Durante la generazione della richiesta viene richiesto allutente se vuole utilizzare una password per cifrare la richiesta stessa in questo caso lamministratore della CA, per generare il certificato, dovrà ricevere sia la richiesta di certificato che la password in questione o Una volta generata la richiesta è possibile rilasciare il certificato utilizzando la CA; loperazione avviene tramite lutilizzo del comando x509 e dei seguenti parametri: -days ### : indica per quanti giorni il certificato sarà valido -CA CAcert.pem : indica il file del certificato della CA -CAkey CAkey.pem : indica il file della chiave privata della CA -CAcreateserial : indica che è necessario creare il numero seriale per il certificato – UTILIZZARE SOLO AL PRIMO RILASCIO -CAserial ca.srl : indica il file che contiene il seriale da ultimo certificato rilasciato -req : indica che il file in input è una richiesta di certificato -in newreq.pem : indica il file della richiesta -out newcert.pem : indica il file in cui salvare il certificato Procedura di emissione dei certificati

Sperimentazioni di Sicurezza, A.A. 2009/2010 Verifica dei certificati emessi o Utilizzare il comando x509 per visualizzare il certificato appena emesso o Provare ad aprire il certificato appena emesso con il browser e controllare il rapporto fra il certificato della CA e quello appena emesso

Sperimentazioni di Sicurezza, A.A. 2009/2010 Utilizzo di un certificato con la mail o I client di posta si aspettano in input dei file in formato PKCS12 questo formato è utile per salvare in un unico file il certificato di chiave pubblica e la chiave privata cifrata o OpenSSL permette la generazione dei file in questo formato con il comando pkcs12 o Il file così generato può essere importato nei repository del client di posta e/o del browser o A questo punto è possibile inviare mail firmate o Per inviare mail cifrate è necessario possedere il certificato del destinatario della mail pkcs12 –in cert.pem –inkey private.key –export –out cert.pk12

Sperimentazioni di Sicurezza, A.A. 2009/2010 Creazione di un programma che usi la libreria o Come abbiamo già detto, OpenSSL fornisce anche due librerie in C: libssl.a: funzioni relative a SSLv2, SSLv3 e TLSv1; libcrypto.a: funzioni crittografiche e le funzioni di gestione dei certificati. o È possibile quindi scrivere programmi in C/C++ che utilizzino questa libreria per eseguire operazioni crittografiche di vario tipo. o La stesura dei programmi per questa parte di esercitazione può essere fatta indifferentemente utilizzando i linguaggi C e C++.

Sperimentazioni di Sicurezza, A.A. 2009/2010 Makefile o Il modo più semplice per compilare un programma che utilizzi le librerie OpenSSL è quello di preparare un opportuno makefile per la compilazione. o I parametri che devono essere presenti nel makefile sono: CC=gcc/g++ : nome del compilatore da usare LIBS=-L$(HOME)/openssl-0.9.7m/ -lcrypto -lssl - lsocket : librerie che devono essere linkate e path verso le medesime INCLUDE=-I$(HOME)/openssl-0.9.7m/include/ : path degli header file CFLAGS=-Wall -O2 $(INCLUDE) : flag del compilatore

Sperimentazioni di Sicurezza, A.A. 2009/2010 Makefile o Un esempio di makefile funzionante per il file test.c è il seguente: CC=gcc TARGET=test OBJS=test.o LIBS=-L$(HOME)/openssl-0.9.7m/ -lcrypto -lssl -lsocket INCLUDE=-I$(HOME)/openssl-0.9.7m/include/ CFLAGS=-Wall -O2 $(INCLUDE) all: $(OBJS) gcc $(LDFLAGS) -o $(TARGET) $(OBJS) $(LIBS) clean: rm -f $(OBJS) $(TARGET) *~ *.log

Sperimentazioni di Sicurezza, A.A. 2009/2010 Primo programma di test o Come primo programma di test per OpenSSL, per controllare che la compilazione vada a buon fine, si può usare un semplice programma che inizializza lambiente di lavoro: #include #include "openssl/rsa.h" #include "openssl/x509.h" #include "openssl/evp.h" #include "openssl/pem.h" #include "openssl/err.h" int main () { SSLeay_add_all_algorithms(); ERR_load_crypto_strings(); return 0; }

Sperimentazioni di Sicurezza, A.A. 2009/2010 Esercitazioni o Scrivere un programma che esegua la cifratura e la decifratura simmetrica di un file in modalità CBC. o La documentazione di OpenSSL e Google sono vostri amici! o Nel lucido seguente viene riportato lo scheletro del programma

Sperimentazioni di Sicurezza, A.A. 2009/2010 Cifratura/decifratura in modalità CBC int main (…) { … FILE *src=fopen(chiaro,"rb"); FILE *dst=fopen(cifrato,"wb"); … EVP_CIPHER_CTX ctx; EVP_CIPHER_CTX_init(&ctx); EVP_CipherInit_ex(&ctx, EVP_XXX_cbc(), NULL, NULL, NULL, 1); EVP_CIPHER_CTX_set_key_length(&ctx, keylen); EVP_CipherInit_ex(&ctx, NULL, NULL, key, vect, 1); while (num_read=fread(srcbuf, 1, 1024, src)) { EVP_CipherUpdate(&ctx, dstbuf, &num_write, srcbuf, num_read); fwrite(dstbuf, 1, num_write, dst); } EVP_CipherFinal_ex(&ctx, outbuf, &outlen); EVP_CIPHER_CTX_cleanup(&ctx); }

Sperimentazioni di Sicurezza, A.A. 2009/2010 OpenSSL: Introduzione alluso Speaker: Luca Maria Aiello, PhD student Università degli Studi di Torino, Computer Science Department Corso Svizzera, 185 – 10149, Torino, Italy Grazie per lattenzione! Sperimentazioni di sicurezza A.A

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. Queste slides sono state liberamente tratte dalle slides su Computer Networks and Security di Michele Miraglia, al quale va un ringraziamento speciale per il suo lavoro