PROTEZIONE LOGICA DEI DATI NEI SISTEMI DI COMUNICAZIONE a cura di Gianluca Di Tomassi

Cap 6

Gestione delle chiavi

Introduzione
Generazione delle chiavi
Generatori pseudo-casuali
Chiavi terminali e chiavi di sessione
Esempio di gestione delle chiavi
Gerarchia delle chiavi
Cifratura dei dati
Distribuzione delle chiavi di sessione
Distribuzione delle chiavi terminali

Introduzione

I problemi riguardanti la gestione delle chiavi si presentano con molta frequenza nei sistemi simmetrici dove la riservatezza dei messaggi dipende esclusivamente dalla segretezza delle chiavi che oltretutto sono condivise. In una rete di interconnessione piuttosto estesa quindi, è prevista la presenza di numerose chiavi di cifratura e la loro gestione diventa complessa.

Per gestione delle chiavi si deve intendere dunque ogni aspetto del loro mantenimento : generazione, distribuzione, memorizzazione fino alla loro distruzione.

I punti più "caldi" di una gestione di chiave risultano essere la loro distribuzione e la memorizzazione.

Infatti affinchè una chiave sia trasportata in modo sicuro all' interno di una rete deve essere cifrata attraverso una ulteriore chiave. Se si ha, ad esempio una chiave kS per la cifratura dei messaggi ed occorre trasportarla in un altro punto della rete, è necessario cifrarla con un' altra chiave kT . Il problema non è risolto, lo si è solo spostato in quella che è la gestione delle chiavi.

Poichè kS è usata in prevalenza per la cifratura di dati per una durata limitata nel tempo, essa è detta chiave di sessione.

La chiave kT utilizzata per la cifratura di kS è detta invece chiave terminale. Quest' ultima viene utilizzata per un periodo di tempo superiore di quella di sessione e può essere memorizzata all' interno dell' elaboratore host. Per fare in modo che l' area di memoria dove le varie kT risiedano sia protetta e minimizzata le chiavi terminali possono essere a loro volta cifrate con una chiave kM detta master-key.

Riassumendo la master-key protegge le chiavi kT terminali che a loro volta proteggono le chiavi di sessione kS che a loro volta sono utilizzate per la segretezza dei messaggi. La sicurezza dell' intero sistema quindi si riconduce alla segretezza della master-key che è al livello più alto in una sorta di gerarchia delle chiavi.

[Torna inizio pagina]

 

6.1 Generazione delle chiavi

Il modello ideale di generatore di chiavi prevede di originare chiavi completamente casuali ed equiprobabili da un insieme di valori possibili.

In realtà una distribuzione di chiavi completamente uniforme non è indispensabile, lo è ancor di più invece l' imprevedibilità.

Un metodo suggerito dall' IBM per generare la master-key consiste nel lancio ripetuto di una moneta così da ottenere chiavi che sarannno cambiate raramente in virtù del loro valore casuale.

Ogni algoritmo adibito alla generazione di numeri casuali ha lo svantaggio di poter essere modificato da estranei compromettendone l' imprevedibilità. Con una generazione manuale delle chiavi invece si ha tutta la procedura sotto controllo, ma tutto ciò non può essere ripetuto per un consistente numero di chiavi.

Di seguito saranno esposti algoritmi adibiti alla generazione di chiavi.

[Torna inizio pagina]

 

6.1.1 Generatori pseudo-casuali

Vi sono molte sequenze di numeri che sono in apparenza casuali , invece si può dimostrare la loro prevedibilità in base a dati statistici. Algoritmi che generano sequenze di questo tipo si dicono appunto generatori di numeri pseudo-casuali. Anche un algoritmo di cifratura (purchè non sia debole) può essere utilizzato come generatore di sequenze pseudo-casuali, cioe una sequenza Rn di numeri si può ottenere come:

Rn= C k(n)

Esiste però la possibilità che due sequenze generate con una stessa chiave possano essere uguali. Per superare questo inconveniente, i generatori vengono avviati con dato casuale. Si utilizzano allora valori detti semi.

Le sequenze generate a partire dai semi servono per la produzione di chiavi e questo spiega la loro notevole lunghezza. Ancora più importante però è, come già accennato, l' imprevedibilità delle chiavi pur ammettendo la conoscenza di quelle prodotte precedentemente.

Per le sorgenti dei semi, il processo di genesi deve essere più affidabile ed in genere più comlesso di quello delle chiavi. In genere si utilizzano sorgenti differenti di casualità, e tra queste vi può essere la master-key, che come sappiano non è accessibile ad estranei.

Nella prossima pagina è riportato lo schema e la descrizione del principio di funzionamento di un possibile generatore di cifre pseudo-casuali.

 

Generatore di numeri pseudo-casuali

 

