2.2.9 Correlation Payload (IKEv2) Packet

The Correlation Payload (IKEv2) packet format is as follows. There are two IKE_SAs here, SAcurrent and SAoriginal. This payload is sent under the protection of SACurrent. The payload type value for a Correlation payload is 0xc8 from the private payload type range, as specified in [RFC4306] section 3.2.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Next_Payload

RESERVED

Payload_Length

IKE_SA_Initiator_SPI

...

IKE_SA_Responder_SPI

...

Correlation_Hash (variable)

...

Next_Payload (1 byte): This field MUST be as specified in [RFC2408] section 3.2.

RESERVED (1 byte): This field MUST be as specified in [RFC2408] section 3.2.

Payload_Length (2 bytes): This field MUST be as specified in [RFC2408] section 3.2.

IKE_SA_Initiator_SPI (8 bytes): This MUST be set to the initiator's SPI from the IKE_SA being correlated, SAoriginal. This value is taken from the IKEv2 header of the prior IKE_SA, as specified in [RFC4306] section 3.1.

IKE_SA_Responder_SPI (8 bytes): This MUST be set to the responder's (1) SPI from the IKE_SA being correlated, SAoriginal. This value is taken from the IKEv2 header of the prior IKE_SA, as specified in [RFC4306] section 3.1.

Correlation_Hash  (variable): This computes a keyed hash using the SAcurrent's negotiated PRF function. The key used is the SK_ai on the initiator and the SK_ar for the responder (1) from SAoriginal. See [RFC4306] section 2.14. The correlation hash is as follows.

 prf(SK_a(i or r), SAcurrent.InitiatorSpi|SAcurrent.ResponderSpi|SAoriginal.InitiatorSpi|SAoriginal.responderSpi)