RE: Issue 34: Separate path test, handling changes in NAT mappings

Tero Kivinen <[email protected]>
Newsgroups gmane.ietf.mobike
Message-ID <[email protected]>
[email protected] writes:
> > > Hmm... it seems the issue of a separate path test message
> > > vs. using normal informational exchange for path testing 
> > > depends a lot on how we handle changes in NAT mappings (if 
> > > e.g. NAT is rebooted or keepalive interval is too long).
> > 
> > Not really. The problem only occurs if we want to use the path
> > test to test previously broken path without affecting the
> > currect path and there is NAT-T between. If we use path test
> > only when the operational address pair has already broken down
> > then we do not need to modify dynamic address updates of the
> > NAT-T.
> 
> This was discussed already in May 2005... At least some people
> thought that it would be useful to allow path testing even when
> the current path is working (and without disrupting ongoing
> communication).

Yes, I know it was discussed earlier, but simply pointed it out here
to explain why we need to do things here like I explained. So now
people can really decide wheather they want that complication to the
protocol for that feature. 

> I'm not quite sure how important problem this is, but since the
> problem is already solved in IKEv2 NAT-T, I think we should have
> really good reasons for not using that solution. (Much better
> ones than "I didn't bother to implement that SHOULD in my
> product" or "Not invented here / We just like doing things
> differently").

I do not think it was solved in the IKEv2 NAT-T. If the IKEv2 NAT-T
would be ok, then there would be not need at all to MOBIKE, simply use
IKEv2 NAT-T all the time. We would loose the multihoming aspect and
would waste some bytes on packets, but it would work for the mobility
part.

I do not think the dynamic automatic updates are good for MOBIKE. I
want MOBIKE to be more secure than IKEv2 NAT-T, which means more
controlled way on changing paths on MOBIKE than in IKEv2 NAT-T. If we
also do the same thing on the NAT-T with MOBIKE, then we can get more
security for that part too.

If we only do updating of operational address pair on explicit notify,
then the attacker cannot take any packet and change the addresses of
packet to redirect the packets to some other address.

Instead attacker needs to first distrupt the normal processing of the
packets to get the initiator to do the DPD with address pair update
notify, before he can change the operational address pair, and in that
case it is also processed in the responder site as normal addres pair
updating, which means it is subject to the return routability checks
etc.

If we do use the dynamic automatic update of the IP address of the
IKEv2 NAT-T, then we do not do return routability checks, thus we do
not have as good protection against flooding attacks as we would have
in case of MOBIKE style address update. 

> If that's the case, wouldn't it be simpler to just use the 
> same mechanism (dynamic automatic updates) when NAT-T is
> used with and without MOBIKE?

Yes, it would be marginally simplier for the NAT-T case, but we add
more complexity for all other cases, by adding new protocol to be
implemented. And then we do not get the protection provided by the
MOBIKE. No return routability checks, no N(COOKIE2) etc.

I do not think we want to add new protocol to do path testing, as it
can be done without any extra effort inside the normal IKEv2 MOBIKE
processing. 

What are the benefits of the separate path tests? Can you list me
reasons why we need to have that?

My reasons why I do not want to have separate path test protocol is:

1) I do not want to add yet another extra protocol to same port as
   IKEv2 (we already have 4 there (IKEv1, IKEv2, UDP encapsulation,
   UDP encapsulation keepalives)). (It is not IKEv2 exchange, as it
   does not follow encryption, authentication, message-id, windowing
   etc specifications of the IKEv2).

2) Security implications of non-encrypted, non-authenticated protocol
   are not completely tought out (at least yet).

3) We have already existing code we can use inside the MOBIKE IKEv2
   implementations which can do the same thing. This code is needed to
   be there regardless wheater we have or have not separate path test
   protocol (i.e we need to be able to handle the situation when the
   path breaks down during the IKE negotiation, i.e. we must be able
   to retransmit the IKE packets to alternative addresses).

   This means that by reusing that code we can do the path test, with
   less added code implementations, which means fewer bugs. (The code
   that needs to be added is: disable the (probably not yet
   implemented) automatic dynamic updating of NAT-T address changes;
   add check to DPD that if we are behind NAT and MOBIKE is enabled
   add N(CHANGE_PATH) to the DPD message).
-- 
[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.