Sam Hartman
2005-12-04 15:47:59 UTC
Nico has partially described a feature called connection latching that
allows a native mode IPsec implementation to guarantee that the same
peer ID is used for every packet sent over a particular connection.
It seems fairly clear that BTNS benefits significantly from this
technology.
The applicability statement makes the claim that BTNS protects against
on-path attacks after the connection is established. In order to do
that we need to have some form of something like connection latching
even in non-native implementations.
If we do nothing then the SA from one BTNS peer could be replaced by a
SA from another BTNS peer and the traffic on the connection would be
funneled over that SA.
It seems like we're going to need something like mini-leap-of-faith in
which we require that the identity of a peer remain constant for
traffic protected by a btns SA.
The obvious implementation to me seems to be something like:
1) Establish some sort of timer for packets going over the SA. If the
connection appears to still be alive, then require that we maintain
the same peer identity.
2) If for some reason we have to drop such an SA, install a temporary
discard rule for some period of time to make sure that we kill off
the connection.
Note that I'm talking in very general terms about what behavior we
want. I'm not talking about specific changes to the processing model,
to the PAD or SPD. I realize that in order to be useful we eventually
need to get to that level of detial. I also realize that when we
close the loop and get to that level of detail we may find we change
our requirements in order to be more consistent with the IPsec
architecture. At this point though I'd like to hear what people think
about the required behavior in non-native implementations.
--Sam
allows a native mode IPsec implementation to guarantee that the same
peer ID is used for every packet sent over a particular connection.
It seems fairly clear that BTNS benefits significantly from this
technology.
The applicability statement makes the claim that BTNS protects against
on-path attacks after the connection is established. In order to do
that we need to have some form of something like connection latching
even in non-native implementations.
If we do nothing then the SA from one BTNS peer could be replaced by a
SA from another BTNS peer and the traffic on the connection would be
funneled over that SA.
It seems like we're going to need something like mini-leap-of-faith in
which we require that the identity of a peer remain constant for
traffic protected by a btns SA.
The obvious implementation to me seems to be something like:
1) Establish some sort of timer for packets going over the SA. If the
connection appears to still be alive, then require that we maintain
the same peer identity.
2) If for some reason we have to drop such an SA, install a temporary
discard rule for some period of time to make sure that we kill off
the connection.
Note that I'm talking in very general terms about what behavior we
want. I'm not talking about specific changes to the processing model,
to the PAD or SPD. I realize that in order to be useful we eventually
need to get to that level of detial. I also realize that when we
close the loop and get to that level of detail we may find we change
our requirements in order to be more consistent with the IPsec
architecture. At this point though I'd like to hear what people think
about the required behavior in non-native implementations.
--Sam