Anteprima
Vedrai una selezione di 3 pagine su 10
Gestione di distribuzione delle chiavi Pag. 1 Gestione di distribuzione delle chiavi Pag. 2
Anteprima di 3 pagg. su 10.
Scarica il documento per vederlo tutto.
Gestione di distribuzione delle chiavi Pag. 6
1 su 10
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Un’altra possibilità di diminuire il carico organizzativo della gestione delle chiavi è di creare una

gerarchia dei centri di distribuzione delle chiavi locali. Ogni KDC locale ha il proprio bacino di

utenza e gestisce in proprio le chiavi per le comunicazioni tra le persone appartenenti al proprio

bacino di utenza.

Ogni KDC locale gestisce le chiavi master degli utenti che appartengono al suo bacino locale.

Il vantaggio qui non è solo dal punto di vista organizzativo, ma anche dal punto di vista della

sicurezza, perché se viene compromesso un KDC locale, allora viene compromesso solo l’insieme

di chiavi di quel gruppo locale.

Qualunque sia il livello di sicurezza, è opportuno che queste chiavi periodicamente vengano

cambiate. Lo svantaggio è che si passa molto tempo a richiedere la generazione delle chiavi e

questo causa un ritardo nella comunicazione. Ci deve essere 1 compromesso tra la sicurezza e il

carico di comunicazione computazionale. C’è inoltre il problema di definire ogni quanto si vanno a

cambiare le chiavi realizzando un compromesso tra queste due esigenze.

C’è quindi il problema di definire ogni quanto si va a cambiare queste chiavi.

Vediamo ora cosa succede all’interno di ogni singolo host quando si vuole generare una

connessione sicura.

In questo caso la richiesta di una comunicazione sicura parte dall’applicazione e si immagina che

ci sia un modulo dentro l’host (SSM) che si occupa di gestire la sicurezza interagendo con un

centro di distribuzione delle chiavi. Nel momento in cui una applicazione chiede di instaurare una

comunicazione sicura, il contenuto effettivo della comunicazione viene messo in standby ossia

prima si pensa a generare le chiavi responsabili della sicurezza e poi si manda effettivamente il

messaggio. Quindi il modulo che si occupa della sicurezza va a chiedere al centro di distribuzione

la chiave di sessione e a questo punto il centro di distribuzione la manda sia alla prima parte della

comunicazione e sia alla seconda parte.

A questo punto, entrambe le parti hanno ottenuto la chiave, e il mittente può aprire la connessione

e scambiare i dati utilizzando la chiave segreta.

In questo schema, come a quello visto in precedenza, c’è la presenza di un centro di distribuzione

delle chiavi. L’introduzione di questa parte può aggiungere dei problemi ossia in particolare deve

essere sicura perché poiché gestisce tutte le chiavi degli host che fanno riferimento ad esso, una

sua compromissione significa che tutte le comunicazioni tra quegli host non sono più sicure. Una

possibilità è quella di eliminare questa distribuzione centralizzata e di ricorrere ad un meccanismo

decentralizzato. Ovviamente questo non è consigliabile per reti molto grandi perché il carico della

gestione delle chiavi si sposta sui singoli host dove ogni host deve gestire (n-1) chiavi.

NOTA: stiamo sempre parlando di chiavi simmetriche per una sessione di comunicazione.

Il funzionamento è il seguente:

il mittente interagisce direttamente con il destinatario ed invia ad esso il suo ID ed un nounce.

Il destinatario cifra una serie di informazioni che contengono: la chiave si sessione, l’identificativo

di A, l’identificativo di B, una funzione del nounce ed un altro nounce che genera lui stesso.

Il mittente a questo punto riceve il messaggio, può estrarre la chiave di sessione e manda questa

chiave di sessione assieme ad una risposta al nounce.

In questo tipo di comunicazione si utilizza una chiave master condivisa dove ogni host deve tenere

n-1 chiavi ed si utilizza una chiave si sessione.

Il vantaggio di usare la chiave master solo per lo scambio necessario per ottenere la chiave di

sessione è che viene esposta per poco dove il messaggio è molto breve in modo da risultare

difficile all’attaccante fare criptoanalisi di questi messaggi.

Una ulteriore complicazione del meccanismo di gestione delle chiavi è quella di specializzare

anche le chiavi, quindi di rendere più limitato il loro utilizzo (è una forma di protezione). In questo

caso le chiavi sono esposte poco perché ogni chiave serve per un ambito specifico.

Un vantaggio è che l’attaccante non sa per quale ambito la chiave vale.

Per controllare questa specializzazione di utilizzo di ogni chiave si deve specificare ossia ogni volta

che si manda la chiave serve un’informazione che specifichi l’utilizzo della chiave.

Il primo meccanismo è quello di associare una targhetta ad ogni chiave, in particolare nel DES si

possono usare gli 8 bit inutilizzati in modo da avere 256 possibilità diverse.

Un’alternativa al DES è usare un vettore di controllo mediante una funzione di hash.

Il vettore di controllo è una stringa di bit che non è più fatta di 8 bit come nel caso del DES, ma si

può fare lunga a piacimento;

il vettore di controllo viene fatto in XOR con la chiave master e questa combinazione viene

utilizzata per cifrare la chiave di sessione.

Un’altra possibilità per la distribuzione è quello dell’uso della cifratura asimmetrica. Utilizziamo

quindi una cifratura asimmetrica per distribuire chiavi simmetriche.

La cifratura a chiave asimmetrica viene applicata in maniera abbastanza diretta perché il mittente A

