I only commented to those cases where I disagreed with you (mostly I
think we do not need to make the change). The other comments were ok
for me.

Yaron Sheffer writes:
> 1.3.2: for some reason we support negotiation of DH parameters when
> rekeying the IKE SA. So we should say that the INVALID_KE_PAYLOAD
> response is possible here, too.

I think generic text in section 1.3 should be enough for it:

   If a CREATE_CHILD_SA exchange includes a KEi payload, at least one of
   the SA offers MUST include the Diffie-Hellman group of the KEi.  The
   Diffie-Hellman group of the KEi MUST be an element of the group the
   initiator expects the responder to accept (additional Diffie-Hellman
   groups can be proposed).  If the responder selects a proposal using a
   different Diffie-Hellman group (other than NONE), the responder MUST
   reject the request and indicate its preferred Diffie-Hellman group in
   the INVALID_KE_PAYLOAD Notification payload.  There are two octets of
   data associated with this notification: the accepted D-H Group number
   in big endian order.  In the case of such a rejection, the
   CREATE_CHILD_SA exchange fails, and the initiator will probably retry
   the exchange with a Diffie-Hellman proposal and KEi in the group that
   the responder gave in the INVALID_KE_PAYLOAD.

and this covers all subsections of 1.3 including 1.3.2, so I think
that is enough, and no additional text is needed.

> 1.4: "The processing of an INFORMATIONAL exchange is determined by
> its component payloads." Adding "The payloads are processed in
> strict left-to-right order" would make it deterministic, and is
> probably what people do today. 

There should be no need to make the processing deterministic, as at
least I cannot think of case where the processing order would matter,
and I do not want someone to start complaining if someone process them
in "wrong" order.

I do not think the addition should be done.

> 2.1: either here or in 1.5 we should say something about allowing
> limited retransmission of the rare one-way IKE messages, for
> reliability.

I have always assumed that you do not retransmit those, you simply
rate limit sending of them, and if other end sends further packets
which trigger sending new one-way IKE messages, then you will send
next one-way IKE message.

I.e. the retransmission is done automatically by the other end either
retransmitting its message (IKE packets) or other end sending more ESP
packets.

If we add text, I would rather add text saying you MUST NOT retransmit
those one-way IKE messages as they are one-way messages. You may send
new (identical) one-way IKE messages in case the same situation is
triggered again (rate limited) because other end sent another packet.

This would be consistent that attacker sending only one IKE or ESP
packet can cause only one one-way IKE message to be sent. If it wants
to peer to send another, it again needs to send another packet (i.e.
no amplification provided for attacker).

> 2.3: do we allow to send SET_WINDOW_SIZE in the initial exchange?

Yes.

> We don't say we don't - although we do say that it would only be
> effective starting with IKE_AUTH. But I believe we should not accept
> it until both peers are fully authenticated.

Regardless of the SET_WINDOW_SIZE the window size is always one until
the initial exchanges completes and initial exchanges include
IKE_INIT_SA and IKE_AUTH, thus after those have completed the parties
have been authenticated, and as you cannot have any other exchanges
while you have initial exchanges still in progess it does not really
matter.

I do not think this requires new text (except perhaps to clarify that
SET_WINDOW_SIZE can be in the initial exchange (usually in IKE_AUTH)).

We do send it in the IKE_AUTH (the same one having SA and TS payloads
if multiple IKE_AUTH messages), in the IKE SA rekey, and in the next
exchange (regardless of type) if it is changed on the fly. 

> 2.4: this sentence is inconsistent: "The INITIAL_CONTACT
> notification, if sent, MUST be in the first IKE_AUTH request or
> response, not as a separate exchange afterwards; however,
> receiving parties MAY ignore it in other messages." If it MUST be
> only at a certain location, then it should be ignored (or even
> rejected) in others.

No. The first one says where you MUST send it, the second part says
what you do if someone does not follow that MUST, which tells you MAY
ignore it.

There is no inconsistancy there.

The text is written like this as this was changed between RFC4306 and
draft-ietf-ipsecme-ikev2. The RFC4306 does not specify the location,
but IKEv2bis does, and because of this old implementations might send
INITIAL_CONTACT notifications in wrong place, and the text says that
you are free to ignore it in those places.

Support for INITIAL_CONTACT is MAY anyways (both sending and
processing it on receive).

So no need to change anything there.

> 2.8: this sentence "It should do so if there has been no traffic
> since the last time the SA was rekeyed" is useless: it talks about
> local policy for deletion, which we are not specifying. The policy
> "delete the SA if there's been no traffic for the last 5 minutes"
> would be just as valid as this one.

Yes, but the local policy given in the IKEv2bis is very common and
useful one. I do not think the text is useless, and as it does not
mandate implementations doing anything, it just says what they might
want to do, I do not see any reason to remove it.

> 2.8: the sentence beginning "From a technical correctness and
> interoperability perspective" is not strictly correct: there is
> still a race condition between the first packets on the SA and the
> CCSA response. Immediately starting to send is practical but not
> "technically correct".

For the protocol point of view it is techinally correct. I.e. after
responder has sent the response to the CREATE_CHILD_SA, for its point
of view the SA is ready and it can be used immediately.

There is race condition built in to the protocol, which is why the
text is there, i.e. it says it is techinally correct, but may still
cause packets to be dropped.

I do not see any need to change this text.

> 2.8.2: we should add a sentence on what happens if the peer receives
> TEMPORARY_FAILURE and does not understand it (because it's new
> to this spec).

There is text for that alread which says (section 3.10.1):

   Types in the range 0 - 16383 are intended for reporting errors. An
   implementation receiving a Notify payload with one of these types
   that it does not recognize in a response MUST assume that the
   corresponding request has failed entirely.  

So I do not see need to change the the 2.8.2. If change is needed
perhaps adding pointer to the 3.10.1, but I think even that is not
needed). 
-- 
kivi...@iki.fi
_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to