> On Aug 26, 2015, at 9:33 AM, Yaron Sheffer <yaronf.i...@gmail.com> wrote:
> 
>>> In the section 3.2 recipient tests there is discussion about checking
>>> that the public key 32-octet string will have last byte in such way
>>> that high-order bit of it is not set.
>>> 
>>> If this is property of the func(d, G) for curve25519, and curve448,
>>> how can we ever get public values having that bit set? So why it is
>>> only SHOULD to reject that public key? I mean if we receive such
>>> public key, that clearly means that other end is either attacker, or
>>> working incorrectly, and we MUST always reject it.
>>> 
>>> Or if there is no security issues accepting such public keys, then why
>>> not just say that no checks needs to be done. If we reject such public
>>> key, what behavior should happen in IKE level? Error message, drop
>>> silently? Same as RFC6989?
>> 
>> Tough one. The draft says something about implementation fingerprinting, but 
>> if some implementations drop this at the IKE level and some don’t that’s is 
>> a new avenue for fingerprinting. I don’t know which one is right. In any 
>> case, *if* you make the check *and* it fails *then* it’s appropriate to send 
>> an INVALID_SYNTAX (although I don’t understand why RFC 6989 recommends that 
>> over INVALID_KE_PAYLOAD) notification.
>> 
> 
> RFC 6989 recommends INVALID_SYNTAX because per RFC 7296, INVALID_KE_PAYLOAD 
> is used for cases where the initiator is expected to retry the exchange. 
> Incorrect DH values are at best a bug and at worst an attack, and should not 
> result in an automatic retry.

Ah. Makes sense. Section 2.5 has the string “invalid KE payload” several times, 
so it looked strange.

Yoav

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

Reply via email to