Hi Yoav,

okay. I guess some of the reasoning you gave could go into the draft…

Thanks!
Mirja


> Am 23.09.2016 um 22:06 schrieb Yoav Nir <ynir.i...@gmail.com>:
> 
> Hi.
> 
> See responses below
> 
>> On 23 Sep 2016, at 10:11 PM, Mirja Kuehlewind <i...@kuehlewind.net> wrote:
> 
>> ----------------------------------------------------------------------
>> COMMENT:
>> ----------------------------------------------------------------------
>> 
>> Some questions:
>> 
>> 1) sec 7.1.2: If there is a puzzle but no cookie, maybe the initiator
>> should ignore it and try to send reply without the puzzle solution, as
>> there might be still a change to get served…? If it then received another
>> packet with puzzle it can still solve it and reply.
> 
> A response that contains neither COOKIE nor INVALID_KE_PAYLOAD nor the 
> regular payloads like SA is invalid according to RFC 7296. That is one reason 
> why we chose to keep the COOKIE notification and add a PUZZLE notification 
> rather than put both pieces of data in the new notification. A response with 
> only PUZZLE and no COOKIE is invalid and should be treated as such. So after 
> some (not specified anywhere) time, the Initiator should start a new 
> IKE_SA_INIT exchange, hoping that this time the Responder returns a valid 
> response.
> 
>> 
>> 2) sec 7.1.4: Does „the Responder MUST verify the puzzle solution“? Maybe
>> there are cases where the burden for the initiator is high enough by
>> requesting the solution that there is already an effect even if the
>> responder decides to not verify it…? 
> 
> There was a suggestion discussed that the Responder MAY choose not to check 
> the solution or randomly check just one of the four solutions. The WG didn’t 
> like that as it makes the protocol non-deterministic and makes things harder 
> to test. So consensus was to make the verification mandatory. Of course, this 
> doesn’t affect interoperability, so we can’t force a responder to check 
> everything.
> 
>> 3) also sec 7.1.4: Does the following sentence really makes sense? How
>> doe the responser know? Maybe just remove it?
>>      „The more time the Initiator spent solving the puzzles, the higher
>> priority it should receive.“
> 
> The Responder cannot know. It can only assume based on the expected number of 
> steps in finding a solution with a certain number of trailing zero bits.
> 
>> 4) sec 7.2.1.1 says „the Responder would be able to estimate the
>> computational power of the Initiator and select the difficulty level
>> accordingly.“ How would it estimate the computational power? Based on the
>> reply time? Wouldn’t it also need to know the RTT and current congestion
>> level then?
> 
> The only estimate that the responder has is based on what the initiator 
> solved during the IKE_SA_INIT exchange. If the Initiator solved a level-15 
> puzzle (15 trailing zeros in each of the four solutions) then it stands to 
> reason that it *can* solve a level-15 puzzle. Maybe the word “estimate” is 
> misleading here.
> 
>> 5) sec 7.2.2 says „If the IKE_SA_INIT response message contains the
>> PUZZLE notification and the Initiator supports puzzles, it MUST solve the
>> puzzle.“
>>      Should this be „IKE_SA_AUTH“ here instead of „IKE_SA_INIT“? 
>>      Otherwise it contradicts sec 7.1.2 („The Initiator MAY ignore the PUZZLE
>> notification…“)
> 
> Sure. Seems to be a typo.
> 
>> Two general comments/questions:
>> 
>> 1) What’s about the additional cpu load of the responder to calculate the
>> puzzle. Can that be a problem? Are there any strategies to keep that low
>> (recalculation/caching/reuse)? How long should things be cached/used?
>> Maybe add a few sentences in the Operational Considerations section!
> 
> Verifying a puzzle solution involves 4 invocation of a MAC function on a few 
> tens of bytes. This is very low considering that (1) IKE initiation involves 
> at least one and typically two PK operations, and (2) IKE is for generating 
> key material which is then used to MAC millions or billions of packets.
> 
>> 2) Would it make sense to also give a field to change the number of
>> requested keys to scale load? Or why was it decided to use a fixed number
>> of 4 here?
> 
> You scale the load by changing the difficulty (number of requested trailing 
> zero bits).  The reason we are asking for 4 solutions rather than 1 is to 
> make the amount of work more predictable. We could make it even more 
> predictable with 16 solutions, but that makes the packet bigger and runs the 
> risk of requiring packet fragmentation. So we chose 4 as a reasonable 
> compromise.  See this mail about it:
> https://mailarchive.ietf.org/arch/msg/ipsec/v7PFBEWeaT6ZQCjzCmIaxbRnZ8A
> 
> Yoav
> 

_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to