Si parta da un valore iniziale U0 . La sequenza Ui si genera attraverso algoritmi crittografici C e D che fanno uso di due master-key ( k1e k2 ) segrete. Affinchè la sequenza sia il più imprevedibile possibile di sfrutta una sequenza di semi Zi . Il calcolo della sequenza Ui utilizza:

Xi= D k1 ( Ui )

Ui+1 = C ( D k2 ( Zi ))

la sequenza dei numeri casuli Ri è ottenuta attraverso:

Ri = C ( D Xi ( U1 ))

Questo metodo rende impossibile la previsione della sequenza Ri con la sola conoscenza delle sequenze precedenti.

[Torna inizio pagina]

 

6.2 Chiavi terminali e chiavi di sessione

In una rete di comunicazione abbastanza estesa risulta poco proficuo il mantenimento in un terminale di tutte le chiavi necessarie per la comunicazione con gli altri. Se per esempio si hanno n terminali connessi in ogni elaboratore host saranno memorizzate (n-1)/2 chiavi (se il canale è protetto in entrambe le direzioni). L' occupazione di memoria quindi è proporzionata al numero di terminali collegati.

Per evitare questo spreco si utilizzano le già accennate chiavi di sessione ks che oltretutto garantiscono maggiore sicurezza poichè la loro durata è limitata nel tempo.

Per la distribuzione delle ks si utilizzano le chiavi terminali kt. Queste possono essere protette in maniera migliore in quanto sono adoperate per la cifratura delle chiavi di sessione ed un intruso ha a disposizione minore quantità di informazione per risalire al valore di kt.

Quando due enti Ti e Tj intendono comunicare si deve rendere disponibile una chiave di sessione ksij che può essere trasmessa attraverso la rete sotto la cifratura di due diverse chiavi terminali, precisamente : C kti ( ksij ) per il terminale Ti e C ktj ( ksij ) per il terminale Tj .

Il responsabile di questa generazione può essere un terminale o un centro di distribuzione di chiavi che viene chiamato Ente Gestore.

L' operazione di cifratura impiegherà o un dispositivo DES o un chip in grado di memorizzare le due chiavi. La chiave kt può essere vista come master-key del terminale. Essa viene mantenuta in un registro in modo da renderla disponibile ogni volta che debba essere caricata la chiave di sessione.

Quando ciò accade la chiave terminale viene trasferita su un registro di lavoro che provvede a fornirla al decifratore DES che deve operare la decodifica della chiave di sessione (cifrata) in arrivo per produrre la ks.

In un chip appositamente progettato (come mostrato nella figura in alto) il valore ks non dovrebbe mai essere trasferito all' esterno ma essere depositato nel registro di lavoro occupando il posto di kt. La ficurezza fisica del chip assicura la protezione delle chiavi.

[Torna inizio pagina]

 

6.3 Esempio di gestione delle chiavi

L' esempio di gestione delle chiavi che verrà descritto in seguito è prodotto dall' IBM. Anche in questo caso sono utilizzate chiavi terminali e chiavi di sessione, solo che i terminali della rete non possono comunicare direttamente con qualunque altro terminale. La comunicazione si effettuata solo attraverso l' host che assume quindi le funzioni dell' ente gestore per il gruppo di terminali ad esso connessi. Le comunicazioni tra host e terminali inoltre sono cifrate. I vari host posti nella rete provvedono all' organizzazione della comunicazione di messaggi e di file. Lo schema di gestione dato dall' IBM separa queste due funzioni, cioè si tengono separate la cifratura dei messaggi da quella dei file per una maggiore protezione delle informazioni.

Entrambe le gestioni sono del tutto analoghe per cui ci soffermeremo solo su quello riguardante il trasferimento di messaggi.

Ogni terminale ha una propria kt con la quale distribuisce la chiave di sessione cifrata all' inizio della comunicazione.

Dato che nello stesso istante è possibile che più sessioni siano attive è necessario che un gran numero di chiavi terminali siano memorizzate proprio per rendere immediatamente disponibili le ks. La memorizzazione delle chiavi terminali deve essere sicura e protetta dall' esterno e per tale motivo l' host è equipaggiato di un modulo speciale in grado di contenere in modo protetto tutte le informazioni che devono essere segrete. Tale modulo speciale è detto TRM che sta per Tamper Resistant Module (lett."modulo resistente alle martellate").

Il TRM contiene tutte le chiavi più importanti, che non sono accedibili da un terminale poichè un utente potrebbe essere un intruso che abbia intenzione di portare all' esterno dati riservati.

Per questo schema di gestione delle chiavi quindi è fondamentale che a nessuno sia permesso l' accesso alle chiavi in chiaro, le quali sono sempre contenute all' interno del TRM salvo eccezioni quali ad esempio il caricamento delle chiavi kt nel terminale. All' esterno del TRM le chiavi devono essere sempre cifrate eccetto il caso appena descritto che quindi deve essere seguito da personale fidatissimo. Per rendere più sicura questa operazione la chiave è suddivisa in più parti, ognuna caricata da un differente responsabile che ne conosce così solo una parte.

