Subject: Re: [abfab] Gen-ART review of draft-ietf-abfab-eapapplicability-03

From: Sam Hartman <[email-masked]>
Date: Tue, 18 Jun 2013 10:18:50 -0400

>>>>> "Black," == Black, David <[email-masked]> writes:

    Black,> The next to last paragraph on p.3 begins with this sentence:

    Black,>    For these reasons, channel binding MUST be implemented by
    Black,> peers, EAP servers and AAA servers in environments where EAP
    Black,> authentication is used to access application layer services.

    Black,> It appear that this "MUST" requirement applies to all uses
    Black,> of EAP, including network access authentication, not just
    Black,> application layer access authentication.  If so, that's not
    Black,> immediately obvious from the text, and an additional
    Black,> sentence should be added to make this clearer.  If not, the
    Black,> above sentence needs to exclude network access
    Black,> authentication from that requirement.

I know you're correct that AAA servers and EAP servers need to implement
channel binding for network access in such environments.
I'm not sure whether peers only doing network access SHOULD implement
channel binding or MUST implement channel binding.

Practically speaking, it will be a while before peers implement channel
binding for network access.
The sorts of attacks that result without channel binding are attacks
where a peer thinks it is doing network access authentication but what
it's really doing is helping an attacker access an application.
If all the application access peers support channel binding, then you
could potentially require the eap-lower-layer attribute or similar for
application authentication and work securely in environments where peers
for network access have not been updated yet.
It's also kind of tempting to stick our head in the sand and just add
the clarification that "yes, we mean network access too."

--Sam

---

From: "Black, David" <[email-masked]>
Date: Mon, 17 Jun 2013 22:39:28 -0400

I am the assigned Gen-ART reviewer for this draft. For background on
Gen-ART, please see the FAQ at

<http://wiki.tools.ietf.org/area/gen/trac/wiki/GenArtfaq>.

Please resolve these comments along with any other Last Call comments
you may receive.

Document: draft-ietf-abfab-eapapplicability-03
Reviewer: David L. Black
Review Date: June 17, 2003
IETF LC End Date: June 17, 2003

Summary:
This draft is on the right track but has open issues, described in the review.

This draft updates the applicability statement for EAP to include usage
for application layer access via EAP over GSSAPI.  Additional security
requirements are introduced for environments in which EAP is used for
that purpose.

I found one open issue, which is minor, and may be editorial

Major issues: None

Minor issues: One

The next to last paragraph on p.3 begins with this sentence:

   For these reasons, channel binding MUST be implemented by peers, EAP
   servers and AAA servers in environments where EAP authentication is
   used to access application layer services.

It appear that this "MUST" requirement applies to all uses of EAP,
including network access authentication, not just application layer access
authentication.  If so, that's not immediately obvious from the text, and
an additional sentence should be added to make this clearer.  If not,
the above sentence needs to exclude network access authentication from
that requirement.

Nits/editorial comments:

The same paragraph (p.3) continues with:

   In addition, channel
   binding MUST default to being required by peers for non-network
   authentication.  If the EAP server is aware that authentication is
   for something other than a network service, it too MUST default to
   requiring channel binding.

What is meant by "non-network authentication" and "other than a network
service"?  If those mean "other than for network access authentication"
as the term "network access authentication" is used in section 1 and
RFC 3748, that meaning should be clarified.

idnits 2.12.17 generated this comment:

  -- The document seems to lack a disclaimer for pre-RFC5378 work, but may
     have content which was first submitted before 10 November 2008.  If you
     have contacted all the original authors and they are all willing to grant
     the BCP78 rights to the IETF Trust, then this is fine, and you can ignore
     this comment.  If not, you may need to add the pre-RFC5378 disclaimer. 
     (See the Legal Provisions document at
     http://trustee.ietf.org/license-info for more information.)

idnits appears to be confused ;-).  The -00 version of this draft is from 2012,
and this draft does not contain sufficient material from RFC 3748 that would
raise that concern, so this comment should be ok to ignore.

