IPsec es un protocolo marco que consiste en los subprotocolo ESP y AH. IPsec, por su parte, no incluye un mecanismo de intercambio de claves y, por lo tanto, depende de la configuración manual de las claves (arcaico) o del uso de IKEv1 o IKEv2 para establecer de forma segura las claves mutuas entre dos partes.
Al leer los RFC de IKE e IKEv2, sé que ambos generan en algún momento KEYMAT, que se debe pasar a IPsec para que IPsec pueda generar sus propias claves simétricas.
IKEv1 genera KEYMAT utilizando esta fórmula:
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 con esta fórmula:
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 )
En ambos casos, KEYMAT se pasa a IPSec para (probablemente) crear sus propias claves simétricas de cifrado y autenticación. Pero no he podido encontrar en ningún lugar las fórmulas que IPsec usa para tomar las claves KEYMAT y / o derivadas (SKEYID_d o SK_d) y crear sus propias claves.
Entonces, mi pregunta es, ¿Qué hace IPsec con KEYMAT para generar sus propias claves simétricas? Y también está relacionado, ¿Qué claves genera IPsec después de recibir KEYMAT? Aunque siento que responder la primera pregunta también responderá la segunda.