Hi,

here is my review of draft-ietf-ipsecme-tcp-encaps-05.
The draft is in a good shape, but a bit of final polishing is required.

1. The terms "tunnel", "tunneled" are used throughout the document
    when referring to ESP SA. I think it is technically incorrect, since 
    ESP supports both tunnel and transport modes, so the document
    should use more appropriate terms like "IPsec SA", "ESP packets" etc.

2. Section 4.
    This value is
   only sent once, by the Initiator only, at the beginning of any stream
   of IKE and ESP messages.

   If other framing protocols are used within TCP to further encapsulate
   or encrypt the stream of IKE and ESP messages, the Stream Prefix must
   be at the start of the Initiator's IKE and ESP message stream within
   the added protocol layer [Appendix A].

Using "Initiator" is wrong here, since the TCP stream may be re-established
after the peers rekeyed IKE SA and changed their roles (so that original
Initiator becomes Responder). It either must be "original Initiator" 
(with all explanations who it is, as in Section 6) or, preferably, 
"originator of TCP stream" (or smth like that).

Actually, "Initiator" is used in a lot of places throughout the document 
and in most cases it means "original Initiator of the first IKE SA in a series
of possible successive rekeys of this SA". It is good to look through 
all these uses and either clarify this term in all places it is used, or add 
some para in the beginning of the draft, e.g. like it is done in RFC4555:

   In this document, the term "initiator" means the party who originally
   initiated the first IKE_SA (in a series of possibly several rekeyed
   IKE_SAs); "responder" is the other peer.  During the lifetime of the
   IKE_SA, both parties may initiate INFORMATIONAL or CREATE_CHILD_SA
   exchanges; in this case, the terms "exchange initiator" and "exchange
   responder" are used.  The term "original initiator" (which in [IKEv2]
   refers to the party who started the latest IKE_SA rekeying) is not
   used in this document.

I also noticed that both "Initiator" and "initiator" are used in the document
(as well as "Responder" and "responder"). It's better to use one form
(preferably with capital letter, like in RFC7296). RFC Editor will change 
them to one form in any case, so you can ease her work a bit.

I'd also suggest to introduce some term for the party, that creates 
TCP session (e.g. "TCP originator") and use it where appropriate,
so that IKE roles are clearly distinct from TCP roles. In this case
you can get rid of "Initiator" in most places replacing it with "TCP 
originator".

3. Section 6.
   When the IKE initiator uses TCP encapsulation for its negotiation,...

"its negotiation" is confusing here, since TCP encapsulation is not negotiated.
I suggest removing "for its negotiation" completely (or change to "for IKE SA 
negotiation").

4. Section 6.
   Once all
   SAs have been deleted,...

"all SAs" is confusing. Later in this section it is stated that multiple IKE SAs
MUST NOT share a single TCP connection. Is this a leftover from an early design?

5. Section 6.
   If the connection is being used to resume a previous IKE session...

For clarity:  s/connection/TCP connection

6. Section 6.
   A responder SHOULD at any given time send packets for an IKE SA and
   its Child SAs over only one TCP connection.

Why only Responder? What about Initiator? I think this requirement
is valid for both.

7. Section 6.
   In order to be considered valid for choosing a TCP
   connection, an IKE message successfully decrypt and be authenticated,
   not be a retransmission of a previously received message, and be
   within the expected window for IKE message IDs.  Similarly, an ESP
   message must pass authentication checks and be decrypted, not be a
   replay of a previous message.

"an IKE message successfully decrypt" - is it OK with the grammar?
Shouldn't it be: "an IKE message must be successfully decrypted"?

What about ES, I think that it is a good thing to add 
a requirement, that ESP window size MUST be set to 1 if TCP
encapsulation is in use. Larger windows are useless with TCP,
since there is no packet reordering. On the other hand, setting 
window size to 1 will effectively block an attack vector that was described
by Tero, when an attacker sends old packet with fake TCP header.
If window size is 1, then this packet will be dropped immediately
without any changes in the ESP logic.

8. Section 6.
    Multiple IKE SAs MUST NOT share a single TCP connection.

Please add clarification: "unless one of them is a rekey of another,
in which case two SAs sharing a single TCP connection coexist for 
a short period of time" (or smth similar).

Regards,
Valery.

_______________________________________________
IPsec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to