Thanks,
--David
----------------------------------------------------
David L. Black, Distinguished Engineer
EMC Corporation, 176 South St., Hopkinton, MA  01748
+1 (508) 293-7953             FAX: +1 (508) 293-7786
[email-masked]        Mobile: +1 (978) 394-7754
----------------------------------------------------

---

From: "Black, David" <[email-masked]>
Date: Tue, 18 Jun 2013 10:43:03 -0400

Sam,

I was concerned that something along these lines was lurking in here :-(.

> binding for network access.

Assuming that network access does not use channel binding, how does one
avoid the proxy attack on network access authentication via application
access authentication when the latter is introduced?

For environments where EAP is used for network access authentication,
the suggestion of a "MUST use" requirement for channel binding with 

> for network access have not been updated yet.

Is that plausible and reasonable in practice?

This would be in addition to the "MUST implement" requirements for AAA

Thanks,
--David

> -----Original Message-----
> From: Sam Hartman [mailto:[email-masked]]
> Sent: Tuesday, June 18, 2013 10:19 AM
> To: Black, David
> Cc: [email-masked]; [email-masked]; General Area Review Team;
> [email-masked]; [email-masked]
> Subject: Re: [abfab] Gen-ART review of draft-ietf-abfab-eapapplicability-03
>

---

From: "Joseph Salowey (jsalowey)" <[email-masked]>
Date: Tue, 18 Jun 2013 17:10:19 +0000

> for network access have not been updated yet.

[Joe]  I'm trying to get a handle on the attack mechanism here.   In this attack a valid network service is trying to spoof an application service?  Since it knows the MSK it can do this if the channel-binding of the lower-layer into the EAP conversation is not enforced.  If the AAA server always enforces channel bindings for applications then it will catch the spoofing attempt.   The reverse case may also be an issue where an application service is trying to spoof a network service.   In this case, if the AAA server validates that the application channel binding is not present then it can prevent the spoofing.  However the server MUST understand channel bindings even if the peers do not.   I think the document did try to capture this in the following sentence:

"If the EAP server is aware that authentication is
   for something other than a network service, it too MUST default to
   requiring channel binding."

I think we could state this a bit better as something like:

"In environments where EAP is used for applications authentication and network access authentication all EAP servers MUST understand channel bindings and require that application bindings MUST be present in application authentication and that application bindings MUST be absent in network authentication.   All network access EAP peer implementations SHOULD support channel binding to explicitly identify the reason for authentication.  Any new usage of EAP MUST support channel bindings to prevent confusion with network access usage. "

---

From: "Joseph Salowey (jsalowey)" <[email-masked]>
Date: Tue, 18 Jun 2013 17:47:03 +0000

>> "In environments where EAP is used for applications authentication and network
>> access authentication all EAP servers MUST understand channel bindings and
>> require that application bindings MUST be present in application
>> authentication and that application bindings MUST be absent in network
>> authentication.   All network access EAP peer implementations SHOULD support
>> channel binding to explicitly identify the reason for authentication.  Any new
>> usage of EAP MUST support channel bindings to prevent confusion with network
>> access usage. "
> 
> That text is an improvement, and it's headed in the same direction as Sam's
> comment - "application bindings MUST be present in application authentication"
> is a "MUST use" requirement, not just a "MUST implement" requirement.
> 
> OTOH, I'm not clear on what "application bindings" means, as that term's not
> in the current draft.  Specifically, I'm a bit unclear on "application bindings
> MUST be absent in network authentication" - does that mean that channel
> binding must be absent, or that channel binding is optional, but if channel
> binding is present, it MUST NOT be an "application binding", whatever that is?
> 

[Joe] Good points, the text can be more specific:

"In environments where EAP is used for purposes other than network access authentication all EAP servers MUST enforce channel bindings.  For application authentication, the EAP server MUST require that the correct EAP lower-layer attribute be present in the channel binding data.   For network access authentication, the EAP server MUST require that if channel bindings are present they MUST contain the correct EAP lower-layer attribute.   All network access EAP peer implementations SHOULD use channel bindings including the EAP lower-layer attribute to explicitly identify the reason for authentication.  Any new usage of EAP MUST use channel bindings including the EAP lower-layer attribute to prevent confusion with network access usage. "

Does this help?

Thanks,

Joe

---

From: Sam Hartman <[email-masked]>
Date: Tue, 18 Jun 2013 14:39:05 -0400

Joe, eap-lower-layer is not required for application authentication if
there's some other attribute that's specific to the lower layer.  For
example Moonshot sends gss-acceptor-service-name but does not currently
send eap-lower-layer, and doing that seems consistent with the
requirements of the channel binding spec.

Adding a requirement for eap-lower-layer all the time would be new, but
might be reasonable.

--Sam

---

From: "Joseph Salowey (jsalowey)" <[email-masked]>
Date: Tue, 18 Jun 2013 20:00:17 +0000

> Adding a requirement for eap-lower-layer all the time would be new, but

[Joe] Ah yes, I remember this.  It would be simpler to just use eap lower-layer attribute.  I think we could massage the text to say something like "eap lower-layer layer attribute or equivalent attribute indicating the EAP lower layer in use" .   Let me see what I can do with the text David provided.

---

From: "Black, David" <[email-masked]>
Date: Tue, 18 Jun 2013 13:28:17 -0400

> [Joe]  I'm trying to get a handle on the attack mechanism here.   In this
> attack a valid network service is trying to spoof an application service?
> Since it knows the MSK it can do this if the channel-binding of the lower-
> layer into the EAP conversation is not enforced.  If the AAA server always
> enforces channel bindings for applications then it will catch the spoofing
> attempt.   The reverse case may also be an issue where an application service
> is trying to spoof a network service.

While both cases appear to be relevant, my concern started from the reverse
case - here's the draft's text describing the attack:

   One
   potentially serious attack exists when channel binding is not
   required and EAP authentication is introduced into an existing non-
   network service.  A device can be created that impersonates a Network
   Access Service to peers, but actually proxies the authentication to
   the new application service that accepts EAP authentications.  This
   may decrease the security of this service even for users who
   previously used non-EAP means of authentication to the service.

> In this case, if the AAA server
> validates that the application channel binding is not present then it can
> prevent the spoofing.  However the server MUST understand channel bindings
> even if the peers do not.   I think the document did try to capture this in
> the following sentence:
> 

Thanks,
--David

> From: Joseph Salowey (jsalowey) [mailto:[email-masked]]
> Sent: Tuesday, June 18, 2013 1:10 PM
> To: Sam Hartman
> Cc: Black, David; [email-masked]; General Area Review Team;
> [Joe]  I'm trying to get a handle on the attack mechanism here.   In this
> attack a valid network service is trying to spoof an application service?
> Since it knows the MSK it can do this if the channel-binding of the lower-
> layer into the EAP conversation is not enforced.  If the AAA server always
> enforces channel bindings for applications then it will catch the spoofing
> attempt.   The reverse case may also be an issue where an application service
> is trying to spoof a network service.   In this case, if the AAA server
> validates that the application channel binding is not present then it can
> prevent the spoofing.  However the server MUST understand channel bindings
> even if the peers do not.   I think the document did try to capture this in
> the following sentence:
>

---

From: "Black, David" <[email-masked]>
Date: Tue, 18 Jun 2013 15:34:44 -0400

> "In environments where EAP is used for purposes other than network access
> authentication all EAP servers MUST enforce channel bindings.  For application
> authentication, the EAP server MUST require that the correct EAP lower-layer
> attribute be present in the channel binding data.   For network access
> authentication, the EAP server MUST require that if channel bindings are
> present they MUST contain the correct EAP lower-layer attribute.   All network
> access EAP peer implementations SHOULD use channel bindings including the EAP
> lower-layer attribute to explicitly identify the reason for authentication.
> Any new usage of EAP MUST use channel bindings including the EAP lower-layer
> attribute to prevent confusion with network access usage. "

This is looking good, modulo Sam's comment on EAP lower-layer vs. something
else that I'll leave to you and he to sort out.  I have a suggested rewrite,
mostly to clarify MUST vs. SHOULD requirements for support vs. usage, and
to reformat into a structured bullet list of requirements (this is not
intended to change any requirements from what you wrote):

"In environments where EAP is used for purposes other than network access
authentication:

	o All EAP servers and all application access EAP peers MUST
		support channel bindings.  All network access EAP peers
		SHOULD support channel bindings.

	o Channel binding MUST be used for all application authentication.
		The EAP server MUST require that the correct EAP lower-layer
		attribute be present in the channel binding data for
		application authentication.

	o Channel binding SHOULD be used for all network access authentication,
		and when channel binding data is present, the EAP server MUST
		require that it contain the correct EAP lower-layer attribute
		to explicitly identify the reason for authentication.

	o Any new usage of EAP MUST use channel bindings including the
		EAP lower-layer attribute to prevent confusion with network
		access usage."

Thanks,
--David

> Sent: Tuesday, June 18, 2013 1:47 PM
> To: Black, David
> Cc: [email-masked]; General Area Review Team; [email-masked];
> [email-masked]
> "In environments where EAP is used for purposes other than network access
> authentication all EAP servers MUST enforce channel bindings.  For application
> authentication, the EAP server MUST require that the correct EAP lower-layer
> attribute be present in the channel binding data.   For network access
> authentication, the EAP server MUST require that if channel bindings are
> present they MUST contain the correct EAP lower-layer attribute.   All network
> access EAP peer implementations SHOULD use channel bindings including the EAP
> lower-layer attribute to explicitly identify the reason for authentication.
> Any new usage of EAP MUST use channel bindings including the EAP lower-layer
> attribute to prevent confusion with network access usage. "
> 
> Does this help?
> 
> Thanks,
> 
> Joe
>

---

From: "Joseph Salowey (jsalowey)" <[email-masked]>
Date: Wed, 19 Jun 2013 23:23:03 +0000

Thanks for the text,  some revision to address
On Jun 18, 2013, at 12:34 PM, "Black, David" <[email-masked]<mailto:[email-masked]>> wrote:

o Channel binding MUST be used for all application authentication.
The EAP server MUST either require that the correct EAP lower-layer
attribute or another attribute indicating the purpose of the authentication
be present in the channel binding data for application authentication.

access usage.

Thanks,
--David

-----Original Message-----
From: Joseph Salowey (jsalowey) [mailto:[email-masked]<http://cisco.com>]
Sent: Tuesday, June 18, 2013 1:47 PM
To: Black, David
Cc: [email-masked]<mailto:[email-masked]>; General Area Review Team; [email-masked]<mailto:[email-masked]>;
[email-masked]<mailto:[email-masked]>
Subject: Re: [abfab] Gen-ART review of draft-ietf-abfab-eapapplicability-03

binding is present, it MUST NOT be an "application binding", whatever that
is?

Does this help?

Thanks,

Joe

---

From: Sam Hartman <[email-masked]>
Date: Thu, 20 Jun 2013 05:56:12 -0400

I'm fine with this text.
Either with eap-lower-layer as a MUST or the more complex version.

---

From: "Black, David" <[email-masked]>
Date: Thu, 20 Jun 2013 08:32:00 -0400

I think this is ok, but my email client isn't distinguishing the new vs. old text.

If it's just changes to produce this new bullet, I have a small edit:

"MUST either require that" --> "MUST require that either"

Thanks,
--David

From: Joseph Salowey (jsalowey) [mailto:[email-masked]]
Sent: Wednesday, June 19, 2013 7:23 PM
To: Black, David
Cc: [email-masked]; General Area Review Team; [email-masked]; [email-masked]
Subject: Re: [abfab] Gen-ART review of draft-ietf-abfab-eapapplicability-03

Thanks,
--David

-----Original Message-----
From: Joseph Salowey (jsalowey) [mailto:[email-masked]<http://cisco.com>]
Sent: Tuesday, June 18, 2013 1:47 PM
To: Black, David
Cc: [email-masked]<mailto:[email-masked]>; General Area Review Team; [email-masked]<mailto:[email-masked]>;

Does this help?

Thanks,

Joe