Glen asked me to explain my tunnel related comments more.

It would be desirable to reduce the number of methods we need to add
channel binding to. For example if eap-ttls supports channel binding [1]
and I'm running some other method inside it, then I may not care whether
that method supports channel binding.  Similarly, if I wish I had
channel binding in some method that does not have channel binding, I can
always tunnel it.

[1] I think it does, but I'm not sure it is in alignment with
draft-ietf-emu-chbind at the moment.


This seems like such a good idea we wrote it into the charter.

Unfortunately, it's never that simple.  Channel binding data is a
statement from the client to the EAP server about the client's
understanding of the entity the client is authenticating to/the
environment that the client is gaining access to.  the EAP server's job
is to verify that the channel binding is consistent and if not, reject
the access request.

This model depends on the server being able to confirm that the channel
binding statements are actually from the client. Clearly, if an attacker
could change channel binding, then the system will not work.

However, typically tunnel methods authenticate the server to the client
but depend on the inner method to authenticate the client to the server.

Let me give a concrete attack.  Consider an EAP server that takes the
channel binding data from the outer method if present otherwise the
inner method.

A client intends to use GPSK and includes channel binding data there.
An attacker acts as a man-in-the-middle, receives the GPSK lower layer
messages and replaces them with lower layer messages tunneling GPSK in
TTLS. So, the TTLS tunnel runs from the attacker to the EAP server,
while the inner GPSK runs from the client to the EAP server.  If this is
starting to look a lot like the standard set of EAP tunnel attacks,
you're absolutely right.  The attacker inserts channel binding data in
the outer tunnel and thus replaces the channel binding.

This is not a practical attack.  I'm not sure there are particularly
practical attacks in this space.  However, I think we have an obligation
to specify constraints such that the system is secure.  Here are
examples of constraints that would be sufficient.

* Cryptographic binding is used to prove that the outer tunnel party
  knows the inner tunnel key.  Note that proving that the inner tunnel
  party knows the outer key would not generally be sufficient mostly
  because a lot of the inner methods you might want won't ever support
  this.

* Never except the same equivalence class of EAP methods both inside an
  outside a tunnel.  That is, in a given configuration require that if
  GPSK is to be used it either always appears in a given tunnel for a
  specific user or never does.  I say equivalence class because it's
  possible that an attacker might be able to transform the messages of
  one method into another.  For example I'm not sure whether an attacker
  can turn one of the TLS-related methods into another.

* Assuming that adding channel binding information can never make a
  request that would fail succeed, take channel binding attributes from
  the inner method first.

--Sam
_______________________________________________
Emu mailing list
Emu@ietf.org
https://www.ietf.org/mailman/listinfo/emu

Reply via email to