Firma digitale con RSA
|
|
|
- Ricardo Lombardo
- 9 anni fa
- Visualizzazioni
Transcript
1 Sicurezza dei Sistemi Informatici Esercitazioni OpenSSL Firma digitale con RSA Roberta Daidone 1
2 Obiettivo Il client invia il proprio certificato al server. Il server verifica il certificato del client e possiede il certificato della CA. Il client firma l hash del file con la propria chiave privata. Il server riceve il file e verifica la firma con la chiave pubblica del client. 2
3 Funzioni client/server #include <openssl/evp.h> #include <openssl/pem.h> Allocazione contesto char* alg= sha1 ; const EVP_MD* md = EVP_get_digestbyname(alg); OpenSSL_add_all_digests(); EVP_MD_CTX * ctx; ctx = malloc(sizeof(evp_md_ctx)); Deallocazione contesto EVP_MD_CTX_cleanup(ctx); free(ctx);
4 Preparazione contesto EVP_MD_CTX_init(ctx); EVP_SignInit(ctx, md); Funzioni client Allocazione di memoria per la chiave privata EVP_PKEY* priv_key; priv_key = (EVP_PKEY*) malloc(sizeof (EVP_PKEY)); Lettura della chiave privata per la firma EVP_PKEY* PEM_read_PrivateKey(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) fp file contenente la chiave privata x buffer dove verrà posta la chiave privata letta cb funzione di callback per il recupero della password u parametri della funzione di callback (password) 4
5 Funzioni client Firma EVP_SignUpdate(ctx, buffer, size); buffer contiene il file di cui si intende fare hash e firma; size specifica di quanti byte di buffer voglio fare l hashing. La funzione di update completa l hashing in più mandate EVP_SignFinal(ctx,sign_buffer, sign_buffer_size, priv_key); sign_buffer torna al chiamante l hash firmato; sign_buffer_size torna al chiamante la dimensione (in byte) della firma digitale. 5
6 #include <openssl/x509_vfy.h> #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/evp.h> Preparazione contesto EVP_MD_CTX_init(ctx); EVP_VerifyInit(ctx, md); Allocazione di memoria per la chiave pubblica EVP_PKEY* pub_key; pub_key = (EVP_PKEY*) malloc(sizeof (EVP_PKEY)); 6
7 Verifica del certificato del client e verifica della CA che lo ha emesso FILE* file; X509* cert; X509_STORE* store; X509_LOOKUP* lookup; X509_STORE_CTX* verify_ctx; cert struttura dati per il certificato del client; store gestisce una collezione di certificati (la chain of trust); lookup permette di fare lookup dei certificati della chain of trust; verify_ctx è il contesto di verifica della chain of trust fino al certificato dell utente. 7
8 Leggere il certificato inviato dal client cert = PEM_read_X509 (file, NULL, NULL, NULL); 2 parametro = certificato da leggere 3 parametro = funzione di callback per la password 4 parametro = argomenti della funzione di callback Creazione del cert store store = X509_STORE_new(); Leggere il certificato della CA e caricare la directory di riferimento della CA nel cert store X509_STORE_load_locations (store, ca_file, dir); dir =./exampleca ca_file = cacert.pem 8
9 Specificare che il path di ricerca dei certificati è quello specificato nel cert store X509_STORE_set_default_paths(store); In mancanza della chiamata precedente, il path di default è usr/local/ssl/certs. Caricare nel cert store il metodo di lookup dei certificati specificato dalla funzione X509_LOOKUP_file() lookup=x509_store_add_lookup(store,x509_lookup_file()) X509_LOOKUP_file() torna un puntatore al metodo di default che è x509_file_lookup definito dalle openssl. 9
10 Caricare la CRL X509_load_crl_file(lookup, CRLfile, X509_FILETYPE_PEM); CRLfile = CRLfile.pem Creazione di un verification context verify_ctx = X509_STORE_CTX_new(); Inizializzazione del verification context X509_STORE_CTX_init(verify_ctx, store, cert, NULL); Verificare il certificato del client X509_verify_cert(verify_ctx); Deallocazioni X509_free(cert); X509_STORE_free(store); X509_STORE_CTX_free(verify_ctx); 10
11 Recupero della chiave all'interno del certificato *pub_key = X509_get_pubkey(cert); Verifica della firma digitale EVP_VerifyUpdate(ctx, buffer, size); buffer contiene il file di cui voglio fare hash e verificare la firma size specifica di quanti byte di buffer voglio fare l hashing. La funzione di update completa l hashing per la verifica in più mandate 11
12 EVP_VerifyFinal(ctx,sign_buffer,sign_buffer_size,pub_key) sign_buffer contiene l hash firmato inviato dal client; sign_buffer_size contiene la dimensione (in byte) della firma digitale del client. La funzione confronta il contenuto di sign_buffer con l hashing contenuto in ctx, verificato con pub_key. Ritorna 1 se il confronto ha successo. 12
13 Esercizio Si consideri la firma digitale con RSA. Sfruttare le chiavi e i certificati generati la scorsa lezione. Il client ha il proprio certificato e la propria chiave privata Il server ha il certificato e la CRL della CA Il client invia al server il proprio certificato Il client: legge e invia il proprio certificato al server legge un file F, e invia al server il suo contenuto seguito dalla firma digitale. Il server: riceve e verifica il certificato del client grazie al certificato della CA che lo ha emesso recupera la chiave pubblica del client riceve il file del client, ne verifica la firma e lo salva su file. 13
Creazione e Gestione Certificati
Sicurezza dei Sistemi Informatici Esercitazioni OpenSSL Creazione e Gestione Certificati Roberta Daidone [email protected] 1 Obiettivi Setup di una Certification Authority Creazione di un root
La gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
Creare connessioni cifrate con stunnel
ICT Security n. 24, Giugno 2004 p. 1 di 5 Creare connessioni cifrate con stunnel Capita, e purtroppo anche frequentemente, di dover offrire servizi molto insicuri, utilizzando ad esempio protocolli che
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
L'applicazione integrata con il servizio My Fattura
L'applicazione integrata con il servizio My Fattura Come funziona einvoicemanger (eim) 2 Per il CICLO ATTIVO 2 Per il CICLO PASSIVO 2 Come può essere utilizzato 2 Installazione di eim 2 Installazione del
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Certificati e PKI in OpenSSL
Certificati e PKI in OpenSSL Alfredo De Santis Dipartimento di Informatica Università di Salerno [email protected] Aprile 2017 http://www.dia.unisa.it/professori/ads Sommario Ø Public Key Infrastructure (PKI)
Metel MIB2B Metel Invoice Business to Business La fattura B2B con Metel
Metel MIB2B Metel Invoice Business to Business La fattura B2B con Metel CICLO ATTIVO INPUT PDF FLAT FILE METEL EDIFACT METEL XML B2B PEC destinatario Codice Destinatario CLOUDEDI Riceve e Valida/ trasforma
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
L uso di Socket UDP. TCP vs. UDP UDP
L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket
Sicurezza dei Sistemi Informatici Esercitazioni OpenSSL
Sicurezza dei Sistemi Informatici Esercitazioni OpenSSL Marco Tiloca [email protected] 1 Sicurezza dei Sistemi Informatici Esercitazioni OpenSSL Cifratura chiave simmetrica (2 ore) Funzioni hash
Per richiedere il certificato l utente deve provvedere, nel proprio ambiente informatico, alla generazione della CSR (Certificate Sign Request).
Procedura operativa generazione chiavi SISTRI Per richiedere il certificato l utente deve provvedere, nel proprio ambiente informatico, alla generazione della CSR (Certificate Sign Request). Per poter
Esercitazione 2 Certificati
Sommario Esercitazione 2 Certificati Laboratorio di Sicurezza 2016/2017 Andrea Nuzzolese Certificati Descrizione esercitazione Free Secure Email Certificates (con InstantSSL) ALMA MATER STUDIORUM UNIVERSITA
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio
L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local
Lezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
Gestione dei file. File di testo e binari
Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile
I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
2006-2011 maurizio pizzonia sicurezza dei sistemi informatici e delle reti. esercizi su vulnerabilità del software e delle reti
esercizi su vulnerabilità del software e delle reti 1 input fidato e non per quali dei seguenti software una vulnerabilità rappresenta una minaccia? in quali condizioni? apache: server web il kernel linux
I Processi nel Sistema Operativo Unix
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
Istruzioni di controllo del flusso
Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
Firma Remota Aruba --- Attivazione account di firma remota ed utilizzo ---
Firma Remota Aruba --- Attivazione account di firma remota ed utilizzo --- Sommario 1. Procedura di attivazione della Firma Remota Aruba... 3 2. Utilizzo della firma remota Aruba con File Protector...
Crypto Android. Trusted Execution Environment. TrustZone
SMix richiede un vettore di lunghezza N. Visto che la memoria è costosa, implementare Scrypt in hardware è costoso [?] Trusted Execution Environment TrustZone I Trusted Execution Environment (TEE) sono
Pagina 1 di 6. Client SOAP di test per i servizi del Sistema di Interscambio. Indice
Pagina 1 di 6 Indice 1 Installazione del client SOAP... 2 1.1 Prerequisiti... 2 1.2 Predisposizione ambiente... 2 1.3 Certificato di test... 3 2 Esecuzione del client SOAP... 4 2.1 Personalizzazione del
REGIONE BASILICATA UFFICIO AMMINISTRAZIONE DIGITALE
UFFICIO AMMINISTRAZIONE DIGITALE MANUALE UTENTE RB DOCS 1.0.1. Indice 1. Introduzione... 3 2. Gestione di una comunicazione con il caricamento, firma e protocollazione e successivo inoltro del documento...
Esercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
Applicazioni per l autenticazione Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009
Applicazioni per l autenticazione Kerberos Kerberos Servizio di autenticazione sviluppato dal MIT Fornisce un server di autenticazione centralizzato Basato su crittografia simmetrica (chiave privata) Permette
Sicurezza: necessità. Roberto Cecchini Ottobre 2002 1
Sicurezza: necessità Riservatezza: la comunicazione è stata intercettata? Autenticazione: l utente è veramente chi dice di essere? Autorizzazione: ogni utente può accedere solo alle risorse cui ha diritto.
La firma digitale, o firma elettronica qualificata, basata sulla tecnologia della crittografia a chiavi asimmetriche, è un sistema di autenticazione d
Definizione Sistemi per la creazione e la verifica di firme digitali Differenze tra firma digitale e firma convenzionale Valore giuridico della firma digitale in Italia Crittografia asimmetrica 11-01-2010
Generazione di certificati X.509 nell ambito dei test di interoperabilità dei Sistemi di Posta Elettronica Certificata (PEC)
Generazione di certificati X.509 nell ambito dei test di interoperabilità dei Sistemi di Posta Elettronica Certificata (PEC) Antonio De Maglio 15 ottobre 2014 1 1 Introduzione Figura 1: funzionamento PEC
valore 3 BUONO ACQUISTO Valido domenica 2 settembre Leggi il regolamento sul retro REGOLAMENTO
Valido domenica 2 settembre L iniziativa è valida dal 27 agosto al 30 settembre in tutti gli esercizi commerciali del Centro. Nel corso della settimana, i clienti che effettueranno acquisti presso uno
PROCEDURA AGGIORNAMENTO LISTE MEDIANTE L INTERFACCIA WEB
PROCEDURA AGGIORNAMENTO LISTE MEDIANTE L INTERFACCIA WEB Precondizioni Per poter eseguire i passi previsti da questa procedura è necessario che: - l'operatore (di seguito OP) abbia presentato l istanza
