Skip to content

Commit e355ed8

Browse files
committed
Some adjustments and fixes.
1 parent 26ba21d commit e355ed8

File tree

1 file changed

+35
-22
lines changed

1 file changed

+35
-22
lines changed

eesp-ikev2.org

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
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
4646
improvements address evolving requirements in modern IPsec
4747
deployments. EESP offers increased flexibility for hardware
4848
offloads 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
5050
decryption. EESP also enables the establishment of Sub Child SAs with
5151
independent sequence number spaces. Additionally, it supports the use
5252
of 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
105105
EESP IKEv2 is an extension to IKEv2 [[RFC7296]] to negotiate
106106
on 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
108108
CREATE_CHILD_SA new SA, exchange.
109109

110110
IKEv2 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
120120
To 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
125125
EESP 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.
175175
To enable Anti-Replay service the initiator SHOULD
176176
propose SNP Transforms SNP = (1, Name 64 bit ESN) in Substructure
177177
of the Proposal Substructure inside the Security Association (SA)
178178
payload 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

181183
When the Transform Type [[IKEv2-SNP]] is not present in initiator's Child SA
182184
proposal during negotiation of an EESP Child SA, the Sequence Number
183185
field 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
186189
EESP packet, an EESP receiver should not act on address or port
187190
changes. 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
189192
could replay packets with a different source address. Otherwise,
190193
an attacker could disrupt the connection by capturing and replaying
191194
a 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
205208
in 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

213216
EESP Flow Identifier (EESPFID) Options are used to carry
214217
characteristic information of the inner flow and SHOULD NOT change on
215218
per 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

220223
Advantages 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

233237
There are two types of Sub SAs, ~Session ID as Replay Subspace ID~
234238
specified in [[I-D.klassert-ipsecme-eesp]], and Sub SA Independent
235239
keys.
240+
# I don't think there are two types, we always need to encode
241+
# the Replay Subspace ID on the Session ID.
236242

237243
To negotiate Session ID as Replay Subspace ID use transform Session
238244
ID, SUB_SA_SN.
@@ -242,7 +248,7 @@ ID, SUB_SA_SN.
242248
[[RFC7296]] section 2.17 specifies Child SA key generation.
243249
When the EESP SA is negotiated with a Sub SA Keys (SUB_SA_K), each
244250
Sub 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
246252
mode algorithm.
247253

248254
This section specifies two methods for Sub SA key derivation.
@@ -267,10 +273,10 @@ of this CREATE_CHILD_SA exchange (represented as an
267273
octet string in big endian order padded with zeros in the high-order
268274
bits 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.
271277
The 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.
275281
However, with modern prf+, more specifically XOF, functions,
276282
such as KMAC specified in [[NIST800-185 ]], or HopMAC/TurboSHAKE
@@ -288,11 +294,16 @@ about 9 Mega Bytes.
288294
An XOF differs from a traditional hash function in that it is
289295
designed generate very long, and variable length output.
290296
Unlike 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

295304
KEYMAT = 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

297308
Where 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.
328340
UDP encapsulation is similar to ESP UDP encapsulation,
329341
specified in [[RFC3948]], with one
330342
difference on source port. The EESP
@@ -339,7 +351,8 @@ This option is typically used for within one Datacenter use case
339351
such as [[PSP]]. To negotiate, the initiator sends USE_CRYPTOFFSET
340352
together with USE_TRANSPORT_MODE and the responder respond with the
341353
same. 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

Comments
 (0)