IPsec è un protocollo framework costituito dai sottoprotocolli ESP e AH. IPsec, in modo definitivo, non include un meccanismo di scambio delle chiavi e pertanto dipende dall'impostazione manuale delle chiavi (arcaico) o dall'utilizzo di IKEv1 o IKEv2 per stabilire in modo sicuro le chiavi reciproche tra due parti.
Dalla lettura degli RFC IKE e IKEv2, so che entrambi ad un certo punto generano KEYMAT, che deve essere passato a IPsec in modo che IPsec possa generare le proprie chiavi simmetriche.
IKEv1 genera KEYMAT utilizzando questa formula:
PFS Disabled:
KEYMAT = prf(SKEYID_d, protocol | SPI | Ni_b | Nr_b).
PFS Enabled:
KEYMAT = prf(SKEYID_d, g(qm)^xy | protocol | SPI | Ni_b | Nr_b)
IKEv2 genera KEYMAT utilizzando questa formula:
For the first Child SA:
KEYMAT = prf+(SK_d, Ni | Nr)
For all subsequent Child SA's
KEYMAT = prf+(SK_d, g^ir (new) | Ni | Nr )
In entrambi i casi, KEYMAT viene passato a IPSec per (presumibilmente) creare le proprie chiavi di crittografia e autenticazione simmetriche. Ma non sono stato in grado di trovare da nessuna parte le formule utilizzate da IPsec per prendere le chiavi KEYMAT e / o derivative (SKEYID_d o SK_d) e creare le proprie chiavi.
Quindi la mia domanda è, Che cosa fa IPsec con KEYMAT per generare le proprie chiavi simmetriche? E anche in relazione, Quali chiavi genera IPsec dopo aver ricevuto KEYMAT? Anche se mi sento di rispondere alla prima domanda risponderò anche al secondo.