I haven't had time to read the draft-ietf-ipsecme-ipsecha-protocol-02
completely yet, but while looking at the slides in the WG meeting, I
noticed one serious problem.

The IKEV2_MESSAGE_ID_SYNC and IPSEC_REPLAY_COUNTER_SYNC messages do
not follow Notification payload syntax.

For the IKEV2_MESSAGE_ID_SYNC there is only the missing critical bit:

                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Next Payload  |    RESERVED   |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...

instead of:

                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Next Payload  |C|  RESERVED   |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

For the IPSEC_REPLAY_COUNTER_SYNC it is bit more serious as it puts
something else on the same plaCe where the C bit normally is:

                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Next Payload  |E| RESERVED    |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I.e it adds "ESN bit" on the generic IKEv2 header in the location
where normally there is the critical bit.

There is not really any need for the ESN bit as the length of the
delta value can be seen from the payload length field.

----------------------------------------------------------------------

Also the section 7 says:

   The Message ID value used in the Informational exchange that contains
   the IKEV2_MESSAGE_ID_SYNC notification MUST be zero so that it is not
   validated upon receipt as required by normal IKEv2 windowing.  The
   Message ID zero MUST be accepted only in an Informational exchange
   that contains a notification of type IKEV2_MESSAGE_ID_SYNC.  If any
   Informational exchange has a Message ID zero, but not this
   notification type, such messages MUST be discarded upon decryption
   and the INVALID_SYNTAX notification SHOULD be sent.  Other payloads
   MUST NOT be sent in this Informational exchange.  Whenever an
   IKEV2_MESSAGE_ID_SYNC or IPSEC_REPLAY_COUNTER_SYNC notification
   payload is received with an invalid failover count or invalid nonce
   data, the event SHOULD be logged.

Message ID zero is completely valid and legal value for message ID and
this text suddenly makes it impossible to use it anymore. The first
message responder ever always has Message ID zero, which means that if
you follow this then first message sent by responder will be rejected.
Message ID is also zero after IKE SA rekey. Also INVALID_SYNTAX
notification do have some special meaning in RFC5996:

   Only authentication failures (AUTHENTICATION_FAILED and EAP failure)
   and malformed messages (INVALID_SYNTAX) lead to a deletion of the IKE
   SA without requiring an explicit INFORMATIONAL exchange carrying a
   Delete payload.
....
   If a peer parsing a request notices that it is badly formatted (after
   it has passed the message authentication code checks and window
   checks) and it returns an INVALID_SYNTAX notification, then this
   error notification is considered fatal in both peers, meaning that
   the IKE SA is deleted without needing an explicit Delete payload.
-- 
kivi...@iki.fi
_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to