Passa al contenuto principale

1.2. The Initial Exchanges (Gli scambi iniziali)

1.2 The Initial Exchanges (Gli scambi iniziali)

La comunicazione IKE inizia sempre con IKE_SA_INIT e IKE_AUTH (fase 1 in IKEv1). Di solito quattro messaggi; in alcuni scenari di più. Tutto è coppia richiesta/risposta. Prima lo scambio base, poi le varianti. La prima coppia (IKE_SA_INIT) negozia algoritmi, scambia nonce ed esegue Diffie-Hellman [DH].

La seconda (IKE_AUTH) autentica i messaggi precedenti, scambia identità e certificati e crea la prima Child SA. Parti sono cifrate e protette in integrità con chiavi da IKE_SA_INIT; le identità sono nascoste; tutti i campi autenticati. Sezione 2.14 per le chiavi. (Un MITM senza IKE_AUTH completato può comunque vedere l'identità dell'initiator.)

Dopo lo scambio iniziale tutti i messaggi sono protetti con algoritmi e chiavi di IKE_SA_INIT. Sintassi Encrypted (sezione 3.14), chiavi come sezione 2.14. Ogni messaggio successivo include Encrypted, anche se detto "vuoto". Per CREATE_CHILD_SA, IKE_AUTH o INFORMATIONAL il corpo dopo l'header è cifrato; l'intero messaggio incluso l'header è protetto in integrità con gli algoritmi della IKE SA.

Ogni messaggio IKE ha Message ID nell'header fisso per abbinare richieste/risposte e ritrasmissioni.

Le payload sono indicate come segue.

NotationPayload
AUTHAuthentication
CERTCertificate
CERTREQCertificate Request
CPConfiguration
DDelete
EAPExtensible Authentication
HDRIKE header (not a payload)
IDiIdentification - Initiator
IDrIdentification - Responder
KEKey Exchange
Ni, NrNonce
NNotify
SASecurity Association
SKEncrypted and Authenticated
TSiTraffic Selector - Initiator
TSrTraffic Selector - Responder
VVendor ID

Dettagli in sezione 3. Payload opzionali tra parentesi, es. [CERTREQ].

Scambi iniziali:

Initiator                         Responder
-------------------------------------------------------------------
HDR, SAi1, KEi, Ni -->

HDR: SPI, versioni, Exchange Type, Message ID, flag. SAi1: algoritmi dell'initiator per IKE SA. KE: valore DH dell'initiator. Ni: nonce initiator.

                               <--  HDR, SAr1, KEr, Nr, [CERTREQ]

Il responder sceglie la suite in SAr1, completa DH con KEr, invia Nr.

Ogni parte può calcolare SKEYSEED (sezione 2.14) e da lì tutte le chiavi IKE SA. I messaggi seguenti (salvo header) sono cifrati e integrità. Chiavi SK_e e SK_a da SKEYSEED (sezioni 2.13, 2.14); per direzione. Anche SK_d per materiale Child SA. La notazione SK { ... } indica cifratura e integrità con SK_e/SK_a di quella direzione.

HDR, SK {IDi, [CERT,] [CERTREQ,]
[IDr,] AUTH, SAi2,
TSi, TSr} -->

L'initiator dichiara IDi, prova il segreto e protegge con AUTH (2.15). Opzionale CERT/CERTREQ. Con CERT, il primo certificato DEVE contenere la chiave pubblica per AUTH.

IDr opzionale sceglie l'identità del responder su più identità sulla stessa IP. Il responder può usare un altro IDr; l'initiator può chiudere la SA se non accetta.

TSi/TSr: sezione 2.9.

SAi2 avvia la Child SA; campi da SAi2 come in CREATE_CHILD_SA.

                               <--  HDR, SK {IDr, [CERT,] AUTH,
SAr2, TSi, TSr}

Il responder dichiara IDr, certificati opzionali (prima la chiave per AUTH), AUTH, completa Child SA. Entrambe le parti DEVONO verificare firme e MAC. Con segreto condiviso i nomi in ID DEVONO corrispondere alla chiave AUTH.

L'initiator indovina il gruppo DH. Errore: Notify INVALID_KE_PAYLOAD. L'initiator DEVE ripetere IKE_SA_INIT con gruppo corretto e DEVE riproporre tutte le suite accettabili (il rifiuto non era autenticato).

Fallimento Child SA in IKE_AUTH: IKE SA comunque creata. Notify che non impediscono IKE SA includono almeno NO_PROPOSAL_CHOSEN, TS_UNACCEPTABLE, SINGLE_PAIR_REQUIRED, INTERNAL_ADDRESS_FAILURE, FAILED_CP_REQUIRED.

Fallimento IKE SA (es. AUTHENTICATION_FAILED): nessuna IKE SA. Anche con messaggi cifrati, cautela se il peer non è autenticato; con MAC valido il mittente Notify è il responder di IKE_SA_INIT, non l'identità assicurata.

IKE_AUTH non ha KEi/KEr né Ni/Nr. Le SA non possono avere Transform Type 4 diverso da NONE. Le implementazioni DOVREBBERO omettere la sottostruttura transform invece di NONE.