Subject: [SECMECH] Continuing my rant about EAP vs GSS-API...

From: [email-masked]
Date: Tue, 2 Aug 2005 13:07:09 +0300

(Continuing and clarifying my comment in the BoF today...)

GSS-API establishes a "security context" between a client and a
server.  Depending on the GSS-API mechanism, establishing the security
context may use the help of a "trusted third party", either off-line
(like CA) or on-line (Kerberos KDC).

EAP includes only the communication between the client and "trusted
third party" (EAP server), but it does not establish a security
context between the client and the service. But that's exactly what
people interested in using a security framework (like ISMS or 802.11)
would like to do! So just EAP alone is not really a framework you can
compare with GSS-API.

To make this comparison more accurate, we _have_ to consider the real
"EAP+AAA" framework, instead of claiming that they're totally
separate.

Of course, it's still possible to e.g. analyze an EAP mechanism
without considering AAA. The result of this analysis could be e.g.
that the mechanism has certain security properties.  But from the
point of view of applications, what really matters is the security
properties of the whole framework (or this EAP mechanism when used
within this framework).  These don't trivially follow from properties 
of the building blocks (just like AES being secure doesn't make all
EAP methods that use AES secure).

In particular, an application like ISMS is really concerned with 
"ok, I have this security context that I'll use for protecting my
application-specific communication. What properties does this context
have? Who is the other party I'm sharing this context (and keys
contained in it) with?"

An analysis of an EAP mechanism, like EAP-TLS, can answer the question
"who is the other party I'm sharing the EAP-SA with" (just look at the
TLS server certificate).  But EAP alone cannot answer the
application's real question "who is the other party I'm sharing this
context with".

Or in other words, GSS-API mechanisms (that do mutual authentication)
do mutual authentication (and set up a security context/association) 
between the client and the service (application endpoint). EAP 
mechanisms do mutual authentication between the client and the 
EAP server; and that doesn't automatically mean mutual authentication
between the client and the service/application endpoint.

This difference is IMHO not an insignificant minor detail, and 
needs to be taken into account when talking about "bridging"
EAP and GSS-API mechanisms, or designing mechanisms that can 
be used in both frameworks, etc.

I'm not saying this deficiency in the EAP+AAA framework is serious
problem in all cases. In some environments the authentication
requirements in different directions are quite different.

For instance, in 802.11 network access the client's/user's identity 
is usually much more important; for the access point/network side, it 
may be enough to verify that "this is someone the TTP (EAP server)
trusts". This is essentially what EAP+AAA framework today does. 
Something like ISMS might have a similar situation, authenticating 
the identity of the SNMP manager might be much more important than 
the SNMP manager...

Best regards,
Pasi

_______________________________________________
SECMECH mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/secmech

---

From: Nicolas Williams <[email-masked]>
Date: Tue, 9 Aug 2005 01:53:15 -0500

> (Continuing and clarifying my comment in the BoF today...)

Thanks!

> (like CA) or on-line (Kerberos KDC).

The following is an aside.  The meat of my reply is further below,
though I can summarize it thusly: we're in violent agreement.

    The GSS-API is, or, rather, has been strictly a two-party framework.

    But the extensions to the GSS-API being pursued at the KITTEN WG
    seem to allow for modelling the typical three-party EAP situation.

    Joe and I have discussed this many a time, here is an outline:

     - The EAP peer is as to the GSS initiator
     - Depending on the mechanism the GSS acceptor may be as to the EAP
       server or as to a NAS, with the GSS mechanism being required to
       bridge the gap when the GSS acceptor is as to a NAS
     - Either way there is a third party that can be named and bound
       into the exchange using GSS naming extensions
     - EAP key derivation is as to the KITTEN GSS_Pseudo_random()
       extension
     - ...

> would like to do! So just EAP alone is not really a framework you can

I believe that some EAP methods can provide enough facilities to build
GSS mechanisms out of them, much like Kerberos V.  See below.

> "EAP+AAA" framework, instead of claiming that they're totally
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> separate.
  ^^^^^^^^

Which neither Joe nor I claim.

> EAP methods that use AES secure).

Just to be clear, neither Joe nor I nor anyone else (to my knowledge)
have put forward any concrete proposal for GUAM that haphazardly mixes
off-the-shelf components and claims to have properties that are the sum
of the such components.

> have? Who is the other party I'm sharing this context (and keys

Right.  This makes the GSS-API, SASL, TLS, all good matches for ISMS.
The GSS-API and DTLS are better matches if datagram-type transports are
desired for ISMS.  Unfortunately the GSS-API and [D]TLS have disjoint
sets of mechanisms available, thus ISMS' quandary, thus GUAM, thus
SECMECH.

While we're at fixing the multi-framework mechanism set disjointness
problem we notice that EAP mechanisms (decent ones anyways) have
fundamental properties that are also required of GSS-API and SASL
mechanisms (see below).  Thus the GUAM proposal encompasses EAP as well
as the GSS-API.

> application's real question "who is the other party I'm sharing this

Neither can the GSS-API!  This is the mechanisms' duty.  The GSS-API
does come with, well, an API, and this API does allow for such questions
to be asked and answered, but note that the answer is allowed to be
"dunno," as in GSS_C_NT_ANONYMOUS.  Presumably EAP methods can provide
mutual authentication, user<->server, user->server + server->NAS +
EAP channel binding, ...

> between the client and the service/application endpoint.

You've missed the point...  Just as EAP consumers can use EAP to
establish keys shared between EAP peers and NASes so can GSS mechanisms
made from EAP ones establish keys and authentication between GSS
initiators and acceptors, even when the GSS acceptor is as to a NAS.

You seem to be arguing that the GSS-API and EAP are fundamentally
incompatible in ways similar to the GSS-API vis-a-vis Kerberos V.
And indeed they are.

Yet we have a Kerberos V mechanism for the GSS-API; it doesn't provide
certain features that some Kerberos V applications might need, but it
does provide a two-party mechanism.

> be used in both frameworks, etc.

So we're in violent agreement :)

> trusts". This is essentially what EAP+AAA framework today does. 

But surely the NAS wants to authenticate the EAP server -- otherwise one
may impersonate EAP servers to NASes.

Between authentication of users to EAP+AAA servers (possibly mutual),
authentication of EAP servers to NASes, EAP channel bindings and EAP
keying there's enough to build GSS mechanisms (names, mutual
authentication and shared keys with which to key per-message tokens and
the new GSS PRF for established security contexts).

Nico
--