GESTIONE delle CHIAVI
(Key Management)
La gestione delle chiavi è un punto cruciale di qualunque sistema di sicurezza e deve consentire la determinazione e la distribuzione (scambio) delle chiavi.
L' IPSec supporta 2 modalità operative:La prima è la più semplice e consente ad un amministatore del sistema di fornire a ciascun utente una sua chiave; è tipica di sistemi di piccole proporzioni.
- Manuale.
- Automatica.
La seconda invece descrive un sistema che autonomamente fornisce le chiavi su richiesta; tipica di grandi sistemi.Lo standard per la gestione automatica è il protocollo ISAKMP/Oakley che si compone di 2 elementi:
Il primo è un protocollo che gestisce lo scambio di chiavi a mezzo dell' algoritmo di Diffie-Hellman. Essendo generico non si hanno specifiche di formato.
- Il protocollo della determinazione della chiave di Oakley.
- ISAKMP.
Il secondo è l'Internet Security Association and Key Management Protocol (ISAKMP) che gestisce il key management con dei formati definiti e negoziando alcuni parametri di sicurezza.
Quest'ultimo può gestire più algoritmi (quello di Oakley è raccomandato).Nello specifico l'ISAKMP definisce le procedure e i formati dei pacchetti per stabilire, negoziare, modificare e infine abbattere una SA. L'implementazione deve anche supportare l'utilizzo dell'UDP.
Diamo una breve rassegna dei campi dell' ISAKMP header:
- Initiator Cookie (64bits): è incluso il cookie del end-user che ha stabilito la SA.
- Responder Cookie (64 bits): è incluso il cookie dell' entità che risponde, che ovviamente è posto a zero nel 1° messaggio proviente dalla entità che ha iniziato la SA.
- Next Payload (8 bits): indica il tipo del 1° payload.
- Major version (4 bits): indica versione maggiore di ISAKMP in uso.
- Minor Version (4 bits): indica la minore versione in uso.
- Exchange Type (8 bits): indica il tipo di scambio.
- Flags (8 bits): indica il set di opzioni che è utilizzato in questo scambio.Tra questi ricordiamo l' Encryption bit e il Commit bit.
- Message ID (32 bits): ID del messaggio.
- Length (32 bits): lunghezza globale del messaggio = header + payload.