1313#+RFC_XML_VERSION: 3
1414#+RFC_CONSENSUS: true
1515
16- #+TITLE: IKEv2 negotiation for Enhanced Encapsulating
16+ #+TITLE: IKEv2 negotiation for Enhanced Encapsulating Security Payload
1717#+RFC_SHORT_TITLE: EESP IKEv2 negotiation
1818#+AUTHOR: Steffen Klassert
1919@@ -46,7 +46,7 @@ Encapsulating Security Payload (ESP) defined in [RFC4303]. These
4646improvements address evolving requirements in modern IPsec
4747deployments. EESP offers increased flexibility for hardware
4848offloads at the packet level. It supports carrying inner packet flow
49- identifiers used by ECMP, RSS hardware, and IPsec peers prior to
49+ identifiers foe the use with ECMP, RSS hardware, and IPsec peers prior to
5050decryption. EESP also enables the establishment of Sub Child SAs with
5151independent sequence number spaces. Additionally, it supports the use
5252of 64-bit sequence numbers in each packet or the omission of sequence
@@ -104,7 +104,7 @@ This document uses the following terms defined in
104104* EESP SA IKEv2 negotiation
105105EESP IKEv2 is an extension to IKEv2 [[RFC7296]] to negotiate
106106on EESP SA specified in [[I-D.klassert-ipsecme-eesp]].
107- An EESP SA can be negotiated using IKEv2 either IKE_AUTH or
107+ An EESP SA can be negotiated using IKEv2 either with the IKE_AUTH or
108108CREATE_CHILD_SA new SA, exchange.
109109
110110IKEv2 Notify Message Status Type USE_WESP_MODE, [[RFC5840]], is not
@@ -118,10 +118,10 @@ If this notification is received it MUST be discarded.
118118
119119** Negotiating an EESP SA using IKE_AUTH or CREATE_CHILD_SA
120120To negotiate an EESP Child SA, use the IKEv2 IKE_AUTH or
121- CREATE_CHILD_SA New SA exchange. The SA Payload, Poropsal
122- MUST have Security Protocol Identifier, Proto Id = EESP.
123-
124- which is specified in/ ~EESP~, as specified in this document, and uses the
121+ CREATE_CHILD_SA new SA exchange. The SA Payload, Proposal
122+ MUST have Security Protocol Identifier, Proto Id = EESP
123+ which is specified in [[I-D.klassert-ipsecme-eesp]],
124+ as specified in this document, and uses the
125125EESP Transform attributes defined in [[EESP SA Transforms]].
126126
127127** Rekeying an EESP SA with the CREATE_CHILD_SA Exchange
@@ -170,22 +170,25 @@ the original EESP SA.
170170#+end_src
171171
172172** Anti-Replay Service
173- EESP provides optional Anti-Replay protection using an
174- Extended Sequence Number (ESN) carried in the packet.
173+ EESP provides an optional Anti-Replay service using a
174+ 64 bit Sequence Number, carried in the packet.
175175To enable Anti-Replay service the initiator SHOULD
176176propose SNP Transforms SNP = (1, Name 64 bit ESN) in Substructure
177177of the Proposal Substructure inside the Security Association (SA)
178178payload in the IKEv2 Exchange. When the responder select 64 bit
179- ESN a receiver MAY enable Antir-Reply.
179+ ESN a receiver MUST enable Anti-Reply.
180+ # NOTE STK: I'd say MUST above as we want to negotiate Anti-Replay service
181+ # and not just the presense of the seq nr field.
180182
181183When the Transform Type [[IKEv2-SNP]] is not present in initiator's Child SA
182184proposal during negotiation of an EESP Child SA, the Sequence Number
183185field MUST NOT be transmitted in the EESP packet.
184186
185- When SNP is not negotiated, i.e., when ESN is not carried in the
187+ When SNP is not negotiated, i.e., when the 64 bit sequence number is
188+ not carried in the
186189EESP packet, an EESP receiver should not act on address or port
187190changes. It should not initiate a dynamic address update without the
188- use of IKEv2 Mobility [[RFC4555]]. Since ARP is disabled, an attacker
191+ use of IKEv2 Mobility [[RFC4555]]. Since the Anti-Replay service is disabled, an attacker
189192could replay packets with a different source address. Otherwise,
190193an attacker could disrupt the connection by capturing and replaying
191194a single packet with different source address or port number.
@@ -204,35 +207,38 @@ IIV transforms specified in [[IKEv2-Enc]] MUST be used. Additionally,
204207[[Anti-Replay Service]] MUST be negotiated to carry a 64-bit ESN
205208in the EESP packet.
206209
207- ** EESP Version:
208- Each SA need an EESB Base Header version which is specified
210+ ** EESP Version
211+ Each SA need an EESP Base Header version which is specified
209212[[I-D.klassert-ipsecme-eesp]].
210213
211214** EESP Flow Identifier
212215
213216EESP Flow Identifier (EESPFID) Options are used to carry
214217characteristic information of the inner flow and SHOULD NOT change on
215218per packet basis inside any inner flow to avoid packet reordering.
216- The Flow Identifier SHOULD be negotiated by when creating EESP SA.
219+ The Flow Identifier SHOULD be negotiated when creating EESP SA.
217220
218221** Sub SAs
219222
220223Advantages of Sub SAs compared Child SAs with different keys
221224
222225- Possiblity for unidirectional SA. Compared to [[RFC9611]] when per
223226 resource SA is brought up it is bidirectional. However, both SA MAY
224- not be in use. When using CREATE_CHILD_SA Unidirectional SAis not
227+ not be in use. When using CREATE_CHILD_SA Unidirectional SAs not
225228 possible.
226229
227230- No extra setup time, a.k.a. zero round trip time to setup additional
228231 Sub SAs. Even though using IKE window size specified in [[RFC7296]]
229232 Section 2.3 would aliviate setup this would be quicker.
233+ # Note STK: What do you mean by aliviate?
230234- Creating Sub SA is more efficient while creating as well as rekeying
231235 and deleting, life cycle management of Sub SA is simple.
232236
233237There are two types of Sub SAs, ~Session ID as Replay Subspace ID~
234238specified in [[I-D.klassert-ipsecme-eesp]], and Sub SA Independent
235239keys.
240+ # I don't think there are two types, we always need to encode
241+ # the Replay Subspace ID on the Session ID.
236242
237243To negotiate Session ID as Replay Subspace ID use transform Session
238244ID, SUB_SA_SN.
@@ -242,7 +248,7 @@ ID, SUB_SA_SN.
242248[[RFC7296]] section 2.17 specifies Child SA key generation.
243249When the EESP SA is negotiated with a Sub SA Keys (SUB_SA_K), each
244250Sub SA need to derive its own unique key. This allows each Sub SA
245- it's of Sequence Number space or IV space when using AEAD counter
251+ its own Sequence Number space, or IV space when using AEAD counter
246252mode algorithm.
247253
248254This section specifies two methods for Sub SA key derivation.
@@ -267,10 +273,10 @@ of this CREATE_CHILD_SA exchange (represented as an
267273octet string in big endian order padded with zeros in the high-order
268274bits if necessary to make it the length of the modulus).
269275
270- For example for Sub SA ID n, use nth set of keys from the KEYMAT
276+ For example for Sub SA ID n, use nth set of keys from the KEYMAT.
271277The order is specified in Section 2.17 of [[RFC7296]].
272278
273- With existing prf+ function the keymat length rather limited.
279+ With existing prf+ function the keymat length is rather limited.
274280[[RFC7296]] limit the iteration to 256.
275281However, with modern prf+, more specifically XOF, functions,
276282such as KMAC specified in [[NIST800-185 ]], or HopMAC/TurboSHAKE
@@ -288,11 +294,16 @@ about 9 Mega Bytes.
288294An XOF differs from a traditional hash function in that it is
289295designed generate very long, and variable length output.
290296Unlike the IKEv2 prf+ an XOF can generate longer outputs directly
291- without iterative call.
297+ without iterative call. Additionally to that, the KEYMAT
298+ for the Sub SAs can be generated on the fly if available
299+ memory is limited. This is usually the case if such an algorithm is
300+ implemented in hardware.
292301
293302**** Hierarchical key derivation
294303
295304KEYMAT = prf+(SK_child, FLOWID)
305+ # Note STK: We encodes the Subspace ID on the Session ID,
306+ # so I think that's the needed input here.
296307
297308Where SK_child is the key derived for the Child SA as specified in
298309[[RFC7296]] section 2.17
@@ -324,7 +335,8 @@ INVALID_SESSION_ID error message, indicating a supported value.
324335
325336
326337* UDP Encapsulation for EESP
327-
338+ # Note STK: With the Verion in front, we likely need
339+ # a new port number.
328340UDP encapsulation is similar to ESP UDP encapsulation,
329341specified in [[RFC3948]], with one
330342difference on source port. The EESP
@@ -339,7 +351,8 @@ This option is typically used for within one Datacenter use case
339351such as [[PSP]]. To negotiate, the initiator sends USE_CRYPTOFFSET
340352together with USE_TRANSPORT_MODE and the responder respond with the
341353same. USE_EESP_CRYPTOFFSET is not supported in Tunnel mode or BEET mode.
342-
354+ # Note STK: This needs discussion
355+ #
343356~NOTE~ Add EESP draft section reference.
344357
345358* IANA Considerations
0 commit comments