Or do my other favorite thing with a "support_cafr" notification in the Initial exchange, so that support indicates that you understand protocol=1 and SPI size=16.
If we ever do an IKEv3, we need a "Features" payload, where optional capabilities be listed in compact form. That and replacing "Next Payload" with "This Payload" Yoav On Aug 25, 2013, at 12:07 PM, Yaron Sheffer <yaronf.i...@gmail.com> wrote: > Thanks for pointing me to the registry! > > I'm not worried about creative interpretations. More about existing > implementations doing the wrong thing. So yes, maybe we should register a new > value. > > Thanks, > Yaron > > On 2013-08-25 11:47, Yoav Nir wrote: >> I read section 3.10 in RFC 4306, and it says this: >> >> o Protocol ID (1 octet) - If this notification concerns an existing >> SA, this field indicates the type of that SA. For IKE_SA >> notifications, this field MUST be one (1). For notifications >> concerning IPsec SAs this field MUST contain either (2) to >> indicate AH or (3) to indicate ESP. For notifications that do not >> relate to an existing SA, this field MUST be sent as zero and MUST >> be ignored on receipt. All other values for this field are >> reserved to IANA for future assignment. >> >> o SPI Size (1 octet) - Length in octets of the SPI as defined by the >> IPsec protocol ID or zero if no SPI is applicable. For a >> notification concerning the IKE SA, the SPI Size MUST be zero and >> the field must be empty. >> >> Sure there is a registry: >> http://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml#ikev2-parameters-18 >> . There are even values #4 and #5. But I see that bit about SPI size having >> to be zero, because it is assumed that notification about IKE SA only relate >> to *this* IKE SA. >> >> So we can creatively interpret "the IKE SA" to be different from "an IKE >> SA", or we can ask IANA to add a new value with meaning "other IKE SA". >> Agree it's a corner case. >> >> -----Original Message----- >> From: Yaron Sheffer [mailto:yaronf.i...@gmail.com] >> Sent: Sunday, August 25, 2013 11:12 AM >> To: Yoav Nir >> Cc: IPsecme WG >> Subject: Re: [IPsec] CAFR -01 comments >> >> Hi Yoav, >> >> Regarding the notification syntax, it is actually a bit worse than that. >> This is a corner case in the RFC, but if you read Sec. 3.10 literally, there >> are exactly 2 allowed values for the Protocol ID field (or 3 values, if you >> read RFC 4306). There is no extensibility defined, and no IANA registry >> either. So a responder would be correct if it replied with an INVALID_SYNTAX >> rather than ignoring your notification, if it doesn't recognize it. >> >> And the value you are using (1) comes from RFC 2407 and has never existed in >> IKEv2. Ugh. >> >> Thanks, >> Yaron >> >> On 2013-08-25 10:53, Yoav Nir wrote: >>> >>> On Aug 25, 2013, at 9:45 AM, Yaron Sheffer <yaronf.i...@gmail.com> wrote: >>> >>>> Hi Yoav, >>>> >>>> I started by reading -01, then went back to -00. And I think the two can >>>> be merged to create a better solution. >>>> >>>> Including the notification as soon as the peers know they want a handover >>>> is cleaner. So IKE_AUTH (of the new SA) is better than DELETE, and in fact >>>> IKE_SA_INIT would be even more useful because then you can define that all >>>> such IKE SAs are implicitly childless, and avoid the need for the RFC 6023 >>>> notification. >>>> >>>> CAFR -01 says a peer is allowed to hand over the Child SAs if it >>>> successfully authenticates to the other peer and has the same >>>> authenticated identity. Seems to me this is symmetric, i.e. it doesn't >>>> matter if the exchange is run over the "old" or the "new" IKE SA. And so >>>> this could apply just as well to -00, and the POP stuff is not needed. >>>> >>>> I'm not sure about the race discussion in -00, because it only applies in >>>> failure cases. Can't an attacker "swallow" a few DELETE messages or their >>>> responses and cause a similar database mismatch? >>> >>> I hope they can't. Informationals with DELETEs are just like any other >>> IKEv2 exchange. If at active attacker swallows DELETEs or their responses, >>> eventually at least one side loses the IKE SA. >>> >>> But with regular initial IKE, there is an asymmetry. The Responder verifies >>> the IKE_AUTH request, generates the Response, sends it, and believes that >>> everything is just fine. Then the Initiator gets the IKE_AUTH response, and >>> decides that something is wrong. Maybe the certificate has just expired, or >>> the OCSP server is unreachable, or the new certificate does not have the >>> proper extended key usage. So we have an asymmetry, where the Responder >>> believes that IKE_AUTH succeeded, while the Initiator believes that it >>> failed. The Initiator quickly rectifies this with a DELETE, but that takes >>> some time (milliseconds, but still - time). >>> >>> So if we tie some action on the part of both parties to the IKE_AUTH >>> success, we get cases where the Responder performs the action, while the >>> Initiator does not. In this case, the Responder transfers the child SAs to >>> the new IKE SA, and the Initiator doesn't. The subsequent DELETE for the >>> new IKE SA sent by the Initiator deletes all those Child SAs on the >>> Responder, while they remain alive and active on the Initiator. You could >>> use some heuristic, like if the DELETE comes within x seconds of the >>> IKE_AUTH, you transfer the child SAs back. But that is some weird code that >>> we should not require people to make. >>> >>> Making the transfer follow the IKE_AUTH makes it all cleaner. Whether it's >>> done with the old or new IKE SA depends on whether you are worried about >>> childless IKE SAs kidnapping the children of other IKE SAs (sorry, couldn't >>> resist). We are not likely to require sameness of IP address, and I am >>> worried about the reliability of code comparing to IKE SAs for sameness of >>> authenticated identity. All L2TP over IPsec clients tend to have the same >>> identity (with user authentication being done at the PPP layer). Do we >>> allow them to claim each other's child SAs? I think not, and then if we >>> take the "pull" approach - using the new IKE SA - we need some PoP. With a >>> "push" approach - using the old IKE SA - we don't. >>> >>>> Also note that the notification syntax is in conflict with both RFC 5996 >>>> and RFC 4306. RFC 5996 removes the option of Protocol ID=1, while RFC 4306 >>>> assumes that we are talking about the *current* IKE SA, and so mandates >>>> that the SPI field should be empty in this case. Practically speaking, we >>>> will have to fix 5996 before this can document move forward. Luckily we're >>>> doing just that with Tero's bis draft. >>> >>> Good timing! >>> >>> Yoav >>> >> >> Email secured by Check Point >> > > Email secured by Check Point _______________________________________________ IPsec mailing list IPsec@ietf.org https://www.ietf.org/mailman/listinfo/ipsec