SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 1/29 SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco samueleruco@gmail.com Università degli Studi di Roma La Sapienza
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: 0 0 1 1 01 01 01 Client Server
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server 0 0 1 1 Client TCP/IP 01 01 01 Server
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server 0 0 1 1 Client 01 01 SSL 01 Server Il protocollo SSL o TLS rende sicura la connessione, garantendo tre funzionalità fondamentali:
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server 0 0 1 1 Client 01 01 SSL 01 Server Il protocollo SSL o TLS rende sicura la connessione, garantendo tre funzionalità fondamentali: confidenzialità
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server 0 0 1 1 Client 01 01 SSL 01 Server Il protocollo SSL o TLS rende sicura la connessione, garantendo tre funzionalità fondamentali: confidenzialità autenticazione
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server 0 0 1 1 Client SSL 0 0 01 1 1 Server Il protocollo SSL o TLS rende sicura la connessione, garantendo tre funzionalità fondamentali: confidenzialità autenticazione affidabilità
Connessione sicura SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 2/29 Garantisce riservatezza alle comunicazioni tra due entità: Il client apre una connessione TCP/IP con il server Il protocollo SSL o TLS rende sicura la connessione, garantendo tre funzionalità fondamentali: confidenzialità autenticazione affidabilità 0 0 1 1 Client SSL 0 0 01 1 1 Server Non prevede la possibilità di migrare la comunicazione verso un altro sistema, mantenendo la stessa connessione
Migrazione di una connessione È il trasferimento di un peer dal sistema originale a un altro (obiettivo), senza effetti distruttivi sulla connessione: B SSL A C SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 3/29
Migrazione di una connessione È il trasferimento di un peer dal sistema originale a un altro (obiettivo), senza effetti distruttivi sulla connessione: il sistema originale (B) esporta la connessione B A C SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 3/29
Migrazione di una connessione È il trasferimento di un peer dal sistema originale a un altro (obiettivo), senza effetti distruttivi sulla connessione: il sistema originale (B) esporta la connessione B il sistema obiettivo (C) importa la connessione A C SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 3/29
Migrazione di una connessione È il trasferimento di un peer dal sistema originale a un altro (obiettivo), senza effetti distruttivi sulla connessione: il sistema originale (B) esporta la connessione B il sistema obiettivo (C) importa la connessione i pacchetti vengono rediretti verso il nuovo peer A C SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 3/29
Migrazione di una connessione È il trasferimento di un peer dal sistema originale a un altro (obiettivo), senza effetti distruttivi sulla connessione: il sistema originale (B) esporta la connessione B il sistema obiettivo (C) importa la connessione i pacchetti vengono rediretti verso il nuovo peer A SSL C la connessione sicura prosegue tra i sistemi A e C SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 3/29
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 4/29 Considerazioni sulla migrazione La migrazione coinvolge i seguenti livelli: Network: i pacchetti IP devono essere rediretti verso il sistema obiettivo ad esempio utilizzando opportune regole di Network Address Translation (NAT)
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 4/29 Considerazioni sulla migrazione La migrazione coinvolge i seguenti livelli: Network: i pacchetti IP devono essere rediretti verso il sistema obiettivo ad esempio utilizzando opportune regole di Network Address Translation (NAT) Transport: le informazioni sullo stato della connessione devono essere trasferite dal sistema che esporta verso quello che importa migrazione del socket
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 4/29 Considerazioni sulla migrazione La migrazione coinvolge i seguenti livelli: Network: i pacchetti IP devono essere rediretti verso il sistema obiettivo ad esempio utilizzando opportune regole di Network Address Translation (NAT) Transport: le informazioni sullo stato della connessione devono essere trasferite dal sistema che esporta verso quello che importa migrazione del socket Application: i dati del protocollo SSL devono essere trasferiti sul sistema obiettivo migrazione del protocollo applicativo
Caratteristiche della soluzione proposta SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 5/29 TRASPARENZA: l estremità fissa della connessione non è consapevole della migrazione dell altra parte
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 5/29 Caratteristiche della soluzione proposta TRASPARENZA: l estremità fissa della connessione non è consapevole della migrazione dell altra parte ASINCRONIA: la migrazione è indipendente dallo stato del protocollo applicativo SSL
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 5/29 Caratteristiche della soluzione proposta TRASPARENZA: l estremità fissa della connessione non è consapevole della migrazione dell altra parte ASINCRONIA: la migrazione è indipendente dallo stato del protocollo applicativo SSL SIMMETRIA: la migrazione è applicabile ad entrambe le estremità di una connessione
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 5/29 Caratteristiche della soluzione proposta TRASPARENZA: l estremità fissa della connessione non è consapevole della migrazione dell altra parte ASINCRONIA: la migrazione è indipendente dallo stato del protocollo applicativo SSL SIMMETRIA: la migrazione è applicabile ad entrambe le estremità di una connessione NON INTRUSIVITÀ: il meccanismo non richiede l applicazione di modifiche: al kernel Linux all implementazione OpenSSL del protocollo SSL
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 6/29 Campi d applicazione Bilanciamento del carico (load balancing) difficile, se non impossibile, prevedere il numero di richieste che ogni server dovrà gestire SockMi permette il bilanciamento anche dopo che la connessione sicura è stata stabilita
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 6/29 Campi d applicazione Bilanciamento del carico (load balancing) difficile, se non impossibile, prevedere il numero di richieste che ogni server dovrà gestire SockMi permette il bilanciamento anche dopo che la connessione sicura è stata stabilita Qualità del servizio (QoS) mantenere una soglia minima di qualità del servizio
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 6/29 Campi d applicazione Bilanciamento del carico (load balancing) difficile, se non impossibile, prevedere il numero di richieste che ogni server dovrà gestire SockMi permette il bilanciamento anche dopo che la connessione sicura è stata stabilita Qualità del servizio (QoS) mantenere una soglia minima di qualità del servizio Tolleranza ai guasti (fault tolerance) migrare una connessione per aggirare un guasto
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 6/29 Campi d applicazione Bilanciamento del carico (load balancing) difficile, se non impossibile, prevedere il numero di richieste che ogni server dovrà gestire SockMi permette il bilanciamento anche dopo che la connessione sicura è stata stabilita Qualità del servizio (QoS) mantenere una soglia minima di qualità del servizio Tolleranza ai guasti (fault tolerance) migrare una connessione per aggirare un guasto Sicurezza confinare un processo malizioso in un ambiente di esecuzione sicuro su un altro host
Progetto Sockpass SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 7/29 Meccanismo di migrazione basato sul passaggio di socket
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 7/29 Progetto Sockpass Meccanismo di migrazione basato sul passaggio di socket Nato nel contesto della migrazione dei processi come parte del progetto REMUS (Reference Monitor for Unix Systems), un sistema per il rilevamento delle intrusioni
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 7/29 Progetto Sockpass Meccanismo di migrazione basato sul passaggio di socket Nato nel contesto della migrazione dei processi come parte del progetto REMUS (Reference Monitor for Unix Systems), un sistema per il rilevamento delle intrusioni Implementazione per il kernel Linux 2.4: sockpass: modulo del kernel per inserire/estrarre socket dallo stack TCP/IP
SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 7/29 Progetto Sockpass Meccanismo di migrazione basato sul passaggio di socket Nato nel contesto della migrazione dei processi come parte del progetto REMUS (Reference Monitor for Unix Systems), un sistema per il rilevamento delle intrusioni Implementazione per il kernel Linux 2.4: sockpass: modulo del kernel per inserire/estrarre socket dallo stack TCP/IP sockpassd: programma demone per il trasferimento di socket al sistema obiettivo
Il protocollo SSL/TLS IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 8/29
Architettura del protocollo SSL SSL Handshake Change Cipher Spec Application SSL Record TCP IP Alert Application Data SSL SSL Record: incapsula i vari protocolli di livello superiore IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 9/29
Architettura del protocollo SSL SSL Handshake Change Cipher Spec Application SSL Record TCP IP Alert Application Data SSL SSL Record: incapsula i vari protocolli di livello superiore SSL Handshake: permette la negoziazione delle opzioni di sicurezza IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 9/29
Architettura del protocollo SSL SSL Handshake Change Cipher Spec Application SSL Record TCP IP Alert Application Data SSL SSL Record: incapsula i vari protocolli di livello superiore SSL Handshake: permette la negoziazione delle opzioni di sicurezza Change Cipher Spec: notifica l altro peer d istanziare i nuovi parametri di sicurezza IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 9/29
Architettura del protocollo SSL SSL Handshake Change Cipher Spec Application SSL Record TCP IP Alert Application Data SSL SSL Record: incapsula i vari protocolli di livello superiore SSL Handshake: permette la negoziazione delle opzioni di sicurezza Change Cipher Spec: notifica l altro peer d istanziare i nuovi parametri di sicurezza Alert: informa l altro peer di un errore che si è verificato IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 9/29
Architettura del protocollo SSL SSL Handshake Change Cipher Spec Application SSL Record TCP IP Alert Application Data SSL SSL Record: incapsula i vari protocolli di livello superiore SSL Handshake: permette la negoziazione delle opzioni di sicurezza Change Cipher Spec: notifica l altro peer d istanziare i nuovi parametri di sicurezza Alert: informa l altro peer di un errore che si è verificato Application Data: utilizzato dall applicazione di livello superiore per inviare e ricevere i dati attraverso il canale sicuro IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 9/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC cifratura IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC cifratura trasmissione (stato di connessione active write) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati RICEZIONE: decifratura compressione applicazione firma MAC cifratura trasmissione (stato di connessione active write) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione RICEZIONE: decifratura verifica firma MAC applicazione firma MAC cifratura trasmissione (stato di connessione active write) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC RICEZIONE: decifratura verifica firma MAC decompressione cifratura trasmissione (stato di connessione active write) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC cifratura RICEZIONE: decifratura verifica firma MAC decompressione riassemblamento dati trasmissione (stato di connessione active write) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Record Provvede alla trasmissione dei messaggi provenienti dagli strati superiori e alla consegna dei messaggi ricevuti agli strati superiori TRASMISSIONE: frammentazione in blocchi adeguati compressione applicazione firma MAC cifratura trasmissione (stato di connessione active write) RICEZIONE: decifratura verifica firma MAC decompressione riassemblamento dati consegna dati al livello superiore (stato di connessione active read) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 10/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 01 Server Scrittura CLIENT Lettura Act Pend Act Pend cifrario null? null? MAC null? null? chiave null? null? SERVER cifrario null? null? MAC null? null? chiave null? null? 1. Il client propone le opzioni del protocollo SSL IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 01 Server ServerHello 2 Scrittura CLIENT Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? 2. Il server seleziona le opzioni da utilizzare nella comunicazione IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 01 Server ServerHello 2 Certificate 3 CLIENT Scrittura Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? 3. Il server invia la chiave pubblica certificata IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 01 Server ServerHello 2 Certificate 3 CertificateRequest 4 CLIENT Scrittura Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? 4. Il server chiede al client di autenticarsi IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 01 Server ServerHello 2 Certificate 3 CertificateRequest 4 ServerHelloDone 5 CLIENT Scrittura Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? 5. Il server conclude la sua parte di negoziazione IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 6 Certificate 01 Server ServerHello 2 Certificate 3 CertificateRequest 4 ServerHelloDone 5 CLIENT Scrittura Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null? null? 6. Il client invia la chiave pubblica certificata IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 01 Server 1 ClientHello ServerHello 2 Certificate 3 CertificateRequest 4 ServerHelloDone 5 6 Certificate 7 ClientKeyExchange Scrittura CLIENT Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null xxx null xxx SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null xxx null xxx 7. Chiave segreta di sessione cifrata con la chiave pubblica del server IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 01 Server 1 ClientHello ServerHello 2 Certificate 3 CertificateRequest 4 ServerHelloDone 5 6 Certificate 7 ClientKeyExchange 8 CertificateVerify Scrittura CLIENT Lettura Act Pend Act Pend cifrario null DES null DES MAC null MD5 null MD5 chiave null xxx null xxx SERVER cifrario null DES null DES MAC null MD5 null MD5 chiave null xxx null xxx 8. Informazioni sulla sessione firmate con la chiave privata del client (autenticazione client) IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 6 Certificate 7 ClientKeyExchange 8 9 CertificateVerify ChangeCipherSpec ServerHello Certificate ServerHelloDone 00 01 Server CertificateRequest 4 CLIENT Scrittura 11 2 3 5 Lettura Act Pend Act Pend cifrario DES? null DES MAC MD5? null MD5 chiave xxx? null xxx SERVER cifrario null DES DES? MAC null MD5 MD5? chiave null xxx xxx? 9. Attivazione delle opzioni di sicurezza appena negoziate IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 6 Certificate 7 ClientKeyExchange 8 9 CertificateVerify ChangeCipherSpec 10 Finished ServerHello Certificate ServerHelloDone 00 01 Server CertificateRequest 4 11 CLIENT 2 3 5 Scrittura Lettura Act Pend Act Pend cifrario DES? null DES MAC MD5? null MD5 chiave xxx? null xxx SERVER cifrario null DES DES? MAC null MD5 MD5? chiave null xxx xxx? 10. Il server controlla le opzioni di sicurezza attivate IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 6 Certificate 7 ClientKeyExchange 8 9 CertificateVerify ChangeCipherSpec 10 Finished ServerHello Certificate ServerHelloDone ChangeCipherSpec 00 01 Server CertificateRequest 4 11 CLIENT 2 3 5 11 Scrittura Lettura Act Pend Act Pend cifrario DES? DES? MAC MD5? MD5? chiave xxx? xxx? SERVER cifrario DES? DES? MAC MD5? MD5? chiave xxx? xxx? 11. Attivazione delle opzioni di sicurezza appena negoziate IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Protocollo SSL Handshake Permette la negoziazione dei parametri di sicurezza Client 1 ClientHello 6 Certificate 7 ClientKeyExchange 8 9 CertificateVerify ChangeCipherSpec 10 Finished ServerHello Certificate ServerHelloDone ChangeCipherSpec Finished 00 01 Server CertificateRequest 4 11 CLIENT 2 3 5 11 12 Scrittura Lettura Act Pend Act Pend cifrario DES? DES? MAC MD5? MD5? chiave xxx? xxx? SERVER cifrario DES? DES? MAC MD5? MD5? chiave xxx? xxx? 12. Il client controlla le opzioni di sicurezza attivate IL PROTOCOLLO SSL/TLS SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 11/29
Architettura del meccanismo di migrazione SockMi ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 12/29
Architettura di SockMi Il meccanismo di migrazione SockMi è piuttosto complesso e il suo funzionamento è il frutto della collaborazione di più componenti, ciascuna delle quali svolge un ruolo ben definito e circoscritto ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 13/29
Architettura di SockMi Il meccanismo di migrazione SockMi è piuttosto complesso e il suo funzionamento è il frutto della collaborazione di più componenti, ciascuna delle quali svolge un ruolo ben definito e circoscritto sockmi: modulo del kernel per l esportazione e l importazione delle strutture dati che implementano il socket TCP/IP ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 13/29
Architettura di SockMi Il meccanismo di migrazione SockMi è piuttosto complesso e il suo funzionamento è il frutto della collaborazione di più componenti, ciascuna delle quali svolge un ruolo ben definito e circoscritto sockmi: modulo del kernel per l esportazione e l importazione delle strutture dati che implementano il socket TCP/IP sockmid: programma demone per il trasferimento da un sistema a un altro dei dati della migrazione e per l esportazione e l importazione dei dati del protocollo applicativo ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 13/29
Architettura di SockMi Il meccanismo di migrazione SockMi è piuttosto complesso e il suo funzionamento è il frutto della collaborazione di più componenti, ciascuna delle quali svolge un ruolo ben definito e circoscritto sockmi: modulo del kernel per l esportazione e l importazione delle strutture dati che implementano il socket TCP/IP sockmid: programma demone per il trasferimento da un sistema a un altro dei dati della migrazione e per l esportazione e l importazione dei dati del protocollo applicativo libsockmi e libappsockmi: librerie che forniscono alle applicazioni un interfaccia al meccanismo di migrazione ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 13/29
Fasi della migrazione: Esportazione Trasferire le strutture dati del protocollo applicativo dall applicazione che esporta al demone ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 14/29
Fasi della migrazione: Esportazione Trasferire le strutture dati del protocollo applicativo dall applicazione che esporta al demone Trasferire al demone le informazioni relative al socket ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 14/29
Fasi della migrazione: Esportazione Trasferire le strutture dati del protocollo applicativo dall applicazione che esporta al demone Trasferire al demone le informazioni relative al socket Rendere immutabile il socket inibita la ricezione e la trasmissione dei segmenti TCP ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 14/29
Fasi della migrazione: Trasmissione Selezionare un host disponibile ad importare la connessione ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 15/29
Fasi della migrazione: Trasmissione Selezionare un host disponibile ad importare la connessione Inviare i dati della migrazione all host obiettivo della migrazione ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 15/29
Fasi della migrazione: Trasmissione Selezionare un host disponibile ad importare la connessione Inviare i dati della migrazione all host obiettivo della migrazione Redirigere i pacchetti IP ricevuti dal sistema originale verso l host obiettivo della migrazione tramite opportune regole di NAT (DNAT) per i pacchetti della connessione migrata B A C ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 15/29
Fasi della migrazione: Importazione Creare un socket identico a quello esportato dai dati ricevuti ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 16/29
Fasi della migrazione: Importazione Creare un socket identico a quello esportato dai dati ricevuti Rigenerare le strutture del protocollo applicativo dai dati ricevuti ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 16/29
Fasi della migrazione: Importazione Creare un socket identico a quello esportato dai dati ricevuti Rigenerare le strutture del protocollo applicativo dai dati ricevuti Associare il socket al protocollo applicativo ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 16/29
Fasi della migrazione: Importazione Creare un socket identico a quello esportato dai dati ricevuti Rigenerare le strutture del protocollo applicativo dai dati ricevuti Associare il socket al protocollo applicativo Sostituire l indirizzo IP sorgente dei pacchetti in uscita con quello dell host che ha esportato la connessione attraverso opportune regole di NAT (SNAT) per i pacchetti della connessione migrata B IP B A C ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 16/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL libsockmi libappsockmi export_ssl() import_ssl() Fase d esportazione export_app_socket() import_socket() export_ssl(ssl *ssl, int state, int af, const void *to) sockmi ssl è il puntatore alla struttura SSL socket 1 state è lo stato del protocollo applicativo af è una costante che indica la famiglia dell indirizzo di rete TCP/IP Stack sockmid to è il puntatore all eventuale indirizzo di rete verso cui esportare la comunicazione sicura export buffer import buffer application handler ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() import_ssl() libsockmi export_app_socket() import_socket() Fase d esportazione 1. Congelato il protocollo applicativo La libreria libappsockmi: socket 1 TCP/IP Stack sockmi esporta dati applicativi salva i dati del protocollo applicativo in un buffer di memoria apre una connessione TCP/IP con il demone sockmid export buffer import buffer sockmid application handler invia i dati del protocollo applicativo al demone tramite un messaggio HTTP ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() import_ssl() libsockmi export_app_socket() import_socket() sockmi Fase d esportazione 1. Congelato il protocollo applicativo richiesta HTTP: PUT <filename> HTTP/1.0 socket 1 Application-Type: <app> esporta dati applicativi Application-State: Content-Length: User-Agent: <app_state> <data_length> libappsockmi TCP/IP Stack sockmid <protocol_data> export buffer import buffer application handler <filename>: <pid>_<fd>.<app_name> ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() import_ssl() libsockmi Fase d esportazione 2. Esportazione del socket export_app_socket() import_socket() esporta socket Le informazioni sul socket vengono copiate nel modulo sockmi e associate a un header: socket 1 copia strutture socket 1 sockmi sysctl() pid è il process ID dell applicazione che esporta fd è il descrittore del socket esporta dati applicativi app è l identificativo univoco del protocollo associato al socket TCP/IP Stack sockmid state è lo stato del socket to è l indirizzo dell eventuale sistema obiettivo export buffer import buffer application handler conn è la quadrupla che identifica il socket (I src, P src, I dst, P dst ) ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL libappsockmi export_ssl() import_ssl() libsockmi export_app_socket() esporta socket import_socket() Fase d esportazione sockmi socket 1 copia strutture socket 1 esporta dati applicativi Per trasferire le informazioni dal livello kernel a quello utente si utilizza un dispositivo virtuale TCP/IP Stack esporta buffer signal USR1 sockmid export buffer import buffer application handler ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL libappsockmi export_ssl() import_ssl() Fase di trasmissione libsockmi Il demone: export_app_socket() import_socket() esporta socket seleziona l obiettivo della migrazione invia una richiesta in multicast socket 1 copia strutture socket 1 sockmi seleziona il primo sistema che risponde invia i dati del socket esporta dati applicativi invia i dati del protocollo applicativo (<pid>_<fd>.<app_name>) TCP/IP Stack trasmetti dati ad un altro sockmid esporta buffer export buffer import buffer sockmid application handler definisce le opportune regole di NAT inoltra i pacchetti IP relativi alla connessione migrata al sistema obiettivo della migrazione ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() import_ssl() Fase di trasmissione Il demone del sistema obiettivo: libsockmi export_app_socket() esporta socket riceve i dati del socket import_socket() sockmi riceve i dati del protocollo applicativo socket 1 copia strutture socket 1 definisce le opportune regole di NAT TCP/IP Stack trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid esporta buffer export buffer import buffer sockmid esporta dati applicativi application handler sostituisce l indirizzo IP sorgente con quello del sistema che ha esportato la connessione per i pacchetti relativi alla connessione importata ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL libappsockmi export_ssl() import_ssl() Fase di trasmissione libsockmi export_app_socket() import_socket() esporta socket le informazioni sul socket vengono trasferite nello spazio kernel tramite l apposito dispositivo virtuale sockmi i dati del protocollo applicativo vengono salvati in un file temporaneo socket 1 copia strutture socket 1 socket 2 esporta dati applicativi le informazioni principali del protocollo vengono inserite in una lista (accesso regolato da un meccanismo di lock esclusivo) TCP/IP Stack trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid esporta buffer export buffer importa buffer ioctl() import buffer sockmid application handler tipo, stato, quadrupla (I src, P src, I dst, P dst ) che indentifica il socket associato, nome del file temporaneo ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL importa sessione SSL libappsockmi export_ssl() import_ssl() Applicazione libsockmi export_app_socket() esporta socket Fase d importazione import_socket() socket 1 copia strutture socket 1 sockmi L applicazione importa una o più connessioni sicure tramite la primitiva import_ssl(), specificando: socket 2 esporta dati applicativi un vettore di richieste d importazione TCP/IP Stack esporta buffer importa buffer il tempo massimo di attesa sockmid trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid export buffer import buffer application handler ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Applicazione Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() importa sessione SSL import_ssl() libsockmi esporta socket export_app_socket() import_socket() Fase d importazione 1. Importazione del protocollo applicativo La libreria libappsockmi: socket 1 copia strutture socket 1 sockmi importa dati applicativi apre una connessione TCP/IP con il demone sockmid per ogni richiesta d importazione: TCP/IP Stack esporta buffer socket 2 importa buffer esporta dati applicativi richiede, tramite un messaggio HTTP v1.1, di poter importare una connessione coerente con i criteri specificati nella richiesta trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid export buffer import buffer sockmid application handler il demone controlla se è stato importato almeno un protocollo applicativo che soddisfa tutti i criteri d importazione e risponde ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Applicazione sessione SSL descrittore 1 Meccanismo di migrazione SockMi libappsockmi esporta sessione SSL export_ssl() importa sessione SSL import_ssl() Fase d importazione richiesta HTTP: Applicazione libsockmi export_app_socket() import_socket() esporta socket POST <app_name> HTTP/1.1 Application-Type: <app> Application-State: <prio_state> socket 1 copia strutture socket 1 sockmi importa dati applicativi Content-Length: <criteria> <crit_length> socket 2 esporta dati applicativi HTTP/1.1 200 OK risposta HTTP: TCP/IP Stack esporta buffer importa buffer sockmid Content-Type: Content-Length: application/data <data_length> trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid export buffer import buffer application handler <criteria><protocol_data> ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione di una connessione sicura Meccanismo di migrazione SockMi Applicazione sessione SSL descrittore 1 esporta sessione SSL importa sessione SSL libappsockmi export_ssl() import_ssl() Fase d importazione socket 1 Applicazione sessione SSL descrittore 2 copia strutture libsockmi export_app_socket() import_socket() socket 1 sockmi esporta socket importa socket importa dati applicativi 2. Importazione del socket import_socket(): per importare il socket associato al protocollo applicativo socket 2 TCP/IP Stack imposta strutture trasmetti dati ad un altro sockmid ricevi dati da un altro sockmid esporta buffer export buffer socket 2 importa buffer import buffer sockmid esporta dati applicativi application handler per selezionare il socket associato al protocollo importato, utilizza i criteri d importazione ottenuti dal demone sockmid ARCHITETTURA DEL MECCANISMO DI MIGRAZIONE SockMi SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 17/29
Migrazione del protocollo SSL MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 18/29
OpenSSL Software open source scritto in linguaggio C MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 19/29
OpenSSL Software open source scritto in linguaggio C Comprende: una libreria di cifratura (libcrypto) che implementa i più popolari e sicuri: algoritmi di cifratura a chiave simmetrica algoritmi a chiave pubblica algoritmi di hash MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 19/29
OpenSSL Software open source scritto in linguaggio C Comprende: una libreria di cifratura (libcrypto) che implementa i più popolari e sicuri: algoritmi di cifratura a chiave simmetrica algoritmi a chiave pubblica algoritmi di hash un toolkit SSL (libssl) che implementa i protocolli: SSL versione 2.0 SSL versione 3.0 TLS versione 1.0 MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 19/29
Utilizzo di un canale sicuro (1) inizializzare le librerie con la primitiva SSL_library_init MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 20/29
Utilizzo di un canale sicuro (1) inizializzare le librerie con la primitiva SSL_library_init inizializzare il contesto SSL (SSL_CTX) cifrari supportati, algoritmi di compressione, certificati, chiavi pubbliche e private, etc... MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 20/29
Utilizzo di un canale sicuro (1) inizializzare le librerie con la primitiva SSL_library_init inizializzare il contesto SSL (SSL_CTX) cifrari supportati, algoritmi di compressione, certificati, chiavi pubbliche e private, etc... creare una connessione SSL a partire dal contesto SSL * SSL_new(SSL_CTX *ctx) MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 20/29
Utilizzo di un canale sicuro (1) inizializzare le librerie con la primitiva SSL_library_init inizializzare il contesto SSL (SSL_CTX) cifrari supportati, algoritmi di compressione, certificati, chiavi pubbliche e private, etc... creare una connessione SSL a partire dal contesto SSL * SSL_new(SSL_CTX *ctx) associare la connessione a un socket MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 20/29
Utilizzo di un canale sicuro (1) inizializzare le librerie con la primitiva SSL_library_init inizializzare il contesto SSL (SSL_CTX) cifrari supportati, algoritmi di compressione, certificati, chiavi pubbliche e private, etc... creare una connessione SSL a partire dal contesto SSL * SSL_new(SSL_CTX *ctx) associare la connessione a un socket eventualmente connettere il socket a un server oppure accettare una connessione da un client MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 20/29
Utilizzo di un canale sicuro (2) eseguire la fase di negoziazione (SSL Handshake) SSL_connect() o SSL_accept() versione protocollo, algoritmo di cifratura, algoritmo di compressione, algoritmo digest, stati di connessione, etc... MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 21/29
Utilizzo di un canale sicuro (2) eseguire la fase di negoziazione (SSL Handshake) SSL_connect() o SSL_accept() versione protocollo, algoritmo di cifratura, algoritmo di compressione, algoritmo digest, stati di connessione, etc... eseguire le operazioni di lettura e/o scrittura sul canale sicuro SSL_read() o SSL_write() MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 21/29
Utilizzo di un canale sicuro (2) eseguire la fase di negoziazione (SSL Handshake) SSL_connect() o SSL_accept() versione protocollo, algoritmo di cifratura, algoritmo di compressione, algoritmo digest, stati di connessione, etc... eseguire le operazioni di lettura e/o scrittura sul canale sicuro SSL_read() o SSL_write() chiudere il canale SSL_shutdown() MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 21/29
Meccanismo di migrazione La migrazione del protocollo SSL/TLS avviene copiando in un area di memoria, detta buffer di migrazione, tutte le informazioni necessarie a ricostruire la connessione sicura su un altra applicazione il buffer consiste in una successione di strutture contigue che rappresentano i dati del protocollo MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 22/29
Meccanismo di migrazione La migrazione del protocollo SSL/TLS avviene copiando in un area di memoria, detta buffer di migrazione, tutte le informazioni necessarie a ricostruire la connessione sicura su un altra applicazione il buffer consiste in una successione di strutture contigue che rappresentano i dati del protocollo definire cosa trasferire: solo le informazioni necessarie MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 22/29
Meccanismo di migrazione La migrazione del protocollo SSL/TLS avviene copiando in un area di memoria, detta buffer di migrazione, tutte le informazioni necessarie a ricostruire la connessione sicura su un altra applicazione il buffer consiste in una successione di strutture contigue che rappresentano i dati del protocollo definire cosa trasferire: solo le informazioni necessarie tutte le informazioni della connessione sicura MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 22/29
Meccanismo di migrazione La migrazione del protocollo SSL/TLS avviene copiando in un area di memoria, detta buffer di migrazione, tutte le informazioni necessarie a ricostruire la connessione sicura su un altra applicazione il buffer consiste in una successione di strutture contigue che rappresentano i dati del protocollo definire cosa trasferire: solo le informazioni necessarie tutte le informazioni della connessione sicura consente di migrare la connessione prima della fase di SSL Handshake permette di creare una nuova connessione sicura il sistema che importa può sostituire completamente l entità che ha esportato la connessione MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 22/29
API del meccanismo di migrazione La libreria libappsockmi ha un duplice scopo: separare l implementazione di SockMi dallo sviluppo delle applicazioni che lo utilizzano MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 23/29
API del meccanismo di migrazione La libreria libappsockmi ha un duplice scopo: separare l implementazione di SockMi dallo sviluppo delle applicazioni che lo utilizzano definire una API che nasconda i complessi meccanismi che realizzano la migrazione: MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 23/29
API del meccanismo di migrazione La libreria libappsockmi ha un duplice scopo: separare l implementazione di SockMi dallo sviluppo delle applicazioni che lo utilizzano definire una API che nasconda i complessi meccanismi che realizzano la migrazione: save_ssl() copia tutte le informazioni della connessione sicura in un buffer di memoria definita in app/ssl.h e implementata in app/ssl.c export_ssl() per esportare la connessione sicura specificata verso il sistema obiettivo definita in appexport.h e implementata in export_app.c invia i dati del protocollo SSL al demone sockmid MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 23/29
API del meccanismo di migrazione La libreria libappsockmi ha un duplice scopo: separare l implementazione di SockMi dallo sviluppo delle applicazioni che lo utilizzano definire una API che nasconda i complessi meccanismi che realizzano la migrazione: import_ssl() per importare una o più connessioni sicure contemporaneamente definita in appimport.h e implementata in import_app.c riceve i dati del protocollo SSL dal demone sockmid load_ssl() rigenera la connessione sicura a partire dalle informazioni contenute in un buffer di memoria definita in app/ssl.h e implementata in app/ssl.c MIGRAZIONE DEL PROTOCOLLO SSL SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 23/29
Esempi di migrazione ESEMPI DI MIGRAZIONE SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 24/29
Programmi di echo input stream read() ssl_echo_cli SSL_write() SSL_read() ssl_echo_srv SSL_read() SSL_write() write() Client Echo/SSL (ssl_echo_cli) output stream Canale sicuro SSL ESEMPI DI MIGRAZIONE SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 25/29
Programmi di echo input stream read() ssl_echo_cli SSL_write() SSL_read() ssl_echo_srv SSL_read() SSL_write() write() Client Echo/SSL (ssl_echo_cli) Server Echo/SSL (ssl_echo_srv) output stream Canale sicuro SSL ESEMPI DI MIGRAZIONE SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 25/29
Programmi di echo input stream read() ssl_echo_cli SSL_write() SSL_read() ssl_echo_srv SSL_read() SSL_write() write() Client Echo/SSL (ssl_echo_cli) Server Echo/SSL (ssl_echo_srv) Modalità d operazione: output stream Canale sicuro SSL normale: il programma si comporta come un echo client-ssl o server-ssl tradizionale ESEMPI DI MIGRAZIONE SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 25/29
Programmi di echo input stream read() ssl_echo_cli SSL_write() SSL_read() ssl_echo_srv SSL_read() SSL_write() write() Client Echo/SSL (ssl_echo_cli) Server Echo/SSL (ssl_echo_srv) Modalità d operazione: output stream Canale sicuro SSL normale: il programma si comporta come un echo client-ssl o server-ssl tradizionale importazione: il programma importa una connessione sicura in un certo stato ESEMPI DI MIGRAZIONE SockMi: un meccanismo per la migrazione di connessioni sicure Samuele Ruco p. 25/29