manda la sua chiave pubblica a B, gli associa il suo identificativo; a questo punto B risponde

cifrando con la chiave pubblica di A la chiave simmetrica. In questo caso è chiaro che solamente A

può decifrare questo messaggio e quindi ottenere la chiave simmetrica perché la decifratura si

deve fare con la chiave privata di A.

Il grande problema di questo approccio è che è vulnerabile ad attacchi di tipo Man in The Middle.

Per quanto riguarda questo attacco si ha:

- A manda il suo ID e la sua chiave pubblica;

- C blocca questo pacchetto ed invece di farlo mandare verso B, genera una sua coppia di

chiavi privata/pubblica e manda ad B il messaggio con l’ID di A.

- B ricevendo la chiave pubblica di C con l’ID di A, quando deve mandare un messaggio per

inviare la chiave simmetrica, lo cifra con la chiave pubblica che ha ricevuto ossia quella

dell’attaccante;

- Questo messaggio torna indietro e C cosi come aveva bloccato il precedente, blocca anche

questo; poiché è stato cifrato con la sua chiave pubblica, lui può leggerlo con la sua chiave

privata;

- Adesso C estrae la chiave simmetrica e si sostituisce a B nel mandare il messaggio di

ritorno e manda ad A questa volta un messaggio cifrato con la chiave pubblica di A e gli

cifra la chiave simmetrica che B ha inviato.

Questo meccanismo con l’uomo in mezzo fa saltare sia la riservatezza che l’integrità.

Un ulteriore meccanismo per la distribuzione delle chiavi nella cifratura simmetrica usando un

meccanismo a chiave pubblica è il seguente:

In questo caso si utilizzano entrambe le chiavi e permette di ottenere sia riservatezza che

autenticazione.

- Il mittente cifra con la chiave pubblica di B il suo ID ed il nounce per evitare attacchi di tipo

replay. Questo messaggio lo manda a B e solamente B lo può leggere perché cifrato con la

chiave pubblica;

- B risponde cifrando con la chiave pubblica di A il nounce di prima concatenato con un altro

nounce generato da lui stesso; anche questo messaggio non potrebbe essere letto

correttamente da qualcun altro perché deve essere decifrato con la chiave privata di A.

- A, avendo ricevuto la risposta da B, con questo secondo nounce, risponde con il nounce

che ha ricevuto prima cifrato con la chiave pubblica di B

- A può completare questi scambi perché può cifrare, con la chiave pubblica di B in modo

che solo B possa leggerlo, la chiave segreta cifrata con la chiave privata di A. Questo

garantisce l’autenticazione.

Un altro problema che si pone è quello della distribuzione delle chiavi pubbliche perché quando

una persona manda una chiave pubblica chi ci dice che la persona che ha effettivamente

associato a se quella chiave pubblica? Il problema a questo punto diventa sapere chi sta dietro le

chiavi pubbliche.

Ci sono 4 categorie di tecniche più diffuse per la distribuzione delle chiavi pubbliche:

- Annuncio pubblico: ognuno è responsabile della distribuzione della propria chiave pubblica.

Questo significa che il mittente A ha una serie di soggetti a cui vuole inviare dei messaggi e

quindi manda questa chiave pubblica a tutte queste persone; questo meccanismo è molto

semplice ma poco sicuro.

- Elenco pubblico delle chiavi: c’è un elenco pubblico e chiunque può andare a consultare

questo elenco; qui la responsabilità non è più della singola persona di distribuire la sua

chiave pubblica, ma entra in gioco una organizzazione terza. Questa autorità mantiene

l’elenco in cui ogni per ogni partecipante c’è la chiave pubblica con associato il nome della

persona che ha quella chiave pubblica. questo ci garantisce che il nome sia corretto perché

l’assegnazione della chiave pubblica con nome avviene mediante un meccanismo di

verifica sicuro a priori. Ogni partecipante a questo elenco può sostituire la chiave che ha

comunicato in qualunque momento. La vulnerabilità qui è che se l’autorità che gestisce

l’elenco viene violata, a quel punto tutto ciò che faceva l’autorità lo può fare l’attaccante;

l’attaccante cosi può modificare l’elenco e può ascoltare tutte le comunicazioni tra l’autorità

che detiene l’elenco e i partecipanti.

- Ricorso ad una autorità: l’autorità che gestiva semplicemente l’elenco, può entrare in gioco

in maniera più diretta. In questo caso non c’è più un elenco consultabile, ma di volta in volta

in una comunicazione con la persona che vuole mettere una chiave pubblica (oppure che

vuole recuperarla) si innesta una comunicazione che viene cifrata con la chiave privata

dell’autority e che quindi può essere decifrata con la sua chiave pubblica. in questa

maniera non c’è più un meccanismo di lettura ma c’è un meccanismo di richiesta/risposta in

cui l’autorità fa da server che utilizza la sua chiave privata.

- Utilizzo di certificati: qui c’è sempre l’autorità ma il vantaggio di questo schema è che non

si deve ogni volta invocare l’autorità per farci dare la chiave pubblica; l’utilizzo dell’autorità

può essere considerata come un collo di bottiglia perché deve essere invocata ogni volta

che serve una chiave pubblica di qualcuno e , visto che la chiave pubblica può ambiare,

ogni volta che bisogna comunicare con qualcuno si deve richiedere la chiave pubblica. Per

ris

Dettagli
Publisher
A.A. 2016-2017
10 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Daniele9292 di informazioni apprese con la frequenza delle lezioni di Sicurezza informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma Tor Vergata o del prof Naldi Maurizio.