[Torna inizio pagina]

 

6.3.1 Gerarchia delle chiavi

Il disegno esposto quì sopra mostra la gerarchia delle chiavi nello schema proposto dall' IBM.

Due master-key, km0 e km1 contenute nell' host sono utilizzate rispettivamente per cifrare tutte le chiavi di sessione e tutte le chiavi terminali presenti nel sistema.

Poichè le chiavi ks sono cifrate attraverso una master-key esse possono essere memorizzate in memoria ordinaria, ed un eventuale furto dall' host del valore Ckm0(ks) non risulta così grave perchè km0 è dedicata per quell' host.

In modo analogo le chiavi terminali possono essere memorizzate come Ckm1(kt) in zone di memoria ordinaria.

Memorizzare sia le chiavi di sessione che quelle terminali fuori del TRM ha il duplice vantaggio di ridurre l' ammontare di memoria necessaria nel TRM, e l' altro permettere il controllo dell' accesso al sistema operativo.

[Torna inizio pagina]

 

6.3.2 Cifratura dei dati

Un programma all' interno dell' host può avvalersi del modulo TRM per la decifrazione di dati provenienti da un terminale o per la codifica di dati da inviare ad un terminale.

Queste operazioni però non sono le consetue funzioni di cifratura e decifratura in quanto la chiave arriva in forma codificata. Occorre quindi decodificare prima la chiave utilizzando la master-key km0 estraendo la chiave di sessione che permette la decodifica o la decodifica dei dati.

In questo schema si mostra l' utilizzo del TRM come host encipherment (HE) ossia come cifratore dei dati in ingresso, decifrando la chiave di sessione necessaria per la codifica degli stessi.

Nella pagina successiva è schematizzato invece l' uso del modulo TRM come HD ovvero host decipherment.

In questo secondo caso il TRM ha la funzione di decodifica dei dati cifrati con una chiave di sessione ks che perviene a tale modulo anch' essa in forma cifrata sotto la master-key km0 .

L' HE e l' HD di ogni singolo host sono diversi a causa della differente master-key contenuta in ogni TRM. Questo fa sì che una chiave di sessione prelevata dalla memoria di un host non possa essere utilizzata in un host differente.

[Torna inizio pagina]

 

6.3.3 Distribuzione delle chiavi di sessione

In questo paragrafo analizzereno il funzionamento del modulo TRM come distributore di chiavi. Come già accennato in precedenza queste si presentano in forma cifrata al di fuori del TRM e una delle funzioni che tale modulo deve assolvere consiste nel decifrarle.

Si può schematizzare come:

ΠSi deve decifrare attraverso la master-key km1 il valore Ckm1(kt) in modo da avere in chiaro la kt .

 Si decifra la chiave di sessione dal valore Ckm0(ks) attraverso in modo da avere .

Ž Si produce la quantità Ckt(ks) che rappresenta la chiave cifrata da distribuire

Questa procedura è detta re-enchiper from master-key (RFM) in quanto è diverso il valore della chiave di sessione cifrata con km0 e quella cifrata con kt.

Non è permesso inoltre una generazione della chiave ks in forma non cifrata, perchè la forma chiara è ammessa solo all' interno del TRM e quindi il valore Ckm0(ks) dovrà essere un numero casule. Questo requisito non è necessario per la generazione di Ckt(ks) perchè la funzione RFM è unidirezionale infatti se non lo fosse un intruso potrebbe intercettare la chiave di sessione durante la distribuzione e risalire a Ckm0(ks) avvicinandosi così alle master-key.

Principio della funzione RFM

[Torna inizio pagina]

 

6.3.4 Distribuzione delle chiavi terminali

Le chiavi terminali sono cambiate con minore frequenza delle chiavi di sessione. Quando una di queste deve essere cambiata il suo valore chiaro và posto all' interno del terminale. La generazione origina una chiave nella sua forma non cifrata in modo che sia impossibile riprodurla all' interno dell' host dopo la sua distribuzione. Questa soluzione pone il problema di creare il valore Ckm1(kt) che è quello che usualmente memorizzato.

Per dare questo valore il sistema operativo utilizza una speciale quantità ed una funzione del TRM.

Il valore particolare è Ckm1( km1 ) e la funzione speciale è la EMK che stà per encipher under master-key dove la master-key è km0. Il valore speciale si ottiene inserendo la EMK con argomento km1 nell' HE.

In seguito a tale processo tutti i valori delle master-key al di fuori del TRM sono distrutti.

Usando la speciale quantità Ckm1(km1) si può effettuare ora la distribuzione delle chiavi. Prima la chiave è cifrata sotto attraverso EMK, quindi si applica RFM a tale valore utilizzando come chiave Ckm1( km1 ). Il risultato di questa funzione è la quantità Ckm1(kt) che non è altro che il valore cifrato della chiave terminale e per tale ragione può essere memorizzato in memoria ordinaria.

 

INDICE