Issue 100: User-Name in Access-Challenge and Access-Reject
Submitter name: Jo Hermans
Submitter email address: johan.rh.hermans@alcatel.be
Date first submitted: March 26, 2003
Reference:
http://mail.frascone.net/pipermail/public/eap/2003-March/000954.html
Document: RFC2869bis-10
Comment type: Technical
Priority: S
Section: 2.1
Rationale/Explanation of issue:

Paragraph 2.1 (Protocol Overview) mentions the attributes that should be
present in acces-challenges and access-rejects :

>The NAS-Port or NAS-Port-Id attributes SHOULD be included by the NAS in
>the Access-Request packet, and either NAS-Identifier or NAS-IP-Address
>attributes MUST be included. In order to permit forwarding of the
>Access-Reply by EAP-unaware proxies, if a User-Name attribute was
>included in an Access-Request, the RADIUS server MUST include the User-
>Name attribute in subsequent Access-Challenge, Access-Accept or Access-
>Reject packets. Without the User-Name attribute, accounting and billing
>becomes difficult to manage. If the identity is determined by another
>means, such as the Calling-Station-Id, the NAS MUST include these
>identifying attributes in every Access-Request, and the RADIUS server
>MUST copy these identifying attributes into subsequent Access-Challenge,
>Access-Accept or Access-Reject packets.
>
But table 3.3 doesn't allow User-Name in access-challenges and
access-rejects. That would be in violation of RFC2865 too.

>Request Accept Reject Challenge # Attribute
>0-1 0-1 0 0 1 User-Name
>
>
Requested change:

Either change paragraph 2.1 to :

The NAS-Port or NAS-Port-Id attributes SHOULD be included by the NAS in
the Access-Request packet, and either NAS-Identifier or NAS-IP-Address
attributes MUST be included. In order to permit forwarding of the
Access-Reply by EAP-unaware proxies, if a User-Name attribute was
included in an Access-Request, the RADIUS Server MUST include the
User-Name attribute in subsequent Access-Accept packets. Without the
User-Name attribute, accounting and billing becomes very difficult to
manage. If the identity is determined by another means, such as the
Calling-Station-Id, the NAS MUST include these identifying attributes in
every Access-Request, and the RADIUS server MUST copy these identifying
attributes into subsequent Access-Accept packets.

or change table 3.3 to :

Request Accept Reject Challenge # Attribute
0-1 0-1 0-1 0-1 1 User-Name


--
Jo Hermans

[BA] -- We'll prohibit User-Name in Access-Challenge and Access-Reject in RFC2869bis-11.

Issue 101: EAP Identifier Conflict
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: April 4th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001000.html
Document: RFC 2869bis-11
Comment type: T
Priority: S
Section: 2.1 and others?
Rationale/Explanation of issue:

There seems to be a potential issue with EAP packet Identifiers
in 2869bis.

Suppose that the EAP conversations is started by NAS
(e.g. Identity request, possible followed by something else)
and then continues as pass-through. When sending its first
EAP Request, the RADIUS server must choose an Identifier value
different from the previous packet sent by the NAS (otherwise
the client will simply retransmit).

If the first Access-Request sent by NAS contains an EAP
Response, the AAA server can look at that packet's identifier
and choose a different one. However, if it only contains
EAP-Start, a conflict can occur (if the NAS already sent
something to the client).

This can happen, e.g. "The NAS also MAY send an Access-Request
packet containing an EAP-Start if, after sending an initial
Request for an authentication Type, the peer responds with a
Nak" (2869bis-11, section 2.1).

I see several possible ways how this could be resolved:

- Specify some way for the NAS to transmit its previous
Identifier value to RADIUS server.
- Allocate Identifier space so that conflicts don't occur (e.g.
NAS uses only values 0-127, RADIUS server starts with >128).
- Always compare whole packets, not just Identifiers (a big
change to RFC 2284, so probably not feasible).

There might be other solutions, too. The second one looks
the simplest to me, but is it a reasonable change?

Best regards,
Pasi

[BA] RFC 2284bis-12 will incorporate approach #1 (send EAP-Response/Nak)

Recommended resolution: Accept

Issue 102: Fragmentation: RADIUS obligation to Framed-MTU
Submitter name: Tom Bonacci
Submitter email address: bonacci@ascend.com
Date first submitted: April 4th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001005.html
Document: RFC 2869bis-11
Comment type: Technical
Priority: S
Section: 2.4
Rationale/Explanation of issue:

The "Fragmentation" section, 2.4, reads in relevant part:
"... the Framed-MTU attribute may be included in an
Access-Request packet containing an EAP-Message
attribute so as to provide the RADIUS server with this
information."

Does this (or should this) imply any obligation on the part of the
RADIUS server to observe the value forwarded by the NAS? The current
wording indicates the NAS MAY provide this information but is silent on
how the RADIUS server is to properly react upon its receipt in an
Access-Request packet.

Possible resolution:
Augment the above with
"... the Framed-MTU attribute MAY be included in an
Access-Request packet containing an EAP-Message
attribute so as to provide the RADIUS server with this
information. A RADIUS server having received a Framed-MTU
attribute in an Access-Request packet MUST NOT send any
subsequent packet in this EAP conversation containing
EAP-Message attributes whose values, when concatenated,
exceed the length specified by the Framed-MTU value."

The above wording implies strict obligation on the part of the RADIUS
server to observe the Framed-MTU value. If strict obligation is not
what's intended or desired, then the wording may be modified accordingly.

regards,
-tom

Recommended resolution: Accept

Issue 103: Timeouts
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: April 7th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001010.html
Document: RFC 2869bis-13
Comment type: T
Priority: S
Section: 2.1
Rationale/Explanation of issue:

We've been working on pass-through/back-end state diagrams
with John, Nick, and Yoshiro, and I noticed one more issue
in 2869bis that at least needs clarification:

Section 2.1 says that "Success and Failure packets MUST
NOT be sent as the result of a timeout."

Does this mean that as the result of a timeout, the NAS
must not "manufacture" an EAP Failure packet, but simply end
the conversation, right? And "timeout" here applies to both
peer<->NAS and NAS<->RADIUS server communication?

(In the case of peer<->NAS timeout, it probably does not make
sense to send Failure since most likely it will be lost, too,
but in NAS<->RADIUS timeout it could make sense.)

If my interpretation was correct, maybe this could be rephrased
something like "The NAS MUST NOT "manufacture" a Success or Failure
packet as a result of a timeout. After a suitable number of timeouts has
elapse, the NAS SHOULD simply end the EAP conversation."

Best regards,
Pasi

Proposed Resolution: Accept

Issue 104: Sequence Prohibition
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 14th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001017.html
Document: EAP-01
Comment type: T
Priority: S
Section: 2.1
Rationale/Explanation of issue:

At IETF 56, it was proposed that sequences of EAP methods MUST NOT be
supported (with an exception for tunneled EAP methods). The following text
changes support that proposal.

Change Section 2.1 from:

" 2.1 Support for sequences

An EAP conversation MAY utilize a sequence of methods. A common
example of this is an Identity request followed by a single EAP
authentication method such as an MD5-Challenge. However, within or
associated with each EAP server, it is not anticipated that a
particular named peer will utilize multiple authentication methods
(Type 4 or greater), either by supporting a choice of methods or by
using multiple methods in sequence. This would make the peer
vulnerable to attacks that negotiate the least secure method from
among a set (negotiation attacks, described in Section 7.8) or
man-in-the-middle attacks (described in Section 7.4). Instead, for
each named peer there SHOULD be an indication of exactly one method
used to authenticate that peer name. If a peer needs to make use of
different authentication methods under different circumstances, then
distinct identities SHOULD be employed, each of which identifies
exactly one authentication method. If additional authentication
methods are required beyond the initial one, the authenticator MAY
send a Request packet for a subsequent authentication method, or it
MAY send another Identity request. If the peer does not support
additional methods, it SHOULD respond with a Nak, indicating no
acceptable alternative, as described in Section 5.3. However, peer
implementations MAY not respond at all, in which case a timeout will
result and authentication will fail. Since the authenticator
presumably requires successful completion of the sequence in order to
grant access, authentication failure is the correct result.
Therefore, it is not necessary for the authenticator to determine
that the peer supports sequences prior to sending a Request for a
subsequent authentication method.

The above prescription also applies in the situation where an
authenticator sends a message of a different Type prior to completion
of the final round of a given method. If the peer wishes to continue
authenticating with the method in progress, it SHOULD send a Nak in
response to such a Request, indicating the Type in progress as the
alternative. Otherwise it MAY send a Response with the same Type as
the Request. Since an EAP packet with a different Type may be sent
by an attacker, an authenticator receiving a Nak including a
preference for the Type in progress SHOULD log the event, but
otherwise not take any action.

Once a peer has sent a Response of the same Type as a Request, some
existing peer implementations might expect the method to run to
completion. As a result, these implementations silently discard EAP
Requests of a Type different from the method in progress, despite the
requirement for a Response in Section 4.1. For this reason, EAP
authenticators that must interoperate with these peers are
discouraged from switching methods before the final round of a given
method has completed."

To:

"2.1 Support for sequences

An EAP conversation MAY utilize a sequence of methods. A common example of this is an Identity request followed by a single EAP authentication method such as an MD5-Challenge. However the peer and authenticator MUST utilize only one authentication method (Type 4 or greater) within an EAP conversation, after which the authenticator MUST send a Success or Failure packet.

Once a peer has sent a Response of the same Type as the initial Request, an authenticator MUST NOT send a Request of a different Type prior to completion of the final round of a given method (with the exception of a Notification-Request) and MUST NOT send a Request for an additional method of any Type after completion of the initial authentication method; a peer receiving such Requests MUST treat them as invalid, and
silently discard them. As a result, Identity Requery is not supported.

Supporting multiple authentication methods within an EAP conversation would add complexity to the EAP protocol, would enable man-in-the-middle attacks (see Section 7.4), and would result in interoperability problems, since existing EAP implementations typically do not support multiple authentication methods.

A peer MUST NOT send a Nak (legacy or expanded) in reply to a Request, after an initial non-Nak Response has been sent. Since spoofed EAP Request packets may be sent by an attacker, an an authenticator receiving an unexpected Nak SHOULD silently discard it and log the event.

Where a single EAP authentication method is utilized, but other methods are run within it (a "tunneled" method) the prohibition against multiple authentication methods does not apply. Such "tunneled" methods appear as a single authentication method to EAP. Backward compatibility can be provided, since a peer not supporting a "tunneled" method can reply to the initial EAP-Request with a Nak (legacy or expanded). To address security vulnerabilities, "tunneled" methods MUST support protection against man-in-the-middle attacks.

Within or associated with each authenticator, it is not anticipated that a particular named peer will support a choice of methods. This would make the peer vulnerable to attacks that negotiate the least secure method from among a set (negotiation attacks, described in Section 7.8). Instead, for each named peer there SHOULD be an indication of exactly one method used to authenticate that peer name. If a peer needs to make use of different authentication methods under different circumstances, then distinct identities SHOULD be employed, each of which identifies exactly one authentication method. "

Proposed Resolution: Accept

Issue 105: Multiplexing Clarification
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 17th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001028.html
Document: EAP-01
Comment type: T
Priority: S
Section: 2.2
Rationale/Explanation of issue:

Section 2.2 does not describe how EAP packets are
forwarded by a pass-through authenticator. This is
an area where there are known interoperability
problems (e.g. pass-through authenticators that
cannot handle any EAP method).

Change:

"2.2 EAP multiplexing model

Conceptually, EAP implementations consist of the following
components:

[a] Lower layer. The lower layer is responsible for transmitting and
receiving EAP frames between the peer and authenticator. EAP has
been run over a variety of lower layers including PPP; wired IEEE
802 LANs [IEEE.802-1X.2001]; IEEE 802.11 wireless LANs
[IEEE.802-11.1999]; UDP (L2TP [RFC2661] and ISAKMP [PIC]); and
TCP [PIC]. Lower layer behavior is discussed in Section 3.

[b] EAP layer. The EAP layer receives and transmits EAP packets via
the lower layer, implements the EAP state machine, and delivers
and receives EAP messages to and from EAP methods.

[c] EAP method. EAP methods implement the authentication algorithms
and receive and transmit EAP messages via the EAP layer. Since
fragmentation support is not provided by EAP itself, this is the
responsibility of EAP methods, which are discussed in Section 5.

The EAP multiplexing model is illustrated in figure 1 below. Note
that there is no requirement that an implementation conform to this
model, as long as the on-the-wire behavior is consistent with it.

Within EAP, the Type field functions much like a port number in UDP
or TCP. With the exception of Types handled by the EAP layer, it is
assumed that the EAP layer multiplexes incoming EAP packets according
to their Type, and delivers them only to the EAP method corresponding
to that Type code, with one exception.

Since EAP methods may wish to access the Identity, the Identity
Response can be assumed to be stored within the EAP layer so as to be
available to methods of Types other than 1 (Identity). The Identity
Type is discussed in Section 5.1.

         +-+-+-+-+-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+-+-+-+-+

         |           |           |  |           |           |

         | EAP method| EAP method|  | EAP method| EAP method|

         | Type = X  | Type = Y  |  | Type = X  | Type = Y  |

         |       !   |           |  |       ^   |           |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         |  EAP  ! Layer         |  |  EAP  !  Layer        |

         |       !               |  |       !               |

         | (Nak, ! Success,      |  | (Nak, ! Success,      |

         |       ! Failure,      |  |       ! Failure,      |

         |       ! Notification, |  |       ! Notification, |

         |       ! Identity)     |  |       ! Identity)     |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         | Lower !  Layer        |  | Lower !  Layer        |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

                 !                          !

                 +------------>-------------+

 

                    Figure 1: EAP Multiplexing Model

 


A Notification Response is only used as confirmation that the peer
received the Notification Request, not that it has processed it, or
displayed the message to the user. It cannot be assumed that the
contents of the Notification Request or Response is available to
another method. The Notification Type is discussed in Section 5.2.

The Nak method is utilized for the purposes of method negotiation.
Peers MUST respond to an EAP Request for an unacceptable Type with a
Nak Response. It cannot be assumed that the contents of the Nak
Response is available to another method. The Nak Type is discussed
in Section 5.3.

EAP packets with codes of Success or Failure do not include a Type,
and therefore are not delivered to an EAP method. Success and Failure
are discussed in Section 4.2.

Given these considerations, the Success, Failure, Nak Response and
Notification Request/Response messages MUST NOT used to carry data
destined for delivery to EAP authentication Types (4 or greater)."

To:


"2.2 EAP multiplexing model

Conceptually, EAP implementations consist of the following
components:

[a] Lower layer. The lower layer is responsible for transmitting and
receiving EAP frames between the peer and authenticator. EAP has
been run over a variety of lower layers including PPP; wired IEEE
802 LANs [IEEE.802-1X.2001]; IEEE 802.11 wireless LANs
[IEEE.802-11.1999]; UDP (L2TP [RFC2661] and ISAKMP [PIC]); and
TCP [PIC]. Lower layer behavior is discussed in Section 3.

[b] EAP layer. The EAP layer receives and transmits EAP packets via
the lower layer, implements the EAP state machine, and delivers
and receives EAP messages to and from EAP methods.

[c] EAP method. EAP methods implement the authentication algorithms
and receive and transmit EAP messages via the EAP layer. Since
fragmentation support is not provided by EAP itself, this is the
responsibility of EAP methods, which are discussed in Section 5.

The EAP multiplexing model is illustrated in figure 1 below. Note
that there is no requirement that an implementation conform to this
model, as long as the on-the-wire behavior is consistent with it. 

         +-+-+-+-+-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+-+-+-+-+

         |           |           |  |           |           |

         | EAP method| EAP method|  | EAP method| EAP method|

         | Type = X  | Type = Y  |  | Type = X  | Type = Y  |

         |       V   |           |  |       ^   |           |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         |  EAP  ! Layer         |  |  EAP  !  Layer        |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         | Lower !  Layer        |  | Lower !  Layer        |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

                 !                          !

                 !   Peer                   ! Authenticator

                 +------------>-------------+

 

                    Figure 1: EAP Multiplexing Model

 

 Within EAP, the Type field functions much like a port number in UDP
or TCP. With the exception of Types handled by the EAP layer, it is
assumed that the EAP layer multiplexes incoming EAP packets according
to their Type, and delivers them only to the EAP method corresponding
to that Type code, with one exception.

Since EAP methods may wish to access the Identity, the Identity
Response can be assumed to be stored within the EAP layer so as to be
available to methods of Types other than 1 (Identity). The Identity
Type is discussed in Section 5.1.

A Notification Response is only used as confirmation that the peer
received the Notification Request, not that it has processed it, or
displayed the message to the user. It cannot be assumed that the
contents of the Notification Request or Response is available to
another method. The Notification Type is discussed in Section 5.2.

The Nak method is utilized for the purposes of method negotiation.
Peers MUST respond to an EAP Request for an unacceptable Type with
a Nak Response (legacy or expanded). It cannot be assumed that
the contents of the Nak Response is available to another method.
The Nak Type is discussed in Section 5.3.

EAP packets with codes of Success or Failure do not include a Type,
and therefore are not delivered to an EAP method. Success and Failure
are discussed in Section 4.2.

Given these considerations, the Success, Failure, Nak Response and
Notification Request/Response messages MUST NOT be used to carry data
destined for delivery to other EAP methods.

Where a pass-through authenticator is present, it forwards
packets back and forth between the peer and a backend authentication
server, based on the EAP layer header fields (Code, Identifier,
Length). Since pass-through authenticators rely on a backend
authenticator server to implement methods, the EAP method
layerheader fields (Type, Type-Data) are not examined as part of
the forwarding decision. The forwarding model is illustrated
in Figure 2. Compliant pass-through authenticator implementations
MUST by default be capable of forwarding packets from any EAP method.
 

    Peer           Pass-through Authenticator    Authentication

                                                    Server

+-+-+-+-+-+-+                             +-+-+-+-+-+-+

|           |                             |           |

|EAP method |                             |EAP method |

|   Layer   |                             |   Layer   |

|     V     |                             |     ^     |

+-+-+-!-+-+-+  +-+-+-+-+-+-+-+-+-+-+-+-+  +-+-+-!-+-+-+

|     !     |  |           |           |  |     !     |

|EAP  !Layer|  | EAP Layer | EAP Layer |  |EAP  !Layer|

|     !     |  |     +-----+-----+     |  |     !     |

|     !     |  |     !     |     !     |  |     !     |

+-+-+-!-+-+-+  +-+-+-!-+-+-+-+-+-!-+-+-+  +-+-+-!-+-+-+

|     !     |  |     !     |     !     |  |     !     |

|Lower!Layer|  |Lower!Layer| AAA ! /IP |  | AAA ! /IP  |

|     !     |  |     !     |     !     |  |     !     |

+-+-+-!-+-+-+  +-+-+-!-+-+-+-+-+-!-+-+-+  +-+-+-!-+-+-+

      !              !           !              !

      !              !           !              !

      +-------->-----+           +------->------+

      Figure 2: Pass-through Authenticator"

Proposed Resolution: Accept

Issue 106: No Changes Appendix
Submitter name: Henrik Lefkowetz
Submitter email address: henrik@lefkowetz.com
Date first submitted: April 24th, 2003
Reference:
Document: EAP-01
Comment type: E
Priority: S
Section: Appendix B
Rationale/Explanation of issue:

It is customary for a bis document to list the changes made from
the original.

Add the following text as Appendix B:


" This section lists the major changes between [RFC2284] and this
document. Minor changes, including style, grammar, spelling and
editorial changes are not mentioned here.

o The Terminology section (Section 1.2) has been expanded, defining
more concepts and giving more exact definitions.

o In Section 2, it is explicitly specified that EAP supports
sequences of methods, but not multiple authentication methods
within a single conversation. This is specified in Section 2.1.

o Also in Section 2, some requirements on the authenticator when
acting in pass-through mode have been made explicit.

o An EAP multiplexing model (Section 2.2) has been added, to
illustrate a typical implementation of EAP. There is no
requirement that an implementation conform to this model, as long
as the on-the-wire behavior is consistent with it.

o As EAP is now in use with a variety of lower layers, not just PPP
for which it was first designed, Section 3 on lower layer behavior
has been added.

o In the description of the EAP Request and Response interaction
(Section 4.1), it has been more exactly specified when packets
should be silently discarded, and also the behavior on receiving
duplicate requests. The implementation notes in this section has
been substantially expanded.

o In Section 4.2, it has been clarified that Success and Failure
packets must not contain additional data, and the implementation
note has been expanded. A subsection providing requirements on
processing of Success and Failure packets has been added.

o Section 5 on EAP Request/Response Types lists two new type values:
the Expanded type (Section 5.7), which is used to expand the type
value number space, and the Experimental type. In the Expanded
type number space, the new Expanded Nak (Section 5.3.2) Type has
been added. Clarifications have been made in the description of
most of the existing types. Security claims summaries have been
added for authentication methods.

o An IANA Considerations section (Section 6) has been added, giving
registration policies for the numbering spaces defined for EAP.

o The Security Considerations (Section 7) have been greatly
expanded, aiming at giving a much more comprehensive coverage of
possible threats and other security considerations."

Proposed Resolution: Accept

Issue 107: Missing definition of Experimental Type
Submitter name: Henrik Lefkowetz
Submitter email address: henrik@lefkowetz.com
Date first submitted: April 24th, 2003
Reference:
Document: EAP-01
Comment type: T
Priority: S
Section: 5.8
Rationale/Explanation of issue:

The Experimental Type is not defined. Add the following section:

" 5.8 Experimental

Description

The Experimental Type has no fixed format or content. It is
intended for use when experimenting with new EAP types. This type
MUST NOT be used for regular deployment of draft features.

Type

255

Type-Data

Undefined"

Proposed Resolution: Accept

Issue 108: Downgrade attacks on lower layer ciphersuite negotiation
Submitter name: Benoit de Boursetty
Submitter email address: benoit.deboursetty@francetelecom.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001045.html
Document: EAP-01
Comment type: T
Priority: 1
Section: 7.1 and 7.11
Rationale/Explanation of issue:

In section 3.1 on lower layer requirements, requirement 2 indicates a
need for physically insecure links to be used with per-packet integrity,
authentication and replay protection.

Although the problem of downgrading attack on EAP method negotiation is
identified in 7.8, I cannot find word about the issue of downgrading
attacks on ciphersuite negotiation for the lower layer ciphersuite.
However there is mention of weak lower-layer ciphersuites being a threat
to security, at least in section 7.1 #8 and in section 7.11.

I understand that in actual cases deployed now, there is no or little
lower layer ciphersuite negotiation. But to take an example,
self-admittedly PPP's MPPE is currently vulnerable to downgrading
attacks (cf. par. 2, section 9 of RFC 3078) and there is no proposed
workaround (apart from explicit client configuration).

Another way to function is that parts of the keying material resulting
from EAP can be used by the link layer to authenticate a negotiation
handshake afterwards (I would have thought Auth-RECV-Key and
Auth-SEND-Key, but according to the new Keying Framework draft I'm not
so sure).

In the short term, I suggest mentioning the issue in the Security
Considerations section, as well as the workaround of using EAP-provided
keying material to enable negotiation integrity protection ex-post.

In the longer term, it could be desirable that the lower-layer
handshakes be integrity-verified during EAP authentication, as a
"handshake integrity checking service" offered by some EAP methods --
just as they can provide now mutual authentication, keying material
generation etc. This is left to the consideration of the EAP charter.

In the meantime:

Suggested changes:

Section 7.1: adding point 9 following point 8:
"[9]. An attacker may attempt to perform downgrading attacks on
link-level ciphersuite negotiation in order to ensure that a weaker
ciphersuite is used subsequently to EAP authentication."

Section 7.11: adding following paragraph at the end of the section:
"Additionally, if the lower layer performs ciphersuite negotiation, it
should be understood that EAP does not provide by itself integrity
protection of that negotiation. Therefore, in order to avoid downgrading
attacks which would lead to weaker ciphersuites being used, clients
implementing lower layer ciphersuite negotiation SHOULD protect against
negotiation downgrading.

This can be done by enabling users to configure which are the acceptable
ciphersuites as a matter of security policy; or, the ciphersuite
negotiation MAY be authenticated using keying material derived from the
EAP authentication and a MAC algorithm agreed upon in advance by
lower-layer peers."

Proposed Resolution: Accept

Issue 109: Attacker or Adversary?
Submitter name: Benoit de Boursetty
Submitter email address: benoit.deboursetty@francetelecom.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001046.html
Document: EAP-01
Comment type: E
Priority: 1
Section: 7.1
Rationale/Explanation of issue:

In section 7.1, the word "adversary" and "attacker" are both used to
talk about the same kind of person. It is the only place in the draft
where "adversary" is used, every where else the word "attacker" is used.

Also all issues are "[attacker|adversary] may" but number 4 is a "might"
(offline attacks). Does it really seem less likely than other attacks?

Suggested Change:
Unless the above is a subtlety beyond my grasping of the English
language:
s/adversary/attacker/
s/might/may/ in issue 4

Proposed Resolution: Accept

Issue 110: Miscellaneous NITs
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001052.html
Document: EAP-02
Comment type: E
Priority: 1
Section: Various
Rationale/Explanation of issue:

Throughout the document:

EAP Methods => EAP methods
Method Type => method Type
type => Type
local users => local peers
pass through => pass-through
expanded Type => Expanded Type
method- specific => method-specific
Authenticator => authenticator

First page:
Expiration and submission dates are wrong. should be
April 2003 submission and October 2003 expiration. Please
change in the header and Status of this Memo sections.

Abstract is somewhat awkward. Change to:

"This document defines the Extensible Authentication Protocol
(EAP), an authentication framework which supports multiple
authentication methods. EAP typically runs directly over data link
layers such as PPP or IEEE 802, without requiring IP. EAP
provides its own support for duplicate elimination and retransmission,
but is reliant on lower layer ordering guarantees. Fragmentation
is not supported within EAP itself; however, individual EAP
methods may support this.

This document obsoletes RFC 2284. A summary of the changes between
this document and RFC 2284 is available in Appendix B."

Rewrite the first paragraph of Section 1 to:

"This document defines the Extensible Authentication Protocol
(EAP), an authentication framework which supports multiple
authentication methods. EAP typically runs directly over data link
layers such as PPP or IEEE 802, without requiring IP. EAP
provides its own support for duplicate elimination and retransmission,
but is reliant on lower layer ordering guarantees. Fragmentation
is not supported within EAP itself; however, individual EAP
methods may support this."

In third paragraph of section 1:
"specific authenticaiton mechanism(s) to be used" =>
"specific authentication method to be used"

"some or all methods and users" => "some or all methods and peers"

Section 1.2

Move Security Claims Terminology to its own Section 1.3.

Section 2

"Devices (e.g. a NAS, switch or access point) do not have
to understand each authentication method and MAY act as
a pass-through agent"

To:

Network Access Server (NAS) devices (e.g. a switch or access point)
do not have to understand each authentication method and
MAY act as a pass-through agent"

Last paragraph of Section 2.1 "Without or associated..." should be
moved to section 7.8 after the last paragraph there. See Issue 113.

Section 3.2

"Authentication- Protocol" => "Authentication Protocol"
"back- end server" => "backend authentication server"

Section 3.2.1

"the EAP Authentication Protocol" => "EAP"

"PPP Extensible Authentication Protocol" => "Extensible Authentication Protocol"

Section 3.4

"link layer" => "lower layer"

medium => "lower layer"

Last paragraph "In IEEE 802.11 a..." should be moved to after the last paragraph of 7.12. See Issue 113.

Section 2.2, figure 2:

The "!" symbols are not aligned correctly -- they need to be moved to the right 3 spaces.

Section 4.1:

Change

"However, there is
also a Nak Response Type for indicating that a Request type is
unacceptable to the peer. An initial specification of Types
follows in a later section of this document."

To:

"However, there are
also Nak Response Types for indicating that a Request Type is
unacceptable to the peer (see Section 5.3). An initial specification of Types
follows in Section 5 of this document."

Section 4.2.1:

"Processing of success and failure" should be "Processing of Success and Failure"

Section 5

"where there expectation" => "where there is an expectation"

Section 5.3.2 under Identifier

"a Expanded Nak Response" => "an Expanded Nak Response"

In Section 5.4, 5.5, and 5.6, change

"or Type 3 (Nak)" => "Nak (Type 3) or Expanded Nak (Type 254)"

Section 5.7, under "Vendor-Type"

"If Vendor-Id is zero" => "If the Vendor-Id is zero"

Section 8:

Please change to the following:

"This protocol derives much of its inspiration from Dave Carrel's AHA
draft as well as the PPP CHAP protocol [RFC1994]. Valuable feedback
was provided by Yoshihiro Ohba of Toshiba America Research, Jari
Arkko of Ericsson, Sachin Seth of Microsoft, Glen Zorn of Cisco
Systems, Jesse Walker of Intel, Bill Arbaugh, Nick Petroni and Bryan Payne
of the University of Maryland, Steve Bellovin of AT&T Research,
Paul Funk of Funk Software and Pasi Eronen of Nokia."

Informative References

[RFC2869] version is now 20, date is April 2003.

Appendix A.1

"a fatal error.." => "a fatal error."

"a MIC validation failures" => "a MIC validation failure"

Appendix B, please add the following paragraphs:

"o In Section 5.5, support for OTP Extended Responses [RFC2243] has been
added to EAP OTP.

o Appendix A has been added on method-specific behavior, providing
guidance on how EAP method-specific integrity checks should be
processed."

Proposed Resolution: Accept

Issue 111: Lower Layer Requirements
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001053.html
Document: EAP-02
Comment type: T
Priority: S
Section: 3.1
Rationale/Explanation of issue:

This section says that a a lower layer CRC or checksum is not necessary,
but if it is absent there will be problems. Rewrite the section to the
following:

"3.1 Lower layer requirements

EAP makes the following assumptions about lower layers:

[1] Unreliable transport. In EAP, the authenticator
retransmits Requests that have not yet received Responses, so
that EAP does not assume that lower layers are reliable. Since
EAP defines it own retransmission behavior, when run over a
reliable lower layer, it is possible (though undesirable) for
retransmission to occur both in the lower layer and the EAP
layer.

Note that EAP Success and Failure packets are not retransmitted.
Without a reliable lower layer, and a non-negligible
error rate, these packets can be lost, resulting in timeouts.
It is therefore desirable for implementations to improve
their resilience to loss of EAP Success or Failure packets,
as described in Section 4.2.

[2] Lower layer error detection. While EAP does not assume that the
lower layer is reliable, it does rely on lower layer error detection
(e.g. CRC, Checksum, MIC, etc.). EAP methods may not include a MIC,
or if theydo, it may not be computed over all the fields in the EAP packet,
such as the Code, Identifier, Length or Type fields. As a result,
without lower layer error detection, undetected errors could
creep into the EAP layer or EAP method layer header fields,
resulting in authentication failures.

For example, EAP TLS [RFC2716], which computes its MIC
over the Type-Data field only, regards MIC validation failures
as a fatal error. Without lower layer error detection, this
method and others like it will not perform reliably.

[3] Lower layer security. EAP assumes that lower layers either
provide physical security (e.g. wired PPP or IEEE
802 links) or support per-packet authentication, integrity
and replay protection. EAP SHOULD NOT be used on
physically insecure links (e.g. wireless or the Internet)
where subsequently protected data is not protected by
per-packet authentication, integrity and replay protection.

After EAP authentication is complete, the peer will typically
transmit data to the network via the authenticator. In order
to provide assurance that the peer transmitting data is the
same entity that successfully completed EAP
authentication, the lower layer needs to bind per-packet
integrity, authentication and replay protection to the
original EAP authentication, using keys derived during EAP
authentication. Alternatively, the lower layer needs to be
physically secure. Otherwise it is possible for
subsequent data traffic to be hijacked, or replayed.

Where keying material for the lower layer ciphersuite is itself
provided by EAP, typically the lower layer ciphersuite cannot be
enabled until late in the EAP conversation, after key derivation
has completed. Thus it may be possible to use the lower
layer ciphersuite only to protect a portion of the EAP
conversation, such as the EAP Success or Failure packet.

[4] MTU known a-priori. The EAP layer does not support fragmentation and
reassembly. However, EAP methods SHOULD be capable of handling
fragmentation and reassembly. As a result, EAP is capable of
functioning across a range of MTU sizes, as long as the MTU is
known a-priori. EAP does not support path MTU discovery.

[5] Possible duplication. Where the lower layer is reliable, it will
provide the EAP layer with a non-duplicated stream of packets.
However, while it is desirable that lower layers provide for
non-duplication, this is not a requirement. The Identifier field
provides both the peer and authenticator with the ability to
detect duplicates.

[6] Ordering guarantees. EAP does not require the Identifier to be
monotonically increasing, and so is reliant on lower layer
ordering guarantees for correct operation. EAP was
originally defined to run on PPP, and [RFC1661] Section 1 has an
ordering requirement:

"The Point-to-Point Protocol is designed for simple links which
transport packets between two peers. These links provide full-
duplex simultaneous bi-directional operation, and are assumed to
deliver packets in order."

Lower lower transports for EAP MUST preserve ordering between a
source and destination, at a given priority level (the
ordering guarantee provided by [IEEE.802.1990])."

Proposed Resolution: Accept

Issue 112: Rewrite of IANA Considerations
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001054.html
Document: EAP-02
Comment type: T
Priority: S
Section: 6.2
Rationale/Explanation of issue:

It is desirable to require a published RFC for EAP methods,
if possible. Rewrite Section 6.2 to the following:

"For registration requests where a Designated Expert should be consulted,
the responsible IESG area director should appoint the Designated Expert.
The intention is that any allocation will be accompanied by a published
RFC. But in order to allow for the allocation of values prior to the
RFC being approved for publication, the Designated Expert can approve
allocations once it seems clear that an RFC will be published
(e.g. on addition to the RFC Editor queue).

The Designated expert will post a request to the EAP WG mailing
list (or a successor designated by the Area Director) for comment
and review, including an Internet-Draft. Before a period of 30 days
has passed, the Designated Expert will either
approve or deny the registration request and publish a notice of the
decision to the EAP WG mailing list or its successor, as well as
informing IANA. A denial notice must be justified by an explanation
and, in the cases where it is possible, concrete suggestions on
how the request can be modified so as to become acceptable.


Packet Codes have a range from 1 to 255, of which 1-4 have been
allocated. Because a new Packet Code has considerable impact on
interoperability, a new Packet Code requires Standards Action, and
should be allocated starting at 5.

The original EAP method Type space has a range from 1 to 255, and is
the scarcest resource in EAP, and thus must be allocated with care.
method Types 1-41 have been allocated, with 20 available for re-use.
Method Types 42-191 may be allocated on the advice of a Designated
Expert, with Specification Required.

Allocation of blocks of method Types (more than one for a given
purpose) should require IETF Consensus. EAP Type Values 192-253 are
reserved and allocation requires Standards Action.

Method Type 254 is allocated for the Expanded Type. Where the
Vendor-Id field is non-zero, the Expanded Type is used for functions
specific only to one vendor's implementation of EAP, where no
interoperability is deemed useful. When used with a Vendor-Id of
zero, method Type 254 can also be used to provide for an expanded
IETF method Type space. Method Type values 256-4294967295 may be
allocated after Type values 1-191 have been allocated.

Method Type 255 is allocated for Experimental use, such as testing of
new EAP methods before a permanent Type code is allocated."

[Jari Arkko]:

"Seems clear" does not seem clear to me ;-) That is, I'm not sure
how the DE evaluates this condition. Can we be more specific?
An allocation is approved if the DE approves the method, and
the method description has been submitted as an Internet Draft?
Or has been submitted to the RFC Editor / IESG for publication?
Or WG / IETF LC started / finished?

(Specification Required might fit our requirements otherwise
well, but I think we wanted to get allocations slightly earlier
than it would mean. Then again RFC 2434 doesn't explicitly say
in which order things will happen.)
 

Proposed Resolution: Accept

Issue 113: Rewrite of Security Considerations Section
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001055.html
Document: EAP-02
Comment type: T
Priority: 1
Section: 7
Rationale/Explanation of issue:

Rewrite Section 7 to:

"7. Security Considerations

EAP was designed for use with dialup PPP [RFC1661] and was later
adapted for use in wired IEEE 802 networks [IEEE.802.1990] in
[IEEE.802-1X.2001]. On these networks, an attacker would need to
gain physical access to the telephone or switch infrastructure in
order to mount an attack. While such attacks have been documented,
such as in [DECEPTION], they are assumed to be rare.

However, subsequently EAP has been proposed for use on wireless
networks, and over the Internet, where physical security cannot be
assumed. On such networks, the security vulnerabilities are greater,
as are the requirements for EAP security.

This section defines the threat model and security terms and
describes the security claims section required in EAP method
specifications. We then discuss threat mitigation.

7.1 Threat model

On physically insecure networks, it is possible for an attacker to
gain access to the physical medium. This enables a range of attacks,
including the following:

[1] An attacker may try to discover user identities by snooping
authentication traffic.

[2] An attacker  may try to modify or spoof EAP packets.

[3] An attacker may launch denial of service attacks by spoofing
lower layer indications or Success/Failure packets; by
replaying EAP packets; or by  generating packets with overlapping
Identifiers.

[4] An attacker may attempt to recover the pass-phrase by mounting
an offline dictionary attack.

[5] An attacker  may attempt to convince the peer to connect to an
untrusted network, by mounting a man-in-the-middle attack.

[6] An adversary may attempt to disrupt the EAP negotiation in order
cause a weak authentication method to be selected.

[7] An attacker  may attempt to recover keys by taking advantage of
weak key derivation techniques used within EAP methods.

[8] An attacker may attempt to take advantage of weak ciphersuites
subsequently used after the EAP conversation is complete.

[9]. An attacker may attempt to perform downgrade attacks on the
lower layer ciphersuite negotiation in order to ensure that a weaker
ciphersuite is used subsequently to EAP authentication.

Where EAP is used over wired networks, an attacker typically requires
access to the physical infrastructure in order to carry out these
attacks. However, where EAP is used over wireless networks, EAP
packets may be forwarded by authenticators (e.g. pre-authentication)
so that the attacker need not be within the coverage area of an
authenticator in order to carry out an attack on it or its peers. Where EAP is used
over the Internet, attacks may be carried out at an even greater
distance.

7.2 Security claims

In order to clearly articulate the security provided by an EAP
method, EAP method specifications MUST include a Security Claims
section including the following declarations:

[a] Intended use. This includes a statement of whether the method is
intended for use over a physically secure or insecure network, as
well as a statement of the applicable lower layers.

[b] Mechanism. This is a statement of the authentication technology:
certificates, pre-shared keys, passwords, token cards, etc.

[c] Security claims. This is a statement of the claimed security
properties of the method, using terms defined in Section 1.2:
mutual authentication, integrity protection, replay protection,
confidentiality, key derivation, dictionary attack
resistance, fast reconnect, man-in-the-middle resistance,
acknowledged result indications. The Security Claims section of
an EAP method specification SHOULD provide justification for the
claims that are made. This can be accomplished by including a
proof in an Appendix, or including a reference to a proof.

[d] Key strength. If the method derives keys, then the effective key
strength MUST be estimated. This estimate is meant for potential
users of the method to determine if the keys produced are strong
enough for the intended application.

The effective key strength SHOULD be stated as number of bits,
defined as follows: If the effective key strength is N bits, the
best currently known methods to recover the key (with
non-negligible probability) require an effort comparable to 2^N
operations of a typical block cipher. The statement SHOULD be
accompanied by a short rationale, explaining how this number was
arrived at. This explanation SHOULD include the parameters
required to achieve the stated key strength based on current knowledge
of the algorithms.

(Note: Although it is difficult to define what "comparable
effort" and "typical block cipher" exactly mean, reasonable
approximations are sufficient here. Refer to e.g. [SILVERMAN] for
more discussion.)

The key strength depends on the methods used to derive the keys.
For instance, if keys are derived from a shared secret (such as a
password or a long-term secret), and possibly some public information
such as nonces, the effective key strength is limited by the
strength of the long-term secret (assuming that the derivation
procedure is computationally simple). To take another example,
when using public key algorithms, the strength of the symmetric
key depends on the strength of the public keys used.

[e] Description of key hierarchy. EAP methods deriving keys MUST
either provide a reference to a key hierarchy specification, or
describe how Master Session Keys (MSKs) and Extended Master
Session Keys (EMSKs) are to be derived.

[f] Indication of vulnerabilities. In addition to the security claims
that are made, the specification MUST indicate which of the
security claims detailed in Section 1.2 are NOT being made.

7.3 Identity protection

An Identity exchange is optional within the EAP conversation.
Therefore, it is possible to omit the Identity exchange entirely, or
to use a method-specific identity exchange once a protected
channel has been established.

However, where roaming is supported as described in [RFC2607], it may
be necessary to locate the appropriate backend authentication server
before the authentication conversation can proceed. The realm
portion of the Network Access Identifier (NAI) [RFC2486] is typically
included within the Identity-Response in order to enable the
authentication exchange to be routed to the appropriate backend
authentication server. Therefore while the peer-name portion of the
NAI may be omitted in the Identity- Response, where proxies or relays
are present, the realm portion may be required.

7.4 Man-in-the-middle attacks

Where EAP is tunneled within another protocol that omits peer authentication,
there exists a potential vulnerability to man-in-the-middle attack.

As noted in Section 2.1, EAP does not permit sequences of
authentication methods. Were a sequence of EAP authentication
methods to be permitted, the peer might not have proof that
a single entity has acted as the authenticator for all
EAP methods within the sequence. For example,
an authenticator might terminate one EAP method, then forward the
next method in the sequence to another party without the peer's
knowledge or consent. Similarly, the authenticator might not have
proof that a single entity has acted as the peer for all EAP methods
within the sequence.

This enables an attack by a rogue EAP authenticator tunneling EAP to
a legitimate server. Where the tunneling protocol is used for key
establishment but does not require peer authentication, an attacker
convincing a legitimate peer to connect to it will be able to tunnel
EAP packets to a legitimate server, successfully authenticating and
obtaining the key. This allows the attacker to successfully establish
itself as a man-in-the-middle, gaining access to the network, as well
as the ability to decrypt data traffic between the legitimate peer
and server.

This attack may be mitigated by the following measures:

[a] Requiring mutual authentication within EAP tunneling mechanisms.

[b] Requiring cryptographic binding between the EAP tunneling protocol and the
tunneled EAP methods. Where cryptographic binding is supported, a
mechanism is also needed to protect against downgrade attacks
that would bypass it.

[c] Limiting the EAP methods authorized for use without protection,
based on peer and authenticator policy.

[d] Avoiding the use of tunnels when a single, strong method is available.


7.5 Packet modification attacks

While EAP methods may support per-packet data origin
authentication, integrity and replay protection, support is not provided
within the EAP layer.

Since the Identifier is only a single octet, it is easy to guess,
allowing an attacker to successfully inject or replay EAP packets.
An attacker may also modify EAP headers within EAP packets where the
header is unprotected. This could cause packets to be inappropriately
discarded or misinterpreted.

In the case of PPP and IEEE 802 wired links, it is assumed that such
attacks are restricted to attackers who can gain access to the
physical link. However, where EAP is run over physically insecure
lower layers such as wireless (802.11 or cellular) or the Internet (such as within
protocols supporting PPP, EAP or Ethernet Tunneling), this assumption
is no longer valid and the vulnerability to attack is greater.

To protect EAP messages sent over physically insecure lower layers,
methods providing mutual authentication and key derivation, as well
as per-packet origin authentication, integrity and replay protection
SHOULD be used. Method-specific MICs may be used to provide
protection. Since EAP messages of Types Identity, Notification, and
Nak do not include their own MIC, it may be desirable for the EAP
method MIC to cover information contained within these messages, as
well as the header of each EAP message. For details, see Appendix A.

To provide protection, EAP also may be encapsulated within a protected
channel created by protocols such as ISAKMP [RFC2408] as is done in
[PIC] or within TLS [RFC2246]. However, as noted in Section 7.4,
EAP tunneling may result in a man-in-the-middle vulnerability.


7.6 Dictionary attacks

Password authentication algorithms such as EAP-MD5, MS-CHAPv1
[RFC2433] and Kerberos V [RFC1510] are known to be vulnerable to
dictionary attacks. MS-CHAPv1 vulnerabilities are documented in
[PPTPv1]; Kerberos vulnerabilities are described in [KRBATTACK],
[KRBLIM], and [KERB4WEAK].

Where EAP runs over lower layers which are not physically secure,
in order to protect against dictionary attacks, an authentication
algorithm resistant to dictionary attack (as defined in Section 1.3)
SHOULD be used.

If an authentication algorithm is used that is known to be vulnerable
to dictionary attack, then the conversation may be tunneled within a
protected channel, in order to provide additional protection.
However, as noted in Section 7.4, EAP tunneling may result in a
man-in-the-middle vulnerability, and therefore dictionary attack
resistant methods are preferred.

7.7 Connection to an untrusted network

With EAP methods supporting one-way authentication, such as EAP-MD5,
the peer does not authenticate the authenticator. Where the lower layer
is not physically secure (such as where EAP runs over wireless media
or the Internet), the peer is vulnerable to a rogue authenticator. As
a result, where the lower layer is not physically secure, a method
supporting mutual authentication is RECOMMENDED.

In EAP there is no requirement that authentication be full duplex or
that the same protocol be used in both directions. It is perfectly
acceptable for different protocols to be used in each direction.
This will, of course, depend on the specific protocols negotiated.
However, in general, completing a single unitary mutual
authentication is preferable to two one-way authentications, one in
each direction. This is because separate authentications that are
not bound cryptographically so as to demonstrate they are part of the
same session are subject to man-in-the-middle attacks, as discussed
in Section 7.4.

7.8 Negotiation attacks

In a negotiation attack, the attacker attempts to convince the peer
and authenticator to negotiate a less secure EAP method. EAP does not
provide protection for Nak Response packets, although it is possible for a
method to include coverage of Nak Responses within a method-specific
MIC.

Within or associated with each authenticator, it is not anticipated
that a particular named peer will support a choice of methods. This
would make the peer vulnerable to attacks that negotiate the least
secure method from among a set. Instead, for each named peer there
SHOULD be an indication of exactly one method used to authenticate
that peer name. If a peer needs to make use of different authentication
methods under different circumstances, then distinct identities
SHOULD be employed, each of which identifies exactly one
authentication method.

7.9 Implementation idiosyncrasies

The interaction of EAP with lower layers such as PPP and
IEEE 802 are highly implementation dependent.

For example, upon failure of authentication, some PPP implementations
do not terminate the link, instead limiting traffic in Network-Layer
Protocols to a filtered subset, which in turn allows the peer the
opportunity to update secrets or send mail to the network
administrator indicating a problem. Similarly, while in [IEEE802.1X]
an authentication failure will result in denied access to the
controlled port, limited traffic may be permitted on the uncontrolled
port.

In EAP there is no provision for retries of failed authentication.
However, in PPP the LCP state machine can renegotiate the
authentication protocol at any time, thus allowing a new attempt.
Similarly, in IEEE 802.1X the Supplicant or Authenticator can
re-authenticate at any time. It is recommended that any counters used
for authentication failure not be reset until after successful
authentication, or subsequent termination of the failed link.

7.10 Key derivation

It is possible for the peer and EAP server to mutually
authenticate, and derive keys. In order to provide keying
material for use in a subsequently negotiated ciphersuite, an
EAP method supporting key derivation MUST export a
Master Session Key (MSK) of at least 64 octets, and
an Extended Master Session Key (EMSK) of at least 64 octets.


TheMSK and EMSK are not used directly to protect data;
however, they are of sufficient size to enable subsequent
derivation of Transient Session Keys (TSKs) for use with the
selected ciphersuite. Each ciphersuite is responsible for
specifying how to derive the TSKs from the MSK.
The EAP method is also responsible for the derivation of Transient
EAP Keys (TEKs) used for protection of the EAP conversation itself.

EAP methods provide Master Session Keys and not Transient
Session Keys so as to allow EAP methods to be ciphersuite and
media independent. Depending on the lower layer, EAP methods may
run before or after ciphersuite negotiation, so that the
selected ciphersuite may not be known to the EAP method. By
providing keying material usable with any ciphersuite, EAP
methods can used with a wide range of ciphersuites and media.

Non-overlapping substrings of the MSK MUST be cryptographically
separate from each other. This is required because some
existing ciphersuites form TSKs by simply splitting the MSK to
pieces of appropriate length. Likewise, non-overlapping
substrings of EMSK MUST be cryptographically separate from
each other, and from substrings of the MSK.

The EMSK is reserved for future use and MUST remain on the EAP
peer and EAP server where it is derived; it MUST NOT be
transported to, or shared with, additional parties, or used to
derive any other keys. (This restriction will be relaxed in a
future document that specifies how the EMSK can be used.)

This specification does not provide detailed guidance on how EAP
methods are to derive the MSK, EMSK and TEKs, or how the TSKs are
to be derived from the MSK. Key derivation is an
art that is best practiced by professionals; rather than
inventing new key derivation algorithms, reuse of existing
algorithms such as those specified in IKE [RFC2409], or TLS
[RFC2246] is recommended.

Further details on EAP Key Derivation are provided within [KeyFrame].

[BA]  Add the following reference to the Informative references:


Aboba, B. and D. Simon, "EAP Keying Framework",
draft-aboba-pppext-key-problem-07.txt
Internet draft (work in progress), May 2003.

7.11 Weak ciphersuites

If after the initial EAP authentication, data packets are sent
without per-packet authentication, integrity and replay protection,
an attacker with access to the media can inject packets, "flip bits"
within existing packets, replay packets, or even hijack the session
completely. Without per-packet confidentiality, it is possible to
snoop data packets.

As a result, as noted in Section 3.1, where EAP is used over a
physically insecure lower layer, per-packet authentication, integrity
and replay protection SHOULD be used, and per-packet confidentiality
is also recommended.


Additionally, if the lower layer performs ciphersuite negotiation, it
should be understood that EAP does not provide by itself integrity
protection of that negotiation. Therefore, in order to avoid downgrading
attacks which would lead to weaker ciphersuites being used, clients
implementing lower layer ciphersuite negotiation SHOULD protect against
negotiation downgrading.

This can be done by enabling users to configure which are the acceptable
ciphersuites as a matter of security policy; or, the ciphersuite
negotiation MAY be authenticated using keying material derived from the
EAP authentication and a MAC algorithm agreed upon in advance by
lower-layer peers.

7.12 Link layer

There exists a number of reliability and security issues with link
layer indications in PPP, IEEE 802 wired networks and IEEE 802.11
wireless LANs:

[a] PPP. In PPP, link layer indications such as LCP-Terminate (a
link failure indication) and NCP (a link success indication) are
not authenticated or integrity protected. They can therefore be
spoofed by an attacker with access to the physical medium.

[b] IEEE 802 wired networks. On wired networks, IEEE 802.1X messages
are sent to a non-forwardable multicast MAC address. As a result,
while the IEEE 802.1X EAPOL-Start and EAPOL-Logoff frames are not
authenticated or integrity protected, only an attacker with
access to the physical link can spoof these messages.

[c] IEEE 802.11 wireless LANs. In IEEE 802.11, link layer indications
include Disassociate and Deauthenticate frames (link failure
indications), and Association and Reassociation Response frames
(link success indications). These messages are not authenticated
or integrity protected, and although they are not forwardable,
they are spoofable by an attacker within range.

In IEEE 802.11, IEEE 802.1X data frames may be sent as Class 3
unicast data frames, and are therefore forwardable. This implies that
while EAPOL-Start and EAPOL-Logoff messages may be authenticated
and integrity protected, they can be spoofed by an authenticated
attacker far from the target when "pre-authentication" is
enabled.

In IEEE 802.11 a "link down" indication is an unreliable indication
of link failure, since wireless signal strength can come and go and
may be influenced by radio frequency interference generated by an
attacker. To avoid unnecessary resets, it is advisable to damp these
indications, rather than passing them directly to the EAP. Since EAP
supports retransmission, it is robust against transient connectivity
losses.

7.13 Separation of authenticator and backend authentication server

It is possible for the EAP peer and authenticator to mutually
authenticate, and derive a Master Session Key (MSK) for a ciphersuite
used to protect subsequent data traffic. This does not present an
issue on the peer, since the peer and EAP client reside on the same
machine; all that is required is for the EAP client module to derive
and pass a Transient Session Key (TSK) to the ciphersuite module.

However, in the case where the authenticator and authentication server reside on
different machines, there are several implications for security.

[a] Authentication will occur between the peer and the authentication server,
not between the peer and the authenticator. This means that it is
not possible for the peer to validate the identity of the authenticator
that it is speaking to, using EAP alone.

[b] As discussed in [RFC2869bis], the authenticator is dependent on
the AAA protocol in order to know the outcome of an
authentication conversation, and does not look at the
encapsulated EAP packet (if one is present) to determine the
outcome. In practice this means that the AAA protocol spoken
between the authenticator and authentication server MUST support
per-packet authentication, integrity and replay protection.

[c] Where EAP is used over lower
layers which are not physically secure, subsequent to completion of
the EAP conversation, a subsequent protocol SHOULD be run
between the peer and authentication in order to mutually
authenticate the peer and authenticator; guarantee liveness
of the TSKs; provide protected ciphersuite and capabilities
negotiation; and provide for synchronized key usage.

[d] An EAP Master Session Key (MSK) negotiated
between the peer and authentication server MAY be
transmitted to the authenticator. Therefore a mechanism needs
to be provided to transmit the MSK from the authentication
server to the authenticator that needs it. The specification
of the key transport and wrapping mechanism is outside the
scope of this document.

7.14 Strict Interpretation

An EAP method wishing to enforce tighter security than is provided by
the packet processing rules of Section 2.1 and Section 4.2.1 MAY
indicate within their specification that they follow a "strict
interpretation" of EAP.

When requested by a method, "strict interpretation" causes the EAP
implementation to impose inbound filter rules from the point where an
initial Request is answered with a Response of the same Type, until
the method completes. "Strict interpretation" also implies that on
completion the peer method will indicate whether it succeeded (was
able to authenticate the authenticator) or failed (did not succeed in
authenticating the authenticator).

An EAP method making use of "strict interpretation" should include a
definition of completion for both the peer and authenticator, and
also should indicate the conditions under which successful completion
will be indicated.

The filter rules are as follows:

[a] On the peer, all EAP packets MUST be silently discarded, except for
those with Code=1 (Request) and Type=Method-Type. This implies
that methods supporting "strict interpretation" do not utilize
Notification, but instead support their own method-specific error
messages.

[b] On the peer, once the method completes unsuccessfully, the EAP
conversation is terminated, the link is disabled and Success
packets MUST be silently discarded. If the conversation completes
successfully, then Failure packets MUST be silently discarded.

[c] On the EAP server, once the initial EAP Request is responded to
with an EAP Response of the same Type, all EAP packets MUST be
silently discarded, except those with Code=2 (Response) and
Type=EAP-Method-Type.

Implementation note: While none of the methods defined in this
document support strict interpretation, EAP-TLS [RFC2716]
implementations SHOULD support strict interpretation."

Proposed Resolution: Discuss

Issue 114: Terminology fixes
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001056.html
Document: EAP-02
Comment type: T
Priority: S
Section: 1.2
Rationale/Explanation of issue:

Some terms aren't defined in the terminology section and there some minor
cleanup to do.

Change:

"authenticator
The end of the EAP link initiating the EAP authentication
methods. [Note: This terminology is also used in
[IEEE.802-1X.2001], and has the same meaning in this
document].

peer
The end of the EAP Link that responds to the authenticator.
[Note:In [IEEE.802-1X.2001], this end is known as the
Supplicant.]

backend authentication server
A backend authentication server is an entity that provides
an authentication service to an authenticator. When used,
this server typically executes EAP Methods for the
authenticator. [This terminology is also used in
[IEEE.802-1X.2001].]
"

To:

" authenticator
The end of the EAP link initiating EAP authentication.
The term Authenticator is used in
[IEEE.802-1X.2001], and has the same meaning in this
document.

peer
The end of the EAP Link that responds to the authenticator.
In [IEEE.802-1X.2001], this end is known as the
Supplicant.

backend authentication server
A backend authentication server is an entity that provides
an authentication service to an authenticator. When used,
this server typically executes EAP methods for the
authenticator. This terminology is also used in
[IEEE.802-1X.2001]."

Change:

" Key derivation
This refers to the ability of the EAP method to derive a
Master Key which is not exported, as well as a ciphersuite-
independent Master Session Keys. Both the Master Key and
Master Session Keys are used only for further key
derivation, not directly for protection of the EAP
conversation or subsequent data."

To:

" Key derivation
This refers to the ability of the EAP method to derive
exportable keying material such as the Master Session Key
(MSK), and Extended Master Session Key (EMSK).

The MSK is used only for further key
derivation, not directly for protection of the EAP
conversation or subsequent data. Use of the EMSK
is reserved."

Change:

"Man-in-the-Middle resistance
The ability for the peer to demonstrate to the
authenticator that it has acted as the peer for each method
within the conversation. Similarly, the authenticator
demonstrates to the peer that it has acted as the
authenticator for each method within the conversation. If
this is not possible, then the authentication sequence or
tunnel may be vulnerable to a man-in-the-middle attack."

To:


"Man-in-the-Middle resistance
The ability for the peer to demonstrate to the
authenticator that it has acted as the peer for each
authentication method within the conversation. Similarly,
the authenticator demonstrates to the peer that it has
acted as the authenticator for each authentication method
within the conversation. If this is not possible, then
the authentication sequence or tunnel may be vulnerable
to a man-in-the-middle attack."

Change:

" Acknowledged result indications
The ability of the authenticator to provide the peer with
an indication of whether the peer has successfully
authenticated to it, and for the peer to acknowledge
receipt, as well as providing an indication of whether the
authenticator has successfully authenticated to the peer.
Since EAP Success and Failure packets are neither
acknowledged nor integrity protected, this claim requires
implementation of a method- specific result exchange that
is integrity protected."

To:

"Acknowledged result indications
The ability of the authenticator to provide the peer with
an indication of whether the peer has successfully
authenticated to it, and for the peer to acknowledge
receipt, as well as providing an indication of whether the
authenticator has successfully authenticated to the peer.
Since EAP Success and Failure packets are neither
acknowledged nor integrity protected, this claim requires
implementation of a method-specific result exchange that
is authenticated, integrity and replay protected on a
per-packet basis."

Add the following definitions:

"Message Integrity Check (MIC)
A keyed hash function used for authentication and integrity
protection of data. This is usually called a Message Authentication
Code (MAC), but IEEE 802 specifications (and this document) use the
acronym MIC to avoid confusion with Medium Access Control.

Cryptographic binding
The demonstration of the EAP peer to the EAP server that a single
entity has acted as the EAP peer for all methods executed within a
sequence or tunnel. Binding MAY also imply that the EAP server
demonstrates to the peer that a single entity has acted as the EAP
server for all methods executed within a sequence or tunnel. If
executed correctly, binding serves to mitigate man-in-the-middle
vulnerabilities.

Cryptographic separation
Two keys (x and y) are "cryptographically separate" if an adversary
that knows all messages exchanged in the protocol cannot compute x
from y or y from x without "breaking" some cryptographic
assumption. In particular, this definition allows that the
adversary has the knowledge of all nonces sent in cleartext as well
as all predictable counter values used in the protocol. Breaking a
cryptographic assumption would typically require inverting a one-
way function or predicting the outcome of a cryptographic pseudo-
random number generator without knowledge of the secret state. In
other words, if the keys are cryptographically separate, there is
no shortcut to compute x from y or y from x, but the work an
adversary must do to perform this computation is equivalent to
performing exhaustive search for the secret state value."

EAP Master key (MK)
A key derived between the EAP client and server during the EAP
authentication process that is purely local to the EAP method. The
MK MUST NOT be exported from the EAP method or be made available to
a third party. Since derivation of the MK is a residue of the
successful completion of the EAP authentication exchange, proof of
MK possession may be used to shorten future EAP exchanges between
the same EAP client and server, a technique known as "fast resume".

Master Session Key (MSK)
Keying material that is derived between the EAP client
and server. The MSK is used in the derivation of Transient Session
Keys (TSKs) for the ciphersuite negotiated between the EAP peer and
authenticator. Where a backend authentication server is present,
acting as an EAP server, it will typically transport the MSK to the
authenticator.

The MSK differs from the MK in that it not assumed to remain local
to the EAP method, and is known by all parties in the EAP exchange:
the peer, authenticator and the authentication server (if present).
The MSK MAY be derived from the MK via a one-way function, or it
may be an independent quantity. However possession of the MSK MUST
NOT provide any information useful in determining the MK.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP
client and server that is exported by the EAP
method. However, unlike the MSK, the EMSK is known only to the EAP
peer and EAP server and MUST NOT be provided to a third party. The
EMSK therefore MUST NOT be transported by the backend
authentication server to the authenticator. The EMSK is reserved
for future uses that are not defined yet. For example, it could be
used to derive additional keying material for purposes such as fast
handoff, man-in-the-middle vulnerability protection, etc. "

Proposed Resolution: Accept

Issue 115: EAP multiplexing fixes
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001057.html
Document: EAP-02
Comment type: T
Priority: S
Section: 2.2
Rationale/Explanation of issue:

It is necessary to clarify what aspects of on the wire behavior are
determined by the EAP layer versus other layers. Also, the sharing of
Identity Request as well as Response info could be made more clear.
Finally it is somewhat confusing to talk about method implemented in the
EAP layer.

Change:

" [b] EAP layer. The EAP layer receives and transmits EAP packets via
the lower layer, implements the EAP state machine, and delivers
and receives EAP messages to and from EAP methods."

To:

" [b] EAP layer. The EAP layer receives and transmits EAP packets via
the lower layer, implements duplicate detection and retransmission
and delivers and receives EAP messages to and from EAP methods."


Change:

"Within EAP, the Type field functions much like a port number in UDP
or TCP. With the exception of Types handled by the EAP layer, it is
assumed that the EAP layer multiplexes incoming EAP packets according
to their Type, and delivers them only to the EAP method corresponding
to that Type code, with one exception.

Since EAP methods may wish to access the Identity, the Identity
Response can be assumed to be stored within the EAP layer so as to be
available to methods of Types other than 1 (Identity). The Identity
Type is discussed in Section 5.1.

A Notification Response is only used as confirmation that the peer
received the Notification Request, not that it has processed it, or
displayed the message to the user. It cannot be assumed that the
contents of the Notification Request or Response is available to
another method. The Notification Type is discussed in Section 5.2.

The Nak method is utilized for the purposes of method negotiation.
Peers MUST respond to an EAP Request for an unacceptable Type with a
Nak Response (legacy or expanded). It cannot be assumed that the
contents of the Nak Response is available to another method. The Nak
Type is discussed in Section 5.3.

EAP packets with codes of Success or Failure do not include a Type,
and therefore are not delivered to an EAP method. Success and Failure
are discussed in Section 4.2.

Given these considerations, the Success, Failure, Nak Response and
Notification Request/Response messages MUST NOT be used to carry data
destined for delivery to other EAP methods.

Where a pass-through authenticator is present, it forwards packets
back and forth between the peer and a backend authentication server,
based on the EAP layer header fields (Code, Identifier, Length).
Since pass-through authenticators rely on a backend authenticator
server to implement methods, the EAP method layer header fields
(Type, Type-Data) are not examined as part of the forwarding
decision. The forwarding model is illustrated in Figure 2. Compliant
pass-through authenticator implementations MUST by default be capable
of forwarding packets from any EAP method."

To:

"Within EAP, the Type field functions much like a port number in UDP
or TCP. It is assumed that the EAP layer multiplexes incoming EAP
packets according to their Type, and delivers them only to the
EAP method corresponding to that Type code.

Since EAP authentication methods may wish to access the Identity,
the Identity Request and Response can be assumed to be
accessible to authentication methods (Types 4 or greater) in addition
to the Identity method. The Identity Type is discussed in Section 5.1.

A Notification Response is only used as confirmation that the peer
received the Notification Request, not that it has processed it, or
displayed the message to the user. It cannot be assumed that the
contents of the Notification Request or Response is available to
another method. The Notification Type is discussed in Section 5.2.

The Nak (Type 3) or Expanded Nak (Type 254) are utilized for the purposes of method negotiation.
Peers respond to an initial EAP Request for an unacceptable Type with a
Nak Response (Type 3) or Expanded Nak Response (Type 254). It cannot be assumed that the
contents of the Nak Response(s) are available to another method. The Nak
Type(s) are discussed in Section 5.3.

EAP packets with codes of Success or Failure do not include a Type,
and therefore are not delivered to an EAP method. Success and Failure
are discussed in Section 4.2.

Given these considerations, the Success, Failure, Nak Response(s) and
Notification Request/Response messages MUST NOT be used to carry data
destined for delivery to other EAP methods.

Where an authenticator operates as a pass-through, it forwards packets
back and forth between the peer and a backend authentication server,
based on the EAP layer header fields (Code, Identifier, Length).
Since pass-through authenticators rely on a backend authenticator
server to implement methods, the EAP method layer header fields
(Type, Type-Data) are not examined as part of the forwarding
decision. The forwarding model is illustrated in Figure 2. Compliant
pass-through authenticator implementations MUST by default be capable
of forwarding packets from any EAP method."

Proposed Resolution: Accept

Issue 116: Success and Failure fixes
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001058.html
Document: EAP-02
Comment type: T
Priority: S
Section: 4.2, 4.2.1
Rationale/Explanation of issue:

Delete Section 4.2.1 and change Section 4.2 from:

4.2 Success and Failure

The Success packet is sent by the authenticator to the peer to
acknowledge successful authentication. The authenticator MUST
transmit an EAP packet with the Code field set to 3 (Success). If
the authenticator cannot authenticate the peer (unacceptable
Responses to one or more Requests) then the implementation MUST
transmit an EAP packet with the Code field set to 4 (Failure). An
authenticator MAY wish to issue multiple Requests before sending a
Failure response in order to allow for human typing mistakes. Success
and Failure packets MUST NOT contain additional data.

Implementation Note: Because the Success and Failure packets are
not acknowledged, the authenticator cannot know whether they have
been received. As a result, these packets are not retransmitted by
the authenticator. If acknowledged success and failure indications
are desired, these MAY be implemented within individual EAP
methods. Since only a single EAP authentication method is
supported within an EAP conversation, a peer that successfully
authenticates the authenticator MAY, in the event that an EAP
Success is not received, conclude that the EAP Success packet was
lost and enable the link.

A summary of the Success and Failure packet format is shown below.
The fields are transmitted from left to right.


0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Code       |    Identifier |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Code

3 for Success
4 for Failure


Identifier

The Identifier field is one octet and aids in matching replies to
Responses. The Identifier field MUST match the Identifier field
of the Response packet that it is sent in response to.

Length

4"

To:

"4.2 Success and Failure

The Success packet is sent by the authenticator to the peer
after completion of an EAP authentication method
(Type 4 or greater), to indicate that the peer has authenticated
successfully to the authenticator. The authenticator MUST
transmit an EAP packet with the Code field set to 3 (Success). If
the authenticator cannot authenticate the peer (unacceptable
Responses to one or more Requests) then after unsuccessful
completion of the EAP method in progress, the implementation MUST
transmit an EAP packet with the Code field set to 4 (Failure). An
authenticator MAY wish to issue multiple Requests before sending a
Failure response in order to allow for human typing mistakes. Success
and Failure packets MUST NOT contain additional data.

EAP Success or Failure packets MUST NOT be sent by an EAP server
prior to completion of the final round of a given method. A peer EAP
implementation receiving a Success or Failure packet prior to
completion of the method in progress MUST silently discard it. By
default, an EAP peer MUST silently discard a "canned" EAP Success
message (an EAP Success message sent immediately upon connection).
This ensures that a rogue authenticator will not be able to bypass
mutual authentication by sending an EAP Success prior to conclusion
of the EAP method conversation.

Implementation Note: Because the Success and Failure packets are
not acknowledged, the authenticator cannot know whether they have
been received. As a result, these packets are not retransmitted by
the authenticator. If acknowledged result indications
are desired, these MAY be implemented within individual EAP
methods. Since only a single EAP authentication method is
supported within an EAP conversation, a peer that successfully
authenticates the authenticator MAY, in the event that an EAP
Success is not received, conclude that the EAP Success packet was
lost and enable the link.

A summary of the Success and Failure packet format is shown below.
The fields are transmitted from left to right.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Code       |    Identifier |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Code

3 for Success
4 for Failure


Identifier

The Identifier field is one octet and aids in matching replies to
Responses. The Identifier field MUST match the Identifier field
of the Response packet that it is sent in response to.

Length

4"

Proposed Resolution: Accept

Issue 117: Miscellaneous technical Nits
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: April 25th, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001059.html
Document: EAP-02
Comment type: T
Priority: S
Section: 4.1, 5, 5.2, 5.3.1, Appendix B
Rationale/Explanation of issue:

Section 4.1, third paragraph, add to the end:

"An EAP server receiving a Response not meeting this requirement MUST
silently discard it."

Section 5, second paragraph. Change:

" The remaining Types define authentication exchanges. The Nak Type is
valid only for Response packets, it MUST NOT be sent in a Request.
The Nak Type MUST only be sent in response to a Request which uses an
authentication Type code (i.e., Type of 4 or greater)."

To:

"The remaining Types define authentication exchanges.  The Nak 
(Type 3) or Expanded Nak (Type 254) are valid only for Response packets, they
MUST NOT be sent in a Request."


Section 5.2, first paragraph.

Change:

"An authenticator MAY send a Notification Request to the peer at any time
when there is no outstanding Request."

To:

"An authenticator MAY send a Notification Request to the peer at any time
when there is no outstanding Request, prior to completion of an EAP
authentication method."

Section 5.3.1

Change:

"Where any peer receives a Request for an unacceptable Type in the
range (1-253,255), or a peer lacking support for Expanded Types
receives a Request for Type 254, a legacy Nak Response MUST be
sent. The Type-Data field of the legacy Nak Response MUST contain
one or more octets indicating the desired authentication Type(s),
one octet per Type, or the value zero (0) to indicate no proposed
alternative. A peer supporting Expanded Types that receives a
Request for an unacceptable Type (1-253, 255) MAY include the
value 254 in the legacy Nak Response in order to indicate the
desire for an Expanded authentication Type. If the authenticator
can accomodate this preference, it will respond with an Expanded
Type Request."


To:

"Where a peer receives a Request for an unacceptable authentication
Type (4-253,255), or a peer lacking support for Expanded Types
receives a Request for Type 254, a Nak Response (Type 3) MUST be
sent. The Type-Data field of the Nak Response (Type 3) MUST contain
one or more octets indicating the desired authentication Type(s),
one octet per Type, or the value zero (0) to indicate no proposed
alternative. A peer supporting Expanded Types that receives a
Request for an unacceptable authentication Type (4-253, 255)
MAY include the value 254 in the Nak Response (Type 3)  in order to
indicate the desire for an Expanded authentication Type. If
the authenticator can accommodate this preference, it will respond
with an Expanded Type Request (Type 254)."

Appendix B

Add the following sentence to the next to last paragraph:

"Where possible it is desirable for a method-specific MIC to be computed over
the entire EAP packet, including the EAP layer header (Code, Identifier, Length)
and EAP method layer header (Type, Type-Data)."

Proposed Resolution: Accept

Issue 118: Mutual Authentication
Submitter name: Dror Caspi
Submitter email address: dror_caspi@atrica.com
Date first submitted: April 21, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: 2
Section: Various
Rationale/Explanation of issue:

Having looked at the drafts of RFC2284bis, EAP-Archie and IEEE-802.1aa,
it seems that most of the attention is given to systems where there is a
distinction between an authenticator and a peer/supplicant. This
distinction still exists even where mutual authentication is proposed
(e.g., EAP-Archie).

But what happens when both parties are peers (e.g., two bridge devices)?
The possibility of role reversal is mentioned (i.e., run a session
where one system is Authenticator and the other Peer, and then reverse
the role). However it seems quite cumbersome; a single session of a
protocol such as EAP-Archie would seem to provide the required
authentication - yet there needs to be a mechanism to (randomly?) decide
which party plays which role.

Probably some of the above is misunderstanding on my part. However
there seems to be a need for some explanatory text in the standards, if
not for actual changes to accommodate peer-to-peer mutual authentication.

Requested change:

Add explanatory text about peer-to-peer mutual authentication. Modify
the standards if required.

Proposed Resolution: Reject

Issue 119: EAP Inappropriate for use in peer-to-peer
Submitter name: Jesse Walker
Submitter email address: jesse.walker@intel.com
Date first submitted: April 30, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: S
Section:
Rationale/Explanation of issue:

In my opinion (emprical data amply demonstrates that no one has to agree
;-) the EAP framework is inappropriate in general for peer-to-peer
operation.  If you think through the model specified for peer-to-peer
operation, you get into a mire of problems that raise the issue of whether
EAP as constituted today is appropriately matched to the problem.

The first problem requires a solution outside (and way outside at that) of
EAP. Authentication presupposes a notion of a community with a common set
of credentials. It does not make sense to allow anyone to use any
credential in any context, because by definition all members of the
community must be able to somehow recognize one another as being
legitimate members of **THIS** community. In all systems I am aware of
this is accomplished through a common policy to utilize a common set of
credentials. In particular, a community corresponds to some common
credentialing or enrollment function, where each credential identifies its
bearer as a member of the community in some uniform way, and also implies
an access control (membership in the community) that is universally
recognized by all other members of the community. So point number one is
it is not feasible to establish a peer-to-peer network without first
establishing a notion of a network or community, and doing so is not EAP's
problem to solve.

The second problem is a special case of this. There are only three basic
trust models. The first is direct bilateral trust, where two parties
authenticate each other directly and make up a key shared only between
themselves. This model essentially works only in networks of two parties,
so is not a general solution; there is no way to enforce that all members
of a larger group will authenticate and establish their session keys in
exactly the same way. The second model is to rely on an on-line trusted
third party. This is the model used by 802.1X and Kerberos. All members of
the group are enrolled with the on-line trusted third party, and the
on-line trusted third party provides some mechanism for distributing
pairwise keys to any pair of communicating parties within the community.
In the peer-to-peer model one can imagine communities ranging from those
with one such on-line trusted third party (completely centralized
admission control) to those where every group member becomes an on-line
trusted third party (completely distributed admission control). However,
by definition, one and only one on-line trusted third party can mediate
any particular session between two members of the community, because it is
only one session. The third model relies on an off-line trusted third
party. TLS is an example that exploits this model. This model relies on
public/private key technology, as proof-of-possesion of the private key
pair is the ultimate basis for electronic identity. In this
model, since possession of a private key is assumed to establish identity,
the use of such a key by another member can be used to attest to the
membership of another party. This is a model that scales, because the
community member making an attestation need not be within communication
range when the access control decision is being made.

In my mind a general-purpose secure peer-to-peer model would need to
support all three approaches. The impression I get is that people are
thinking almost exclusively of the bilateral case, and they are struggling
to wedge the on-line trusted third party model that EAP is based on to fit
this, and this can't be done elegantly. If this impression is correct (and
I'm not claiming that is is, but rather only that it is my impression),
then the current approach is technically flawed in two dimensions: the
on-line trusted third party model is not the same as the bilateral model
that people are thinking of, and EAP should be expanded to support all
three models instead of just one. Oh, sure, any model can be used to
emulate any other model, but emulation costs MIPs, and my employer is
eternally grateful ("Sell more Pentiums") for each. Emulation abandons
many otherwise fine applications (e.g., the secure wireless lightbulb)
because of cost constraints.

The third problem centers around limitations of the security of data links
like 802.11. In particular, the security associations in this class of
networks use the **SAME** key for both directions of traffic flow between
two peers. This implies that the two peers must somehow agree on what this
key is. This is a much trickier problem than first appears, and EAP's
structure does not help solve it. I've pointed out this problem before: it
is essential to cryptographically relate the two independent
authentications. In particular, a cyrptographically sound authentication
method will establish a notion of a session that can be distinguish
**THIS** session from every other session between the **SAME** peers, so
one can figure out **WHICH** session key to use during **THIS** session.
Temproality of messages by themselves does nothing to establish this.
Indeed, protocols like TLS and AKEP and Archie establish session identity
by exchanging random nonces and mutually authenticating. For instance,
when EAP-TLS is used, clientHello.random and serverHello.random together
with the authentication information identify **THIS** session. But there
is nothing in EAP that can be used to accomplish this function. The EAP
Identifier field is the only possible candidate for the nonce space, but
the size of the Identifier field is way too small to provide anything
meaningful, and there are no native EAP cryptographic protections to
protect this field anyway. Identifying each session requires restricting
the authentication protocol to those that already come with all the
necessary bells and whisteles.

But this is not enough, because, to solve the 802.11 keying problem, one
still has to identify that the sessions established by each direction of
authentication are both extant between the same peers at the same time.
One can imagine, for instance, some sort of meta-EAP protocol that relies
on the larger nonce space when specificly restricted to protocols like
TLS or Archie; one could, for instance, make up rules that say in
peer-to-peer mode, if one receives an authenticate request from a peer to
whom one has an outstanding request, you must use the same nonce that you
have outstanding, etc. But this feels uncomfortably like trying to pound
a round peg into a square hole, and one has to struggle to suppress the
observation that we are really, really reaching here, and that there has
to be a better and easier and cheaper way.

The fourth problem is easy is some cases, if the other problems can be
solved. And that is how to pick out the session key to use. If you **CAN**
identify the two sessions in each direction, and **CAN** authoritatively
establish that both are indeed between the same pair of parties, then any
arbitrary scheme can be used to select one of the two session keys to use
to protect the underlying link, e.g., picking the smaller of two MAC
addresses in the 802 case.

So I am deeply skeptical about extending the current instantiation of EAP
to cover peer-to-peer; the intellectual spadework has not been done, and
the tiny bit I may have contributed in this missive tends to indicate, at
least to me, that EAP does not have the right shape. This strikes me as a
case, as the adage says, everything looks like a nail to someone who only
has a hammer. For whatever it is worth, that's my two cents.

[BA, Responding to Jesse Walker]:

> While this is true, it is irrelevant, because it diverts attention from
> the issue. The EAP model is clearly client-server, not peer-to-peer.
> This is not wrong or bad; security association establishment protocols
> (at least the ones that work :-) seem to be inherently client/server.

What makes EAP "inherently client-server"? There are a few things about
the protocol that are asymmetric, such as retransmission behavior (handled
by the authenticator), and the sending of Success/Failure (the
authenticator sends this to the peer). However, with the recent decisions
to only allow a single EAP authentication method per conversation, the
Success/Failure packets can be viewed as largely vestigial within a
mutually authenticating method, and Bob Moskowitz has submitted a change
to IEEE 802.1aa to include the notion of "controlled/uncontrolled ports"
on both the supplicant and authenticator.

While many of the original EAP methods are client-server protocols (e.g.
TLS), we have examples of peer-to-peer authentication technologies being
proposed for use with EAP. An example is EAP-ARCHIE, which is a
peer-to-peer protocol (no distinction made between Initiator and Responder
with respect to say, authentication modes) -- yet it is being proposed to
encapsulate this within EAP, without requiring any changes to EAP.

> My point is that the current peer-to-peer direction does not appear
> sound or even properly thought through.

I think we need to make a distinction between peer-to-peer usage as
envisaged in RFC 2284 and IEEE 802.1aa, and the "adhoc" or "mesh
networking" scenarios being contemplated in IEEE 802.11.

The "adhoc" or "mesh networking" scenarios in IEEE 802.11 are indeed
considerably more complex. In garden variety peer-to-peer between say,
two Bridges on a wired network, the Bridges are stationary and
typically within the same administrative domain. In that situation
there are certainly credential provisioning issues, but given some
"tie breaker" functionality, an appropriate EAP method
supporting peer-to-peer authentication, and sufficient intestinal
fortitude on the part of administrators, it can be made to work.

However, in the "adhoc" or "mesh networking" scenarios contemplated in
IEEE 802.11, we have mobile stations that can potentially be continually
bringing up and tearing down security associations where there is no
inherent trust model. Just as using OSPF for mesh network routing isn't
advisable in these situations, without some care it is likely that
stations will be unable to authenticate at all, or if they can, will spend
much of their time authenticating and very little time communicating.
However, I'm not clear to what extent use of EAP makes this problem worse.

I'd also note that IEEE 802.11i is running two authentications, one in
each direction, deriving two sets of keys, and *then* running a
tie-breaker. This seems wasteful, particularly when we are talking
about providing keying material for a ciphersuite that uses the same keys
in both directions.

> It will take a lot of infrastructure outside
> of 802.1aa or EAP to make peer-to-peer work

If by peer-to-peer you mean "IEEE 802.11 ahoc or mesh networking", I would
agree. However, the scenarios contemplated in IEEE 802.1aa are
considerably simpler than this.

> My suspcion is neither does so because we as a community
> still don't comprehend the issues involved. I know I don't, but the
> discussion thus far has blithely tiptoed along without any recognition
> that this is the middle of a mine field.

Since mesh network security is an active research area, I'd agree that
this is not something that is sufficiently well understood. We could
certainly put in a section that describes some of the issues when
attempting to apply EAP to those problems.

> This is not a problem in a protocol
> like IPsec, because there are separate security associations in each
> direction of the conversation, so each can be keyed by an independent
> security association establishment.

I'm curious as to why IKEv1 can be used for independent security
association establishment, whereas EAP-IKEv1 could not be. What is it
about the EAP transport that somehow changes the security properties of an
existing protocol?

> constructions like 802.11i, however, because there is only one security
> association per link.

That seems like an 802.11 problem to me. There are certainly situations
where EAP can be used with more than one security association per link. An
example of this is PPPOE, where it is possible to have a single host
bringing up multiple PPP sessions to different ISPs, all operating over
the same link. Where EAP is used for authentication and key management, it
is possible to use PPPOE today to bring up multiple security associations
per link. So this isn't an EAP issue -- it's a link layer issue.

> It is hard enough to get one authentication right let alone two.

I would agree that the decision of IEEE 802.11i to do two authentications
*then* do election seems odd. But I'm not sure why this decision was
forced by the use of EAP.

In general, I'd observe that in situations where problem requirements are
poorly understood it is best to gain clarity *before* introducing
potential solutions. There are quite a few situations where conventional
EAP methods will not work well, but that's different from saying that
*some* EAP method cannot be made to work.

> Hence it appears to be a work item that can be deferred until EAP2 (or
> whatever it is called this week).

Since this problem is neither caused by, or solved by EAP, creating a new
protocol is unlikely to add either to the clarity of the problem
statement, or to the value of a solution.

> If EAP and 802.1aa continue on their present courses, here are some
> constraints I'd suggest: both parties MUST use the same concrete
> authentication method with the same credentials for both
> authentications;

Why? RFC 2284 explicitly states that this is *not* a constraint.

> the authentication method MUST exchange random nonces;

For a mutually authenticating method this is sound advice and we should
add this. For a one-way method, it doesn't seem necessary though.

> the authentication method MUST protect the nonces from modification;

Seems reasonable.

> each authentication MUST detect replay and man-in-the-middle attack in
> BOTH directions;

Seems reasonable.

> if the two peers initiate their separate authentications simultaneously,
> then they MUST reuse the nonce they supplied for the authentication
> they initiated in the authentication to which they are responding;

Since we're already saying that two separate authentications is not
equivalent to one mutual one, I'm not sure why we should try to mandate
that they be interlinked. If the intent is to do something like this, why
do two separate authentications in the first place, why not just do a
single mutual auth?

> if the peers do not initiate simultaneously, then the peer that has not
> initiated should fall back to the client-server model if it receives an
> authentication initiated by the peer

It seems reasonable to suggest some sort of tie breaking behavior in the
case where a single mutually authenticating conversation is desired.

> More constraints may be needed, and some of these proposed constraints
> may not be right, because, like I said, I don't claim I understand the
> problem, but if you remove any one of these constraints, then I think it
> is possible to construct attacks that can compromise at least an 802.11i
> protected link.

Such an attack, if feasible, would derive from allowing two
non-interlinked authentications, one in each direction. This isn't an EAP
problem per say -- though we can certainly insert additional language
advising against this.

> The discussion thus far has treated the peer-to-peer case as mechanical.
> I hope that people agree with me that it is not, and much more toil is
> required.

I would certainly agree that IEEE 802.11 "adhoc" or "mesh networking"
requires more thought. But few of the issues you've brought up so far
apply to the simple Bridge-Bridge cases discussed in IEEE 802.1aa.

[BA] Here are the proposed fixes for the EAP Keying Framework document.

Add the following requirements to Section 4.1:

Liveness

Methods deriving keys SHOULD exchange random nonces, and
SHOULD protect the nonces from modification.

Man-in-the-middle and replay protection

Methods deriving keys SHOULD detect replay and man-in-the-middle
attacks in either direction.

[BA] Here is the proposed resolution for RFC 2284bis:

In Section 2, delete:

"Since EAP is a peer-to-peer protocol, an independent and simultaneous
authentication may take place in the reverse direction (depending on
the capabilities of the lower layer). Both peers may act as
authenticators and authenticatees at the same time.  For a discussion
of security issues in peer-to-peer operation, see Section 7.7."

Add section 2.4:

"2.4 Peer-to-Peer Operation

Since EAP is a peer-to-peer protocol, an independent and simultaneous
authentication may take place in the reverse direction (depending on
the capabilities of the lower layer).  Both peers may act as
authenticators and authenticatees at the same time.

Although EAP supports peer-to-peer operation, selected EAP methods,
AAA protocols and link layers may not support this.  For example,
EAP-TLS [RFC2716] is a client-server protocol requiring a different
certificate profile for the client and server.  This implies that
a host supporting both the EAP-TLS peer and authenticator roles
would need to be provisioned with two distinct certificates, one
appropriate for each role.

Some EAP methods may support asymmetric authentication, with one
type of credential being required for the peer and another type
for the authenticator.  Hosts supporting peer-to-peer operation
with such a method would  need to be provisioned with both
types of credentials.

AAA protocols such as RADIUS/EAP [RFC3579] and
Diameter EAP [DiamEAP] only support "passthrough"
operation on behalf of an authenticator, not a peer.
For example, as noted in [RFC3579] Section 2.6.2,
a RADIUS server responds to an Access-Request
encapsulating an EAP-Request with an Access-Reject.

Link layers such as IEEE 802.11 may only support
uni-directional derivation and transport of transient
session keys.  For example, the group-key handshake defined in
[IEEE802.11i] is uni-directional, since in IEEE 802.11 only
the Access Point (AP) sends multicast traffic.  This means
that in adhoc operation where either peer may send multicast
traffic, two uni-directional group-key exchanges
are required.  Due to constraints imposed by the 4-way
unicast key handshake state machine, this also implies
two 4-way handshake and EAP method exchanges.

Link layers such as IEEE 802.11 adhoc also do not support
"tie breaking" wherein two hosts initiating authentication
with each other will only go forward with a single
authentication.  This implies that even if 802.11 were to
support a bi-directional group-key handshake, then two
authentications, one in each direction, might still occur."

Proposed Resolution: Accept

Issue 120: Passphrases in EAP
Submitter name: Lauri Tarkkala
Submitter email address: ltarkkal@ssh.com
Date first submitted: April 30, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-April/001107.html
Document: EAP-02
Comment type: T
Priority: S
Section:
Rationale/Explanation of issue:

Several of the PPP/EAP authentication protocols
are in essence "password authentication protocols"
(PAP, CHAP, EAP-MD5). This means that the shared
secret is in essence a string in some alphabet
(most often US-ASCII), as opposed to the more
low-level view of a bitstring.

Currently the specifications of these protocols
define the shared secret as an arbitrary string
of octets. This has caused in practice a serious
interoperability problem, leaving implementations
free to define the following:

- Alphabet the password is defined in.

- Derivation of shared secret from password.

As an example some implementations assume CHAP to
encode the password as US-ASCII (or Latin-1 or
some other 8-bit alphabet) and MS-CHAPv2 to
encode the password as UCS-2.

This leads to obvious problems. If the user
actually has characters in his/her password not expressible
in US-ASCII. He/she/it should have sufficient know-how
to be able to disable CHAP when negotiating an authentication
protocol. An implementation also might have to guess
the alphabet to use. These settings might also
differ from system to system. In some cases one could
try to deduce an intelligent guess based on some
(e.g. out-of-band) vendor identification for the peer.

These pitfalls should be avoided in the future.
I propose that the working group standardize the
following functions:

a) If an authentication protocol is keyed by a "passphrase",
then the algorithm used to derive a representation
of a shared secret. If any cryptography is involved,
the protection of the shared secret (if performed)
should still be left to the individual EAP method.

b) The alphabet to be used for this (assuming the WG feels
that a superset alphabet exists), or if the WG feels
that it is not prudent to specify a superset alphabet
at this point in time, a tagging mechanism in the protocol
to denote the alphabet used in mapping a passphrase to a
bitstring. The current draft specifies that the UTF-8
is used to represent all human-readable data.

An acceptable solution would be to state, that ALL
human readable data in ALL EAP methods (except methods
specified before xx.yy.zzzz) must be represented using
UTF-8. This would include passphrases. Also the
alphabsets used in methods before xx.yy.zzzz should
be defined, by a poll checking current implementations.

This would require introduction of two EAP-MD5 methods.

[Pasi Eronen]:

Hmm, good point; we already specify that displayable messages
use UTF-8, but the same problem also applies to input data.
While I'm not so sure that we should try to force all existing
EAP methods to use UTF-8, we probably should at least recommend
something for methods specified in 2284bis.

[Lauri Tarkkala]:

Your proposed solution is IMHO not satisfactory, for the
simple reason that the alphabet used to represent the passphrase
is a parameter in selecting the acceptable authentication method
(or the used authentication method is a parameter in choosing the
passphrase).

A simple example:

- Client wishes to authenticate with EAP using a shared-secret scheme
to Server, where server assumes alphabet Y for on-the-wire
representation.

- Client holds passphrase expressible in alphabet X, but not alphabet Y.

- Authentication will not succeed. Interoperability would require
that the user know the EAP methods used before he/she chooses
his/her password!

A requirement for an acceptable solution IMHO is that the
character set used for the passphrase SHOULD NOT be related
to an EAP method (with the possible exception of some legacy
methods).

A user should not need to know that
"if my password contains the Japanese Kanji <x> I can
only authenticate using the EAP method xyzzy".

I do agree with you, that forcing all EAP methods into the
same alphabet is not wise. I also think that interoperability
with existing EAP-MD5/etc implementations is important (otherwise
implementors would still have to sniff out, based on some indidcators
about the peer vendor, what encoding to use).

I feel that a better solution would be to classify EAP methods
according to the key-type used into "passphrase-keyed methods"
and "binary-keyed methods". Ideally, each method would have
an instance in both classifications. This could be achieved
by reserving a bit in the type field of a method (with the
obvious consequence of halving the namespace), e.g. assuming
"passphrase-keying" is indicated by bit 6:

- EAP-MD5 keyed by a binary string would be method 0x05.
- EAP-MD5 keyed by a passphrase in UTF-8 would be method 0x45.

The bit would have the following semantics:

- If the passphrase-keying bit is set by the authenticator, then it
means "authenticator supports passphrase-keying".

- If the passphrase-keying bit is set by the authenticatee, then it
means "that key used is a passphrase in UTF-8 encoding".

Any opinions?

Any ideas on some better place to find bits for this indication?

[Pasi Eronen]  Here is updated text:

Add to Section 5:

"EAP methods MAY support authentication based on
shared secrets. If the shared secret is a passphrase entered by the user,
implementations MAY support entering passphrases with non-ASCII
characters. In this case, the input should be processed using an
appropriate stringprep [RFC3454] profile, and encoded in
octets using UTF-8 encoding [RFC2279]. A possible
registered stringprep profile is specified in [SASLPREP]."

Add to 5.4 (MD5-Challenge), before Type:

"Note: [RFC1994] treats the shared secret as an octet string,
and does not specify how it is entered into the system (or if it
is handled by the user at all).
EAP MD5-Challenge implementations MAY support entering passphrases with
non-ASCII characters. See Section 5 for instructions
how the input should be processed and encoded into octets."


Add to 5.5 (OTP), before Security Claims:

"Note: [RFC2289] does not specify how the secret pass-phrase is
entered by the user, or how the pass-phrase is converted into
octets. EAP OTP implementations MAY support entering
passphrases with non-ASCII characters. See Section 5 for
instructions how the input should be processed and encoded
into octets."

Add to 5.6 (GTC), before Security Claims:

"EAP GTC implementations MAY support entering a response with non-ASCII
characters. See Section 5 for instructions how the input should
be processed and encoded into octets."

Add to informative references:

[RFC3454]
Hoffman, P. and M. Blanchet, "Preparation of
Internationalized Strings ('stringprep')", RFC 3454, December 2002.

[SASLPREP]
Zeilenga, K.D., "SASLprep: Stringprep profile for user names and
passwords", draft-ietf-sasl-saslprep-01 (work in progress), May 2003.

[BA]

With respect to UTF-8, we have added the following to the terminology
section in RFC 2284bis:

Displayable Message
This is interpreted to be a human readable string of
characters, and MUST NOT affect operation of the protocol.
The message encoding MUST follow the UTF-8 transformation
format [RFC2279].

Also, Section 5.1 states that the EAP-Request/Identity is encoded as UTF-8
if it contains a displayable message. Section 5.2 says that Notification
Requests are encoded as UTF-8.

Given all of this, it strikes me that encoding passphrases as UTF-8 is in
keeping with the general direction of RFC 2284bis, and so Pasi's
suggestions seem reasonable to me.

If there are EAP implementations that would be broken by the proposed
fixes, now would be a good time to step forward.

[Pasi Eronen]

Lauri Tarkkala wrote:

> We must make the following decision:
>
> D1) Specify our own stringprep profile.
> D2) Wait till the SASLprep one makes RFC status, and then cite it.
> D3) Leave the issue to be resolved later.
>
> Pasi's wording above seems to imply decision "D2" (an RFC will
> probably not get accepted by the IESG if it references an I-D,
> as all probably know).

A standards-track RFC can't contain a normative reference to an
I-D, but informative references are OK. I think we could write
this so that the reference to SASLPREP would be considered
informative (see below).

I don't think D1 is an option.

> No WG member has made explicit statements regarding the following:
>
> A. Is it OK, that passphraseses MAY NOT be inter-operable between
> passphrase-keyed EAP methods?

Depends. Certainly we should try to minimize any
interoperability problems, but 2284bis may not be the
appropriate place to do it.

> B. Is it OK, that the only mandatory EAP method, does not
> exactly specify how it should be used in Unicode environments?

Yes, for some levels of "exactness" :-)

We can't exactly define the behavior without a stringprep
profile, and we certainly don't want to wait for SASLPREP to
become RFC.

I think we could say something like "Behavior for non-ASCII
characters is undefined, and will be clarified in a future
revision of this document. Our guess is that it will resemble
SASLPREP followed by UTF-8.".

Something like that would provide enough information to build
interoperable implementations, yet make the reference
informative. (Though I'm not sure if IESG will allow leaving
the behavior undefined in standards-track RFC?)

> If the WG feels that the answer to question "A" is NO (as I do),
> then I would recommend adding the following note to the draft:
>
> Add to section "2" after point [4].
>
> "[5] If the EAP method is keyed by a human-readable passphrase,
> then it MUST be possible to provide that passphrase in Unicode,
> which is transformed using stringprep [RFC3454] profile XXX
> [RFCXXX] before it is input into the EAP authentication method.
> This SHOULD be the default mode of operation."

I don't think we should add such a requirement here. Certainly
an EAP method should be able to define that it uses a shared
secret that MUST contain only ASCII characters (or only
characters A-Z except Q, or whatever).

Also, no implementation will ever support entering ALL
characters defined in Unicode. Implementations will support
entering some subset of Unicode characters, and I don't think
2284bis is an appropriate place to specify what that
subset should be.

[BA]

Lauri Tarkkala wrote:

"Pasi's wording above seems to imply decision "D2" (an RFC will
probably not get accepted by the IESG if it references an I-D,
as all probably know)."

In this particular case, the reference applies to a SHOULD so it
might be hard to argue that it is non-normative. This would result in a
Reference Hold in the RFC Editor queue until the normative reference is
resolved. We're trying to avoid this fate for RFC 2284bis if at all
possible.

The possible options are either to remove the SHOULD (such as demoting it
to a should or may), or to make it clear that the SASLprep document is
only one possible solution and that there might be others.

Proposed resolution: Accept

Issue 121: Document meaning of successful authentication
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: May 2, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001115.html
Document: EAP-02
Comment type: T
Priority: 1
Section: 1.2 (and possibly others)
Rationale/Explanation of issue:

It seems that in EAP we're using the word "authentication"
in somewhat non-standard sense, and I feel we should document
it.

Here's a first draft of text for section 1.2 (terminology):

"Successful authentication

In the context of this document, "successful authentication"
is an exchange of EAP messages, as a result of which the
authenticator decides to allow access for the peer, and the
peer decides to use this access.

This definition differs from the usual definitions of
authentication (e.g. "verification of claimed identity"),
since the authenticator may decide to deny access even when
the identity of the peer is known and verified, or vice versa
(allow access when the identity of the peer is not verified).

Furthermore, even if the authenticator decides to allow access,
the peer may consider the exchange a failure if it has not
successfully verified that it is talking to the intended
authenticator."

Do you think this captures the meaning accurately?
(It might require some small changes somewhere else
in the document, I can try to find them...)

[BA]

I do think that the suggested change is close to the correct meaning,
though some issues arise with the following paragraph:

"This definition differs from the usual definitions of
authentication (e.g. "verification of claimed identity"),
since the authenticator may decide to deny access even when
the identity of the peer is known and verified, or vice versa
(allow access when the identity of the peer is not verified)."

Even with the changes made in Issue 116, I think it is possible for an
authenticator to allow access to a peer which has failed to authenticate
to it. Presumably this would occur with restricted access, so that the
peer might have a chance to correct the deficiency (e.g. signup for an
account, send an email to get help, etc.). I think that would need to be
done with a method that either was one-way, or where the peer successfully
authenticated the authenticator. Might want to double check whether
there are any other "gotchas" in the draft bearing on this.

I do agree that the authenticator may decide to deny access even when the
identity of the peer is known and verified. However, I think that given
the changes we've made in Issue 116, it would be necessary for the EAP
method to indicate that an authentication failure has occurred for this to
work, and depending on the protocol this might or might not be supported.

For example, let's say that I am only allowed access from 8 AM to 5 PM
under my plan. I attempt to connect at 6 PM, and correctly input my
credentials. After examining the access policy, the AAA server will send
an Access Reject to the NAS. If it is not careful it could also send an
EAP Success encapsulated within that Access Accept. To avoid this, we
introduced language in RFC 2869bis to discourage such a contradictory
message. So the AAA server presumably now encapsulates an EAP Failure
within the Access Reject.

However, if the AAA server didn't examine the policy until after the EAP
method was complete, there can be trouble because the method presumably
completed successfully. As a result, the changes indicated in Issue 116
would cause the EAP Failure to be silently discarded since it doesn't
agree with the result of the EAP method authentication which was
successful.

One response to this problem is that the AAA server should examine the
policy early on and appropriately terminate the method, so that it's not a protocol
issue, but an implementation issue. I'm not sure I find this 100%
convincing however, because in some methods (EAP TLS, for example), there
may not be a method-specific error message that appropriately conveys an
"authenticated but not authorized" error. So if we're going to go down
this road, we probably need to add some advice in the method Appendix to
make sure that those messages are available.

Here are the proposed fixes:

Add to the terminology section:

"Successful authentication

In the context of this document, "successful authentication"
is an exchange of EAP messages, as a result of which the
authenticator decides to allow access for the peer, and the
peer decides to use this access."


Change the following text in Section 4.2 from:

"EAP Success or Failure packets MUST NOT be sent by an EAP server
prior to completion of the final round of a given method. A peer EAP
implementation receiving a Success or Failure packet prior to
completion of the method in progress MUST silently discard it. By
default, an EAP peer MUST silently discard a "canned" EAP Success
message (an EAP Success message sent immediately upon connection).
This ensures that a rogue authenticator will not be able to bypass
mutual authentication by sending an EAP Success prior to conclusion
of the EAP method conversation.

Implementation Note: Because the Success and Failure packets are
not acknowledged, the authenticator cannot know whether they have
been received. As a result, these packets are not retransmitted by
the authenticator. If acknowledged result indications
are desired, these MAY be implemented within individual EAP
methods. Since only a single EAP authentication method is
supported within an EAP conversation, a peer that successfully
authenticates the authenticator MAY, in the event that an EAP
Success is not received, conclude that the EAP Success packet was
lost and enable the link."

To:

"EAP Success or Failure packets MUST NOT be sent by an EAP server
prior to completion of the final round of a given method. A peer EAP
implementation receiving a Success or Failure packet prior to
completion of the method in progress MUST silently discard it. By
default, an EAP peer MUST silently discard a "canned" EAP Success
message (an EAP Success message sent immediately upon connection).
This ensures that a rogue authenticator will not be able to bypass
mutual authentication by sending an EAP Success prior to
conclusion of the EAP method conversation.

Implementation Note: Because the Success and Failure packets are
not acknowledged, they are not retransmitted by the authenticator,
and may be potentially lost. A peer MUST allow for this circumstance.
If acknowledged result indications are desired, these MAY be
implemented within individual EAP methods.

On the peer, once the method completes unsuccessfully, the EAP
conversation is terminated, the link is disabled, and a Success
packet MUST be silently discarded by the peer. As a result,
loss of a Failure packet need not result in a timeout.

As described in Section 2.1, only a single EAP authentication method
is allowed within an EAP conversation. A peer that successfully
authenticates the authenticator MUST silently discard Failure packets
and MAY, in the event that an EAP Success is not received, conclude
that the EAP Success packet was lost and enable the link.

Where the authenticator wishes to deny access even where the peer
authenticated successfully (e.g. where the peer may not be authorized
for reasons of policy), this can result in lengthy timeouts unless
either the method provides authorization-related error messages or
a lower layer failure indication is provided. For example,
within EAP-TLS [RFC2716], the "access_denied" TLS alert can be
used to indicate that a valid certificate was received, but when
access control was applied, the authenticator decided not to proceed.
Section 3.4 provides guidance on the processing of lower layer
success and failure indications."

[Pasi Eronen] How about this?

   "Implementation Note: Because the Success and Failure packets
   are not acknowledged, they are not retransmitted by the
   authenticator, and may be potentially lost. A peer MUST allow
   for this circumstance.  If acknowledged result indications
   are desired, these MAY be implemented within individual EAP
   methods.

   On the peer, an EAP method can conclude with three different
   end results.

   [1] Failure: Either the authenticator has indicated that it
       will not allow access to the peer, or the peer does not wish
       to use this access (for instance, the peer has not
       successfully verified the server's identity, but its security
       policy requires this).

       In this case, the EAP conversation is terminated, and the
       link is disabled. As a result, loss of a Failure packet
       need not result in a timeout, and a Success packet MUST
       be silently discarded by the peer.

   [2] Unconditional success: The authenticator has indicated that
       it will allow access to the peer, and the peer wishes
       to use this access.

       The peer SHOULD, in the event that an EAP Success is not
       received, conclude that the EAP Success packet was lost
       and enable the link. Failure packets MUST be silently
       discarded by the peer.

   [3] Conditional success: The peer wishes to use the access,
       but it does not know if the authenticator will allow access
       or not.

       The peer MAY, in the event that an EAP Success is not
       received, conclude that the EAP Success packet was lost
       and enable the link. Failure packets MAY be silently
       discarded, but this can result in lengthy timeouts unless
       a lower layer failure indication is provided."

[Pasi Eronen]

Bernard Aboba wrote:

> This isn't a RADIUS issue -- the problem can also occur in any AAA
> protocol, including Diameter.
> Typically the problem occurs because the implementation applies policy
> after the authentication/authorization decision is made, and
> therefore the result of the EAP method/EAP Success or Failure
> message/AAA result may not agree.
>
> The question is whether this is just an implementation issue -
> and therefore whether the implementations should be fixed so that
> it doesn't occur. That was the judgement of IEEE 802.1aa, and
> that is what is reflected in RFC 2869bis.

I very much agree with you on this. Making the authorization
decision *is* IMHO same as applying policy, and an
implementation should behave consistently in this. If
the implementation signals (using some EAP method internal
mechanism) that "yes, I give you access", then it must
not change that decision later and send an EAP Failure.

(From implementation point of view, if the policy is stored
in some "RADIUS server or EAP mux module", then the "EAP method
module" has to communicate with this module. But this is purely
an implementation issue; the behavior observable to outside
has to be consistent).

However, this should not be confused with the peer knowing
that "yes, the authenticator has verified who I am" message.
In this case, either authorization decision is consistent
behavior for the server, and I think that it is reasonable
to make the authorization decision (apply the policy)
after verifying who the peer is (which may be before an
EAP method has concluded, or after!).

It seems that EAP methods that can signal the authorization
decision have one "extra round" in them: before sending
the last Request, the server has already made its decision
whether to allow access or not.

In many methods, the server won't make the final decision until
it has received the last Response from the peer; and in those
methods, the only way to signal the authorizion decision
is an EAP Success/Failure message (and thus the server
can freely choose either of them).

[Jari Arkko]: Here are the proposed fixes:

Add to the terminology section:

"Successful authentication

In the context of this document, "successful authentication"
is an exchange of EAP messages, as a result of which the
authenticator decides to allow access by the peer, and the
peer decides to use this access. The authenticator's
decision typically involves both authentication and
authorization aspects; the peer may successfully
authenticate to the authenticator but access may be denied
by the authenticator due to policy reasons."

Change the following text in Section 4.2 from:

"EAP Success or Failure packets MUST NOT be sent by an EAP server
prior to completion of the final round of a given method. A peer EAP
implementation receiving a Success or Failure packet prior to
completion of the method in progress MUST silently discard it. By
default, an EAP peer MUST silently discard a "canned" EAP Success
message (an EAP Success message sent immediately upon connection).
This ensures that a rogue authenticator will not be able to bypass
mutual authentication by sending an EAP Success prior to conclusion
of the EAP method conversation.

Implementation Note: Because the Success and Failure packets are
not acknowledged, the authenticator cannot know whether they have
been received. As a result, these packets are not retransmitted by
the authenticator. If acknowledged result indications
are desired, these MAY be implemented within individual EAP
methods. Since only a single EAP authentication method is
supported within an EAP conversation, a peer that successfully
authenticates the authenticator MAY, in the event that a Success
packet is not received, conclude that the Success packet was
lost and subsequently enable the link."

To:

"Success or Failure packets MUST NOT be sent by an EAP authenticator
prior to completion of the final round of a given method. A peer EAP
implementation receiving a Success or Failure packet prior to
completion of the method in progress MUST silently discard it. By
default, an EAP peer MUST silently discard a "canned" Success
packet (a Success packet sent immediately upon connection).
This ensures that a rogue authenticator will not be able to bypass
mutual authentication by sending a Success packet prior to
conclusion of the EAP method conversation.

Implementation Note: Because the Success and Failure packets are not
acknowledged, they are not retransmitted by the authenticator, and may
be potentially lost. A peer MUST allow for this circumstance as
described in this note. See also Section 3.4 for guidance on the
processing of lower layer success and failure indications.

As described in Section 2.1, only a single EAP authentication method
is allowed within an EAP conversation. EAP methods MAY
implement acknowledged result indications.
After the authenticator sends a method-specific failure indication
to the peer, regardless of the response from the peer, it MUST
subsequently send a Failure packet. After the authenticator
sends a method-specific success indication to the peer, and
receives a method-specific success indication from the peer,
it MUST subsequently send a Success packet.

On the peer, once the method completes unsuccessfully (that is, either
the authenticator sends a method-specific failure indication, or the
peer decides that it does want to continue the conversation, possiblyafter sending a method-specific failure indication), the
peer MUST terminate the conversation and avoid sending data on the
link. The peer MUST silently discard Success packets and MAY
silently discard Failure packets. As a result,
loss of a Failure packet need not result in a timeout.

On the peer, after successful acknowledged result indications
are exchanged by both sides, a Failure packet MUST be silently
discarded by the peer. The peer MAY, in the event that an EAP Success is not
received, conclude that the EAP Success packet was lost and
that authentication concluded successfully.

A mutually authenticating method (such as EAP-TLS [RFC2716])
that provides authorization error messages provides
acknowledged result indications for the purpose
of this specification. Within EAP-TLS, the peer always
authenticates the authenticator, and may send a TLS-alert message
in the event of an authentication failure. An authenticator
after successfully authenticating the peer may use the "access denied"
TLS aert to indicate that a valid
certificate was received from the peer, but when
access control was applied, the authenticator decided not to proceed.
If a method provides authorization error messages, the authenticator
SHOULD use them so as to ensure consistency with the final access
decision and avoid lengthy timeouts.

If the authenticator has not sent a method-specific result
indication, and the peer is willing to continue the conversation,
once the method completes the peer waits for a Success or Failure
packet and MUST NOT silently discard either of them. In the event that
neither a Success nor Failure packet is received, the peer SHOULD
terminate the conversation to avoid lengthy timeouts in case the
lost packet was an EAP Failure.

If the peer attempts to authenticate to the authenticator and fails
to do so, the authenticator MUST send a Failure packet and MUST NOT
grant access by sending a Success packet. However, an authenticator
MAY not require that the peer authenticate to it in situations where
limited access is offered (e.g. guest access). In this case the
authenticator MUST send a Success packet.

Where the peer authenticates successfully to the authenticator, but
the authenticator does not send a method-specific result indication
the authenticatorMAY deny access by sending a Failure packet where the peer is not
currently authorized for network access."

Proposed resolution: Accept

Issue 122: Clarification of LL requirements
Submitter name: Mohan Parthasarathy
Submitter email address: mohanp@tahoenetworks.com
Date first submitted: May 2, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001121.html
Document: EAP-02
Comment type: T
Priority: S
Section: 3.1
Rationale/Explanation of issue:

In section 3.1, Lower layer requirements,

As a result of these considerations, EAP SHOULD be used only when
lower layers provide physical security for data (e.g. wired PPP
or IEEE 802 links), or for insecure links, where per-packet
authentication, integrity and replay protection is provided.
Where keying material for the lower layer ciphersuite is itself
provided by EAP, typically the lower layer ciphersuite cannot be
enabled until late in the EAP conversation, after key derivation
has completed. Thus it may only be possible to use the lower
layer ciphersuite to protect a portion of the EAP conversation,
such as the EAP Success or Failure packet.

I have couple of questions.

1) How do you delay the EAP success packet so that it can be
protected ? For example, if you are using ECP, you should have
reached the IPCP negotiation phase. But IPCP has not begun until EAP success
packet is transmitted. right ? what am I missing ?

2) Under what conditions the EAP failure packet can be protected ?
Doesn't failure imply that key has not been derived ?

[Pasi Eronen]

I think the draft is misleading here: as far as I know (please correct
me if I'm wrong :), existing lower layers that use EAP transmit the
EAP success packet unprotected, and enable the ciphersuite only after
that.

If this is indeed the case, I suggest we the text to:

  "... When keying material for the lower layer ciphersuite is itself
   provided by EAP, typically the lower layer ciphersuite is enabled
  only after the EAP conversion has concluded. Thus, the EAP conversation
  itself is usually not protected."

[BA]

Mohan is correct that not all link layers can
permit protection of EAP packets within an
initial authentication. In PPP, ECP
can only begin after authentication has completed
so protection of EAP packets is only possible for
re-authentication.

It would be possible for an EAP Failure to be
protected in re-authentication, or pre-authentication,
where lower layer protection is already in place.
However, for an initial authentication,
given the changes made in Issue 116,
it is now expected that the Success/Failure
packet will match the outcome of the single
authentication method that is run. As a result,
a Failure could only be protected if a key were
derived *and* somehow the peer failed to
authenticate to the authenticator. This could
happen in a protocol such as PEAP.

Suggest changing the text to:

"As a result of these considerations, EAP SHOULD be used only when
lower layers provide physical security for data (e.g. wired PPP
or IEEE 802 links), or for insecure links, where per-packet
authentication, integrity and replay protection is provided.

Where keying material for the lower layer ciphersuite is itself
provided by EAP, ciphersuite negotiation and key activation is
controlled by the lower layer. In PPP, ciphersuites are negotiated
within ECP so that it is not possible to use keys derived from
EAP authentication until the completion of ECP. Therefore an
initial EAP exchange cannot protected by a PPP ciphersuite,
although EAP re-authentication can be protected.

In IEEE 802 media, key activation also typically occurs after
completion of EAP authentication. Therefore an initial EAP exchange
typically cannot be protected by lower layer ciphersuite, although an EAP
re-authentication or pre-authentication exchange can be protected."

Proposed resolution: Accept

Issue 123: Non key-generating methods and binding
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: April 23, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001121.html
Document: Binding-01
Comment type: T
Priority: S
Section: 3.2
Rationale/Explanation of issue:

Bernard and I were discussing potential solutions for the binding
problem with the "worst case" legacy EAP methods. These methods are
such which don't generate session keys. During this discussion, it
became apparent that draft-puthenkulam-eap-binding-02.txt could perhaps
be improved by adding more details about this case.

Specifically, Section 3.2 rule S2 states the following:

Guarantee that the same peer credential is never usable inside and
outside a tunnel using server and client policy. This prevents
condition CC-A.

This solution actually works for all methods, but is sometimes hard
to deploy, due to legacy deployments, and since clients and servers
need to be synchronized for proper policy enforcement. An
additional problem with this solution is the manageability issues
due to the multiple credentials that have to be managed by the same
client and server.

and then later:

S2 is realizable just using policy techniques on the client and server
ends.

In Section 3.3 the non-key generating method issue is expanded a bit:

[1] Providing separate credentials for a user identity supported inside
and outside tunnels.

...

[2] Enforce client and server policy to always use authentication
methods inside tunnels.

...

For non-key deriving methods, if they are modifiable, then using a
signal to indicate when they are running inside a tunnel would
also prevent the attack. This works because the server is able to
distinguish between an attacker diverting a method into a tunnel
versus a client method intentionally initiated inside a
tunnel. However such signals need protection from spoofing.

The case of non-key deriving methods is an important one. Both PIC and
IKEv2 have large user groups interested in running existing
password-based methods.

Our concern is that the above description does not fully describe the
possibilities available for these users. Namely, the problem is that
there has been some confusion about exactly what it means to support
"legacy authentication". For example, are we trying to support

1. "Password authentication" i.e. the use of existing passwords
in a new context?

or

2. Are we trying to support existing methods, e.g. CHAP?

It seems that the main interest is *not* supporting legacy
authentication methods, since today EAP support is available on
virtually all shipping servers, including FreeRADIUS. Therefore, all
devices will be able to support EAP, and intermediate devices will be
able to support any method.

We believe that the issue is rather supporting legacy credentials,
such as passwords or token cards.

If so, it may be possible to keep the credentials as they are but
replace the existing method with a modified one when running inside a
tunnel (or within EAP). When running outside tunnels, use the existing
method as-is.

There appears to be key generating variants available for many of the
popular legacy credentials. For instance, the existing passwords for
dial-in PPP MSCHAPv2 could be used as-is when running EAP MSCHAPv2,
which can generate keys. The choice between the variant is easy
as long as both the authentication method and the tunnel endpoints
are in the same nodes, because then both nodes know whether a tunnel
is being used.

Similarly, the same credentials could be used inside the tunnel even
without key generation if the authentication method is changed
slightly. For instance, using "password" as the password outside the
tunnel and SHA1("password") as the password inside the tunnel. This
would appear to prevent the man-in-the-middle attack.

These types of solutions may be necessary in order to deal with legacy
credentials that currently don't generate keys, and with tunneling
protocols that can't be changed easily. As an example of the latter,
changing HTTP/TLS to take in account compound keys may be hard but the
"password"/SHA("password") trick may be easier to do within HTTP Digest
running inside HTTP/TLS.

Does this make sense?

If yes, perhaps some of the aspects from the above should be discussed
in the draft.
 

Issue 124: Identity Protection
Submitter name: Mark Schurman
Submitter email address: mschur@microsoft.com
Date first submitted: May 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001183.html
Document: EAP-02
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

I had a few comments on this doc, with regards to identity protection:

Page 4: When the term Confidentiality is defined, it includes the sentence "A method making this claim MUST support identity protection." However, "identity protection" is not defined in this list, and is not seen until page 29. This list should include a quick description for the term.

Page 5, heading 2, point 1: This paragraph mentions that the initial Identity Request is optional, and gives a few scenarios as examples. I'd suggest adding identity protection in this list as well. (Knowing that some implementations can determine it from other information is somewhat useful, but it seems more useful to me to state that, even if the identity can't be determined yet, delaying the identity request could be desirable from a security standpoint.)

Page 29: Heading "Identity Protection", paragraph 1: Should we provide more details on this? One question I had was whether a complete identity response could be delayed only at the EAP server's discretion (by delaying the identity request), or if the EAP peer (client) could unilaterally choose to delay the complete identity response. For example, if the client were configured to perform an EAP type that supports identity protection (like PEAP), which of the following statements is appropriate, or do we want to leave this unspecified in the draft?

A) The EAP peer MUST always respond to an identity request with complete identity information. [The next paragraph in the draft qualifies this, describing different requirements for the peer-name portion vs. the realm portion of the identity response.]
B) In cases where the EAP peer is performing an EAP type that supports identity protection, the EAP peer {SHOULD, MAY} respond to an identity request with {complete, complete or partial} identity information.
C) In cases where the EAP peer is performing an EAP type that supports identity protection, the EAP peer MAY disregard the initial (cleartext) identity request, providing an incomplete [or blank?] response. However, the EAP peer {SHOULD, MUST} provide complete identity information to the protected identity request.

…or some other permutation. Is this information / behavior that we want to require/restrict, allow/disallow, or leave unspecified?

I also have one comment on page 10. The first sentence in this paragraph and the last sentence in the paragraph seem to contradict - may be we need to remove the first sentence completely.

Lower layer CRC or checksum is not necessary. In EAP, the authenticator retransmits Requests that have not yet received Responses, so that EAP does not assume that lower layers are reliable. Since EAP defines its own retransmission behavior, when run over a reliable lower layer, it is possible (though undesirable) for retransmission to occur both in the lower layer and the EAP layer.
If lower layers exhibit a high loss rate, then retransmissions are likely, and since EAP Success and Failure are not retransmitted, timeouts are also likely to result. EAP methods such as EAP TLS
[RFC2716] include a message integrity check (MIC) and regard MIC errors as fatal. Therefore if a checksum or CRC is not provided by the lower layer, then some methods may not behave well.

[jari arkko]:

> Page 29: Heading "Identity Protection", paragraph 1: Should we provide
> more details on this? One question I had was whether a complete identity
> response could be delayed only at the EAP server's discretion (by delaying
> the identity request), or if the EAP peer (client) could unilaterally
> choose to delay the complete identity response. For example, if the client
> were configured to perform an EAP type that supports identity protection
> (like PEAP), which of the following statements is appropriate, or do we
> want to leave this unspecified in the draft?
>
> A) The EAP peer MUST always respond to an identity request with complete
> identity information. [The next paragraph in the draft qualifies this,
> describing different requirements for the peer-name portion vs. the realm
> portion of the identity response.]

This may be the best we can do. But the current draft sections 7.3 and
5.1 appear incomplete with regards to how you actually leave the username
portion out. Should I send "@foo.com" or "foo.com" or perhaps even
"dummy@foo.com"? This does not appear to have been specified anywhere.

> B) In cases where the EAP peer is performing an EAP type that supports
> identity protection, the EAP peer {SHOULD, MAY} respond to an identity
> request with {complete, complete or partial} identity information.

The peer may support many things, but how does it know what the
authenticator is going to ask it to do?

> C) In cases where the EAP peer is performing an EAP type that supports
> identity protection, the EAP peer MAY disregard the initial (cleartext)
> identity request, providing an incomplete [or blank?] response. However,
> the EAP peer {SHOULD, MUST} provide complete identity information to the
> protected identity request.

Again, it is unclear to me what the order of events is. Assuming the
peer supports M1, M2, and M3 where only M1 supports identity
protection, does this mean that the peer never provides a good
enough identity response for M2 & M3? If yes, the introduction of the first
identity-protecting method would disable all other methods...
This appears to be a problem for all alternatives A-C, assuming
the 7.3 approach is considered a part of A.

Policy would be one way of fixing this problem. Policy could say
that now we will use identity protection. In general, I'm
not too happy about introducing new policy knobs, however.
Perhaps we could say that if all the methods you are prepared
to accept (in terms of policy and availability of credentials)
support identity privacy, then you don't send full identity
information?

[BA] Here are some proposed fixes:

Change text in Section 5.1 from:

"The Identity Type is used to query the identity of the peer.
Generally, the authenticator will issue this as the initial
Request. An optional displayable message MAY be included to prompt
the peer in the case where there expectation of interaction with a
user. A Response of Type 1 (Identity) SHOULD be sent in Response
to a Request with a Type of 1 (Identity).

Since Identity Requests and Responses are not protected, from a
security perspective, it may be preferable for protected method-
specific Identity exchanges to be used instead."

To:

"The Identity Type is used to query the identity of the peer.
Generally, the authenticator will issue this as the initial
Request. An optional displayable message MAY be included to prompt
the peer in the case where there expectation of interaction with a
user. A Response of Type 1 (Identity) SHOULD be sent in Response
to a Request with a Type of 1 (Identity).

Since Identity Requests and Responses are not protected, from a
privacy perspective, it may be preferable for protected
method-specific Identity exchanges to be used instead.
Where the peer is configured to only accept authentication
methods supporting protected identity exchanges, the peer
MAY provide an abbreviated Identity Response (such as
omitting the peer-name portion of the NAI [RFC2486]). For
further discussion of identity protection, see Section 7.3."

Proposed resolution: Accept

Issue 125: Retransmission Issues
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: May 10, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001186.html
Document: RFC2869bis-20
Comment type: T
Priority: S
Section: 2.3
Rationale/Explanation of issue:


RADIUS [RFC2865] does not define retransmission behavior. However we
have seen situations (such as a network-wide reboot) where RADIUS
storms can occur, swamping the RADIUS server(s). In these situations
it would be preferrable for RADIUS clients to support exponential
backoff and a more conservative initial RTO estimate, as in TCP.

Change Section 2.3 from:

"2.3. Retransmission

As noted in [RFC2284], if an EAP packet is lost in transit between the
authenticating peer and the NAS (or vice versa), the NAS will
retransmit. In RADIUS [RFC2865], the RADIUS client (NAS) is responsible
for retransmission of packets between the RADIUS client and the RADIUS
server.

It may be necessary to adjust retransmission strategies and
authentication timeouts in certain cases. For example, when a token
card is used additional time may be required to allow the user to find
the card and enter the token. Since the NAS will typically not have
knowledge of the required parameters, these need to be provided by the
RADIUS server. This can be accomplished by inclusion of Session-Timeout
attribute within the Access-Challenge packet.

If Session-Timeout is present in an Access-Challenge packet that also
contains an EAP-Message, the value of the Session-Timeout is used to set
the EAP retransmission timer for that EAP Request, and that Request
alone. Once the EAP-Request has been sent, the NAS sets the
retransmission timer, and if it expires without having received an EAP-
Response corresponding to the Request, then the EAP-Request is
retransmitted."

To:

"2.3. Retransmission

As noted in [RFC2284], if an EAP packet is lost in transit between the
authenticating peer and the NAS (or vice versa), the NAS will
retransmit. In RADIUS [RFC2865], the RADIUS client (NAS) is responsible
for retransmission of packets between the RADIUS client and the RADIUS
server.

It may be necessary to adjust retransmission strategies and
authentication timeouts in certain cases. For example, when a token
card is used additional time may be required to allow the user to find
the card and enter the token. Since the NAS will typically not have
knowledge of the required parameters, these need to be provided by the
RADIUS server. This can be accomplished by inclusion of Session-Timeout
attribute within the Access-Challenge packet.

If Session-Timeout is present in an Access-Challenge packet that also
contains an EAP-Message, the value of the Session-Timeout is used to set
the EAP retransmission timer for that EAP Request, and that Request
alone. Once the EAP-Request has been sent, the NAS sets the
retransmission timer, and if it expires without having received an EAP-
Response corresponding to the Request, then the EAP-Request is
retransmitted.

In RADIUS [RFC2865], the RADIUS client is responsible for retransmission
of RADIUS packets. RADIUS/EAP client implementations SHOULD support dynamic
estimation of the RADIUS retransmission timeout, using the algorithms specified
in [RFC2988]. Since RADIUS Access-Requests may be routed to the RADIUS server
based on the Network Access Identifier (NAI) realm [RFC2486],
retransmission timeout estimates SHOULD be maintained on a per-EAP session basis."

[Glen Zorn]
 

draft-aboba-radius-rfc2869bis-21.txt says in section 2.3:

"In RADIUS [RFC2865], the RADIUS client is responsible for
retransmission
of RADIUS packets. RADIUS/EAP client implementations SHOULD support
dynamic estimation of the RADIUS retransmission timeout, using the
algorithms specified in [RFC2988]."

The reasoning behind this modification to the RADIUS retransmission
strategy is that "... we have seen situations (such as a network-wide
reboot) where RADIUS storms can occur, swamping the RADIUS server(s). In
these situations it would be preferrable for RADIUS clients to support
exponential backoff and a more conservative initial RTO estimate, as in
TCP."  However, the TCP RTO algorithms are designed to prevent network congestion, which
(though it may occur) is not the problem we're trying to solve here,
which I think might be better modeled as a server resource contention
problem.  Furthermore, the problem is not specific to EAP-over-RADIUS;
in the situation mentioned above, the same behavior would be observed
regardless of the authentication protocol in use.  This fact suggests
that a solution to the problem (presupposing that a protocol-based
solution is reasonable) should be published as an update to RFC 2865,
rather than RFC 2869.

There are other reasons why the RFC 2998 algorithms are inappropriate
for use with RADIUS. Some are mentioned in RFC 2865 (section 2.4);
others include an initial TMO that is likely to be too short in
situations where one or more RADIUS proxies are traversed, the large
granularity of the timers specified and the deterministic nature of the
algorithms used which in the worst case could result in all the clients
firing repeated salvos of requests in lockstep (not a good way to reduce
instantaneous server loading!). 

[BA] Overall, I agree with Glen's comments and would therefore recommend that
the paragraph in question be removed from RFC 2869bis, and that a separate
document be developed to specify RADIUS retransmission behavior in more detail.

> the TCP RTO algorithms are designed to prevent network congestion, which
> (though it may occur) is not the problem we're trying to solve here,
> which I think might be better modeled as a server resource contention
> problem.

The basic principle embodied in the TCP RTO algorithms is "conservation of
packets" -- that a new packet should not enter the network until there is
reason to believe that another packet has left it. Both a server resource
contention problem and congestion manifest themselves in terms of increased
delays and packet loss, and so it seems to me that the principle applies
in both cases -- and can be addressed dynamic timeout estimation, backoff
and jittering.

> Furthermore, the problem is not specific to EAP-over-RADIUS;
> in the situation mentioned above, the same behavior would be observed
> regardless of the authentication protocol in use.  This fact suggests
> that a solution to the problem (presupposing that a protocol-based
> solution is reasonable) should be published as an update to RFC 2865,
> rather than RFC 2869.

I agree with Glen that the problem can occur with any RADIUS
usage (authentication or accounting), and therefore is not specific to
RADIUS/EAP.  It therefore would be best to handle this as a separate
document.

> There are other reasons why the RFC 2998 algorithms are inappropriate
> for use with RADIUS. Some are mentioned in RFC 2865 (section 2.4);

Section 2.4 mentions that TCP is too aggressive in terms of
retransmission.  However in practice we are seeing RADIUS client
implementations that are much *more* aggressive than TCP. For
example, one RADIUS client from a well known vendor has a default RTO of 1
second with no backoff.  Several thousand of these clients recently
caused a service outage on our network after a network-wide password
reset resulted in a RADIUS server overload.  Since the clients did not back off
(or jitter)  the result was extremely high load as clients kept retrying
EAP authentication without success, hammering the servers until we had to
change the network-wide configuration to bring the network online again.

The other thing mentioned in section 2.4 is that faster failover is
desired than what TCP would provide.  It seems to me that RTO
estimation and failover are orthogonal issues so that doing dynamic RTO
estimation and backoff need not adversely affect failover algorithms.

> others include an initial TMO that is likely to be too short in
> situations where one or more RADIUS proxies are traversed, the large
> granularity of the timers specified and the deterministic nature of the
> algorithms used which in the worst case could result in all the clients
> firing repeated salvos of requests in lockstep (not a good way to reduce
> instantaneous server loading!).

I agree that jitter is required here, and that the initial RTO might be
set to a higher value (say, 5 seconds).

Proposed resolution: Reject

Issue 126: Miscellaneous NITs
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 10, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001191.html
Document: EAP-03f
Comment type: E
Priority: S
Section: Various
Rationale/Explanation of issue:

A few minor editorial nits that should probably be handled somehow:

> 1.2
> authenticator
> The end of the EAP link initiating EAP authentication. The
> term authenticator is used in [IEEE.802.1X], and has the
> same meaning in this document.
>
> peer
> The end of the EAP Link that responds to the authenticator.
> In [IEEE.802.1X], this end is known as the Supplicant.

Just wondering about the capitalization. Does IEEE 802.1X really
call something "authenticator" and something else "Supplicant"?

[BA] -
It uses Authenticator and Supplicant. The definition of authenticator
should be:

authenticator
The end of the EAP link initiating EAP authentication. The
term Authenticator is used in [IEEE.802.1X], and
authenticator has the same meaning in this document.


> 1.3 Security claims terminology for EAP methods
>
> These terms are used in particular in Section 7.2:

s/in particular in Section 7.2/to described the security
properties of EAP methods/

> Advantages
> The EAP protocol can support multiple authentication mechanisms
> without having to pre-negotiate a particular one.

Propose to use a slightly different formatting here, maybe
the XML2RFC style='symbol' lists?

> 2. ...
>
> For sessions in which the authenticator acts as a pass-through, it
> MUST determine the outcome of the authentication solely based on
> the Accept/Reject indication sent by the backend authentication
> server; the outcome MUST NOT be determined by the contents of an
> EAP packet sent along with the Accept/Reject indication, or the
> absence of such an encapsulated EAP packet.

This normative language should be moved somewhere else, it
seems a bit out of place in the advantages list. Maybe Section
2.2?

> 2.1. ...
> Supporting multiple authentication methods within an EAP conversation
> would add complexity to the EAP protocol, would enable
> man-in-the-middle attacks (see Section 7.4), and would result in
> interoperability problems, since existing EAP implementations
> typically do not support multiple authentication methods.

The above text seems a bit out of place, its like a statement of
the consensus in the wg and why we have done something.
Suggested rewrite: "Multiple authentication methods within an
EAP conversation are not supported due to their vulnerability to
man-in-the-middle attacks (see Section 7.4) and incompatibility
with existing implementations.", and move this text to be the
lead-in for the last paragraph.

> 6.1 Definition of Terms

Remove the 6.1 heading, I believe the reader will find it
easier to go to the right place in the document if the
structure of the IANA section is "6.1. Packet Codes" and
"6.2. Method Types". Merge the below paragraphs in the above
text, after the first paragraph in 6.

> 6.2 Recommended Registration Policies

Paragraph 2 goes to new 6.1, rest to 6.2.

> Length
>
> The Length field is two octets and indicates the length of the EAP
> packet including the Code, Identifier, Length and Data fields.

I'd prefer "The Length field is two octets. It indicates the number of
octets in the EAP packet including the Code, Identifier, Length, and Data
fields."

[BA] This could be conceived of including MAC headers too, so I'd prefer
we leave it as it is.

Also, Section 4 and 4.1 have duplicate text for the description of
the Length field. Suggest cutting the first text shorter, maybe
"The Length field is two octets and indicates the length of the
complete EAP packet."

> 4.1 ...
>
> Retransmitted Requests MUST be sent with the same Identifier value
> in order to distinguish them from new Requests. The contents of
> the data field is dependent on the Request Type. The peer MUST

"are dependent" ?

> 5. Initial EAP Request/Response Types
>
> All EAP implementations MUST support Types 1-4, which are defined in
> this document, and SHOULD support Type 254. Follow-on RFCs MAY define
> additional EAP Types.

MAY in the last sentence does not appear to be an implementation
requirement. Replace with "Implementations MAY support other
Types defined here or in future RFCs."

> 5.7 Expanded Types
>
> Description
>
> Due to EAP's popularity, the original method Type space, which
> only provides for 255 values, is being allocated at a pace which
> if continued would result in exhaustion within a few years.

This is an interesting status report, but may not be very useful in
a protocol specification. In any case, the text that comes after this
explains the purpose of the scheme. Suggestion: delete the first
sentence.

> 7.11. ...
>
> This can be done by enabling users to configure which are the
> acceptable ciphersuites as a matter of security policy; or, the
> ciphersuite negotiation MAY be authenticated using keying material
> derived from the EAP authentication and a MAC algorithm agreed upon
> in advance by lower-layer peers.


s/MAC/MIC/

Proposed resolution: Accept

Issue 127: Security Terms
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 12, 2003
Reference:
Document: EAP-02
Comment type: E
Priority: S
Section: Various
Rationale/Explanation of issue:

I have a few question marks related to specific
security issues:

> Replay protection
> This refers to protection against replay of EAP messages,
> including EAP Requests and Responses, and method-specific
> success and failure indications.

Question: Is it always so that replay protection of messages
implies replay protection of the full method? I could imagine a
broken method which initializes the replay protection (e.g.
client gives a counter) in a way which makes it possible for
someone to replay the whole method? Suggest s/EAP messages
including EAP requests and responses, and/ an EAP method or its
messages, including/

> Man-in-the-Middle resistance
> The ability for the peer to demonstrate to the
> authenticator that it has acted as the peer for each
> authentication method within the conversation. Similarly,
> the authenticator demonstrates to the peer that it has
> acted as the authenticator for each authentication method
> within the conversation. If this is not possible, then the
> authentication sequence or tunnel may be vulnerable to a
> man-in-the-middle attack.

This applies only for tunnels and sequences, but the text
could be clearer about it. Replace last sentence with "If
this is not possible, then there may be a vulnerability to
a man-in-the-middle attack." Add a new sentence at the
beginning: "This property applies only for the use of
multiple methods in a combination, such as in authentication
sequences or tunnels.".

> MiTM resistance: No

(In many places.) I believe this should really be a "N/A"
instead, because an individual method can do little to
protect against MitM even if its perfect. Unless the
method is a tunnel method, of course, in which case it can do or
not do much for MitM...

> Since EAP is a peer-to-peer protocol, an independent and simultaneous
> authentication may take place in the reverse direction. Both peers
> may act as authenticators and authenticatees at the same time.

Perhaps add a reference to Section 7.7 which talks about the
limitations of two simultaneous authentications.

[BA] "For a discussion of security issues in peer-to-peer
operation, see Section 7.7."

Proposed resolution: Accept

Issue 128: Encapsulation reference
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 12, 2003
Reference:
Document: EAP-03.f
Comment type: E
Priority: S
Section: Various
Rationale/Explanation of issue:

> 1. Introduction
>
> EAP may be used on dedicated links as well as switched circuits, and
> wired as well as wireless links. To date, EAP has been implemented
> with hosts and routers that connect via switched circuits or dial-up
> lines using PPP [RFC1661]. It has also been implemented with switches
> and access points using IEEE 802 [IEEE.802.1990]. EAP encapsulation
> on IEEE 802 wired media is described in [IEEE.802.1X].

Add wireless LANs to this list: "EAP encapsulation on IEEE
wireless LANs is described in [IEEE.802-11.1999].

[BA] -

Ah, but it isn't defined there. It *will* be defined in
IEEE 802.11i, but the encapsulation could be different
from that specified in IEEE 802.1X-2001. For example, it
has been suggested that EAP be encapsulated within
IEEE 802.11 Authenticate frames instead of data frames.

So I would suggest that we add a reference to IEEE 802.11i (a work in
progress) instead.

Proposed resolution: Accept (with modifications)

Issue 129: More NITs
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 12, 2003
Reference:
Document: EAP-03.f
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

From the terms section:

> Displayable Message
> This is interpreted to be a human readable string of
> characters, and MUST NOT affect operation of the protocol.
> The message encoding MUST follow the UTF-8 transformation
> format [RFC2279].

First, I'm not too happy to have keyword behaviour in the terms
section. Secondly, in Section 5.5 this term is used
for the OTP challenge, which I believe contains machine
readable sequence numbers and seeds. That would seem
to affect the behaviour of the protocol! Suggested rewrite:
move the MUST-NOT-affect-operation requirement to the
relevant sections where the term is referred to. Keep the
UTF-8 requirement here. Consider replacing 5.5 "displayable
message" with simply a reference to the OTP RFC format.

> 3.4 Lower layer indications
>
> Lower layer failure indications provided to EAP by the lower layer
> MUST be processed and will cause an EAP exchange in progress to be
> aborted. However, lower layer success indications MUST NOT affect EAP
> message processing so that an EAP implementation MUST NOT conclude
> that authentication has succeeded based on those indications.

The last sentence has too many NOTs, I think. How about "However, lower
layer success indications MUST NOT affect EAP message processing so
that the EAP implementation would conclude ..."

> 4.1 Request and Response
>
> Description
>
> The Request packet (Code field set to 1) is sent by the
> authenticator to the peer. Each Request has a Type field which
> serves to indicate what is being requested. Additional Request
> packets MUST be sent until a valid Response packet is received, or
> an optional retry counter expires.

Retry counter? This seems to be the only place we talk about retry
counters. Perhaps a timeout is assumed instead? If so, "..., or
until a timeout expires."

[BA] This section is trying to indicate that Requests are retransmitted
until a maximum retry counter expires. The goal is not to give up just
because a single retransmission attempt timed out.

> 7.14.
>
> [a] On the peer, all EAP packets MUST be silently discarded, except
> for those with Code=1 (Request) and Type=Method-Type. This
> implies that methods supporting "strict interpretation" do not
> utilize Notification, but instead support their own
> method-specific error messages.

Hmm... perhaps they don't use notification at all and just want
to avoid getting them? Suggested rewrite: "... do not utilize Notification
or support their own method-specific notification messages."

> Where an authenticator operates as a pass-through, it forwards
> packets back and forth between the peer and a backend authentication
> server, based on the EAP layer header fields (Code, Identifier,
> Length). Since pass-through authenticators rely on a backend
> authenticator server to implement methods, the EAP method layer
> header fields (Type, Type-Data) are not examined as part of the
> forwarding decision. The forwarding model is illustrated in Figure 2.
> Compliant pass-through authenticator implementations MUST by default
> be capable of forwarding packets from any EAP method.

This specification is insufficient for me to implement a
passthrough: it doesn't do some things per above, but
what does it do then? I do realize that the proper
specification depends on the AAA protocol translation
for instance, so maybe we shouldn't expect to have a
full specification here. Perhaps reference 2869bis?
Or should we list the actions that the forwarding decision
must make?

[BA] Here are the proposed fixes:

Change the text in Section 1.2 from:

"Displayable Message
This is interpreted to be a human readable string of
characters, and MUST NOT affect operation of the protocol.
The message encoding MUST follow the UTF-8 transformation
format [RFC2279]."

To:

Displayable Message
This is interpreted to be a human readable string of
characters. The message encoding MUST follow the
UTF-8 transformation format [RFC2279].


Change the text in Section 3.4 from:


"Lower layer failure indications provided to EAP by the lower layer
MUST be processed and will cause an EAP exchange in progress to be
aborted. However, lower layer success indications MUST NOT affect EAP
message processing so that an EAP implementation MUST NOT conclude
that authentication has succeeded based on those indications."

To:


"Lower layer failure indications provided to EAP by the lower layer
MUST be processed and will cause an EAP exchange in progress to be
aborted. However, lower layer success indications MUST NOT affect EAP
message processing; an EAP implementation cannot conclude
that authentication has succeeded based on those indications."

[Jari Arkko]:

In Section 5.5 change:

"The Request contains a displayable message containing an OTP challenge."

To:

"The Request contains an OTP challenge in the format described
in [RFC2289]."

Change the text in Section 7.14 from:


"[a] On the peer, all EAP packets MUST be silently discarded, except
for those with Code=1 (Request) and Type=Method-Type. This
implies that methods supporting "strict interpretation" do not
utilize Notification, but instead support their own
method-specific error messages."

To:

"[a] On the peer, all EAP packets MUST be silently discarded, except
for those with Code=1 (Request) and Type=Method-Type. This
implies that methods supporting "strict interpretation" do not
send or expect to receive Notification-Requests but instead support their own
method-specific error messages."

Change:

"Where an authenticator operates as a pass-through, it forwards
packets back and forth between the peer and a backend authentication
server, based on the EAP layer header fields (Code, Identifier,
Length). Since pass-through authenticators rely on a backend
authenticator server to implement methods, the EAP method layer
header fields (Type, Type-Data) are not examined as part of the
forwarding decision. The forwarding model is illustrated in Figure 2.
Compliant pass-through authenticator implementations MUST by default
be capable of forwarding packets from any EAP method."

To:

"Where an authenticator operates as a pass-through, it forwards
packets back and forth between the peer and a backend authentication
server, based on the EAP layer header fields (Code, Identifier,
Length). This includes performing validity checks on the Code, Identifer and
Length fields, as described in Section 4.1.

Since pass-through authenticators rely on a backend
authenticator server to implement methods, the EAP method layer
header fields (Type, Type-Data) are not examined as part of the
forwarding decision. The forwarding model is illustrated in Figure 2.
Compliant pass-through authenticator implementations MUST by default
be capable of forwarding packets from any EAP method. The use of
the RADIUS protocol for encapsulation of EAP in pass-through
operation is described in [RFC2869bis]."
 

Proposed resolution: Accept

Issue 130: Potential Deadlock
Submitter name: Lauri Tarkkala
Submitter email address: ltarkkal@ssh.com
Date first submitted: May 13, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

There exist a couple of deadlocks currently in the proposed EAP
protocol as used in e.g. PPP. I do not recall it being discussed
earlier.

Assume we have two PPP peers (A and B) negotating LCP, and both
desire to authenticate each other with EAP. A authenticates B
with EAP and B authenticates A with EAP.

Now assume that both EAP Success messages are "lost" after the
authentication rounds are completed, and since both parties
now have an EAP authentication pending, they will not
start negotiating a NCP (e.g. IPCP) for the link. The
system is effectively in deadlock.

There are some solutions:

1) Require that Success messages are ACK'd.

2) Require authenticatee to retransmit last message untill it
receives a final (Success/Failure) response from the client.

Neither of these is backwards compatible. Currently the only
sensible solution for a PPP implementation is to initiate
an NCP when it "guesses" that an EAP client has completed
(after a suitable timeout) to avoid the above deadlock. This
is of course against the current recommendation of this WG, but
that recommendation means very little if it causes a deadlock.

Note that the lack of an explicit ACK of success means that
it is difficult in this case to distinguish between
"sequential authentication" where several methods are
applied after each other and a dropped EAP-Success.

I do not propose a fix in this submission, because this
interplays with other issues currently under discussion,
but I wanted a separate issue up on this, so it does
not get forgotten.

Lauri

[Pasi Eronen]:

Lauri Tarkkala wrote:

> Assume we have two PPP peers (A and B) negotating LCP, and both
> desire to authenticate each other with EAP. A authenticates B
> with EAP and B authenticates A with EAP.
>
> Now assume that both EAP Success messages are "lost" after the
> authentication rounds are completed, and since both parties
> now have an EAP authentication pending, they will not
> start negotiating a NCP (e.g. IPCP) for the link. The
> system is effectively in deadlock.

I think this situation is not any different from the one-way
case. 2284bis already mentions that Success and Failure packets
are not acknowledged, and thus timeouts are possible if the link
has high error rate.

Consider a single EAP conversation where the Success packet is
lost. This results in a timeout for the peer. If the peer is
happy with the overall situation (e.g. it would enable the link
if it received a Success packet), it may enable the link anyway
(initiate NCP in case of PPP).

In case of two simultaneous EAP conversations, the PPP
connection will succeed if both parties follow this
behavior. Also, the party that has longer timeout may consider
a NCP packet as "lower layer success indication", and process
it appropriately (if we allow lower layer success indications,
as I proposed in my previous message).

(The EAP implementations are not in a true deadlock, because
on both parties, one of the EAP conversations has already
ended, and the conversation instance that is "dangling" is
not waiting for anything from the other "dangling" instance).

[Jari Arkko]:


Pasi.Eronen@nokia.com wrote:

> I think this situation is not any different from the one-way
> case. 2284bis already mentions that Success and Failure packets
> are not acknowledged, and thus timeouts are possible if the link
> has high error rate.
...
> (The EAP implementations are not in a true deadlock, because
> on both parties, one of the EAP conversations has already
> ended, and the conversation instance that is "dangling" is
> not waiting for anything from the other "dangling" instance).

Yes, I think that is right.

Lauri Tarkkala wrote:

> Note that the lack of an explicit ACK of success means that
> it is difficult in this case to distinguish between
> "sequential authentication" where several methods are
> applied after each other and a dropped EAP-Success.

That's right, but we've discouraged the use of sequences.
So I don't think this is an issue.

Proposed Resolution: Reject

Issue 131: Lower layer success indications
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: May 13, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: S
Section: 3.4
Rationale/Explanation of issue:

Lower layer success indications could (or even
should) be processed in some circumstances (when the peer would
be willing to accept an EAP Success message).

How about this?

In Section 3.4, Change:

"Lower layer failure indications provided to EAP by the lower layer
MUST be processed and will cause an EAP exchange in progress to be
aborted. However, lower layer success indications MUST NOT affect EAP
message processing so that an EAP implementation MUST NOT conclude
that authentication has succeeded based on those indications."

To:

   "If a peer receives a lower layer success indication when it
   would be willing to accept an EAP Success message, it MAY
   conclude that the Success message was lost, and behave as it
   had received a Success message. In all other circumstances,
   lower layer success indications MUST NOT affect EAP message
   processing."

(Or should that MAY be a SHOULD?)

[Discussion on 5/14/03 Conference Call]:

Issues 121 and 131
------------------

While nobody currently implements lower layer indications, they
could be useful in some circumstances to avoid long timeouts.
However, we want to avoid the situation where the peer enables
the link but the authenticator does not.

Thus, I think the agreement was roughly:
- The peer may process lower layer success indications if
  it would be willing to accept an EAP Success packet at that point.
- If the peer has not received a method-specific success
  message OR a lower layer success indication, if it times out
  when waiting for Success, it does not enable the link
  (even if it has authenticated the authenticator).
- We need some text describing the limitations of lower
  layer indications. E.g. depending on the link layer,
  they may get lost; and they should not have naturally
  occuring "false positives".

These lower layer indications could be less well protected than
EAP Success, but it seems that an attacker who spoofs a lower
layer indication can't actually achieve anything, because at
that point the peer is anyway satisfied (e.g. has authenticated
the authenticator, if using a mutually authenticating method).
And if the environment contains active attackers, we are
presumably deriving keys anyway.

In 802.*, EAPOL-Key message is sort-of lower layer success
indication (since the server would not send it unless it had
succeeded). Certainly after the four-way handshake is concluded,
you know that you received access.

We also discussed if Finished message in EAP-TLS is a
method-specific success message. Each method can define
whatever it wants, but in this case it probably is: since
the peer's last response does not contain anything useful,
the authenticator can make its decision before sending Finished
(and if the decision is no, send Alert).

[Jari Arkko]:

>    o  What to do if we get a timeout, Policy.isSatisfied() is TRUE, but
>       methodState is not CON_ACC? Issue:  can peer go into authenticated
>       state without getting a Success -either internal to the method
>       (Con_ACC) or and EAP Success?

IMHO, no. (But perhaps you have discussed this as a part of the Success
thread; I didn't check.)

>    o  What to do if we get an altAccept, Policy.isSatisfied() is TRUE,
>       but methodState is not CON_ACC? Issue: same as above

As above.

[BA] In Issue 121 we have defined the circumstances in
which the peer may eventually conclude that a Success packet
has been lost. In those same circumstances, the proposed
change in Issue 131 allows the peer to conclude that a Success packet
has been lost, without having to wait the full timeout period.
It therefore represents an optimization.

Here are the proposed fixes:

In Section 3.4, Change:

"Lower layer failure indications provided to EAP by the lower layer
MUST be processed and will cause an EAP exchange in progress to be
aborted. However, lower layer success indications MUST NOT affect EAP
message processing so that an EAP implementation MUST NOT conclude
that authentication has succeeded based on those indications."

To:

"Section 4.2 defines the circumstances in which a peer,
having concluded an EAP method with successful acknowledged
result indications, may conclude that a Success packet has
been lost after expiration of a timeout. In those same
circumstances, if a peer receives a lower layer success
indication as defined in Section 7.12, it MAY conclude that
a Success packet has been lost without waiting for a timeout."

In Section 7.12, change:

" [c] IEEE 802.11 wireless LANs. In IEEE 802.11, link layer
indications include Disassociate and Deauthenticate frames (link
failure indications), and Association and Reassociation Response
frames (link success indications). These messages are not
authenticated or integrity protected, and although they are not
forwardable, they are spoofable by an attacker within range."

To:

" [c] IEEE 802.11 wireless LANs. In IEEE 802.11, link layer
indications include Disassociate and Deauthenticate frames (link
failure indications), and the first message of the 4-way handshake
(link success indication). These messages are not
authenticated or integrity protected, and although they are not
forwardable, they are spoofable by an attacker within range."

Proposed resolution: Accept

Issue 132: Redundancy of Section 7.14
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: May 13, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: S
Section: 7.14
Rationale/Explanation of issue:
 

I think we don't need Section 7.14 anymore. The
"strict interpretation" was very useful when it was possible
to switch from one method to another (and it was possible that
successful authorization result would require more than one
successful EAP method).

Now sequences are forbidden, and the "usual" ("non-strict")
processing rules specify the same behavior. E.g. 2.1 says that
the peer must silently discard requests for other types, and 4.2
deals with Success/Failure.

The only thing left is Notifications. I think this could be
dealt with in Section 5.2 by adding the following after the first
paragraph.

   "An EAP method MAY indicate within its specification that
   Notification messages must not be sent during that method.
   In this case, the peer MUST silently discard Notification
   Requests from the point where an initial Request for
   that Type is answered with a Response of the same Type."

(and by removing 7.14)

[Yoshihiro Ohba]:

This additional text would require a change in section 5.2 from:

"The peer MUST respond to a Notification Request with a
Notification Response; a Nak Response MUST NOT be sent."

To:

"The peer MUST respond to a Notification Request with a Notification
Response unless the EAP authentication method specification prohibits
the use of Notification message. In any case, a Nak Response MUST NOT
be sent in response to a Notification Request."

Proposed Resolution: Accept
 

Issue 133: IESG Comments on RFC 2869bis
Submitter name: Russ Housley
Submitter email address: housley@vigilsec.com
Date first submitted: May 15, 2003
Reference:
Document: RFC2869bis-21
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

 Section 4.1 says:

RADIUS/EAP is used in order to provide authentication and authorization
for network access. As a result, both the RADIUS and EAP portions of
the conversation are open to attack.

Does "open to attack" mean likely target of attack? If so, please use
these words. If not, please clarify.

Section 4.2 says:

When IPsec ESP is used with RADIUS, DES-CBC SHOULD NOT be used as the
encryption transform, and per-packet authentication, integrity and
replay protection MUST be used. A typical IPsec policy for an IPsec-
capable RADIUS client is "Initiate IPsec, from me to any destination
port UDP 1812".

This causes an IPsec SA to be set up by the RADIUS client prior to
sending RADIUS traffic. If some RADIUS servers contacted by the client
do not support IPsec, then a more granular policy will be required:
"Initiate IPsec, from me to IPsec-Capable-RADIUS-Server, destination
port UDP 1812".

I agree that DES-CBC should not be used; however, we ought to tell the
implementors what algorithm ought to be used for
interoperability. Further, the text requires integrity protection, but no
integrity mechanisms are discussed. Also, the discussion of IPsec policy
should not be split between these two paragraphs.

I propose the following:

When IPsec ESP is used with RADIUS, per-packet authentication,
integrity and replay protection MUST be used. AES-CBC SHOULD be
used as the encryption transform, and HMAC-SHA1-96 SHOULD be used
as the authentication function. DES-CBC SHOULD NOT be used as the
encryption transform.

A typical IPsec policy for an IPsec-capable RADIUS client is
"Initiate IPsec, from me to any destination port UDP 1812". This
IPsec policy causes an IPsec SA to be set up by the RADIUS client
prior to sending RADIUS traffic. If some RADIUS servers contacted
by the client do not support IPsec, then a more granular policy
will be required: "Initiate IPsec, from me to
IPsec-Capable-RADIUS-Server, destination port UDP 1812".

Later in section 4.2, the text says: "... it is important that trust be
demonstrated ..." In this context, "trust" is very ambiguous. Please
reword. I think that the paragraph should discuss "authentication" and
"authorization."

Later in section 4.2, change "Certificate Authority (CA)" to
"Certification Authority (CA)."

In section 4.3.1, please add an informative reference for ARP.

In section 4.3.2, please add a pointer to Section 4.2 in the very last
sentence.

In section 4.3.8, please change "even where IPsec is utilized for
transmission layer security" to "even where IPsec is used."


In section 4.3.9, the text says: "As described in Section 4 ..." Since
this text appears in a subsection of section 4 and there is no text
following the single digit heading, a more precise pointer is appropriate.

In section 4.3.9, the last paragraph should tell what security services
are expected from the "wrapping mechanism." I believe that they are
confidentiality, integrity, and data origin authentication.

Proposed Resolution: Accept

Issue 134: EAP transport issues
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: May 15, 2003
Reference:
Document: EAP-02
Comment type: T
Priority: S
Section: 4.1, 4.3
Rationale/Explanation of issue:

RFC 2988 doesn't include support for jittering, and includes a good deal of
material that doesn't relate to EAP. As a result, more specific guidance
is required in order to make it clear how dynamic retransmission timeout
estimation is to be applied.

In Section 4.1, delete

"Because the authentication process will often involve user
input, some care must be taken when deciding upon
retransmission strategies and authentication timeouts. By
default, where EAP is run over an unreliable lower layer, the
EAP retransmission timer SHOULD be computed as described in
[RFC2988]. This includes use of Karn's algorithm to filter RTT
estimates resulting from retransmissions. A maximum of 3-5
retransmissions is suggested.

When run over a reliable lower layer (e.g., EAP over ISAKMP/
TCP, as within [PIC]), the authenticator retransmission timer
SHOULD be set to an infinite value, so that retransmissions do
not occur at the EAP layer. Note that in this case the peer
may still maintain a timeout value so as to avoid waiting
indefinitely for a Request.

Where the authentication process requires user input, the
measured round trip times are largely determined by user
responsiveness rather than network characteristics, so that RTO
estimation is not helpful. Instead, the retransmission timer
SHOULD be set so as to provide sufficient time for the user to
respond, with longer timeouts required in certain cases, such
as where Token Cards (see Section 5.6) are involved.

In order to provide the EAP authenticator with guidance as to
the appropriate timeout value, a hint can be communicated to
the authenticator by the backend authentication server (such as
via the RADIUS Session-Timeout attribute)."

Add Section 4.3:

"4.3 Retransmission Behavior

Because the authentication process will often involve user
input, some care must be taken when deciding upon
retransmission strategies and authentication timeouts. By
default, where EAP is run over an unreliable lower layer, the
EAP retransmission timer SHOULD be dynamically estimated.
A maximum of 3-5 retransmissions is suggested.

When run over a reliable lower layer (e.g., EAP over ISAKMP/TCP
as within [PIC]), the authenticator retransmission timer
SHOULD be set to an infinite value, so that retransmissions do
not occur at the EAP layer. The peer may still maintain a
timeout value so as to avoid waiting indefinitely for a Request.

Where the authentication process requires user input, the
measured round trip times may be determined by user
responsiveness rather than network characteristics, so that dynamic
RTO estimation may not be helpful. Instead, the retransmission timer
SHOULD be set so as to provide sufficient time for the user to
respond, with longer timeouts required in certain cases, such
as where Token Cards (see Section 5.6) are involved.

In order to provide the EAP authenticator with guidance as to
the appropriate timeout value, a hint can be communicated to
the authenticator by the backend authentication server (such as
via the RADIUS Session-Timeout attribute).

In order to dynamically estimate the EAP retransmission timer,
the algorithms for estimation of SRTT, RTTVAR and RTO described
in [RFC2988] are RECOMMENDED, including use of Karn's algorithm,
with the following potential modifications:

a) In order to avoid synchronization behaviors that can occur with
fixed timers among distributed systems, each time the retransmission timer
is calculated with a jitter by using the RTO value and
randomly adding a value drawn between -RTOmin/2 and RTOmin/2. Alternative
calculations to create jitter MAY be used. These MUST be pseudo-
random, generated by a PRNG seeded as per [RFC1750].

b) When EAP is transported over a single link (as
opposed to over the Internet), smaller values of RTOinitial,
RTOmin and RTOmax MAY be used. Recommended values are
RTOinitial=1 second, RTOmin=200ms, RTOmax=20 seconds.

c) When EAP is transported over a single link (as opposed
to over the Internet), estimates MAY be done on a
per-authenticator basis, rather than a per-session
basis. This enables the retransmission estimate to make the
most use of information on link-layer behavior

d) An EAP implementation MAY clear SRTT and RTTVAR after
backing off the timer multiple times as it is likely that the
current SRTT and RTTVAR are bogus in this situation. Once SRTT and
RTTVAR are cleared they should be initialized with the next RTT
sample taken as described in [RFC2988] equation 2.2."

Proposed resolution: Accept

Issue 135: SSID in PRF
Submitter name: Bob Moskowitz
Submitter email address: rgm@trusecure.com
Date first submitted: May 15, 2003
Reference:
Document: KeyFramework-06
Comment type: T
Priority: S
Section: Appendix F
Rationale/Explanation of issue:

In appendix F, I might think that the SSID should be included in the PRF.

[BA] The notion of an SSID is media specific, but
EAP is media independent, so that inclusion of the
SSID is not appropriate.

Proposed resolution: Reject

Issue 136: SM-02 NITs
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 14, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001217.html
Document: SM-02
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:
 

1. Abstract is too long, appears to be more of an introduction than
a brief abstract. Suggested rewrite:

   "This document describes informational state machines for the
    participants in the Extensible Authentication Protocol (EAP).
    State machines are given for the EAP peers and authenticators,
    the passthrough method, and for the backend adapter. The
    state machine for the EAP authenticator can operate with
    local authentication or through a backend authentication
    server connected via an Authentication, Authorization,
    and Accounting (AAA) protocol. The state machines have
    been described using the EAP multiplexing model, which
    divides the events and actions to those handled by the
    EAP multiplexer and those handled by the EAP methods."

2. Isn't it customary to expand abbreviations in the
title? Perhaps this document could be called "State Machines
for the Extensible Authentication Protocol (EAP)"?

3. Can we synchronize the figures in Section 2.2 of RFC
2284bis-03, and Section 2 of the SM draft? At the same
time, it might make sense to call Section 2 "Introduction",
and treat the above additional subjects:

    - Document authority (take text from 3.2)

Also, it might make sense to combine the format text
in the first and last paragraphs of section 2 in one
place.

4. In 3.2, perhaps replace the last sentence with
"If there are any discrepancies between this document
and [RFC2284bis], [RFC2869bis], the latter two take
precedence."

5. In 4.2, perhaps the notation in "IN: eapReqData, (reqId)"
could be clarified. I suppose the paranthesis mean optional
or out-of-scope information? Or do they mean parameters to
a function?

6. Spelling: Passtrhough, peerto.

7. References to be split to normative and non-normative.
For this document, I believe the normative ones are 2119,
2284bis, and 2869bis. IEEE documents are non-normative.

8. It might make sense to refer to just 2284bis, not 2284.

>    o  Do we need a new variable to signal the lower layer that keying
>       material is available (in eapKey), or is it enough that the lower
>       layer checks if eapKey!=NONE after getting eapSuccess?

I think it may be more readable to just use one variable.

Proposed resolution: Accept

Issue 137: Authenticator Timeout Failure Issue
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 14, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001218.html
Document: SM-02
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

2284bis-03.f:

    The authenticator MUST NOT send a Success or Failure packet as a
    result of a timeout. After a suitable number of timeouts have
    elapsed, the authenticator SHOULD end the EAP conversation.

sm-02 authenticator:

    From the figure we can see that when aWhile goes to zero,
    you will go to RETRANSMIT, possibly retransmit a few times,
    and eventually go to FAILURE, and set eapReqData.

I have three issues with the above:

1) 2284bis could be clearer, imho, that even after a number
    of timeouts you don't send a Failure. Suggested rewrite:
    "The authenticator is responsible for retransmitting requests
     as described in Section 4.1. After a suitable number of
     retransmissions, the authenticator SHOULD end the EAP
     conversation. The authenticator MUST NOT send a Success
     or Failure packet when retransmitting or when it fails
     to get a response from the peer."

2) The FAILURE state constructs a Failure response,
    but 2284bis forbids this to be sent when the
    failure is due to a timeout (I think).

3) You could say perhaps that the Failure response
    is not really sent, and is only internally
    constructed, because eapReq is not set. However,
    if this is true then FAILURE and SUCCESS states
    both have an issue when used in other cases:
    they don't set eapReq either.

    Suggested fix: set eapReq in FAILURE and SUCCESS.
    Provide a different state for timeout-based
    failures, which does nothing.

[Pasi Eronen]:

This issue was listed in Appendix A of sm-02 draft
as a "known inconsistency" between 2284bis and SM
(the Failure response is actually sent although
eapReq is not set; see Section 5.1 of sm-02 draft).

Here's an updated diagram that fixes this, and also
attempts to show how timeouts are calculated
(changes to -02 version are shown in blue).

http://www.cs.hut.fi/~peronen/eap/eap_authenticator_14052003.png

(Does the handling of timeouts look ok? The idea is that
if a method has some idea what the timeout should be, it
sets methodTimeout. eapRttEstimate comes from the lower
layer)

Proposed resolution: Accept

Issue 138: Miscellaneous -03 issues
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 14, 2003
Reference:
Document: EAP-03
Comment type: T
Priority: S
Section: 2, 4
Rationale/Explanation of issue:

The description of the Length field in Section 4 is as follows:

The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length and Data fields.
Octets outside the range of the Length field should be treated as
Data Link Layer padding and should be ignored on reception.

What happens if the Length field indicates a length greater than
the received number of octets? Perhaps this should also be specified:

A message with the Length field set to a value larger than the
number of received octets MUST be silently discarded.

Also, perhaps change "should be ignored" to "MUST be ignored".

2284bis-03.f:

The authenticator MUST NOT send a Success or Failure packet as a
result of a timeout. After a suitable number of timeouts have
elapsed, the authenticator SHOULD end the EAP conversation.

2284bis could be clearer, imho, that even after a number
of timeouts you don't send a Failure. Suggested rewrite:

"The authenticator is responsible for retransmitting requests
as described in Section 4.1. After a suitable number of
retransmissions, the authenticator SHOULD end the EAP
conversation. The authenticator MUST NOT send a Success
or Failure packet when retransmitting or when it fails
to get a response from the peer."

[BA] Here are the fixes:

In Section 2, change:

"The authenticator MUST NOT send a Success or Failure packet as a
result of a timeout.  After a suitable number of timeouts have
elapsed, the authenticator SHOULD end the EAP conversation."

To:

"The authenticator is responsible for retransmitting requests
as described in Section 4.1. After a suitable number of
retransmissions, the authenticator SHOULD end the EAP
conversation. The authenticator MUST NOT send a Success
or Failure packet when retransmitting or when it fails
to get a response from the peer."

In Section 4, change:

"The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length and Data fields.
Octets outside the range of the Length field should be treated as
Data Link Layer padding and should be ignored on reception."

To:

" The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length and Data fields.
Octets outside the range of the Length field should be treated as
Data Link Layer padding and MUST be ignored on reception.
A message with the Length field set to a value larger than the
number of received octets MUST be silently discarded."


Proposed resolution: Accept
 

Issue 139: Response to duplicate requests
Submitter name: Nick Petroni
Submitter email address: npetroni@cs.umd.edu
Date first submitted: May 14, 2003
Reference:
Document: EAP-03
Comment type: T
Priority: S
Section: 4.1
Rationale/Explanation of issue:

"If a peer receives a duplicate Request before it has
sent a Response, but after it has determined the initial Request
to be valid (i.e. it is waiting for user input), it MUST silently
discard the duplicate Request. "

Seems like the peer should
be able to send as many responses as it gets requests for the same
id.  It may not send a response for prior id after it has sent a
response to current id.  This is how the state machine works, and
hopefully the wording in 2284bis will be modified to match.

[BA] Here are the proposed fixes:

Change:

"If a peer receives a valid duplicate Request for which it has
already sent a Response, it MUST resend its original Response. If
a peer receives a duplicate Request before it has sent a Response,
but after it has determined the initial Request to be valid (i.e.,
it is waiting for user input), it MUST silently discard the
duplicate Request. An EAP message may be found invalid for a
variety of reasons: failed lower layer CRC or checksum, malformed
EAP packet, EAP method MIC failure, etc."

To:

"If a peer receives a valid duplicate Request for which it has
already sent a Response, it MUST resend its original Response
without reprocessing the Request. Requests MUST be processed
in the order that they are received, and MUST be processed
to their completion before inspecting the next Request."

Proposed resolution: Accept
 

Issue 140: SM incompatibilities with RFC 2284bis
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: May 14, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-May/001222.html
Document: SM-02
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

I'm trying to go through and check the state machine against the
2284bis document, to see if they are consistent and that neither
one lacks anything. Below I'll treat each individual state in the
peer state machine and discuss whether the corresponding
funtionality exists in 2284bis. The summary is that there
specifications are pretty well in sync, but a few issues
may need to be worked on.

DISABLED: OK -- not covered in 2284bis

INITIALIZE: OK -- more detail in sm
   - I think this is inline with Section 2.1,
     though 2284bis does not explicitly talk
     about this

DISCARD: OK (with a nit) -- 2284bis has more detail
   - Section 4 has a silent discard for other Code values
   - I also recently sent e-mail about whether Length >=
     received PDU should
     cause a silent discard. This too might be something
     that parseEapReq does, though it isn't specified in
     detail.
   - Perhaps there should be a "logEvent" call, as is
     required in 2284bis in the silent discard definition?

RETRANSMIT: OK (but one open issue) -- same level of detail
   - Section 4:
       If a peer receives a valid duplicate Request for which it has
       already sent a Response, it MUST resend its original Response.
   - But note the open issue listed in the sm document about
     multiple responses to the same retransmitted request while
     waiting for user input

NOTIFICATION: OK -- same level of detail
    - I think the state machine is in line with Section 2.1

SEND_RESPONSE: OK -- this is just an abstraction in the sm

GET_METHOD: NOT OK -- same level of detail, one nit and one problem
    - Incoming arrow valid according to Section 2.1 and Section 4
    - First if branch valid according to Section 2.1
    - Second if branch valid, but note that it would be imho
      clearer if setting the methodState to NORMAL in METHOD
      would also result in setting currentMethod to NONE.
      Then we could remove "resetCurrentMethod"? On the other
      hand, you appear to rely on currentMethod to stay intact
      for forbidding sequences... right?
    - The third if branch appears unclear or perhaps incorrect. Section 2.1:
       "A peer MUST NOT send a Nak (legacy or expanded) in reply to a
        Request, after an initial non-Nak Response has been sent. Since
        spoofed EAP Request packets may be sent by an attacker, an an
        authenticator receiving an unexpected Nak SHOULD silently discard it
        and log the event."
       And here we send a Nak (even if we were in the middle of
       another method). The spec talks about it being invalid for
       the authenticator to send other types while already doing
       one authentication method. We also talk about the strict
       mode, where such requests would be silently discarded.
       But I didn't find a place that says what we should do
       outside the strict mode for such requests. So should we
       respond with a Nak, as the sm does? Or silent discard?
       If silent discard, we need to split the third if branch
       into two, one dealing with currentmethod = NONE and
       one with the other case.

METHOD: NOT OK -- one nit and one small error
    - Aligned with A.1 in general, but:
    - Perhaps there should be a call to logEvent, to show the
      SHOULD requirement in A.1?
    - A.1 allows MIC failure to be a fatal error. This does
      not appear to be handled by the sm.

The following MUST requirement from 2284bis don't appear to
be handled:

    Nak (Type 3) or
    Expanded Nak (Type 254) are valid only for Response packets, they
    MUST NOT be sent in a Request.

(I'm assuming this can be interpreted on the peer side as silent
discard...)

I didn't look at FAILURE and SUCCESS, because alternative indications
were being discussed on the list. Also, the other state machines
remain to be checked...

[Pasi Eronen]:

Big thanks for reviewing the state machine document!
We've spent so much time on those diagrams what we're
probably blind to any problems in it by now :-)

> DISCARD: OK (with a nit) -- 2284bis has more detail
>   - Section 4 has a silent discard for other Code values
>   - I also recently sent e-mail about whether Length >=
>     received PDU should
>     cause a silent discard. This too might be something
>     that parseEapReq does, though it isn't specified in
>     detail.

Yes, parseEapReq is supposed to do this: if the PDU has
invalid length or code, it doesn't set rxReq (which results
in silenty discard).

>   - Perhaps there should be a "logEvent" call, as is
>     required in 2284bis in the silent discard definition?

We discussed this, but decided not to show any logging calls
here. Real implementations will probably log many events not
explicitly mentioned for logging in 2284bis (such as success
and failure!), and logging does not change the behavior of the
change machine.

(For the same reason, we didn't include any "statistics"
variables that would not change the operation of the state
machine, but could be interesting to show in some authenticator
management interface)

> GET_METHOD: NOT OK -- same level of detail, one nit and one problem
>    - Incoming arrow valid according to Section 2.1 and Section 4
>    - First if branch valid according to Section 2.1
>    - Second if branch valid, but note that it would be imho
>      clearer if setting the methodState to NORMAL in METHOD
>      would also result in setting currentMethod to NONE.
>      Then we could remove "resetCurrentMethod"? On the other
>      hand, you appear to rely on currentMethod to stay intact
>      for forbidding sequences... right?

There's a new version of the peer diagram that has simplified
this state and METHOD state considerably. You may want to review
that one instead (although we don't have yet the explanatory
text for it).

It's available at:
http://www.cs.hut.fi/~peronen/eap/eap_peer_13052003.png

Regarding your question: Setting methodState to NORMAL can't
reset currentMethod, because NORMAL is used for two different
purposes: when the method has ended, and when the method can
either continue or end (this is one of the things handled
differently in 13052003 version).

> - The third if branch appears unclear or perhaps incorrect. Section 2.1:
>    "A peer MUST NOT send a Nak (legacy or expanded) in reply to a
>     Request, after an initial non-Nak Response has been sent. Since
>     spoofed EAP Request packets may be sent by an attacker, an an
>     authenticator receiving an unexpected Nak SHOULD silently discard
>     it and log the event."
>
>     And here we send a Nak (even if we were in the middle of
>     another method). The spec talks about it being invalid for
>     the authenticator to send other types while already doing
>     one authentication method. We also talk about the strict
>     mode, where such requests would be silently discarded.
>     But I didn't find a place that says what we should do
>     outside the strict mode for such requests. So should we
>     respond with a Nak, as the sm does? Or silent discard?
>     If silent discard, we need to split the third if branch
>     into two, one dealing with currentmethod =NONE and
>     one with the other case.

Again, this is handled quite differently in 13052003 version,
but the basic principle is correct in sm-02 version as well: the
third branch (that sends the Nak) is reached only if
currentMethod is NONE or IDENTITY (assuming we're not inside a
tunnel, something removed in 13052003 version completely).
So we are not in the middle of a method, and haven't sent any
responses for Types >=4 yet.

> METHOD: NOT OK -- one nit and one small error
>     - Aligned with A.1 in general, but:
>     - Perhaps there should be a call to logEvent, to show the
>      SHOULD requirement in A.1?
>    - A.1 allows MIC failure to be a fatal error. This does
>      not appear to be handled by the sm.

As an unintended consequence of other changes, the last
item seems to be better handled in 13052003 version :-)

Proposed resolution: Discuss

Issue 141: Minor NITs
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: May 19, 2003
Reference:
Document: EAP-03
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

- Section 5: "In this case, the input should be processed using an
appropriate stringprep [RFC3454] profile, and encoded in octets using
UTF-8 encoding [RFC2279]. A possible registered stringprep profile
is specified in [SASLPREP]."

SASLPREP is not (yet) a registered stringprep profile. Proposed
text: "A preliminary version of a possible stringprep
profile is described in [SASLPREP]."

- Section 1.3: I think it would be simpler if the terminology section
only defined the terms, but would not specify any requirements
for EAP implementations. At least, unnecessary duplication
of those requirements should be avoided. Here are some
proposed changes that would simplify 1.3 somewhat:

- Master Session Key (MSK): delete second paragraph (similar text
was already deleted from 7.10)
- Delete "EAP Master key (MK)": no longer necessary since
the term is not used anywhere.
- Key derivation: Delete the last two sentences (unnecessary
duplication)
 - Key strength: Delete (unnecessary duplication, since it's
already specified in main text)
- Extended Master Session Key (EMSK): Proposed replacement:
"Additional keying material that is derived between the EAP
client and server, reserved for future use."
- Cryptographic separation: delete. Instead, add to section 7.10,
4th paragraph, after the first sentence: "That is, knowledge
of one substring MUST NOT help in recovering some other
substring without breaking some hard cryptographic assumption."

[Jari Arkko] - In general I agree with what has been
stated in http://www.drizzle.com/~aboba/EAP/eapissues.html#Issue%20141
and support the proposed changes. However, I think the term "cryptographic
separation" should stay in the document, because the definition
is more precise than the suggested replacement.

Also, regarding the MSK and EMSK, should we instead
move the normative language to the main body, not
delete it completely?

[BA]  Here are the proposed fixes:

In Section 5, change:

"In this case, the input should be processed using an
appropriate stringprep [RFC3454] profile, and encoded in octets using
UTF-8 encoding [RFC2279]. A possible registered stringprep profile
is specified in [SASLPREP]."

To:

"In this case, the input should be processed using an
appropriate stringprep [RFC3454] profile, and encoded in octets using
UTF-8 encoding [RFC2279]. A preliminary version of a possible
stringprep profile is described in [SASLPREP]."

In Section 1.3, change:

"EAP Master key (MK)
A key derived between the EAP client and server during the
EAP authentication process that is purely local to the EAP
method. The MK MUST NOT be exported from the EAP method or
be made available to a third party. Since derivation of
the MK is a residue of the successful completion of the EAP
authentication exchange, proof of MK possession may be used
to shorten future EAP exchanges between the same EAP client
and server, a technique known as "fast resume".

Master Session Key (MSK)
Keying material that is derived between the EAP client and
server. The MSK is used in the derivation of Transient
Session Keys (TSKs) for the ciphersuite negotiated between
the EAP peer and authenticator. Where a backend
authentication server is present, acting as an EAP server,
it will typically transport the MSK to the authenticator.

The MSK differs from the MK in that it not assumed to
remain local to the EAP method, and is known by all parties
in the EAP exchange: the peer, authenticator and the
authentication server (if present). The MSK MAY be derived
from the MK via a one-way function, or it may be an
independent quantity. However possession of the MSK MUST
NOT provide any information useful in determining the MK.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP client
and server that is exported by the EAP method. However,
unlike the MSK, the EMSK is known only to the EAP peer and
EAP server and MUST NOT be provided to a third party. The
EMSK therefore MUST NOT be transported by the backend
authentication server to the authenticator. The EMSK is
reserved for future uses that are not defined yet. For
example, it could be used to derive additional keying
material for purposes such as fast handoff,
man-in-the-middle vulnerability protection, etc."

To:


"Master Session Key (MSK)
Keying material that is derived between the EAP client and
server. The MSK is used in the derivation of Transient
Session Keys (TSKs) for the ciphersuite negotiated between
the EAP peer and authenticator. Where a backend
authentication server is present, acting as an EAP server,
it will typically transport the MSK to the authenticator,
so that in this case, the MSK is available to the peer,
authenticator and authentication server.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP client
and server that is exported by the EAP method. Unlike
the MSK, the EMSK is known only to the EAP peer and
EAP server and is not provided to a third party. The EMSK is
reserved for future uses that are not defined yet. For
example, it could be used to derive additional keying
material for purposes such as fast handoff,
man-in-the-middle vulnerability protection, etc."

In Section 7.10, change:

" Non-overlapping substrings of the MSK MUST be cryptographically
separate from each other. This is required because some existing
ciphersuites form TSKs by simply splitting the MSK to pieces of
appropriate length. Likewise, non-overlapping substrings of EMSK
MUST be cryptographically separate from each other, and from
substrings of the MSK."

To:

" Non-overlapping substrings of the MSK MUST be cryptographically
separate from each other, as defined in Section 1.3. That is, knowledge
of one substring MUST NOT help in recovering some other substring without
breaking some hard cryptographic assumption. This is required because
some existing ciphersuites form TSKs by simply splitting the MSK to pieces of
appropriate length. Likewise, non-overlapping substrings of the EMSK
MUST be cryptographically separate from each other, and from
substrings of the MSK."

Proposed resolution: Accept

Issue 142: Contents of EAP-Request/Identity
Submitter name: Tim Moore
Submitter email address: timmoore@microsoft.com
Date first submitted: June 9, 2003
Reference:
Document: EAP-03
Comment type: T
Priority: S
Section: 5.1, Appendix A
Rationale/Explanation of issue:

In Section 5.1, change:

"This field MAY contain a displayable message in the Request,
containing UTF-8 encoded ISO 10646 characters [RFC2279]. The
Response uses this field to return the Identity. If the Identity
is unknown, this field should be zero bytes in length. The field
MUST NOT be null terminated. The length of this field is derived
from the Length field of the Request/Response packet and hence a
null is not required."

To:

"This field MAY contain a displayable message in the Request,
containing UTF-8 encoded ISO 10646 characters [RFC2279]. Where
the Request contains a null, only the portion of the field prior to
the null is displayed, with portion after the null used as a hint to the
peer as to the identity to be provided in the Response, as described
in Appendix A.2. If the Identity is unknown, the Identity Response
field should be zero bytes in length. The Identity Response field
MUST NOT be null terminated. In all cases, the length of the
Type-Data field is derived from the Length field of the
Request/Response packet."

Add to Appendix A:

"A.2 Contents of the EAP Request/Identity Type-Data field

In addition to providing a displayable message to the peer, the authenticator may wish to provide a
hint as to the appropriate identity to place in the Type-Data field of the
EAP-Response/Identity.


To allow for both a displayable message as well as potential hints, the
EAP-Request/Identity message is formatted as follows:

<display-string>\0networkid=<network-name>,nasid=<nas-name>,portid=<port-id>

Where:

network-name: Name(s) of the network(s) to which the authenticator connects.
For 802.11, this will typically correspond to the SSID.

nas-name: Name or address of the NAS.


port-id: port that the EAP session is on.

The EAP peer should display display-string before the null termination (\0)"

[Jari Arkko]:

Several issues relate to this problem. One issue is that
there's existing deployment where the nul character is
used to separate a message and a some other information
in EAP Identity Request.

Another issue is how to represent AUPs.

A third issue is how to represent parameters to the
peer, and if such parameters are needed in the first
place.

Given that we have a deployed protocol, I'd suggest
the following approach:

1. We need to document that there can be a nul character
in the data part of EAP Identity Request, and that
the message should only be displayed until the nul.

2. Perhaps we should not say too much about the
use of the field after the nul. Certainly no
normative text.

I don't think appendix A is the right place for
this text. I would try to cut the text down and
just place it as a note in the place where the
EAP Identity REquest is discussed. Like this,
for example:


 Note: Some existing implementations are known to
pass parameters after the nul character. Support
for such parameters is implementation specific,
but where used their format SHOULD be a comma
separated list of parameter=value assignments.

3. Lets not claim anything about the AUP in the text.
I agree that its probably best done at the link layer,
but this may not always be possible. If it isn't
possible then the message in the identity request
may be used for that purpose. However, I wouldn't
write that down in the spec as I don't think that
would the recommended practice.

[BA]  I am concerned that the material proposed for Appendix A.2 is
currently not specified well enough, and would require considerable
additional work in order to complete, delaying RFC 2284bis. What we need is:

a) An ABNF describing the grammar for the parameters and values;
b) IANA considerations for allocation of parameters and values.

This material is likely to require enough work (and be large enough)
to warrant a separate document on the subject. Therefore my recommendation
is that we only take the changes to Section 5.1 at this point, and
examine whether there is sufficient WG consensus to start work on
a separate document to handle a) and b).

Here are the proposed fixes:

In Section 5.1, change:

"This field MAY contain a displayable message in the Request,
containing UTF-8 encoded ISO 10646 characters [RFC2279]. The
Response uses this field to return the Identity. If the Identity
is unknown, this field should be zero bytes in length. The field
MUST NOT be null terminated. The length of this field is derived
from the Length field of the Request/Response packet and hence a
null is not required."

To:

"This field MAY contain a displayable message in the Request,
containing UTF-8 encoded ISO 10646 characters [RFC2279]. Where
the Request contains a null, only the portion of the field prior to
the null is displayed. If the Identity is unknown, the Identity Response
field should be zero bytes in length. The Identity Response field
MUST NOT be null terminated. In all cases, the length of the
Type-Data field is derived from the Length field of the
Request/Response packet."

Proposed Resolution: Accept

Issue 143: EAP-04 Editorial Nits
Submitter name: Henrik Levkowetz
Submitter email address: henrik@levkowetz.com
Date first submitted: June 18, 2003
Reference:
Document: EAP-04
Comment type: E
Priority: 1
Section: Various
Rationale/Explanation of issue:

Section 1.3:

"Acknowledged result indications
The ability of the authenticator to provide the peer with
an indication of whether the peer has successfully
authenticated to it, and for the peer to acknowledge
receipt, as well as providing an indication of whether the
authenticator has successfully authenticated to the peer.
Since EAP Success and Failure packets are neither
acknowledged nor integrity protected, this claim requires
implementation of a method-specific result exchange that is
authenticated, integrity and replay protected on a
per-packet basis."

s/authenticated, /authenticated and/

Section 2.2:

"EAP packets with codes of Success or Failure do not include a Type,
and therefore are not delivered to an EAP method. Success and
Failure are discussed in Section 4.2."

s/and therefore/and/

(- I don't see an immediate logic, so I'd rather just state the rule here.)

Section 3.1:

"[1] Unreliable transport. In EAP, the authenticator retransmits
Requests that have not yet received Responses, so that EAP does
not assume that lower layers are reliable. Since EAP defines it
own retransmission behavior, when run over a reliable lower
layer, it is possible (though undesirable) for retransmission to
occur both in the lower layer and the EAP layer."

Awkward. Rewrite last part to: "Since EAP defines its
own retransmission behavior, it is possible (though undesirable)
for retransmission to occur both in the lower layer and the EAP
layer when EAP is run over a reliable lower layer."

...

"After EAP authentication is complete, the peer will typically
transmit data to the network via the authenticator. In order to
provide assurance that the peer transmitting data is the same
entity that successfully completed EAP authentication, the lower
layer needs to bind per-packet integrity, authentication and
replay protection to the original EAP authentication, using keys
derived during EAP authentication. Alternatively, the lower
layer needs to be physically secure. Otherwise it is possible
for subsequent data traffic to be hijacked, or replayed."

s/hijacked,/hijacked/
...

"In IEEE 802 media, key activation also typically occurs after
completion of EAP authentication. Therefore an initial EAP
exchange typically cannot be protected by lower layer
ciphersuite, although an EAP re-authentication or
pre-authentication exchange can be protected."

s/by lower layer/by the lower layer/

Section 4.1:

"Retransmitted Requests MUST be sent with the same Identifier value
in order to distinguish them from new Requests. The contents of
the data field are dependent on the Request Type. The peer MUST
send a Response packet in reply to a valid Request packet.
Responses MUST only be sent in reply to a valid Request and never
retransmitted on a timer."

s/The contents of the data field are/The content of the data field is/

Section 5.3.2:

"Length

>=40"

Is my math off today? I count the length to 20 octets or more, not 40 or more.

s/40/20/

...

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=254 | 0 (IETF) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 (Nak) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=254 | 0 (IETF) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 5 (OTP) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=254 | 20 (MIT) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 6 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

s/Length/Length=28/

An Expanded Nak Response indicating a no desired alternative would
appear as follows:

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=254 | 0 (IETF) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 (Nak) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=254 | 0 (IETF) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 (No alternative) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

s/Length/Length=20/

Section 5.7:

"The Expanded Type is also used to expand the global Method Type
space beyond the original 255 values. A Vendor-Id of 0 maps the
original 255 possible Types onto a namespace of 2^32-1 possible
Types, allowing for virtually unlimited expansion. (Type 0 is only
used in a Nak Response, to indicate no acceptable alternative)"

s/namespace/number space/

s/, allowing for virtually unlimited expansion//

(the last part of the sentence, while true, is maybe too much elaborating the obvious?)


Section 7.4 Man-in-the-middle attacks: 

"As noted in Section 2.1, EAP does not permit sequences of
authentication methods. Were a sequence of EAP authentication
methods to be permitted, the peer might not have proof that a single
entity has acted as the authenticator for all EAP methods within the
sequence. For example, an authenticator might terminate one EAP
method, then forward the next method in the sequence to another party
without the peer's knowledge or consent. Similarly, the
authenticator might not have proof that a single entity has acted as
the peer for all EAP methods within the sequence.

This enables an attack by a rogue EAP authenticator tunneling EAP to

..."

s/This enables/Tunnelling EAP within another protocol enables/

Section 7.6:

"Where EAP runs over lower layers which are not physically secure, in
order to protect against dictionary attacks, an authentication
algorithm resistant to dictionary attack (as defined in Section 7.2)
SHOULD be used."

Rewrite as: 

"In order to protect against dictionary attacks, an authentication
algorithm resistant to dictionary attack (as defined in Section 7.2)
SHOULD be used where EAP runs over lower layers which are not
physically secure."


"If an authentication algorithm is used that is known to be vulnerable
to dictionary attack, then the conversation may be tunneled within a
protected channel, in order to provide additional protection.
However, as noted in Section 7.4, EAP tunneling may result in a
man-in-the-middle vulnerability, and therefore dictionary attack
resistant methods are preferred."

s/channel,/channel/

Section Appendix B. Changes from RFC 2284:

Add: 

"o In sections 5, 5.1 and 5.2, requirements has been added
that fields with displayable messages should contain UTF-8
encoded ISO 10646 characters."

Proposed Resolution: Accept

Issue 144: Use of Zero in a Nak
Submitter name: Henrik Levkowetz
Submitter email address: henrik@levkowetz.com
Date first submitted: June 18, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 1
Section: 5.3
Rationale/Explanation of issue:

There is various text on the use of zero in a NAK, for instance,
Section 5.3.1 says:

      "The legacy Nak Type is valid only in Response messages.  It is
      sent in reply to a Request where the desired authentication Type
      is unacceptable.  Authentication Types are numbered 4 and above.
      The Response contains one or more authentication Types desired by
      the Peer.  Type zero (0) is used to indicate that the sender has
      no viable alternatives."

Reading this, I wondered: When is the value zero used in a NAK? When the
peer doesn't want to *disclose* alternatives, or when there are none
left? May the authenticator continue probing after receiving a zero NAK?

[Jari Arkko]

The text seems to say that the peer has no alternatives. Still,
I wonder if zero is used for other purposes as well. Has it been
used for implementations that can't  tell what methods might be
appropriate?

If not, I'd rather say SHOULD NOT probe after receiving
a zero NAK.
 

[BA] Here is the proposed fix:

In Section 5.3.1, change:

"Type zero (0) is used to indicate that the sender
has no viable alternatives."

To:


"Type zero (0) is used to indicate that the sender
has no viable alternatives, and therefore the
authenticator SHOULD NOT send another Request
after receiving a Nak Response containing a zero
value."


Proposed Resolution: Accept

Issue 145: Terminology: Man-in-the-Middle Resistance
Submitter name: Henrik Levkowetz
Submitter email address: henrik@levkowetz.com
Date first submitted: June 18, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: S
Section: Terminology and throughout
Rationale/Explanation of issue:

"Man-in-the-Middle resistance".

I don't really feel comfortable with the use of this term. From what I
know, Man-in-the-middle attacks have a well established existing
meaning, while here we are defining something related which applies only
to sequences or tunnelled methods. If a reader skips lightly over the
definitions, and doesn't catch the limited meaning of this term, the
classification of MitM resistance: N/A for the basic authentication
methods will not make sense, or in the worst case be misleading.

If I understand the issues correctly, all the basic authentication
methods (MD5, OTP, GTC) *are* vulnerable to classic MitM attacks -
but our MitM resistance term describes something else, and I'd
therefore prefer to call it something else.

[Jari Arkko]

I agree. MITM is too general term.

"Compound authentication Man-in-the-Middle attack resistance"?

Shorter name would be useful..

[BA] In Issue 156, we proposed to delete the definition of Man-in-the-Middle
attack resistance and replace it with "Cryptographic binding" since the two
definitions are roughly equivalent and the latter is more accurate. So the
proposal is to replace usage of MITM with "Cryptographic binding". Since I
think that Issue 156 takes care of this, I'd propose to resolve this issue
as a Reject.

Proposed Resolution: Reject

Issue 146: Multiplexing Model Requirements
Submitter name: Henrik Levkowetz
Submitter email address: henrik@levkowetz.com
Date first submitted: June 18, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 1
Section: 2.2
Rationale/Explanation of issue:

The draft says:

   "Since EAP authentication methods may wish to access the Identity, the
   Identity Request and Response can be assumed to be accessible to
   authentication methods (Types 4 or greater) in addition to the
   Identity method.  The Identity Type is discussed in Section 5.1."

There's a requirement on an implementation here, I think.
Maybe we should say that the Identity Request and Response
SHOULD or MUST be made accessible to authentication methods?

[Jari Arkko]

Yes. ... esponse SHOULD be accessible to ....?

[BA] Here is the proposed fix:

In Section 2.2, change:

" Since EAP authentication methods may wish to access the Identity, the
Identity Request and Response can be assumed to be accessible to
authentication methods (Types 4 or greater) in addition to the
Identity method. The Identity Type is discussed in Section 5.1."

to:

" Since EAP authentication methods may wish to access the Identity,
implementations SHOULD make the Identity Request and Response
accessible to authentication methods (Types 4 or greater) in
addition to the Identity method. The Identity Type is discussed
in Section 5.1."

Proposed Resolution: Accept

Issue 147: Initial Key Activation
Submitter name: John Vollbrecht
Submitter email address: jrv@umich.edu
Date first submitted: June 16, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 2
Section: 3.1 paragraph 5
Rationale/Explanation of issue:

802 key activation may be prolonged by authentication as well as initiated.  The text here
applies to initial authentication.

Requested change: insert the word ", initial" between "media" and "key
activation"

[Jari Arkko]

I think this is right.

[BA] In Section 3.1, change:

"       In IEEE 802 media, key activation also typically occurs after
       completion of EAP authentication.  Therefore an initial EAP
       exchange typically cannot be protected by lower layer
       ciphersuite, although an EAP re-authentication or
       pre-authentication exchange can be protected."

To:

"       In IEEE 802 media, initial key activation also typically occurs after
       completion of EAP authentication.  Therefore an initial EAP
       exchange typically cannot be protected by lower layer
       ciphersuite, although an EAP re-authentication or
       pre-authentication exchange can be protected."

Proposed Resolution: Accept

Issue 148: Sequences
Submitter name: John Vollbrecht
Submitter email address: jrv@umich.edu
Date first submitted: June 16, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 2
Section: 7.4 paragraph 2
Rationale/Explanation of issue:

Security issues addressed in this section
seem to address only what happens in an unprotected EAP method.  Section
2.1 indicates that within a tunnel sequences may be used.

Requested change: add the word "untunnelled" between the words "permit" and
"sequences".

[Jari Arkko]: Agree

Proposed Resolution: Accept

Issue 149: Peer Policy
Submitter name: John Vollbrecht
Submitter email address: jrv@umich.edu
Date first submitted: June 16, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 2
Section: 7.8 Paragraph 2
Rationale/Explanation of issue:

Peers may include policy, especially when
connecting subnets.  Additionally the same identity may have different
permissions at different Access Points.

Requested change: In paragraph 2 make the following  2 changes noted in
quotes below -

Within or associated with each authenticator, it is not anticipated that a
particular named peer will support a choice of methods "for a given
connection". This would make the peer vulnerable to attacks that negotiate
the least secure method from among a set. Instead, for each named peer
there SHOULD be an indication of exactly one method used to authenticate
that peer name "at an access point". If a peer needs to make use of
different authentication methods under different circumstances, then
distinct identities SHOULD be employed, each of which identifies exactly
one authentication method.

[Jari Arkko]

Hmm... I don't have a warm and fuzzy feeling about this.
What if the attacker spoofs the name of the access point
to get the bidding down attack started?

[JRV]

This is where policy must be involved.  if the attacker AP bids up, the
authentication should go up.  If the attacker AP bids down, the
authentication and also the rights should go down.

Additional info may be involved, depending whether the AP is wireless or
wired.  Wireless may require Keys and a different authentication method
than wired.

I think the idea that there should be only one id for each authentication
method is too restrictive.  The same user should be able to get on in
different places, with different rights, using different authentication
methods.  The user could have different ids for each authentication method
and try to match the id to the access type, geographic location, etc. - but
this seems unlikely in practice.

[Jari Arkko]

I can see your argument.

But I'm still worried that without a specific model
for what policies are possible, there'll be bidding down
problems. For instance, the AP identity does not appear to be
a good source for the policy, but link type (wired/wireless)
might be slightly better.

So, I'd rather err on the safe side and not allow such
flexibility. The downside is that it might make things
hard for some cases. But I'm not sure how typical the
per-AP or per-link type credential policies are. Do
you have any information on that? Compared to the SSID
and other information presented by the authenticator?

Proposed Resolution: Reject

Issue 150: Lower Layer Behavior for Limited Access
Submitter name: Yoshihiro Ohba
Submitter email address: yohba@tari.toshiba.com
Date first submitted: June 18, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: 1
Section: 4.2
Rationale/Explanation of issue:

Text in section 7.9 allows limited access for peer after completion of
EAP authentication with failure, with stating that the interaction of
EAP with lower layers are highly implementation dependent.

On the other hand, the following text in section 4.2 contains
some wording that does not seem to consistent with section 7.9.

"On the peer, once the method completes unsuccessfully (that is,
either the authenticator sends a method-specific failure indication,
or the peer decides that it does want to continue the conversation,
possibly after sending a method-specific failure indication), the peer
MUST terminate the conversation and avoid sending data on the link."

I think whether the peer avoids sending data on the link is a sort of
thing that should be described in each lower-layer protocol that
carries EAP, since this is heavily lower-layer dependent as described
in section 7.9.  In fact, if the peer avoids sending data on the link,
limited access scenario cannot be realized (though it might depend on
the definition of "link").  In sectioni 4.2, it is described that a
backend EAP server can send EAP Success when it does not need to
authenticate the peer, but how it can determine it does not need to
authenticate the peer in a roaming environment where it might be
difficult for the EAP server to know the network access policy on the
remote NAS?  I know this issue was recently discussed and section 4.2
was updated to reflect the discussion, but I still find an
inconsistency that should be resolved.

Requested change:

Remove "and avoid sending data on the link".

[BA] I don't think that the intent of section 7.9 is to make the interpretation
of EAP Failure implementation dependent -- this is the kind of thing that
needs to be standardized in order for the protocol to be interoperable.

Allowing the peer to activate the link after receiving an indication
that the authenticator is not granting access seems dangerous because it
would be likely to either open the door to rogue authenticators or to
timeouts where the peer would attempt to obtain an IP address and fail,
leaving the user in limbo.

[Jari Arkko] The issue that Yoshi raised is mainly related to the interpretation
of the word "link". In some cases its an on/off kind of thing, but
as the PANA example shows, there can be a (limited) link outside the
EAP authentication process. The original text talks about not pretending
that things are OK when they really are not. Simply allowing
data to be sent anyway would be dangerous. But I think John's new
formulation makes sure that the link layer does not by accident
send you important packets over an unauthenticated channel. But it
still allows e.g. PANA local communications.

So I agree with John's formulation.


[BA] Proposed Resolution:

In Section 4.2, change:

"On the peer, once the method completes unsuccessfully (that is,
either the authenticator sends a method-specific failure indication,
or the peer decides that it does want to continue the conversation,
possibly after sending a method-specific failure indication), the peer
MUST terminate the conversation and avoid sending data on the link."

To:

"On the peer, once the method completes unsuccessfully (that is,
either the authenticator sends a method-specific failure indication,
or the peer decides that it does want to continue the conversation,
possibly after sending a method-specific failure indication), the peer
MUST terminate the conversation and indicate failure to the lower layer."


Proposed Resolution: Accept

Issue 151: EAP-04 comments
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001412.html
Document: EAP-04
Comment type: T
Priority: 1
Section: Various
Rationale/Explanation of issue:

Overall, the draft looks fine, and it seems that we're finally
close to getting it finished! In hindsight, there are a couple
of things that might have been clearer if organized differently,
but it probably doesn't make sense to do such changes at this
point.
---

(Section 2) "Since EAP is a peer-to-peer protocol, an
independent and simultaneous authentication may take place in
the reverse direction. Both peers may act as authenticators
and authenticatees at the same time. For a discussion of
security issues in peer-to-peer operation, see Section 7.7.

I think this does not apply to all lower layers. Perhaps it
should be rephrased to something like "Some lower layers for
carrying EAP, such as PPP, may support peer-to-peer operation,
in which an independent and...".

[Jari Arkko]

Yes. [Alternative re-formulation: "Since EAP is a peer-to-peer
protocol, an independent and simultaneous authentication may take
place in the reverse direction (depending on the capabilities
of the lower layer)."]
---

(Section 4.2) "Success or Failure packets MUST NOT be sent by
an EAP authenticator prior to completion of the final round
of a given method. A peer EAP implementation receiving a
Success or Failure packet prior to completion of the method
in progress MUST silently discard it."

I think there are several EAP methods where the number of rounds
varies (so the phrase "the final round" is not well defined),
depending on many issues, including whether the method is
going to succeed or not.

Perhaps this would better take that into account?

"Success and Failure packets MUST NOT be sent by an EAP
authenticator if the specification of the given method does not
allow the method to finish at that point. A peer EAP
implementation receiving a Success or Failure packet where
sending one is not allowed MUST silently discard it."

[Jari Arkko] Sounds good!
---

(Section 4.2) "If the peer attempts to authenticate to the
authenticator and fails to do so, the authenticator MUST send a
Failure packet and MUST NOT grant access by sending a Success
packet."

I know that this was beaten to death already :-) But since
we have not defined what "failing to authenticate to the
authenticator" means, does this actually impose any
requirements for EAP implementations?

(The problem is that "failing to authenticate" could be thought
as "not successfully authenticating"; but according to the
definition of "successful authentication" in Section 1.2, the
above requirement does not make much sense.)

Perhaps this would capture the intent?

"If the peer attempts to authenticate to the authenticator using
a method that provides key derivation, the authenticator SHOULD
NOT grant access by sending a Success packet if the key
derivation has failed for some reason."

[Jari Arkko] Works for me. Maybe delete "for some reason".
---

(Section 5.7) "EAP Types from 0 through 255 are semantically
identical whether they appear as single octet EAP Types or as
Vendor-Types when Vendor-Id is zero."

(Section 5.7) "An implementation that supports the Expanded
attribute MUST treat EAP Types that are less than 256
equivalently whether they appear as a single octet or as the
32-bit Vendor-Type within a Expanded Type where Vendor-Id is
0." and

Otherwise fine, but Expanded Nak packets have a different format
than Legacy Nak packets, so they are not treated exactly
identically.

Perhaps we should add something like "There is one exception to
this rule: Expanded Nak and Legacy Nak packets share the same
code, but must be treated differently because they have a
different format." (an alternative would be to change the
code of Expanded Naks to something else, but probably
this is easier?)

[Jari Arkko] Yes.
---
Appendix B: Two significant changes to RFC 2284 are not
mentioned: mutual authentication and key derivation
(RFC 2284 did not even mention either of them).

[Jari Arkko] Ok.
----
References: There are newer versions of RFC2869bis and SASLPREP
drafts available (Ok, RFC editor will probably handle these...)

[Jari Arkko] Better update them now, just for consistency.
----
References: PIC is most likely dead and superceded by IKEv2, so
maybe we should remove references to PIC and add a pointer to
IKEv2?

[Jari Arkko]  Yes, that can be done. (Both the IKEv2 and PANA references
would be non-normative, by the way, so that we don't have
to wait for either one to complete.)

[BA] Here are the proposed fixes:

In Section 2, change:

"ince EAP is a peer-to-peer protocol, an
independent and simultaneous authentication may take place in
the reverse direction."

To:

"Since EAP is a peer-to-peer protocol, an independent and
simultaneous authentication may take place in the reverse
direction (depending on the capabilities of the lower layer)."


In Section 4.2, change:

"Success or Failure packets MUST NOT be sent by
an EAP authenticator prior to completion of the final round
of a given method. A peer EAP implementation receiving a
Success or Failure packet prior to completion of the method
in progress MUST silently discard it."

To:

"Success and Failure packets MUST NOT be sent by an EAP
authenticator if the specification of the given method does not
explicitly permit the method to finish at that point. A peer EAP
implementation receiving a Success or Failure packet where
sending one is not explicitly permitted MUST silently discard it."


In Section 5.7, change:

"EAP Types from 0 through 255 are semantically
identical whether they appear as single octet EAP Types or as
Vendor-Types when Vendor-Id is zero."

To:

"EAP Types from 0 through 255 are semantically
identical whether they appear as single octet EAP Types or as
Vendor-Types when Vendor-Id is zero. There is one exception to
this rule: Expanded Nak and Legacy Nak packets share the same
code, but must be treated differently because they have a
different format."

In Appendix B, add "Support for mutual authentication and key derivation."

In the reference section, update the references to RFC 2869bis (should
obtain an RFC number soon) and SASLPREP.

Also, change references to PIC to a reference to IKEv2.

Recommended resolution: Accept

Issue 152: Lower layer indications
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001413.html
Document: EAP-04
Comment type: T
Priority: 1
Section: 3.4
Rationale/Explanation of issue:

Section 3.4 says that

   "Section 4.2 defines the circumstances in which a peer,
   having concluded an EAP method with successful acknowledged
   result indications, may conclude that a Success packet has
   been lost after expiration of a timeout.  In those same
   circumstances, if a peer receives a lower layer success
   indication as defined in Section 7.2, it MAY conclude that a
   Success packet has been lost without waiting for a
   timeout. This ensures that an attacker spoofing lower layer
   indications can at best succeed in a denial of service
   attack."

This is not exactly what the current state machine does...

The current text says that "if you are in a situation where a
timeout would lead to success (that is, you have received a
method-specific success indication), also lower-layer success
indication does."

What the current state mechine does is "if you are in a
situation where receiving an EAP Success packet would lead to
success, also lower-layer success indication does." Or in other
words, the effect of receiving a lower-layer success indication
is identical to receiving an EAP Success: if an EAP Success
packet would be silently discarded, so is the lower-layer
success indication.

Both are IMHO quite reasonable approaches, and I just
wanted to clarify which one we really want to use?

[Jari Arkko] Hmm... if we get a method specific success indication, shouldn't
we enable then in all three cases below:
(a) Success received
(b) Lower-layer success indication
(c) Timeout?

[Pasi Eronen] You're right, and that happens in both approaches.  The only
difference is in what to do when we don't have a method specific
indication.  In this case,

- both approaches enable the link if Success is received
- both approaches fail on timeout
- the current state machine enables the link if lower-layer
  success indication is received, while 2284bis-04 says that
  the lower-layer success indication must be ignored
  (presumably leading to failure in timeout later).

Which approach do you think we should use?

A second issue: Earlier versions of the draft also mentioned
lower-layer failure indications (e.g. "Lower layer failure
indications provided to EAP by the lower layer MUST be processed
and will cause an EAP exchange in progress to be aborted." in
-03 version).  This seems to be missing from -04, and I think
the old text still applies?

[BA] I think the major difference between the two
approaches is for one-way methods such as EAP-MD5 Challenge.

With one-way methods a peer is ready to accept an EAP Success
after sending its Response. Since the peer does not
authenticate the authenticator it is willing to access
any network that indicates it is willing to grant access.

In this case the proposed change is for a lower layer success
indication to cause the peer to conclude that it has been granted
access, even though it had no indication from EAP that the
authenticator was willing to grant access.

This doesn't really create any new security vulnerabilities since a
one-way method is vulnerable to a spoofed EAP Success anyway. On the
other hand, one-way methods are really only appropriate for physically
secure wired media in which the loss rate should be very low, so that I
don't think there is that much benefit to be provided.

So that the peer doesn't encounter a timeout, it probably makes sense to
have some assurance that the link is actually providing IP connectivity or
is likely to do so.

So I think we might need to revise the definition of a
"lower layer success indication" so that it is likely to
be indicative of IP connectivity (e.g. PPP NCP or IP packets)
rather than just a layer 2 frame (e.g. Reassociation Response).

If we take these factors into account, I think the change is ok, although
it is not all that beneficial.

Of course, one issue with lower layer success indications
in general is that I don't believe there are any EAP implementations
that incorporate them. If that remains true then if
and when EAP goes to Draft Standard, we would need to
remove this functionality from RFC 2284bis.

As far as lower layer failure indications are concerned, I think we
concluded that they would translate into "link down" indications in which
case the EAP conversation would abort anyway. Therefore there was no need
to discuss them explicitly.

[BA] Proposed fix:

In Section 3.4, change:

"Section 4.2 defines the circumstances in which a peer,
having concluded an EAP method with successful acknowledged
result indications, may conclude that a Success packet has
been lost after expiration of a timeout. In those same
circumstances, if a peer receives a lower layer success
indication as defined in Section 7.2, it MAY conclude that a
Success packet has been lost without waiting for a
timeout. This ensures that an attacker spoofing lower layer
indications can at best succeed in a denial of service
attack."

To:

"To improve reliability, if a peer receives a lower layer
success indication as defined in Section 7.12, it MAY conclude
that a Success packet has been lost, and behave as it had
actually received a Success packet. This includes choosing to
ignore the Success in some circumstances as described in Section 4.2."

Recommended resolution: Accept

Issue 153: EAP OTP Replay Protection
Submitter name: Joe Salowey
Submitter email address:mailto:jsalowey@cisco.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001417.html
Document: EAP-04
Comment type: T
Priority: S
Section: 5.5
Rationale/Explanation of issue:

Does EAP-OTP provide replay protection?

2284bis-04 says no, but it seems that it should.

[BA] Here is the fix:

In Section 5.5, change:

"    Replay protection:      No"

To:

"    Replay protection:      Yes"
 

Recommended resolution: Accept

Issue 154: Identity Response Mismatch
Submitter name: Joe Salowey
Submitter email address:mailto:jsalowey@cisco.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001418.html
Document: EAP-04
Comment type: T
Priority: 1
Section: 7.3
Rationale/Explanation of issue:

I could not find a place in the draft where it covers the possiblity
that the Identity response differs from the identity that is
authenticated by the EAP method. 

Requested change:

Perhaps the following should be added to the security considerations
section:

"It is possible for the identity in the identity response to be
different from the identity authenticated by the EAP method.  This may
be intentional in the case of identity privacy.   An EAP method SHOULD
use the authenticated identity when making access control decisions.  A

[Jari Arkko] Fine so far...

method MAY allow the use of the identity in the identity response if it
is an authorized alias for the authenticated identity."
 

[Jari Arkko] This part I don't understand. Are you still talking about the case
where the id resp != some method internal identity?

[Joe Salowey] Yes, It should probably say

"If  the identity in the Identity Response is an authorized alias of the
authenticated identity the alias MAY use this identity for making access
control decisions."

Alternatively we could just say that the authenticated identity always
takes precedence over the identity in the identity response when they
differ. 

[BA] Here is the proposed fix:

In Section 7.3, add the following paragraph:

"It is possible for the identity in the identity response to be
different from the identity authenticated by the EAP method. This may
be intentional in the case of identity privacy. An EAP method SHOULD
use the authenticated identity when making access control decisions."

Recommended resolution: Accept


Issue 155: EAP-SM review
Submitter name: Jari Arkko
Submitter email address: jari.arkko@piuha.net
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-June/001393.html
Document: EAP-SM-03
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:
 

I'm reviewing the state machine draft version 03
(http://www.cs.umd.edu/~npetroni/EAP/draft-vollbrecht-eap-state-03.ps).
The authenticator state machine in Section 5 appears to be in
very good shape, I like it!

I have a few nits and question marks, however:

1) The three calls to Policy.update have different
    argument lists. It would help the reader if the
    state machine explicitly defined what input goes
    to this function. Looks like it is given eapRespData
    (either in a method or in a NAK), as well as the flags
    that the authenticator has already calculated, e.g.,
    was the response valid. How about

      Policy.update(currentMethod, eapRespData, intCheck)

2) Can't find calculateTimeout from 5.3.

3) I'd rather not see a "..." in the calculateTimeout
    argument list. Can we be more specific? See also
    item 1 above.

4) I'm not sure if the m.buildSuccFail in the diagram
    (state METHOD) and 2284bis Section 4.2 requirements
    are aligned. The latter seems to require that after
    a method specific indication, we still must send
    a Success or Failure. But maybe I'm just confused
    by what "m.buildSuccFail" means since I haven't
    read the passthrough part of the document yet.

5) Similarly, I'm not sure the state machine prevents
    the sending of a canned Success. These seem to be
    forbidden by 2284bis Section 4.2.

6) Should there be initializations of all variables
    in the DISABLED and BACKEND_DISABLED states? Variables
    such as eapFail do not appear to get an initial
    value, at least not in the diagram. The text says
    it is initialized by the lower layer, but why? Wouldn't
    it be easier to treat this variable as an EAP layer
    variable which is only read by the lower layer, not set?

7) Section 5.1.1 s/outside/Outside/

8) Section 5.2 indentation looks funny.

9) Can you explain why BACKEND_DISABLED and DISABLED
    have to be separate states? It looks like they
    could be combined, and the EapBackend variable
    could be checked before branching on to the next
    states. But perhaps this has something to do with
    the IEEE lower layer state machine interface?

10) Why not use the same substructure in 5.2 as is used
     in 5.1? Variables from method->eap layer, eap layer->
     method, etc. Then you could also group 5.4 contents into
     its appropriate place in 5.1/5.2/5.3.

Additional comments on the  state machine draft version 03
(http://www.cs.umd.edu/~npetroni/EAP/draft-vollbrecht-eap-state-03.ps).
Overall, I like the way that you have represented the passthrough
and direct/AAA authenticators. The separation of the state machines
to small pieces in nicely organized layers is very good design --
thanks!

I do have some comments, though:

1) In the overview figure in Section 6.2, if I have understood
    correctly the two authenticator state machines have been
    instantiated with a different EapBackend value. Perhaps
    this could be shown in the figure.

2) It would be very useful to have the same kind of
    variable and interface descriptions following the passthrough
    and backend state machines as were given for the authenticator.

3) I don't understand why Policy.update needs to be called
    in the AAA_FAILURE state of the passthrough state machine.
    If this happen, we fail completely, right?

4) Similarly, I'm not sure I understand what the policy updates
    do in AAA_REJECT and AAA_ACCEPT. Can you clarify?

5) In state AAA_REQUEST, maybe change
      if (isIdentity(eapRespData))
    to
      if (respId == currentId)
    unless I'm missing something...

6) The passthrough state machine does not appear to contain
    all processing required by RFC 2869bis. For instance,
    Section 2.6.3 about conflicting messages is not described.
    This may be fine, but at least there should be an
    explanation of the scope of the state machine.

7) References need to be split to normative and non-normative.
    I'd say 2284bis and 2869bis are normative along with RFC 2119.
    IEEE is non-normative.

8) Are these all references? I suspect at least the keying
    framework needs to be referenced.

9) The format used for describing the state machine and
    the actions. Do you have a possibility for feeding this
    into a state machine tool for analysis?

    Also,http://www.ietf.org/IESG/STATEMENTS/pseudo-code-in-specs.txt
    mentions that you can use languages such as C. However, the IESG
    statement said that it must be clear whether you just use
    some pseudo code that just looks like C or the language itself.
    I think we have the former case. This should be stated.

    Finally, the IESG statement requires a normative reference
    to the used language or format. In this case I don't think
    we have it, or? If not, maybe we should be more strict in
    defining the language used for the actions, say with BNF,
    including semantics defined in English?

Issue 156: Terminology reorganization
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001427.html
Document: EAP-04
Comment type: T
Priority: S
Section: 1.2, 1.3, 7.2.1
Rationale/Explanation of issue:

The security claims terminology is best left with the rest of the security claims section 7.2.
Also, the definitions of Man-in-the-Middle resistance and Cryptographic binding appear to overlap.

Change Section 1.2 to the following:

"1.2 Terminology

This document frequently uses the following terms:

authenticator
The end of the link initiating EAP authentication. The
term Authenticator is used in [IEEE-802.1X], and
authenticator has the same meaning in this document.

peer
The end of the link that responds to the authenticator.
In [IEEE-802.1X], this end is known as the Supplicant.

backend authentication server
A backend authentication server is an entity that provides
an authentication service to an authenticator. When used,
this server typically executes EAP methods for the
authenticator. This terminology is also used in
[IEEE-802.1X].

Displayable Message
This is interpreted to be a human readable string of
characters. The message encoding MUST follow the UTF-8
transformation format [RFC2279].

EAP server
The entity that terminates the EAP authentication method
with the peer. In the case where no backend authentication
server is used, the EAP server is part of the authenticator.
In the case where the authenticator operates in
pass-through mode, the EAP server is located on the backend
authentication server.

Silently Discard
This means the implementation discards the packet without
further processing. The implementation SHOULD provide the
capability of logging the event, including the contents of
the silently discarded packet, and SHOULD record the event
in a statistics counter.

Successful authentication
In the context of this document, "successful
authentication" is an exchange of EAP messages, as a result
of which the authenticator decides to allow access by the
peer, and the peer decides to use this access. The
authenticator's decision typically involves both
authentication and authorization aspects; the peer may
successfully authenticate to the authenticator but access
may be denied by the authenticator due to policy reasons.

Message Integrity Check (MIC)
A keyed hash function used for authentication and integrity
protection of data. This is usually called a Message
Authentication Code (MAC), but IEEE 802 specifications (and
this document) use the acronym MIC to avoid confusion with
Medium Access Control.

Cryptographic separation
Two keys (x and y) are "cryptographically separate" if an
adversary that knows all messages exchanged in the protocol
cannot compute x from y or y from x without "breaking" some
cryptographic assumption. In particular, this definition
allows that the adversary has the knowledge of all nonces
sent in cleartext as well as all predictable counter values
used in the protocol. Breaking a cryptographic assumption
would typically require inverting a one-way function or
predicting the outcome of a cryptographic pseudo-random
number generator without knowledge of the secret state. In
other words, if the keys are cryptographically separate,
there is no shortcut to compute x from y or y from x, but
the work an adversary must do to perform this computation
is equivalent to performing exhaustive search for the
secret state value.

Master Session Key (MSK)
Keying material that is derived between the EAP peer and
server and exported by the EAP method. The MSK is used
in the derivation of Transient Session Keys (TSKs) for
the ciphersuite negotiated between
the EAP peer and authenticator. Where a backend
authentication server is present, acting as an EAP server,
it will typically transport the MSK to the authenticator,
so that in this case, the MSK is available to the peer,
authenticator and authentication server.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP client
and server that is exported by the EAP method. Unlike the
MSK, the EMSK is known only to the EAP peer and EAP server
and is not provided to a third party. The EMSK is reserved
for future uses that are not defined yet. For example, it
could be used to derive additional keying material for
purposes such as fast handoff, cryptographic binding, etc."

Delete Section 1.3.

Add Section 7.2.1:

"7.2.1 Security claims terminology for EAP methods

These terms are used to described the security properties of EAP
methods:

Mutual authentication
This refers to an EAP method in which, within an
interlocked exchange, the authenticator authenticates the
peer and the peer authenticates the authenticator. Two
independent one-way methods, running in opposite directions
do not provide mutual authentication as defined here.

Integrity protection
This refers to providing data origin authentication and
protection against unauthorized modification of information
for EAP packets (including EAP Requests and Responses).
When making this claim, a method specification MUST
describe the EAP packets and fields within the EAP packet
that are protected.

Replay protection
This refers to protection against replay of an EAP method
or its messages, including method-specific success and
failure indications.

Confidentiality
This refers to encryption of EAP messages, including EAP
Requests and Responses, and method-specific success and
failure indications. A method making this claim MUST
support identity protection (see Section 7.3).

Key derivation
This refers to the ability of the EAP method to derive
exportable keying material such as the Master Session Key
(MSK), and Extended Master Session Key (EMSK). The MSK is
used only for further key derivation, not directly for
protection of the EAP conversation or subsequent data. Use
of the EMSK is reserved.

Key strength
If the effective key strength is N bits, the best currently
known methods to recover the key (with non-negligible
probability) require an effort comparable to 2^N operations
of a typical block cipher.

Dictionary attack protection
 Where password authentication is used, passwords are
commonly selected from a small set (as compared to a set of N-bit keys),
which raises a concern about dictionary attacks.
A method may be said to provide protection against dictionary attacks if,
when it uses a password as a secret, the method does not allow
an offline attack that has a work factor based on
the number of passwords in an attacker's dictionary.

Fast reconnect
The ability, in the case where a security association has
been previously established, to create a new or refreshed
security association in a smaller number of round-trips.

Cryptographic binding
The demonstration of the EAP peer to the EAP server that a
single entity has acted as the EAP peer for all methods
executed within a tunnel method. Binding MAY also
imply that the EAP server demonstrates to the peer that a
single entity has acted as the EAP server for all methods
executed within a tunnel method. If executed
correctly, binding serves to mitigate man-in-the-middle
vulnerabilities.

Acknowledged result indications
The ability within a method for the authenticator to indicate
to the peer whether it has successfully authenticated to it, and
for the peer to acknowledge receipt of that indication as well
as indicating to the authenticator whether it has successfully
authenticated to the peer. Since EAP Success and Failure packets
are neither acknowledged nor integrity protected, this claim requires
implementation of a method-specific result exchange that is
authenticated, integrity and replay protected on a
per-packet basis."

Proposed Resolution: Accept

Issue 157: Order of attribute processing
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001429.html
Document: RFC 2869bis-22
Comment type: T
Priority: S
Section: 2.6.4, 3, Appendix B
Rationale/Explanation of issue:

Existing implementations process EAP-Message attributes first, and
changing the processing order will cause backward compatibility issues as
well as problems with operation of IEEE 802.11i. If approved, this change
will be made in Author 48 hours, since the draft has already been approved
for publication as an RFC.

In Section 2.6.4, change:

"Reject or Access-Challenge, the NAS SHOULD process other attributes
first, then decapsulate EAP-Message attribute(s), reconstitute the EAP
packet and send it to the peer."

To:

"Reject or Access-Challenge, the NAS SHOULD first decapsulate EAP-Message
attribute(s), reconstitute the EAP packet and send it to the peer, then
process other attributes."

In Section 3 , change:

"difficult to manage."

To:

"difficult to manage. The User-Name attribute within the Access-Accept
packet need not be the same as the User-Name attribute in the Access-
Request."

In Appendix B , change:

"EAP-Message attributes are processed last (Section 2.6.4)."

To:

"EAP-Message attributes are processed first (Section 2.6.4)."

[Pasi Eronen]: Maybe the best way to handle the order of attribute
processing is to allow this to be defined in the link layer specification
(e.g. IEEE 802.1X). That provides the most flexibility.

[BA]: I think that makes sense. However, we do need to make sure that
the attributes get processed before the Accept/Reject indication. For
example, when receiving Access-Reject with EAP-Failure the EAP-Failure
needs to be sent before the port goes down or elese the EAP peer won't
receive the EAP-Failure and could hang.

[John Vollbrecht]: I believe that the User-Name in the Access-Accept
MUST be the same as the one in the Access-Request.

[BA] RFC 2865 indicates that the User-Name in the Access-Accept can
be different than the one in the Access-Request. For example,
the text below from Section 5.1 would have no purpose if they were required to
be the same:

" It MAY be sent in an Access-Accept packet, in which case the
client SHOULD use the name returned in the Access-Accept packet in
all Accounting-Request packets for this session. If the Access-
Accept includes Service-Type = Rlogin and the User-Name attribute,
a NAS MAY use the returned User-Name when performing the Rlogin
function."

Proposed fix:

Change Section 2.6.4 to:

"A RADIUS Access-Accept or Access-Reject packet may contain
EAP-Message attribute(s). In order to ensure
the correct processing of RADIUS packets, the NAS
MUST first process the attributes, including the
EAP-Message attribute(s), prior to processing the
Accept/Reject indication."

In Section 3 , change:

"difficult to manage."


To:

"difficult to manage. The User-Name attribute within the Access-Accept
packet need not be the same as the User-Name attribute in the Access-
Request."

In Appendix B , delete:
"EAP-Message attributes are processed last (Section 2.6.4)."

Recommended resolution: Accept

Issue 158: Miscellaneous Nits
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: July 6, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001430.html
Document: EAP-04
Comment type: E
Priority: S
Section: 3.1, 5, 7.2, 7.3, 7.5, A.1
Rationale/Explanation of issue:


In Section 3.1, move the following text to section 3.4:

" After EAP authentication is complete, the peer will typically
transmit data to the network via the authenticator. In order to
provide assurance that the peer transmitting data is the same
entity that successfully completed EAP authentication, the lower
layer needs to bind per-packet integrity, authentication and
replay protection to the original EAP authentication, using keys
derived during EAP authentication. Alternatively, the lower
layer needs to be physically secure. Otherwise it is possible
for subsequent data traffic to be hijacked, or replayed.

As a result of these considerations, EAP SHOULD be used only when
lower layers provide physical security for data (e.g., wired PPP
or IEEE 802 links), or for insecure links, where per-packet
authentication, integrity and replay protection is provided.

Where keying material for the lower layer ciphersuite is itself
provided by EAP, ciphersuite negotiation and key activation is
controlled by the lower layer. In PPP, ciphersuites are
negotiated within ECP so that it is not possible to use keys
derived from EAP authentication until the completion of ECP.
Therefore an initial EAP exchange cannot protected by a PPP
ciphersuite, although EAP re-authentication can be protected.

In IEEE 802 media, key activation also typically occurs after
completion of EAP authentication. Therefore an initial EAP
exchange typically cannot be protected by lower layer
ciphersuite, although an EAP re-authentication or
pre-authentication exchange can be protected."


In Section 3.1, indent the following paragraph:

"The Point-to-Point Protocol is designed for simple links which
transport packets between two peers. These links provide
full-duplex simultaneous bi-directional operation, and are
assumed to deliver packets in order."


In Section 5, change "MITM resistance:" to "Crypt. binding:" (Since we no
longer have a definition of Man-in-the-Middle resistance)

In Section 7.2, change "man-in-the-middle resistance" to "cryptographic binding"

In Section 7.3, Change "Identity-Response" to "EAP-Response/Identity" (two times)

Delete Section A.1, and change Section 7.5 to the following:

"7.5 Packet modification attacks

While EAP methods may support per-packet data origin authentication,
integrity and replay protection, support is not provided within the
EAP layer.

Since the Identifier is only a single octet, it is easy to guess,
allowing an attacker to successfully inject or replay EAP packets. An
attacker may also modify EAP headers (Code, Identifier, Length, Type)
within EAP packets where the header is unprotected. This could cause
packets to be inappropriately discarded or misinterpreted.

In the case of PPP and IEEE 802 wired links, it is assumed that such
attacks are restricted to attackers who can gain access to the
physical link. However, where EAP is run over physically insecure
lower layers such as wireless (802.11 or cellular) or the Internet
(such as within protocols supporting PPP, EAP or Ethernet Tunneling),
this assumption is no longer valid and the vulnerability to attack is
greater.

To protect EAP messages sent over physically insecure lower layers,
methods providing mutual authentication and key derivation, as well
as per-packet origin authentication, integrity and replay protection
SHOULD be used.

Method-specific MICs may be used to provide protection.
If a per-packet MIC is employed within an EAP method, then peers,
authentication servers, and authenticators not operating in
pass-through mode MUST validate the MIC. MIC validation failures
SHOULD be logged. Whether a MIC validation failure is considered a
fatal error or not is determined by the EAP method specification.

Since EAP messages of Types Identity, Notification, and
Nak do not include their own MIC, it may be desirable for the EAP
method MIC to cover information contained within these messages, as
well as the header of each EAP message. For details, see Appendix A.

To provide protection, EAP also may be encapsulated within a
protected channel created by protocols such as ISAKMP [RFC2408] as is
done in [IKEv2] or within TLS [RFC2246]. However, as noted in Section
7.4, EAP tunneling may result in a man-in-the-middle vulnerability.

Existing EAP methods define message integrity checks (MICs)
that cover more than one EAP packet. For example, EAP-TLS [RFC2716]
defines a MIC over a TLS record that could be split into multiple
fragments; within the FINISHED message, the MIC is computed over
previous messages. Where the MIC covers more than one EAP packet, a
MIC validation failure is typically considered a fatal error.

Within EAP-TLS [RFC2716] a MIC validation failure is treated as a
fatal error, since that is what is specified in TLS [RFC2246].
However, it is also possible to develop EAP methods that support
per-packet MICs, and respond to verification failures by silently
discarding the offending packet.

In this document, descriptions of EAP message handling assume that
per-packet MIC validation, where it occurs, is effectively performed
as though it occurs before sending any responses or changing the
state of the host which received the packet."

Recommended resolution: Accept

Issue 159: Organization Issues
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: July 9, 2003
Reference:
Document: EAP-04
Comment type: E
Priority: 1
Section: 2.2, 4.1
Rationale/Explanation of issue:

The organization of section 2.2 and 4.1 could be improved.

Proposed changes:

Delete the following text from Section 2.2:

Paragraphs from "Where an authenticator operates as a pass-through..."
to the end of the section (all material relating to pass-through
operation).

Add the following text to Section 2.3:

"2.3 Pass-through behavior

Where an authenticator operates as a pass-through, it forwards
packets back and forth between the peer and a backend authentication
server, based on the EAP layer header fields (Code, Identifier,
Length). This includes performing validity checks on the Code,
Identifer and Length fields, as described in Section 4.1.

Since pass-through authenticators rely on a backend authenticator
server to implement methods, the EAP method layer header fields
(Type, Type-Data) are not examined as part of the forwarding
decision. The forwarding model is illustrated in Figure 2. Compliant
pass-through authenticator implementations MUST by default be capable
of forwarding packets from any EAP method. The use of the RADIUS
protocol for encapsulation of EAP in pass-through operation is
described in [RFC2869bis].

    Peer           Pass-through Authenticator    Authentication

                                                    Server

+-+-+-+-+-+-+                             +-+-+-+-+-+-+

|           |                             |           |

|EAP method |                             |EAP method |

|     V     |                             |     ^     |

+-+-+-!-+-+-+  +-+-+-+-+-+-+-+-+-+-+-+-+  +-+-+-!-+-+-+

|     !     |  |           |           |  |     !     |

|EAP  !layer|  | EAP layer | EAP layer |  |EAP  !layer|

|     !     |  |     +-----+-----+     |  |     !     |

|     !     |  |     !     |     !     |  |     !     |

+-+-+-!-+-+-+  +-+-+-!-+-+-+-+-+-!-+-+-+  +-+-+-!-+-+-+

|     !     |  |     !     |     !     |  |     !     |

|Lower!layer|  |Lower!layer| AAA ! /IP |  | AAA ! /IP  |

|     !     |  |     !     |     !     |  |     !     |

+-+-+-!-+-+-+  +-+-+-!-+-+-+-+-+-!-+-+-+  +-+-+-!-+-+-+

      !              !           !              !

      !              !           !              !

      +-------->-----+           +------->------+


Figure 2: Pass-through Authenticator

For sessions in which the authenticator acts as a pass-through, it
MUST determine the outcome of the authentication solely based on the
Accept/Reject indication sent by the backend authentication server;
the outcome MUST NOT be determined by the contents of an EAP packet
sent along with the Accept/Reject indication, or the absence of such
an encapsulated EAP packet."

Replace Section 4.1 with the following:

"4.1 Request and Response

Description

The Request packet (Code field set to 1) is sent by the
authenticator to the peer. Each Request has a Type field which
serves to indicate what is being requested. Additional Request
packets MUST be sent until a valid Response packet is received, or
an optional retry counter expires.

Retransmitted Requests MUST be sent with the same Identifier value
in order to distinguish them from new Requests. The contents of
the data field are dependent on the Request Type. The peer MUST
send a Response packet in reply to a valid Request packet.
Responses MUST only be sent in reply to a valid Request and never
retransmitted on a timer.

If a peer receives a valid duplicate Request for which it has
already sent a Response, it MUST resend its original Response
without reprocessing the Request. Requests MUST be processed in
the order that they are received, and MUST be processed to their
completion before inspecting the next Request.

A summary of the Request and Response packet format is shown below.
The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |   Identifier  |           Length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |   Type-Data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


Code

1 for Request
2 for Response

Identifier

The Identifier field is one octet. The Identifier field MUST be
the same if a Request packet is retransmitted due to a timeout
while waiting for a Response. Any new (non-retransmission)
Requests MUST modify the Identifier field.

The Identifier field of the Response MUST match that of the
currently outstanding Request. An authenticator receiving a
Response whose Identifier value does not match that of the
currently outstanding Request MUST silently discard the Response.

In order to avoid confusion between new Requests and retransmissions,
the Identifier value chosen for each new Request need only be
different from the previous Request, but need not be unique within
the conversation. One way to achieve this is to start the Identifier
at an initial value and increment it for each new Request. Initializing
the first Identifier with a random number rather than starting from
zero is recommended, since it makes sequence attacks somewhat
harder.

Since the Identifier space is unique to each session,
authenticators are not restricted to only 256 simultaneous
authentication conversations. Similarly, with re-authentication,
an EAP conversation might continue over a long period of time, and
is not limited to only 256 roundtrips.

Implementation Note: The authenticator is responsible for
retransmitting Request messages. If the Request message is
obtained from elsewhere (such as from a backend authentication
server), then the authenticator will need to save a copy of the
Request in order to accomplish this. The peer is responsible
for detecting and handling duplicate Request messages before
processing them in any way, including passing them on to an
outside party. The authenticator is also responsible for
discarding Response messages with a non-matching Identifier
value before acting on them in any way, including passing them
on to the backend authentication server for verification.
Since the authenticator can retransmit before receiving a
Response from the peer, the authenticator can receive multiple
Responses, each with a matching Identifier. Until a new Request
is received by the authenticator, the Identifier value is not
updated, so that the authenticator forwards Responses to the
backend authentication server, one at a time.

Length

The Length field is two octets and indicates the length of the EAP
packet including the Code, Identifier, Length, Type, and Type-Data
fields. Octets outside the range of the Length field should be
treated as Data Link Layer padding and MUST be ignored on
reception. A message with the Length field set to a value larger
than the number of received octets MUST be silently discarded.

Type

The Type field is one octet. This field indicates the Type of
Request or Response. A single Type MUST be specified for each EAP
Request or Response. An initial specification of Types follows
in Section 5 of this document.

The Type field of a Response MUST either match that of the
Request, or correspond to a legacy or Expanded Nak (see
Section 5.3) indicating that a Request Type is unacceptable
to the peer. A peer MUST NOT send a Nak (legacy or expanded)
in response to a Request, after an initial non-Nak Response has
been sent. An EAP server receiving a Response not meeting these
requirements MUST silently discard it.

Type-Data

The Type-Data field varies with the Type of Request and the
associated Response."

Recommended resolution: Accept

Issue 160: Network Selection Assistance
Submitter name: Farid Adrangi
Submitter email address: farid.adrangi@intel.com
Date first submitted: July 11, 2003
Reference:
Document: EAP-04
Comment type: T
Priority: S
Section:  Various
Rationale/Explanation of issue:

Currently there may be a requirement for providing
information on network selection within EAP. RFC 2284bis
does not provide guidance on how to do this, in particular
whether it is appropriate to Use EAP Notification or
EAP Identity Request/Response messages, and if so,
what is the recommended way to do this. This problem
also came up in the discussion of Issue 142.

[Bernard Aboba]  This outside RFC 3748.  Why don't you write a separate draft on this issue?

Recommended resolution: Reject
 

Issue 161: State Machine demultiplexing
Submitter name: Florent Bersani
Submitter email address:mailto:florent.bersani@francetelecom.com
Date first submitted: July 21, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001504.html
Document: SM-04
Comment type: T
Priority: S
Section: 
Rationale/Explanation of issue:

When two peers simultaneously perform EAP authentications (that is to say A
acts as a peer in dialog #1 with B which acts as an authenticator and, at
the same time, A acts as an authenticator in dialog #2 with B which acts as
a peer) the EAP dialogs have to get demultiplexed: this can easily be done
according to the EAP code field (responses go to the authenticator and other
codes - requests, success and failure - go to the peer).

The question is : who does this demultiplexing ? Should it be the lower
layer (which then would have to read and understand the EAP layer) or the
EAP state machine (which then should be modified, I think) ?

[Pasi Eronen]

I think the demultiplexing should be done by the lower layer.
The state machine doc should probably be updated to say
this, and describe how the demultiplexing is done (it
should work the way you proposed).

This way we don't have to unnecessarily complicate the state
machines with this detail (bidirectional authentication
with two conversations is anyway an obsolete feature that's
probably not used anywhere, right?).

Add to state machine doc, section 2, before the last paragraph:

   Some environments where EAP is used, such as PPP, may support
   peer-to-peer operation. That is, both parties act as peers and
   authenticators at the same time, in two simultaneous and
   independent EAP conversations. In this case, the lower layer to at
   each node has to perform demultiplexing of incoming EAP packets.=20
   EAP packets with Code set to Response are delivered to the=20
   Authenticator state machine, and all other EAP packets are=20
   delivered to the Peer state machine.
 

[Bernard Aboba]

What are the link layer requirements for support of EAP peer-to-peer
operation?  I ask this because there is nothing in RFC 2248bis Section
2.4 or 3.1 that discusses these requirements.

For example, if there a requirement for the link layer to be able to
demultiplex the EAP conversations in each direction, wouldn't that imply
the need for a field in the link layer header with which to do this
demultiplexing?  For example, IPv4/IPv6 packets are demultiplexed by
different EtherType values, not really by the IP version number.

In Section 3.2.1 of RFC 2284bis the PPP Authentication Protocol format is
defined.  EAP packets are encapsulated with an Authentication Protocol
value of C227 (Hex).  Similarly, in IEEE 802.1X an Ethertype is assigned
to 802.1X packets. Neither of these encapsulations can demultiplex EAP
conversations occurring in different directions.  For example, there is no
different Authentication Protocol value or Ethertype for this.

Since neither of these encapsulations demultiplexes EAP conversations in
either direction, and the link layer does not look at frames deeper in the
packet, such as the EAP Code or Type fields, I don't think that this
explanation can be correct. If there is demultiplexing, then this would
need to occur in the EAP layer, not in the link layer, no?

[Pasi Eronen

I agree with you in that the demultiplexing can't (or at least
shouldn't) be done at the link layer in e.g. PPP, since it would
need to look inside the EAP packets (to check the Code field).=20

More likely it's done by "something" between the link layer and
EAP state machines. Would simply changing "lower layer" to
"implementation" be sufficient?

[Bernard Aboba]

I think this is sufficient for the State Machine spec.  But I think we may
also need to change some text and possibly a figure in RFC 2284bis to
make it more clear.

For example, if multiplexing occurs on the "Code" field then it implies
that an "EAP peer" listener within an EAP implementation will not receive
EAP packets with Code=2 (Response) (but packets for all other Codes,
including 1, 3, 4).  Similarly, the "EAP server" listener will only
recieve EAP packets with Code=2 (Request). The implementation behavior
therefore differs based on whether there is an "EAP peer" or "EAP server"
listener present, or both.

This is a bit different than the behavior implied by RFC 2284bis as
where it is implied that an "EAP peer" will silently discard a
received EAP-Response packet.  If there is no "EAP server" listener
on the receiving host, or if there is but the EAP method only supports
"EAP peer" functionality, then silent discard will occur.  However if
there is an "EAP server" listener, and an EAP method registered with "EAP
server" functionality, then the EAP-Response might be processed.

There is therefore some implied multiplexing that occurs based on the Code
field, prior to the Type multiplexing which occurs later.  This is not
shown on the diagrams.

[Bernard Aboba]

Here is the proposed revised text of Sections 2.2-2.4:

"2.2 EAP multiplexing model

Conceptually, EAP implementations consist of the following
components:

[a] Lower layer. The lower layer is responsible for transmitting and
receiving EAP frames between the peer and authenticator. EAP has
been run over a variety of lower layers including PPP; wired IEEE
802 LANs [IEEE-802.1X]; IEEE 802.11 wireless LANs [IEEE-802.11];
UDP (L2TP [RFC2661] and IKEv2 [IKEv2]); and TCP [PIC]. Lower
layer behavior is discussed in Section 3.

[b] EAP layer. The EAP layer receives and transmits EAP packets via
the lower layer, implements duplicate detection and
retransmission, and delivers and receives EAP messages to and
from the EAP peer and authenticator layers.

[c] EAP peer and authenticator layers. Based on the Code field, the
EAP layer demultiplexes incoming EAP packets to the EAP peer and
authenticator layers. Typically an EAP implementation on a given
host will support either peer or authenticator functionality, but
it is possible for a host to act as both an EAP peer and
authenticator. In such an implementation both EAP peer and
authenticator layers will be present.

[d] EAP method layers. EAP methods implement the authentication
algorithms and receive and transmit EAP messages via the EAP peer
and authenticator layers. Since fragmentation support is not
provided by EAP itself, this is the responsibility of EAP methods,
which are discussed in Section 5.

The EAP multiplexing model is illustrated in Figure 1 below. Note
that there is no requirement that an implementation conform to this
model, as long as the on-the-wire behavior is consistent with it.
  

         +-+-+-+-+-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+-+-+-+-+

         |           |           |  |           |           |

         | EAP method| EAP method|  | EAP method| EAP method|

         | Type = X  | Type = Y  |  | Type = X  | Type = Y  |

         |       V   |           |  |       ^   |           |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         |  EAP  ! Peer layer    |  |  EAP  ! Auth. layer   |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+  

         |       !               |  |       !               |

         |  EAP  ! layer         |  |  EAP  ! layer         |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

         |       !               |  |       !               |

         | Lower ! layer         |  | Lower ! layer         |

         |       !               |  |       !               |

         +-+-+-+-!-+-+-+-+-+-+-+-+  +-+-+-+-!-+-+-+-+-+-+-+-+

                 !                          !

                 !   Peer                   ! Authenticator

                 +------------>-------------+

  

                    Figure 1: EAP Multiplexing Model

Within EAP, the Code field functions much like a protocol number in
IP. It is assumed that the EAP layer demultiplexes incoming EAP
packets according to the Code field. Received EAP packets
with Code=1 (Request), 3 (Success) and 4 (Failure) are
delivered by the EAP layer to the EAP peer listener, if
present. EAP packets with Code=2 (Response) are delivered
to the EAP authenticator listener, if present.

Within EAP, the Type field functions much like a port number in UDP
or TCP. It is assumed that the EAP peer and authenticator layers
demultiplex incoming EAP packets according to their Type, and deliver
them only to the EAP method corresponding to that Type. An
EAP method implementation on a host may register to receive
packets from the peer or authenticator listener, or both.

Since EAP authentication methods may wish to access the Identity,
implementations SHOULD make the Identity Request and Response
accessible to authentication methods (Types 4 or greater) in addition
to the Identity method. The Identity Type is discussed in Section
5.1.

A Notification Response is only used as confirmation that the peer
received the Notification Request, not that it has processed it, or
displayed the message to the user. It cannot be assumed that the
contents of the Notification Request or Response is available to
another method. The Notification Type is discussed in Section 5.2.

Nak (Type 3) or Expanded Nak (Type 254) are utilized for the purposes
of method negotiation. Peers respond to an initial EAP Request for
an unacceptable Type with a Nak Response (Type 3) or Expanded Nak
Response (Type 254). It cannot be assumed that the contents of the
Nak Response(s) are available to another method. The Nak Type(s) are
discussed in Section 5.3.

EAP packets with codes of Success or Failure do not include a Type
field, and are not delivered to an EAP method. Success and Failure are
discussed in Section 4.2.

Given these considerations, the Success, Failure, Nak Response(s) and
Notification Request/Response messages MUST NOT be used to carry data
destined for delivery to other EAP methods.

2.3 Pass-through behavior

When operating as a "pass-through authenticator", an
authenticator performs checks on the Code, Identifier and
Length fields as described in Section 4.1. It
forwards EAP packets received from the peer and
destined to its authenticator listener to the backend
authentication server; packets received from the
backend authentication server destined to the peer
are forwarded to it.

The forwarding decision is based on examination of the
Code, Identifier and Length fields. Since a "pass-through
authenticator" only forwards to the backend authentication
server EAP packets received from the peer and destined for its
authenticator listener, pass-through authenticator
implementations MUST be capable of forwarding to the
backend authentication server EAP packet received from
the peer with Code=2 (Response). They also MUST be capable
of receiving EAP packets from the backend authentication
server and forwarding EAP packets of Code=1 (Request),
Code=3 (Success), and Code=4 (Failure) to the peer.

Since pass-through authenticators rely on a backend authenticator
server to implement methods, the EAP method layer header fields
(Type, Type-Data) are not examined as part of the forwarding
decision, except where the authenticator implements one or more
authentication methods locally. In this case, the authenticator
may examine the Type field to determine whether to act on the
packet itself or forward it. Compliant pass-through
authenticator implementations MUST be default forward EAP
packets of any Type. The forwarding model is illustrated
in Figure 2.

Since EAP packets received with Code=1 (Request), Code=3 (Success),
and Code=4 (Failure) are demultiplexed by the EAP layer and
delivered to the peer listener, unless a host implements
an EAP peer listener, these packets will be silently
discarded. The behavior of a "pass-through peer" is
undefined within this specification, and is unsupported by
AAA protocols such as RADIUS [RFC3579] and
Diameter [DiamEAP].

        Peer      Pass-through Authenticator  Authentication

                                                 Server

      +-+-+-+-+-+-+                                   +-+-+-+-+-+-+

      |           |                                   |           |

      |EAP method |                                   |EAP method |

      |     V     |                                   |     ^     |

      +-+-+-!-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-!-+-+-+

      |     !     |   |EAP  |  EAP  |             |   |     !     |

      |     !     |   |Peer |  Auth.| EAP Auth.   |   |     !     |

      |EAP  ! peer|   |     | +-----------+       |   |EAP  !Auth.|

      |     !     |   |     | !     |     !       |   |     !     |

      +-+-+-!-+-+-+   +-+-+-+-!-+-+-+-+-+-!-+-+-+-+   +-+-+-!-+-+-+

      |     !     |   |       !     |     !       |   |     !     |

      |EAP  !layer|   |   EAP !layer| EAP !layer  |   |EAP  !layer|

      |     !     |   |       !     |     !       |   |     !     |

      +-+-+-!-+-+-+   +-+-+-+-!-+-+-+-+-+-!-+-+-+-+   +-+-+-!-+-+-+

      |     !     |   |       !     |     !       |   |     !     |

      |Lower!layer|   |  Lower!layer| AAA ! /IP   |   | AAA ! /IP |

      |     !     |   |       !     |     !       |   |     !     |

      +-+-+-!-+-+-+   +-+-+-+-!-+-+-+-+-+-!-+-+-+-+   +-+-+-!-+-+-+

            !                 !           !                 !

            !                 !           !                 !

            +-------->--------+           +--------->-------+

                       Figure 2: Pass-through Authenticator

For sessions in which the authenticator acts as a pass-through, it
MUST determine the outcome of the authentication solely based on the
Accept/Reject indication sent by the backend authentication server;
the outcome MUST NOT be determined by the contents of an EAP packet
sent along with the Accept/Reject indication, or the absence of such
an encapsulated EAP packet.

2.4 Peer-to-Peer Operation

Since EAP is a peer-to-peer protocol, an independent and simultaneous
authentication may take place in the reverse direction (depending on
the capabilities of the lower layer). Both peers may act as
authenticators and authenticatees at the same time; in this case it
is necessary to both peers to implement both EAP authenticator and
peer listeners. In addition, the EAP method implementations on
both peers must support both authenticator and peer functionality.

Although EAP supports peer-to-peer operation, some EAP
implementations, methods, AAA protocols and link layers may not
support this. For example, EAP-TLS [RFC2716] is a client-server
protocol requiring a different certificate profile for the client and
server. This implies that a host supporting both the EAP-TLS peer and
authenticator roles would need to implement both peer and
authenticator listeners; would need to support both the peer and
authenticator roles in the EAP-TLS implementation; would need to be
provisioned with two distinct certificates, one appropriate for each
role.

Some EAP methods may support asymmetric authentication, with one type
of credential being required for the peer and another type for the
authenticator. Hosts supporting peer-to-peer operation with such a
method would need to be provisioned with both types of credentials.

AAA protocols such as RADIUS/EAP [RFC3579] and Diameter EAP
[DIAM-EAP] only support "passthrough authenticator" operation.
As noted in [RFC3579] Section 2.6.2, a RADIUS server responds to an
Access-Request encapsulating an EAP-Request, Success or Failure
packet with an Access-Reject. There is therefore no support for
"passthrough peer" operation.

Link layers such as IEEE 802.11 may only support uni-directional
derivation and transport of transient session keys. For example, the
group-key handshake defined in [IEEE-802.11i] is uni-directional,
since in IEEE 802.11 only the Access Point (AP) sends multicast
traffic. This means that in ad-hoc operation where either peer may
send multicast traffic, two uni-directional group-key exchanges are
required. Due to constraints imposed by the 4-way unicast key
handshake state machine, this also implies two 4-way handshake and
EAP method exchanges.

Link layers such as IEEE 802.11 adhoc also do not support "tie
breaking" wherein two hosts initiating authentication with each other
will only go forward with a single authentication. This implies that
even if 802.11 were to support a bi-directional group-key handshake,
then two authentications, one in each direction, might still occur."

Proposed Resolution: Accept

Issue 162: Minimum MTU Not Defined
Submitter name: Lauri Tarkkala
Submitter email address: ltarkkal@ssh.com
Date first submitted: July 21, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001507.html
Document: EAP-04
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

The current RFC2284bis draft does not define a minimum MTU that EAP
methods can rely on. At least the following EAP methods do not
do fragmenting:
- Identity
- Notification
- MD5-Challenge
- .. etc
(- and Nak, which is not a method, but anyway)

Currently the "minimum MTU" is "inherited" from PPP (1500 bytes),
but all uses of EAP do not conform to this (e.g. PPPoe).
A minimum MTU must be defined such that embeddings of EAP into
other protocols will be such that implementations of these
methods will always operate correctly. There are also
the implied architectural limitations, which will cut
across any system architecture which contains EAP:

- Maximum identity length (unfragmented MTU - headers bytes -
  maximum length of piggy-backed option settings)
- Maximum notification length

The defined minimum MTU should be defined to be as large
as possible, due to the lossage implied when doing
fragmentation/reassembly in a lock-step
protocol. Note also that the composite protocol
architecture may be doing fragmentation/reasembly
in both the EAP transport and the EAP method, if
the usage is improper.

The proposed solution is in a nutshell:
- Define that minimum frame size that can be sent/received unfragmented
  by EAP as X bytes.
- State the maximum notification length as X - headers.
- State the maximum identity req/resp lengths as 
  Y = X - headers - possible options
- State that because EAP is a lock-step protocol and if latency
  is important and methods with large frames are used, the
  EAP transport protocol SHOULD provide fragmentation and
  reassembly services for frames upto 2^16 bytes.
- Initial proposal of X as 1400 bytes. If somebody knows any protocols
  that use EAP with MTU's then I'm sure we'd all like to hear about it.

Hopefully somebody has the relevant experience from all EAP implementations
to specify better values for X and Y than in the text below (1400 and
1024 respectively).

Requested change:

In section 3.1 ("Lower layer requirements") add below.

"[4] MTU known a-priori.  The EAP layer does not support
 fragmentation and reassembly.  However, EAP methods SHOULD be capable of
 handling fragmentation and reassembly.  As a result, EAP is
 capable of functioning across a range of MTU sizes, as long as
 the MTU is known a-priori.  EAP does not support path MTU discovery."

to

"[5] Minimum MTU. The EAP layer, the EAP Identity method,
 EAP Notification method and the NAK responses do NOT support
 fragmentation and reassembly. EAP methods designed originally
 for use within PPP (where a 1500 byte MTU is guaranteed for
 control frames [RFC1661]) also lack fragmentation and reassembly features.
 The lower layer transporting EAP MUST therefore be capable of carrying
 EAP frames of up to 1400 bytes unfragmented. Note also that EAP is a
 lock-step protocol, which implies a certain inefficiency when doing
 fragmentation and reassembly. The lower layer therefore SHOULD
 provide fragmentation and reassembly services."

... and Change the numbering of the following items from [5] -> [6] and
[6] -> [7].

After the first paragraph in "Section 5.1" add:

"Some implementations of EAP tend to piggy-back into an Identity
 Request or Response various options after a NUL-character. An EAP
 implementation SHOULD NOT assume that usernames or displayable messages
 over 1024 bytes in Identity Requests or Responses will work in all
 environments."

Add to first paragraph in "Section 5.2" the sentences:

"Note that the maximum length of a notification messages that can be used
 reliably in all EAP implementations is 1400 bytes. The length
 of the human readable message SHOULD therefore be at most 1395 bytes."

--
Lauri Tarkkala
SSH Communications Security Corp
http://www.ssh.com/

[BA] Here are my comments:

"Minimum MTU. The EAP layer, the EAP Identity method,
EAP Notification method and the NAK responses do NOT support
fragmentation and reassembly. "

[BA] Recommend adding EAP OTP, GTC and Challenge-MD5 to this list.

EAP methods designed originally
for use within PPP (where a 1500 byte MTU is guaranteed for
control frames [RFC1661]) also lack fragmentation and reassembly features.

[BA] It is true that the methods defined in RFC 2284 do not support
fragmentation and reassembly. But since we don't have specifications for
many methods that have been allocated type codes, it is hard to
say whether the statement above is true or not. Certainly EAP TLS [RFC
2716] does support fragmentation.

Question: Is a 1500 byte MTU really guaranteed for control frames? I seem
to recall situations where only a 576 octet MTU was available. My
suggestion is that the above sentence be changed to "may lack
fragmentation and reassembly features".

"The lower layer transporting EAP MUST therefore be capable of carrying
EAP frames of up to 1400 bytes unfragmented. Note also that EAP is a
lock-step protocol, which implies a certain inefficiency when doing
fragmentation and reassembly. The lower layer therefore SHOULD
provide fragmentation and reassembly services."

[BA] I don't know that we can impose this requirement on lower layers
necessarily. After all, the lower layers are what they are. Suggest that
the MUST be changed to a SHOULD. Recommend that the last sentence be
deleted. Lower layers typically don't provide fragmentation and
reassembly services, since that's an IP layer function.

"Some implementations of EAP tend to piggy-back into an Identity
Request or Response various options after a NUL-character. An EAP
implementation SHOULD NOT assume that usernames or displayable messages
over 1024 bytes in Identity Requests or Responses will work in all
environments."

[BA] Why is the limit only 1024 octets for Identity and a different number
for other requests?

Overall, my comment is that I'd prefer to recommend that methods assume a
certain minimum MTU and that they MUST support fragmentation and
reassembly if it is possible that frames can exceed this minimum MTU size.
My overall impression was that we might have to live with a minimum MTU as
low as 576 octets.

[BA] Here are the proposed fixes:

In section 3.1, Change:

"[4] MTU known a-priori. The EAP layer does not support
fragmentation and reassembly. However, EAP methods SHOULD be capable of
handling fragmentation and reassembly. As a result, EAP is
capable of functioning across a range of MTU sizes, as long as
the MTU is known a-priori. EAP does not support path MTU discovery."

To:

"[4] Minimum MTU. EAP is capable of functioning on lower
layers that provide an EAP MTU size of 1020 octets or greater.

EAP does not support path MTU discovery, and fragmentation and
reassembly is not supported by EAP, nor by the methods
defined in this specification: the Identity (1),
Notification (2), Nak Response (3), MD5-Challenge (4),
One Time Password (5), Generic Token Card (6)
and expanded Nak Response (254) Types.

Typically, the EAP peer obtains information on the EAP MTU from the
lower layers and sets the EAP frame size to an appropriate value.
Where the authenticator operates in pass-through mode, the
authentication server does not have a direct way of determining
the EAP MTU, and therefore relies on the authenticator to provide
it with this information, such as via the Framed-MTU attribute,
as described in [RFC3579], Section 2.4.

While methods such as EAP-TLS [RFC2716] support fragmentation
and reassembly, EAP methods originally designed for use within PPP
where a 1500 octet MTU is guaranteed for control frames
(see [RFC1661], Section 6.1) may lack fragmentation and reassembly features.

EAP methods can assume a minimum EAP MTU of 1020 octets, in the
absence of other information. EAP methods SHOULD
include support for fragmentation and reassembly if their payloads
can be larger than this minimum EAP MTU.

EAP is a lock-step protocol, which implies a certain inefficiency
when handling fragmentation and reassembly. Therefore if the
lower layer supports fragmentation and reassembly
(such as where EAP is transported over IP), it may be
preferrable for fragmentation and reasembly to occur in the
lower layer rather than in EAP. This can be accomplished by
providing an artificially large EAP MTU to
EAP, causing fragmentation and reassembly to be handled within the
lower layer."

After the first paragraph in Section 5.1, add:

"Some EAP implementations piggy-back various options into the Identity
Request after a NUL-character.  By default an EAP implementation SHOULD NOT assume
that an Identity Request or Response can be larger than 1020 octets."

Add to the first paragraph in Section 5.2, the sentences:

"Note that the default maximum length of a Notification Request is 1020 octets.  By default,
this leaves at most 1015 octets for the human readable message."

References: Add informative reference to RFC 3579, RADIUS/EAP.

Change

Proposed Resolution: Accept

Issue 163: Minor Editorial Nit
Submitter name: Lauri Tarkkala
Submitter email address:ltarkkal@ssh.com
Date first submitted: July 21, 2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-July/001508.html
Document: EAP-04
Comment type: E
Priority: 2
Section:  2.1
Rationale/Explanation of issue:

Third paragraph in Section 2.1 states

"A peer MUST NOT send a Nak (legacy or expanded) in reply to a
 Request, after an initial non-Nak Response has been sent.  Since
 spoofed EAP Request packets may be sent by an attacker, an
 authenticator receiving an unexpected Nak SHOULD silently
 discard it and log the event."

and in Section 1.2 we have the definition of silently discard:

"This means the implementation discards the packet
 without further processing.  The implementation
 SHOULD provide the capability of logging the
 event, including the contents of the silently discarded packet,
 and SHOULD record the event in a statistics counter."

Recommended change:

In section 2.1 change the third paragraph quoted above to
read:

"A peer MUST NOT send a Nak (legacy or expanded) in reply to a
 Request, after an initial non-Nak Response has been sent.  Since
 spoofed EAP Request packets may be sent by an attacker, an
 authenticator receiving an unexpected NAK SHOULD
 discard it and log the event."

(e.g. remove the "silently", at first read I found this
 a bit confusing).

Proposed Resolution: Accept

Issue 164: Conflicting Implementation Note
Submitter name: Joe Salowey
Submitter email address: jsalowey@cisco.com
Date first submitted: 7/29/2003
Reference:
Document: RFC2284bis
Comment type: T
Priority: S
Section: 5.1
Rationale/Explanation of issue:

In section 2 [3] there is the following text
"After a suitable number of
       retransmissions, the authenticator SHOULD end the EAP
       conversation.  The authenticator MUST NOT send a Success or
       Failure packet when retransmitting or when it fails to get a
       response from the peer."

In section 5.1 there is the following text in the implementation note:

"It is suggested that the Identity Request be
 retried a minimum of 3 times before terminating the
authentication phase with a Failure reply."

This seems contradictory.

Requested change:

Section 5.1

"It is suggested that the Identity Request be
retried a minimum of 3 times before terminating the
authentication."

Recommended Resolution: Accept

Issue 165: Applicability Statement
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 8/2/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-August/001524.html
Document: RFC2284bis
Comment type: T
Priority: S
Section: 1.4
Rationale/Explanation of issue:

EAP needs an applicability statement so that it is clear when it is appropriate and inappropriate to use it.

Insert the following section:

1.4 Applicability

EAP is an authentication framework primarily for use in situations
such as network access, in which IP layer connectivity may not be available.

Since the goal of EAP is to support authentication without requiring
IP connectivity, it provides just enough support for the
reliable transport of authentication protocols, and no more.
EAP is a lock-step protocol and does not support an efficient
reliable transport service as in TCP [RFC793] or SCTP [RFC2960].
While EAP provides support for retransmission, it assumes ordering
guarantees provided by the lower layer, so that out of order reception
is not supported.

As noted in Section 3.1, EAP does not support fragmentation
and reassembly as in IP, although EAP methods may provide support
for this. As a result, authentication protocols generating payloads larger
than the EAP MTU will need to be modified in order to provide
fragmentation support.

EAP authentication is initiated by the authenticator, whereas
many authentication protocols are initiated by the client (peer). As a
result, it may be necessary for an algorithm to add 0.5 - 1 additional
roundtrips between the client and authenticator in order to run over EAP.

As a result, an authentication algorithm will typically
require more round-trips when run over EAP than when run directly over IP.
Additionally, certificate-based authentication
algorithms using long certificate chains can result in many
round-trips due to fragmentation.

Where EAP runs over a lower layer in which significant packet loss
is experienced, or where the connection between
the authenticator and authentication server experiences significant
packet loss, EAP methods requiring many round-trips may
experience difficulties. In these situations, use of EAP
methods with fewer round trips is advisable.

Where transport efficiency is a consideration, and IP
transport is available, it may be preferable to expose an
artificially high EAP MTU to EAP and allow fragmentation to take
place in IP. Alternatively, it is possible to choose other
security mechanisms such as TLS [RFC2246] or IKE [RFC2409] or
an alternative authentication framework such as SASL [RFC2222] or
GSS-API [RFC2743].

References (Informative)

[RFC2246]
[RFC2409]
[RFC2743]
Linn, J., "Generic Security Service Application Program Interface, Version 2", RFC 2743, January 2000.

[RFC2222]
Myers, J., "Simple Authentication and Security Layer (SASL)", RFC 2222, October 1997.

Recommended Resolution: Accept

Issue 166: Message Authenticator String Needs Clarification
Submitter name: Brian Burch
Submitter email address: Brian@PingToo.com
Date first submitted: 8/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-August/001576.html
Document: RFC2869bis
Comment type: T
Priority: 1
Section: 3.2
Rationale/Explanation of issue:

I realise this section has NOT changed significantly between the published RFC and the draft. However, I'm currently working in this area and I cannot derive an unambiguous
interpretation of the section from rfc2689bis-22.
Length description of problem:
There's a semi-recursive problem with this attribute. The EAP Message Authenticator is supposed to digitally sign an entire Radius/EAP packet, but so is the Radius Authenticator. Given that Radius is being used
as a "transport mechanism" for EAP, it follows that the Radius Authenticator MUST be the last field computed. In other words, the EAP Message Authenticator MUST be computed over the Radius packet BEFORE
the Radius Authenticator is known. Therefore, the EAP Message Authenticator must be computed over an all-zero's Radius Authenticator. This could be stated more clearly.

Now, we have the same question about the EAP Message Authenticator itself. Do we compute over an all-zero's EAP Message Authenticator, or do we compute over just the Radius Packet BEFORE the Message
Authenticator is added? I don't know and I can't tell from the RFC. My guess is the process is as follows:

1. Put the EAP Message attribute into the Radius Packet.
2. Put an all-zero's EAP Message Authenticator into the Radius Packet.
3. Compute the HMAC-MD5 digest for the entire Radius packet, i.e. {RadiusType;RadiusIdentifier;RadiusLength;RadiusRequestAuthenticator;Non-EAPRadiusAttributes;EAP-MSG;EAP-Zero-Auth}
4. Put the new HMAC-MD5 digest into the string value of the (currently zero) EAP-MessageAuthenticator attribute.
5. Compute the RadiusAuthenticator over the entire RadiusPacket (as normal).

I'm not certain whether my understanding is correct, but a description of this kind is less ambiguous. It would also make the sentence that describes "the message integrity check" much clearer.

I have the same kind of problem understanding the description of the EAP Message Authenticator within Access-Challenge, etc. Does it mean that I should perform the same process as described above (for a
RadiusRequest), but instead of using the all-zero's EAP Message Authenticator, substitute the digest from the original RadiusRequest EAP Message Authenticator? I don't think so, because the RFC says
"using the Request-Authenticator" and that means the Radius Authenticator, not the EAP Authenticator. It seems to me that the EAP and Radius Authenticators are being "tangled together" - if true, then logic
reponsible for EAP processing would also need to have access to the original Radius packet. This seems to be architecturally undesirable and deserves explanantion if unavoidable.

I apologise if my email is hard to understand. This is the first time I've tried to contribute to a draft RFC and I am not familiar with the process. If you need more information from me, I'll be pleased to continue the
discussion by private email with any interested parties.

Requested change:
1. new preamble/philosphy paragraph.
2. reworded RadiusRequest creation paragraph.
3. reworded RadiusRequest message integrity check paragraph.
4. reworded RadiusResponse/AccessChallenge/RadiusReject creation paragraph.
5. reworded RadiusResponse/AccessChallenge/RadiusReject message integrity check paragraph.

[Pasi Eronen]:

There's no ambiguity or circularity because in RADIUS, the Request
Authenticator is just a random number--not a keyed hash over the
packet contents. Thus, when calculating Message-Authenticator for
Access-Requests, we can include it without any circularity problems.

The Response Authenticator (in Access-Challenge/Accept/Reject)
is a keyed hash, but it's not included when calculating the
Message-Authenticator for responses (the HMAC-MD5 is not
calculated over "the entire RADIUS packet"; check the
definition in 2869bis). If it were included, then we would
have some circularity problems, and would have to set
the field to zero before calculating.

Recommended Resolution: Reject

Issue 167: Cleartext Passwords in EAP
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 8/14/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-August/001599.html
Document: RFC2284bis
Comment type: T
Priority: S
Section: 5.5, 5.6
Rationale/Explanation of issue:

Reading Section 5.5 and 5.6, it is not made crystal clear that the EAP OTP and GTC methods
are not intended to provide support for cleartexst passwords.

In Section 5.5, add to the end of the "Description" paragraph:

"The EAP OTP method is intended for use with the One-Time Password system
only, and MUST NOT be used to provide support for cleartext passwords."

In Section 5.6, add to the end of the "Description" paragraph:

"The EAP GTC method is intended for use with the Token Cards supporting
challenge/response authentication and MUST NOT be used to provide support
for cleartext passwords."

[Pasi Eronen]

Hi,

GTC can also be used with PEAP/TTLS to support password
databases that store a one-way hash of the password.
When used this way, it's not that insecure either (not
worse than e.g. SSH). This use is mentioned e.g. in
http://www.ilabs.interop.net/WLAN_Sec/Inner_Auth-lv03.pdf

I think it's safe to assume that in the absence of some
other solution, people will use GTC for this with IKEv2
as well.

This is probably not such a bad idea in many cases,
since the alternative is to store the password (or
password-equivalent) in clear (deploying SRP or
something similar doesn't seem realistic any time soon).

So, perhaps something like "The EAP GTC method MUST NOT
be used to provide support for cleartext passwords in the
absence of a protected tunnel with server authentication,
such as PEAP or IKEv2." would be sufficient?

[BA] Several problems with this:

a. On the AAA server side, protocols such as RADIUS do not mandate
confidentiality, and there is no support for "hiding" of the EAP-Message
attribute in the way that the User-Password attribute is hidden.  That
means that any cleartext password sent via an EAP method will be exposed
on the wire from the NAS to the RADIUS server.  Since protocols such as
EAP TTLS support "early termination" where the tunnel is terminated on a
different server (e.g. a proxy) than the final exchange, this results in a
cleartext password sent over a portion of the path.


[Joe Salowey] Even worse the intemediaries/NAS know the password. However it is
possible to deploy PEAP and TTLS so the protection is all the way to the
validating server. 

b. Even if the RADIUS User-Password attribute is used, this creates a
number of vulnerabilities, including known plaintext attacks. If the
Request Authenticator repeats on any NAS with the same shared secret an
attacker would potentially be able to crack the User-Password attribute,
which is encrypted with a stream cipher dependent only on the shared
secret and the RA.

[Joe Salowey] I completely agree.

The introduction of cleartext passwords into EAP therefore represents a
substantial security vulnerability -- and one which was purposefully left
out of RFC 2284.

[Joe Salowey] While I would rather not see cleartext passwords, I'm not sure
that this represent a substantial security vulnerability if deployed
properly.  In this case that would be in a server side authenticated
tunnel such as (TTLS/PEAP) that extends all the way to the EAP server
validating the password. This was not available when 2284 was concieved.

If you are going to advocate the use of passwords you're protected tunel
must be server authenticated and extend all the way to the AAA that does
the password validation.  Intermediaries/NASes should never see the
password.  Specifing that EAP-OTP and EAP-GTC should not be used for
cleartext passwords is good because they can be used without PEAP/TTLS.

I think it is up to PEAP/TTLS to define how and if clear text passwords
may be used within these tunnels and can define specific mechanisms to
do this.  If they do allow this then they should specify that the that
the protected tunnel MUST extend all the way to the EAP-Server that
validates the passwords and authenticates this server to the client.
Tunnel client MUST NOT send a cleartext password unless it has
authenticated the EAP-Server and has determined that it is authorized to
receive the password.  

[BA]

If the password is completely protected end-to-end via a tunnel, it's not
really a "cleartext password".  Perhaps we need some language to make that
clear?

Proposed fix:

In Section 5.5, add to the end of the "Description" paragraph:

"The EAP OTP method is intended for use with the One-Time Password system
only, and MUST NOT be used to provide support for cleartext passwords."

In Section 5.6, add to the end of the "Description" paragraph:

"The EAP GTC method is intended for use with the Token Cards supporting
challenge/response authentication and MUST NOT be used to provide support
for cleartext passwords in the absence of a protected tunnel with server authentication."

Add Section 7.14

7.14 Cleartext Passwords

EAP does not support cleartext password authentication. This
omission is intentional. Where EAP is carried over physically
insecure lower layers, including wireless LANs [IEEE80211] or
the Internet, use of cleartext passwords would allow the password
to be captured by an attacker with access to the lower layer.

Since protocols encapsulating EAP, such as RADIUS [RFC3579],
may not provide confidentiality, even where the lower layer
is physically secure, EAP frames may be subsequently
encapsulated for transport over the Internet where they
may be captured by an attacker.

As a result, cleartext passwords cannot be securely used
within EAP, except where encapsulated within a protected
tunnel with server authentication. Some of the same risks
apply to EAP methods without dictionary attack resistance,
as defined in Section 7.2.1. For details, see Section 7.6.

Recommended Resolution: Accept

Issue 168: Peer link usage
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 8/22/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-August/001613.html
Document: RFC2284bis
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

I have recently looked at EAP authentication traces where the
peer is sending data packets before and interspersed with,
EAP authentication. The peer had been previously attached to
another authenticator and was sending high-rate UDP traffic (video).
This is not a re-authentication -- it represents the authentication of a
peer to a new Authenticator (AP) after a roam.

After it connects to the new Authenticator, the peer continues to
empty the queue onto the new link.

Of course, the new Authenticator silently discards the traffic, but the
EAP traffic is trapped in the queue (e.g. is not prioritized), and so
it can take seconds to be sent by the peer. The result is
retransmission by the Authenticator -- and horrendous EAP
authentication latencies.

I would also note that this problem is not rare -- it has shown up in
quite a few implementations that we have tested.

It occurs to me that perhaps we need some explicit language in RFC 2284bis
to make it clear that this is nonsensical behavior. For example, that the
peer should not be sending outbound data or receiving
inbound data (e.g. non-EAP or 802.1X) traffic prior to the link being
usable.
 

[BA] It has been pointed out that the specific conditions under which data
frames may be sent are specific to the lower layer. For example, in PPP
it is not possible to send data until after NCP completes. In IEEE 802.11,
data frames cannot be sent except in State 3. So it is probably best
to leave this issue to the lower layer.

Recommended Resolution: Reject

Issue 169: Review of Key Framework-07
Submitter name: Dan Simon
Submitter email address: dansimon@microsoft.com
Date first submitted: 8/24/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-August/001615.html
Document: Key-07
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

p. 7, 1st para.:

"exhaustive search" is not the best terminology, since some algorithms
(notably number-theoretic ones) are attackable by means other than
brute force. "Breaking a cryptographic assumption", which you use
earlier in the paragraph, is a better phrasing.

p. 8, last para.:

"Key management" is often used as a synonym for "key distribution",
so the question of whether EAP itself is a key management protocol
should be thought of primarily in terms of whether it's EAP or
individual EAP methods that handle key distribution (i.e., key exchange).
I'll leave it to you to decide which way you like to think of it.

p. 13, first para.:

the IV must not be used by itself in computation of any quantity that
needs to remain secret. Obviously, it can be used in combination
with secret keys to derive other secret keys.

p. 21, 1st para.:

removing an SA based on a (single) failed authentication suggests an
easy targeted DoS attack (although, granted, a strictly local one, and
hence not that much of a concern). In any event, rate-limiting
authentication attempts should suffice, especially when strong keys
are being used.

p. 21, 3rd para.: You mean 802.11, not 820.11, right?

p. 22, 4th para.: See comment on p. 21, 1st para., above.

p. 24, last para.: I don't think you mean "perfect forward secrecy"
here so much as "key separation". None of the keys are being
"rolled forward" over time; rather, the MSK is being kept
cryptographically separated from the keys needed to impersonate
the backend server or peer.

p. 25, 2nd last para.: "between the peer and server",
not "between the peer and authenticator". (Right?)

p. 29, "Cryptographic separation": see first comment, on p. 7, above.

p. 30, "Key Strength" and "Freshness": I have no fundamental objection to
the 128-bit requirement, but I also would have no objection if it were weakened
somewhat (e.g., to 96 bits), and I wouldn't want to see an otherwise
reasonable future EAP method proposal get shot down over key-length paranoia.
On the other hand, if you're confident that this won't be a problem (i.e.,
that nobody will ever have trouble meeting the 128-bit requirement within
their method), I'll accept your judgment.

General: I was wondering if it might be a good idea to have a "DoS attack"
section in the security considerations section, spelling out what makes a DoS
attack worthy or unworthy of concern. One thought that came to mind as
I was reading the doc, for instance: you mention a peer having multiple SAs
with the same authenticator--might that allow a client to start establishing
SAs with the authenticator (e.g., an AP) until the latter "blows up" or maxes
out, then move on to the next authenticator and do the same? Again, if it
only disables the authenticator while the client is around, then the attack
could be dismissed as "microwave-oven-equivalent"--but could the request for
multiple SAs conceivably cause the authenticator to freeze up for a longer
period while it holds huge amounts of SA state for the single client,
waiting for it to return?

[BA] The proposed fixes are as follows:

In Section 1.2, change:

"In other words, if the keys are cryptographically separate, there is
no shortcut to compute x from y or y from x, but the work an
adversary must do to perform this computation is equivalent to
performing exhaustive search for the secret state value."

To:

"In other words, if the keys are cryptographically separate, there is
no shortcut to compute x from y or y from x."

In Section 1.3, change:

"While EAP methods may be based on key management protocols, EAP itself
is not a key management protocol. Thus, while EAP may provide for
mutual authentication and derivation of keying material, it does not
provide for the derivation or naming of transient session keys, the
selection of traffic modes such as transport or tunnel mode, the secure
negotiation of capabilities such as ciphersuites or filters, or support
for key activation. As a result, where EAP is used for key derivation,
a secure association protocol (phase 2) should be provided, supporting
the creation and deletion of unicast (phase 2a) and multicast (phase 2b)
security associations used for the protection of data."

To:

"EAP methods may mutually authenticate and derive keys. However
a distinct secure association exchange is required in order to
manage the creation and deletion of unicast (phase 2a) and multicast (phase 2b)
security associations between the EAP peer and authenticator."

In Section 1.3.3, change:

"[4] Mutual proof of possession of the keying material generated during
EAP authentication (phase 1). By requiring a mutual proof of
possession of the AAA-Key, the secure association protocol
demonstrates that both the EAP peer and authenticator have been
authenticated and authorized by the AAA server. Note that mutual
proof of possession is not the same thing as mutual authentication.
For example, as a result of a secure association protocol exchange,
the EAP peer may not be able to confirm the identity of the
authenticator."

To:

"[4] Mutual proof of possession of the AAA-Key. This
demonstrates that both the EAP peer and authenticator have been
authenticated and authorized by the AAA server. Since mutual
proof of possession is not the same as mutual authentication,
the EAP peer cannot verify authenticator assertions (including
the authenticator identity) as a result of this exchange."

In Section 2.2, change:

"Initialization Vector (IV)
A quantity of at least 64 octets, suitable for use in an
initialization vector field, that is derived between the EAP client
and server. Since the IV is a known value in methods such as EAP-
TLS [RFC2716] it cannot be used in computation of any quantity that
needs to remain secret, and is not used with any known ciphersuite.
As a result, its use has been deprecated and EAP methods are not
required to generate it."

To:

"Initialization Vector (IV)
A quantity of at least 64 octets, suitable for use in an
initialization vector field, that is derived between the EAP client
and server. Since the IV is a known value in methods such as EAP-
TLS [RFC2716] it cannot be used by itself for computation of any
quantity that needs to remain secret. As a result, its use has
been deprecated and EAP methods are not required to generate it."

In Section 3.3, change:

"A unicast secure association SA (phase 2a) may not persist longer than
the maximum lifetime of its parent AAA-Key SA (if known). However, the
deletion of a parent EAP or AAA-Key SA does not necessarily imply
deletion of the corresponding unicast secure association SA. Similarly,
the deletion of a unicast secure association protocol SA does not imply
the deletion of the parent AAA-key SA or EAP SA. However, the failure
to mutually prove possession of the AAA-Key during the unicast secure
association protocol exchange (phase 2a) is grounds for removal of a
AAA-Key SA by both parties."

To:

"A unicast secure association SA (phase 2a) may not persist longer than
the maximum lifetime of its parent AAA-Key SA (if known). However, the
deletion of a parent EAP or AAA-Key SA does not necessarily imply
deletion of the corresponding unicast secure association SA. Similarly,
the deletion of a unicast secure association protocol SA does not imply
the deletion of the parent AAA-key SA or EAP SA. Failure
to mutually prove possession of the AAA-Key during the unicast secure
association protocol exchange (phase 2a) need not be grounds for removal
of a AAA-Key SA by both parties; rate-limiting unicast secure association
exchanges should suffice to prevent a brute force attack."

In Section 3.3, change:

"820.11" to "802.11"

In Section 3.4, change:

"Similarly, the deletion of a multicast secure association protocol SA
does not imply the deletion of the parent EAP, AAA-Key or unicast secure
association SA. However, the failure to mutually prove possession of
the AAA-Key during the unicast secure association protocol exchange
(phase 2a) is grounds for removal of the AAA-Key, unicast secure
association and multicast secure association SAs."

To:

"Similarly, the deletion of a multicast secure association protocol SA
does not imply the deletion of the parent EAP, AAA-Key or unicast secure
association SA. Failure to mutually prove possession of
the AAA-Key during the unicast secure association protocol exchange
(phase 2a) need not be grounds for removal of the AAA-Key, unicast secure
association and multicast secure association SAs;
rate-limiting unicast secure association
exchanges should suffice to prevent a brute force attack."

In Section 3.5, change:

"In order to securely bind the EAP security association (phase 1) to its
child phase 2 security association, the phase 2 secure association
protocol allows the EAP peer and authenticator to mutually prove
possession of the EAP (phase 1) keying material derived during the EAP
exchange (phase 1). In order to avoid confusion in the case where an
EAP peer has more than one EAP security association (phase 1) applicable
to establishment of a given phase 2 security association, the secure
association protocol (phase 2) supports key naming so that the
appropriate phase 1 keying material can be utilized by both parties in
the secure association protocol exchange."

To:

"In order to securely bind the AAA-Key security association (phase 1b) to its
child phase 2 security associations, the phase 2 secure association
protocol allows the EAP peer and authenticator to mutually prove
possession of the AAA-Key. In order to avoid confusion in the case where an
EAP peer has more than one AAA-Key (phase 1b) applicable
to establishment of a phase 2 security association, it is necessary
for the secure association protocol (phase 2) to support key selection,
so that the appropriate phase 1b keying material can be utilized by
both parties in the secure association protocol exchange."

In Section 6.2, change:

"Where an untrusted AAA intermediary is present (such as a RADIUS proxy
or a Diameter agent), and data object security is not used, the MSK may
be recovered by an attacker in control of the untrusted intermediary.
Possession of the MSK enables decryption of data traffic sent between
the peer and a specific authenticator; however where Perfect Forward
Secrecy (PFS) is implemented, compromise of the MSK does enable an
attacker to impersonate the peer to another authenticator, since that
requires possession of the MK or EMSK, which are not transported by the
AAA protocol. This vulnerability may be mitigated by implementation of
redirect functionality, as provided in [DiamBASE]."

To:

"Where an untrusted AAA intermediary is present (such as a RADIUS proxy
or a Diameter agent), and data object security is not used, the AAA-Key may
be recovered by an attacker in control of the untrusted intermediary.
Possession of the AAA-Key enables decryption of data traffic sent between
the peer and a specific authenticator; however where key separation
is implemented, compromise of the AAA-Key does not enable an
attacker to impersonate the peer to another authenticator, since that
requires possession of the MK or EMSK, which are not transported by the
AAA protocol. This vulnerability may be mitigated by implementation of
redirect functionality, as provided in [DiamBASE]."

In Section 6.3, change:

"In order to prevent these attacks, [MiTM] recommends derivation of a
compound key by which the EAP peer and authenticator can prove that they
have participated in the entire EAP exchange."

To:

"In order to prevent these attacks, [MiTM] recommends derivation of a
compound key by which the EAP peer and server can prove that they
have participated in the entire EAP exchange."

Add Section 6.5:

"6.5 Denial of Service Attacks

The caching of security associations may result in vulnerability to
denial of service attacks. Since an EAP peer may derive multiple
EAP SAs with a given EAP server, and creation of a new EAP SA does
not implicitly delete a previous EAP SA, EAP methods that result in
creation of persistant state may be vulnerable to denial of
service attacks by a rogue EAP peer.

As a result, EAP methods creating persistent state may wish to
limit the number of cached EAP SAs (Phase 1a) corresponding to an EAP
peer. For example, an EAP server may choose to only retain
a few EAP SAs for each peer. This prevents a rogue peer from
denying access to other peers.

Similarly, an authenticator may have multiple AAA-Key SAs
corresponding to a given EAP peer; to conserve resources an
authenticator may choose to limit the number of cached
AAA-Key (Phase 1 b) SAs for each peer.

Depending on the media, creation of a new unicast secure
association SA may or may not imply deletion of a previous
unicast secure association SA. Where there is no implied
deletion, the authenticator may choose to limit
Phase 2 (unicast and multicast) secure association SAs
for each peer."

Recommended Resolution: Accept

Issue 170: Terminology
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001653.html
Document: EAP-05
Comment type: T
Priority: S
Section: 1.2
Rationale/Explanation of issue:

For the purposes of RFC 2284bis, it is not necessary to delve into the
uses of the MSK/EMSK -- it's just enough to say that they must be produced
and exported. Let's leave discussion of uses to the Key Framework
document.

In Section 1.2, change:

" Master Session Key (MSK)
Keying material that is derived between the EAP peer and
server and exported by the EAP method. The MSK is used in
the derivation of Transient Session Keys (TSKs) for the
ciphersuite negotiated between the EAP peer and
authenticator. Where a backend authentication server is
present, acting as an EAP server, it will typically
transport the MSK to the authenticator, so that in this
case, the MSK is available to the peer, authenticator and
authentication server.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP client
and server that is exported by the EAP method. Unlike the
MSK, the EMSK is known only to the EAP peer and EAP server
and is not provided to a third party. The EMSK is reserved
for future uses that are not defined yet. For example, it
could be used to derive additional keying material for
purposes such as fast handoff, cryptographic binding, etc."

To:

" Master Session Key (MSK)
Keying material that is derived between the EAP peer and
server and exported by the EAP method. The MSK is at
least 64 octets in length. In existing implementations
a AAA server acting as an EAP server transports the MSK
to the authenticator.

Extended Master Session Key (EMSK)
Additional keying material derived between the EAP client
and server that is exported by the EAP method. The EMSK
is at least 64 octets in length. The EMSK is reserved
for future uses that are not defined yet and is not
provided to a third party."

Proposed Resolution: Accept

Issue 171: IKEv2 over TCP
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001654.html
Document: EAP-05
Comment type: T
Priority: S
Section: 2.2, 4.3
Rationale/Explanation of issue:

IKEv2 runs over UDP, not TCP as implied in Sections 2.2 and 4.3.

In Section 2.2, change:

"ISAKMP [IKEv2]); and TCP [IKEv2]"

to:

"IKEv2 [IKEv2]; and TCP [PIC]".

In Section 4.3, change:

" When run over a reliable lower layer (e.g., EAP over ISAKMP/TCP, as
within [IKEv2]), the authenticator retransmission timer SHOULD be set
to an infinite value, so that retransmissions do not occur at the EAP
layer. The peer may still maintain a timeout value so as to avoid
waiting indefinitely for a Request."

To:

" When run over a reliable lower layer (e.g., EAP over ISAKMP/TCP, as
within [PIC]), the authenticator retransmission timer MAY be set
to an artificially high value, so that retransmissions do not occur
at the EAP layer. The peer may still maintain a timeout value so
as to avoid waiting indefinitely for a Request."

Proposed Resolution: Accept

Issue 172: Miscellaneous NITs
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001655.html
Document: EAP-05
Comment type: E
Priority: S
Section: Various
Rationale/Explanation of issue:

In Section 1.2, add:

"AAA
Authentication, Authorization and Accounting. AAA protocols with EAP support
include RADIUS [RFC3579] and Diameter [Diam-EAP]. In this
document, the terms "AAA server" and "backend authentication
server are used interchangeably."

In Section 2.2, Figure 1, page 11, change "Layer" to "layer"

In Section 3.4, change:

" To improve reliability, if a peer receives a lower layer success
indication as defined in Section 7.2, it MAY conclude that a Success
packet has been lost, and behave as it had actually received a
Success packet. This includes choosing to ignore the Success in some
circumstances as described in Section 4.2."

To:

" To improve reliability, if a peer receives a lower layer success
indication as defined in Section 7.2, it MAY conclude that a Success
packet has been lost, and behave as if it had actually received a
Success packet. This includes choosing to ignore the Success in some
circumstances as described in Section 4.2."

Proposed Resolution: Accept

Issue 173: RFC 2284bis method issues
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001656.html
Document: EAP-05
Comment type: E
Priority: S
Section: 5.1, 5.2, 5.3.1, 5.3.2, 5.4, 5.5, 5.6, 7.2.1
Rationale/Explanation of issue:
There are no security claims for the Identity (5.1),
Notification (5.2), and NAK  (legacy, 5.3.1 or expanded, 5.3.2) methods. For each
of these methods, insert the following claims:

Security Claims (see Section 7.2):

Intended use: Physically secure lower layers;
vulnerable to attack when used
with wireless or over the Internet.
Fragmentation: No
Auth. Mechanism: None
Ciphersuite Negotiation: No
Mutual authentication: No
Integrity protection: No
Replay protection: No
Confidentiality: No
Key Derivation: No
Key strength: N/A
Dictionary attack prot: N/A
Key hierarchy: N/A
Fast reconnect: No
Crypt. binding: N/A
Acknowledged S/F: No

Other than a statement in Section 3.1, there is no
explicit statement about whether the methods defined
in RFC 2284bis support fragmentation. This should be
stated explicitly, and added as a required claim.

Add:

"Fragmentation: No
Auth. Mechanism: None
Ciphersuite Negotiation: No"

to Sections 5.1, 5.2, 5.3.1, 5.3.2, 5.4, 5.5, 5.6

Also, change "Mechanism:" To "Auth. Mechanism:" in these
sections.

Add the following to Section 7.2.1:

"Protected Ciphersuite negotiation
This refers to the ability of an EAP method to
negotiate the ciphersuite used to protect the
EAP conversation, as well as to integrity protect the
negotiation. It does not refer to the ability to
negotiate the ciphersuite used to protect data.

Fragmentation
This refers to whether an EAP method supports fragmentation
and reassembly. As noted in Section 3.1, EAP methods
should support fragmentation and reassembly if EAP packets
can exceed the minimum MTU of 1020 octets."

Proposed Resolution: Accept

Issue 174: Mandatory to Implement
Submitter name: Dorothy Stanley
Submitter email address: dstanley@agere.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001657.html
Document: EAP-05
Comment type: T
Priority: S
Section: 5, 5.4
Rationale/Explanation of issue:
It seems wasteful to require an EAP peer to implement the
EAP MD5-Challenge method, even in situations (such as
IEEE 802.11i) where mutual authentication is required. Can
we relax this requirement?

In Section 5, change:

"All EAP implementations MUST support Types 1-4, which are defined in
this document, and SHOULD support Type 254. Implementations MAY
support other Types defined here or in future RFCs."

To:

"All EAP server implementations MUST support Types 1-4, which are defined in
this document, and SHOULD support Type 254. EAP peer implementations which
support physically secure lower layers MUST support types 1-4, and SHOULD
support Type 254. EAP Peer implementations which only support physically
insecure lower layers requiring mutual authentication MAY NOT support
Type 4 (EAP MD5-Challenge). An authenticator that supports only
pass-through MUST allow communication with a backend
authentication server that is capable of supporting Type 4 (MD5-Challenge),
although the implementation need not support MD5-Challenge
itself. However, if the EAP authenticator can be
configured to authenticate peers locally (e.g., not operate in
pass-through), then it MUST support Type 4 (MD5-Challenge).
Implementations MAY support other Types defined
here or in future RFCs."

Delete the following from Section 5.4:

"EAP peer and EAP server implementations MUST support the
MD5-Challenge mechanism.  An authenticator that supports only
pass-through MUST allow communication with a backend
authentication server that is capable of supporting MD5-Challenge,
although the EAP authenticator implementation need not support
MD5-Challenge itself.  However, if the EAP authenticator can be
configured to authenticate peers locally (e.g., not operate in
pass-through), then the requirement for support of the
MD5-Challenge mechanism applies."

Proposed resolution: Reject

Issue 175: Rewrite of Section 7.13
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/11/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001658.html
Document: EAP-05
Comment type: T
Priority: S
Section: 7.13
Rationale/Explanation of issue:

This section needs to be updated to avoid conflict with the Key Framework Document.

Change Section 7.13 to:

"7.13 Separation of authenticator and backend authentication server

It is possible for the EAP peer and EAP server to mutually
authenticate and derive a AAA-Key for a ciphersuite
used to protect subsequent data traffic. This does not present an
issue on the peer, since the peer and EAP client reside on the same
machine; all that is required is for the client to derive the AAA-Key
from the MSK and EMSK exported by the EAP method, and
to subsequently pass a Transient Session Key (TSK) to the ciphersuite module.

However, in the case where the authenticator and authentication
server reside on different machines, there are several implications
for security.

[a] Authentication will occur between the peer and the authentication
server, not between the peer and the authenticator. This means
that it is not possible for the peer to validate the identity of
the authenticator that it is speaking to, using EAP alone.

[b] As discussed in [RFC3579], the authenticator is dependent on the
AAA protocol in order to know the outcome of an authentication
conversation, and does not look at the encapsulated EAP packet
(if one is present) to determine the outcome. In practice this
implies that the AAA protocol spoken between the authenticator and
authentication server MUST support per-packet authentication,
integrity and replay protection.

[c] Where EAP is used over lower layers which are not physically
secure, after completion of the EAP conversation, a
secure association protocol SHOULD be run between the peer and
authenticator in order to provide mutual authentication;guarantee liveness of the TSKs; provide protected
ciphersuite and capabilities negotiation;
synchronize key usage.

[d] A AAA-Key derived from the MSK and/or EMSK negotiated between
the peer and authentication server MAY be transmitted to the authenticator.
Therefore a mechanism needs to be provided to transmit the AAA-Key
from the authentication server to the authenticator that needs
it. The specification of the AAA-key derivation, transport and wrapping
mechanisms is outside the scope of this document. Further details on
AAA-Key Derivation are provided within [KEYFRAME]."

Proposed resolution: Accept

Issue 176: Sync on key framework reqts
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/22/2003
Reference:http://mail.frascone.net/pipermail/public/eap/2003-September/001702.html
Document: EAP-05
Comment type: T
Priority: S
Section: 7.2.1, 7.10
Rationale/Explanation of issue:

Since the EAP Key Framework document is informational,
all normative statements in it relating to EAP or
EAP methods (see Section 4.2.1) either need to be
included in RFC 2284bis or removed.

Add to Section 7.2.1:

Session independence
The demonstration that passive attacks (such as capture of the
EAP conversation) or active attacks (including compromise of the
MSK, EMSK, TSKs or TEKs) does not enable compromise of subsequent
or prior MSKs, EMSKs, TSKs or TEKs.

Add:

"Session indep.: N/A"

to Sections 5.1, 5.2, 5.3.1, 5.3.2, 5.4, 5.5, 5.6

Change Section 7.10 to:

"It is possible for the peer and EAP server to mutually
authenticate and derive keys. In order to provide
keying material for use in a subsequently negotiated
ciphersuite, an EAP method supporting key derivation MUST
export a Master Session Key (MSK) of at least 64 octets,
and an Extended Master Session Key (EMSK) of at least 64
octets. EAP Methods deriving keys MUST provide for mutual
authentication between the EAP peer and the EAP Server.

The MSK and EMSK MUST NOT be used directly to protect data;
however, they are of sufficient size to enable derivation
of a AAA-Key subsequently used to derive Transient Session
Keys (TSKs) for use with the selected ciphersuite.
Each ciphersuite is responsible for specifying how to
derive the TSKs from the AAA-Key.

In order to ensure freshness of Transient Session Keys
(TSKs) even in cases where one party may not have a high
quality random number generator, EAP methods generating
keys MUST support a two-nonce exchange in the derivation
of the MSK and EMSK, using nonces of at least 128-bits.

EAP methods export the MSK and EMSK and not Transient
Session Keys so as to allow EAP methods to be ciphersuite
and media independent. Keying material exported by EAP
methods MUST be independent of the ciphersuite negotiated
to protect data.

Depending on the lower layer, EAP methods may run
before or after ciphersuite negotiation, so that the
selected ciphersuite may not be known to the EAP method.
By providing keying material usable with any ciphersuite,
EAP methods can used with a wide range of ciphersuites and
media.

An EAP method deriving keys MUST specify how to derive
Transient EAP Keys (TEKs), used for protection of the EAP
conversation. TEKs MUST remain local to the EAP method
and MUST NOT be exported or provided to third parties. It is
RECOMMENDED that methods providing integrity protection of
EAP packets include coverage of all the EAP header fields,
including the Code, Identifier, Length, Type and Type-Data
fields.

In order to preserve algorithm independence, EAP methods
deriving keys SHOULD support (and document) the protected
negotiation of the ciphersuite used to protect the
EAP conversation between the peer and server. This is
distinct from the ciphersuite negotiated between the peer and
authenticator, used to protect data.

The strength of Transient Session Keys (TSKs) and
Transient EAP Keys (TEKs) used to protect data is
ultimately dependent on the strength of keys generated
by the EAP method. If an EAP method does not produce keying
material of sufficient strength, then the TSKs and TEKs
may be subject to brute force attack. EAP methods
supporting key derivation MUST be capable of generating
an MSK and EMSK, each with an effective key strength
of at least 128 bits.

Methods supporting key derivation MUST demonstrate
cryptographic separation between the TEK, MSK and
EMSK branches of the EAP key hierarchy. Without
violating a fundamental cryptographic assumption
(such as the non-invertibility of a one-way function)
an attacker recovering the TEKs, MSK or EMSK MUST NOT
be able to recover the other quantities with a level
of effort less than brute force. Since Transient
Session Keys (TSKs) are derived from the MSK, if
branch independence holds, then it is also true that the
TSKs are cryptographically separate from the EMSK and TEKs.

Non-overlapping substrings of the MSK MUST be
cryptographically separate from each other, as defined
in Section 7.2.1. That is, knowledge of one substring
MUST NOT help in recovering some other substring without
breaking some hard cryptographic assumption. This is required
because some existing ciphersuites form TSKs by simply
splitting the AAA-Key to pieces of appropriate length.
Likewise, non-overlapping substrings of the EMSK MUST
be cryptographically separate from each other, and
from substrings of the MSK.

The EMSK is reserved for future use and MUST remain on
the EAP peer and EAP server where it is derived; it
MUST NOT be transported to, or shared with, additional
parties, or used to derive any other keys. (This restriction
will be relaxed in a future document that specifies how the
EMSK can be used.)

Since EAP does not provide for explicit key lifetime
negotiation, EAP peers, authenticators and authentication
servers MUST be prepared for situations in which one or
parties discard key state which remains valid on another
party.

This specification does not provide detailed guidance
on how EAP methods derive the MSK, EMSK and TEKs;
how the AAA-Key is derived from the MSK and/or EMSK;
or how the TSKs are be derived from the AAA-Key.

The development and validation of key derivation
algorithms is difficult, and as a result EAP methods
SHOULD reuse existing key derivation algorithms
(such as those specified in IKE [RFC2409], or TLS [RFC2246]),
rather than inventing new ones. EAP methods requesting
publication as an RFC MUST provide citations to
literature justifying the security of the chosen algorithms.
EAP methods SHOULD also utilize well established and analyzed
mechanisms for MSK, EMSK, TSK and TEK derivation.

Further details on EAP Key Derivation are provided within [KEYFRAME]."

[Pasi Eronen]

Hi,

I have a couple of comments to your proposed text:

> Add to Section 7.2.1:
> > Session independence
> The demonstration that passive attacks (such as capture of the
> EAP conversation) or active attacks (including compromise of the
> MSK, EMSK, TSKs or TEKs) does not enable compromise of subsequent
> or prior MSKs, EMSKs, TSKs or TEKs.
Currently 2284bis doesn't specify what a TEK is, and I fear that specifying it would unnecessarily rule out perfectly ok key agreement protocols. But if we haven't defined what a TEK is, we probably shouldn't have requirements about it! So, I propose that we remove the TEKs from the paragraph above (and all other references to them); IMHO they're an internal protocol detail, and not all protocols will have similar internal structure--if they did, we wouldn't need this Extensibility thing in the first place :-) <snip> > The MSK and EMSK MUST NOT be used directly to protect data;
> however, they are of sufficient size to enable derivation
> of a AAA-Key subsequently used to derive Transient Session
> Keys (TSKs) for use with the selected ciphersuite.
> Each ciphersuite is responsible for specifying how to
> derive the TSKs from the AAA-Key.
BTW, currently the text doesn't say who exactly is
responsible for specifying how to derive the AAA-Key from
the MSK. This should probably be clarified.

> In order to ensure freshness of Transient Session Keys
> (TSKs) even in cases where one party may not have a high
> quality random number generator, EAP methods generating
> keys MUST support a two-nonce exchange in the derivation
> of the MSK and EMSK, using nonces of at least 128-bits. I think this is an unnecessary implementation detail; there are other perfectly valid ways to ensure that your keys are fresh. Besides, some algorithms simply can't be made to work without both parties having good RNGs (e.g. EAP-TLS/PEAP when used with DHE_DSS ciphersuites). We might leave it there with a "SHOULD" or "RECOMMENDED" text, though. In addition, the text probably should refer to freshness of MSK/EMSK, since e.g. in 802.11i the TSKs are always fresh even when the MSK isn't. Proposed replacement:   "EAP methods SHOULD ensure the freshness of MSK and EMSK   even in cases where one party may not have a high quality   random number generator. A RECOMMENDED method is to include   a two-nonce exchange in the derivation of the MSK and EMSK,   using nonces of at least 128 bits." <snip> > The strength of Transient Session Keys (TSKs) and
> Transient EAP Keys (TEKs) used to protect data is
> ultimately dependent on the strength of keys generated
> by the EAP method. If an EAP method does not produce keying
> material of sufficient strength, then the TSKs and TEKs
> may be subject to brute force attack. EAP methods
> supporting key derivation MUST be capable of generating
> an MSK and EMSK, each with an effective key strength
> of at least 128 bits. Appropriate key strength is IMHO a deployment issue, not something that needs to be fixed here. I think it's enough to require methods to disclose their effective key strength (as is already required), and let the administrators decide what is an acceptable length for their environment. For instance, to fullfill the above requirement, EAP-TLS and PEAP would have to prohibit the use of 1024-bit RSA keys--something quite common today, and definitely "secure enough" for this purpose. Proposed replacement: delete the whole paragraph (we already have a requirement to disclose key strength elsewhere). <snip> > The development and validation of key derivation algorithms is
> difficult, and as a result EAP methods SHOULD reuse existing key
> derivation algorithms (such as those specified in IKE [RFC2409], or
> TLS [RFC2246]), rather than inventing new ones.  EAP methods
> requesting publication as an RFC MUST provide citations to
> literature justifying the security of the chosen algorithms.  EAP
> methods SHOULD also utilize well established and analyzed mechanisms
> for MSK, EMSK, TSK and TEK derivation." While I can't disagree about the recommendation to reuse existing work as much as possible, why are we adding a new "MUST" level requirement here? What exactly is the existing literature required to justify? For instance, just pointing out that e.g. some particular PRF or encryption algorithm is OK doesn't guarantee that a protocol composed from them is OK. Similarly, just pointing out that TLS itself is OK doesn't guarantee that an EAP method using TLS is ok (like we saw with the MitM attack against PEAP and EAP-TTLS). I'm also a bit worried that we might be placing unnecessary burden on authors of EAP methods. IMHO it's better to see the methods published at IETF than not published all (and the process of getting something published at IETF is slow enough as it is). Best regards, Pasi [Bernard Aboba]
> So, I propose that we remove the TEKs from the paragraph above
> (and all other references to them); IMHO they're an internal
> protocol detail, and not all protocols will have similar internal
> structure--if they did, we wouldn't need this Extensibility thing
> in the first place :-) OK. > > The MSK and EMSK MUST NOT be used directly to protect data;
> > however, they are of sufficient size to enable derivation
> > of a AAA-Key subsequently used to derive Transient Session
> > Keys (TSKs) for use with the selected ciphersuite.
> > Each ciphersuite is responsible for specifying how to
> > derive the TSKs from the AAA-Key.
> > BTW, currently the text doesn't say who exactly is
> responsible for specifying how to derive the AAA-Key from
> the MSK. This should probably be clarified. Yes.  How about: "The AAA-Key is derived from the keying material exported by the EAP method (MSK and EMSK).  This derivation occurs on the AAA server.  For details, see [KEYFRAME]." > > In order to ensure freshness of Transient Session Keys
> > (TSKs) even in cases where one party may not have a high
> > quality random number generator, EAP methods generating
> > keys MUST support a two-nonce exchange in the derivation
> > of the MSK and EMSK, using nonces of at least 128-bits.
> > I think this is an unnecessary implementation detail; there
> are other perfectly valid ways to ensure that your keys are
> fresh. Besides, some algorithms simply can't be made to work
> without both parties having good RNGs (e.g. EAP-TLS/PEAP
> when used with DHE_DSS ciphersuites).
> > We might leave it there with a "SHOULD" or "RECOMMENDED"
> text, though. In addition, the text probably should refer to
> freshness of MSK/EMSK, since e.g. in 802.11i the TSKs are
> always fresh even when the MSK isn't. Proposed replacement:
> >   "EAP methods SHOULD ensure the freshness of MSK and EMSK
>   even in cases where one party may not have a high quality
>   random number generator. A RECOMMENDED method is to include
>   a two-nonce exchange in the derivation of the MSK and EMSK,
>   using nonces of at least 128 bits." Another concern that motivated this reqts was  EAP SA naming. For that purpose I'm not sure that a two-nonce exchange is required, just a quantity from each side that together are very likely to be temporally unique.  So maybe it is: "EAP methods SHOULD ensure the freshness of the MSK and EMSK even in cases where one party may not have a high quality random number generator. A RECOMMENDED method is for each party to provide a nonce of at least 128 bits, used in the derivation of the MSK and EMSK.  The combination of the peer and server nonce uniquely identifies the exchange."
[Joe] Is this the only way we are specifying names?  It seems that this
should be up to the EAP-method to define how an identifier is derived
for the exchange.

[Bernard] I don't think this paragraph should be talking about naming (since there
is no other discussion in RFC 2284bis about this.  Maybe just delete the
last sentence.

> > The strength of Transient Session Keys (TSKs) and
> > Transient EAP Keys (TEKs) used to protect data is
> > ultimately dependent on the strength of keys generated
> > by the EAP method. If an EAP method does not produce keying
> > material of sufficient strength, then the TSKs and TEKs
> > may be subject to brute force attack. EAP methods
> > supporting key derivation MUST be capable of generating
> > an MSK and EMSK, each with an effective key strength
> > of at least 128 bits.
> > Appropriate key strength is IMHO a deployment issue, not
> something that needs to be fixed here. I think it's enough
> to require methods to disclose their effective key strength
> (as is already required), and let the administrators
> decide what is an acceptable length for their environment. I think this requirement is about being capable of generating a strong key if it is desired.  If it is desired to deploy using a strong key, then the method needs to support that mode of operation.  So perhaps this should be: "The strength of Transient Session Keys (TSKs) used to protect data is ultimately dependent on the strength of keys generated by the EAP method.  If an EAP method cannot produce keying material of sufficient strength, then the TSKs may be subject to brute force attack. In order to enable deployments requiring strong keys,  EAP methods supporting key derivation SHOULD be capable of generating an MSK and EMSK, each with an effective key strength of at least 128 bits." > For instance, to fullfill the above requirement, EAP-TLS
> and PEAP would have to prohibit the use of 1024-bit RSA
> keys--something quite common today, and definitely
> "secure enough" for this purpose. This requirement is about what should be implemented not what should be used. > > The development and validation of key derivation algorithms is
> > difficult, and as a result EAP methods SHOULD reuse existing key
> > derivation algorithms (such as those specified in IKE [RFC2409], or
> > TLS [RFC2246]), rather than inventing new ones.  EAP methods
> > requesting publication as an RFC MUST provide citations to
> > literature justifying the security of the chosen algorithms.  EAP
> > methods SHOULD also utilize well established and analyzed mechanisms
> > for MSK, EMSK, TSK and TEK derivation."
> > While I can't disagree about the recommendation to reuse existing
> work as much as possible, why are we adding a new "MUST" level
> requirement here? What exactly is the existing literature required
> to justify? If a mechanism is well established and analyzed, presumably literature citations are not an issue.  So I think this is redundant.  Also, EAP methods do not derive TSKs.  Perhaps it should be: "The development and validation of key derivation algorithms is difficult, and as a result EAP methods SHOULD reuse well established and analyzed mechanisms for key derivation (such as those specified in IKE [RFC2409] or TLS [RFC2246]), rather than inventing new ones.  EAP methods SHOULD also utilize well established and analyzed mechanisms for MSK and EMSK derivation." > For instance, just pointing out that e.g. some particular PRF
> or encryption algorithm is OK doesn't guarantee that a protocol
> composed from them is OK. Similarly, just pointing out that
> TLS itself is OK doesn't guarantee that an EAP method using
> TLS is ok (like we saw with the MitM attack against PEAP
> and EAP-TTLS).
Yes, that's definitely true. Do you have any text to recommend?

> I'm also a bit worried that we might be placing unnecessary burden
> on authors of EAP methods. IMHO it's better to see the methods
> published at IETF than not published all (and the process of
> getting something published at IETF is slow enough as it is).
I'd agree.

[Pasi Eronen]
Bernard Aboba wrote:
> > BTW, currently the text doesn't say who exactly is
> > responsible for specifying how to derive the AAA-Key from
> > the MSK. This should probably be clarified.
> > Yes. How about:
> > "The AAA-Key is derived from the keying material exported by the EAP
> method (MSK and EMSK). This derivation occurs on the AAA server.
> For details, see [KEYFRAME]."
Hmm, does this create a dependency to the keying framework? I'm not sure; but it's not possible to actually implement a working system without knowing how this derivation is done... Also, since many deployed systems just use AAA-Key=MSK, this certainly should be documented somewhere... how about this?
[Jari] Yes, this is important.

"The AAA-Key is derived from the keying material exported by the
EAP method (MSK and EMSK). This derivation occurs on the AAA server.
In many existing protocols that use EAP, the AAA-Key and MSK
are equivalent, but more complicated mechanisms are possible
(see [KEYFRAME] for details)."
[Jari] Works for me.


> Another concern that motivated this reqts was EAP SA naming. For
> that purpose I'm not sure that a two-nonce exchange is required,
> just a quantity from each side that together are very likely to
> be temporally unique.  So maybe it is:
> > "EAP methods SHOULD ensure the freshness of the MSK and EMSK
> even in cases where one party may not have a high quality
> random number generator. A RECOMMENDED method is for each party
> to provide a nonce of at least 128 bits, used in the derivation
> of the MSK and EMSK.  The combination of the peer and server
> nonce uniquely identifies the exchange." This works for me (except that I'm not sure if the last sentence is actually necessary). <snip> > I think this requirement is about being capable of generating
> a strong key if it is desired.  If it is desired to deploy using
> a strong key, then the method needs to support that mode of
> operation.  So perhaps this should be:
> > "The strength of Transient Session Keys (TSKs) used to protect
> data is ultimately dependent on the strength of keys generated
> by the EAP method.  If an EAP method cannot produce keying material of
> of sufficient strength, then the TSKs may be subject to brute
> force attack. In order to enable deployments requiring strong
> keys,  EAP methods supporting key derivation SHOULD be capable
> of generating an MSK and EMSK, each with an effective key
> strength of at least 128 bits."
Looks ok!
<snip>

> > While I can't disagree about the recommendation to reuse existing
> > work as much as possible, why are we adding a new "MUST" level
> > requirement here? What exactly is the existing literature required
> > to justify?
> > If a mechanism is well established and analyzed, presumably
> literature citations are not an issue.  So I think this is
> redundant.  Also, EAP methods do not derive TSKs.  Perhaps it
> should be:
> > "The development and validation of key derivation algorithms
> is difficult, and as a result EAP methods SHOULD reuse well
> established and analyzed mechanisms for key derivation (such as
> those specified in IKE [RFC2409] or TLS [RFC2246]), rather than
> inventing new ones.  EAP methods SHOULD also utilize well
> established and analyzed mechanisms for MSK and EMSK derivation." Ok. > > For instance, just pointing out that e.g. some particular PRF
> > or encryption algorithm is OK doesn't guarantee that a protocol
> > composed from them is OK. Similarly, just pointing out that
> > TLS itself is OK doesn't guarantee that an EAP method using
> > TLS is ok (like we saw with the MitM attack against PEAP
> > and EAP-TTLS).
> > Yes, that's definitely true. Do you have any text to recommend Hmm... I'm not sure if we actually need any text about this. Presumably the "security considerations" section for the EAP method should discuss any known weaknesses, and the yet-unknown weaknesses we by definition don't about yet :-) And I really wouldn't like to see a requirement saying that "EAP methods must have formal security proofs" or anything like that.
[Jari] Agree.

So, the recommendation to reuse existing work as
much as possible might be sufficient here?

Best regards,
Pasi
[Bernard Aboba] How about this? 
Add to Section 7.2.1:

Session independence
The demonstration that passive attacks (such as capture of the
EAP conversation) or active attacks (including compromise of the
MSK, EMSK, TSKs) does not enable compromise of subsequent
or prior MSKs, EMSKs, or TSKs.

Add:

"Session indep.: N/A"

to Sections 5.1, 5.2, 5.3.1, 5.3.2, 5.4, 5.5, 5.6
Change Section 7.10 to the following:

"It is possible for the peer and EAP server to mutually
authenticate and derive keys. In order to provide
keying material for use in a subsequently negotiated
ciphersuite, an EAP method supporting key derivation MUST
export a Master Session Key (MSK) of at least 64 octets,
and an Extended Master Session Key (EMSK) of at least 64
octets. EAP Methods deriving keys MUST provide for mutual
authentication between the EAP peer and the EAP Server.

The MSK and EMSK MUST NOT be used directly to protect data;
however, they are of sufficient size to enable derivation
of a AAA-Key subsequently used to derive Transient Session
Keys (TSKs) for use with the selected ciphersuite.
Each ciphersuite is responsible for specifying how to
derive the TSKs from the AAA-Key.

The AAA-Key is derived from the keying material exported by the
EAP method (MSK and EMSK). This derivation occurs on the AAA server.
In many existing protocols that use EAP, the AAA-Key and MSK
are equivalent, but more complicated mechanisms are possible
(see [KEYFRAME] for details).

EAP methods SHOULD ensure the freshness of the MSK and EMSK even in cases
where one party may not have a high quality random number generator. A
RECOMMENDED method is for each party to provide a nonce of at
least 128 bits, used in the derivation of the MSK and EMSK.

EAP methods export the MSK and EMSK and not Transient
Session Keys so as to allow EAP methods to be ciphersuite
and media independent. Keying material exported by EAP
methods MUST be independent of the ciphersuite negotiated
to protect data.

Depending on the lower layer, EAP methods may run
before or after ciphersuite negotiation, so that the
selected ciphersuite may not be known to the EAP method.
By providing keying material usable with any ciphersuite,
EAP methods can used with a wide range of ciphersuites and
media.

It is
RECOMMENDED that methods providing integrity protection of
EAP packets include coverage of all the EAP header fields,
including the Code, Identifier, Length, Type and Type-Data
fields.

In order to preserve algorithm independence, EAP methods
deriving keys SHOULD support (and document) the protected
negotiation of the ciphersuite used to protect the
EAP conversation between the peer and server. This is
distinct from the ciphersuite negotiated between the peer and
authenticator, used to protect data.

The strength of Transient Session Keys (TSKs) used to protect
data is ultimately dependent on the strength of keys generated
by the EAP method. If an EAP method cannot produce keying material of
sufficient strength, then the TSKs may be subject to brute force attack.
In order to enable deployments requiring strong keys, EAP methods
supporting key derivation SHOULD be capable of generating an
MSK and EMSK, each with an effective key strength of at least 128 bits.

Methods supporting key derivation MUST demonstrate
cryptographic separation between the MSK and
EMSK branches of the EAP key hierarchy. Without
violating a fundamental cryptographic assumption
(such as the non-invertibility of a one-way function)
an attacker recovering the MSK or EMSK MUST NOT
be able to recover the other quantity with a level
of effort less than brute force.

Non-overlapping substrings of the MSK MUST be
cryptographically separate from each other, as defined
in Section 7.2.1. That is, knowledge of one substring
MUST NOT help in recovering some other substring without
breaking some hard cryptographic assumption. This is required
because some existing ciphersuites form TSKs by simply
splitting the AAA-Key to pieces of appropriate length.
Likewise, non-overlapping substrings of the EMSK MUST
be cryptographically separate from each other, and
from substrings of the MSK.

The EMSK is reserved for future use and MUST remain on
the EAP peer and EAP server where it is derived; it
MUST NOT be transported to, or shared with, additional
parties, or used to derive any other keys. (This restriction
will be relaxed in a future document that specifies how the
EMSK can be used.)

Since EAP does not provide for explicit key lifetime
negotiation, EAP peers, authenticators and authentication
servers MUST be prepared for situations in which one or
parties discard key state which remains valid on another
party.

This specification does not provide detailed guidance
on how EAP methods derive the MSK and EMSK;
how the AAA-Key is derived from the MSK and/or EMSK;
or how the TSKs are be derived from the AAA-Key.

The development and validation of key derivation algorithms is difficult,
and as a result EAP methods SHOULD reuse well established and analyzed
mechanisms for key derivation (such as those specified in IKE [RFC2409] or
TLS [RFC2246]), rather than inventing new ones. EAP methods SHOULD also
utilize well established and analyzed mechanisms for MSK and EMSK
derivation.
Further details on EAP Key Derivation are provided within [KEYFRAME]."

Proposed resolution: Accept

Issue 177: Rewrite of SA sections
Submitter name: Bernard Aboba
Submitter email address: aboba@internaut.com
Date first submitted: 9/25/2003
Reference:
Document: Keyframe-07
Comment type: T
Priority: S
Section: 3.1-3.5
Rationale/Explanation of issue:

The SA discussion needs to be revised given recent Key Design team discussions. Change sections 3.1-3.5 to:

"3.1  EAP SA

An EAP SA exists between the EAP peer and server.  It includes:

   the EAP peer identity
   the EAP server identity
   the EAP method type
   the EAP peer and server nonces
   the Transient EAP Keys (TEKs)
   the Master Session Key (MSK)
   the Extended Master Session Key (EMSK)

The EAP SA is not explicitly bound to a particular port on the EAP peer.
An EAP peer with multiple ports may create an EAP SA on one port and
then choose to use that SA to subsequently create a phase 2 SA on
another port.

It cannot be assumed that the EAP SA expires after the EAP
authentication and key derivation is complete.  Some methods may be
support "fast resume" by caching EAP SA state on the EAP peer and
server.

EAP does not support SA lifetime negotiation or an SA "delete"
operation, although some EAP methods may support this.  Either the EAP
peer or EAP server may delete an EAP SA at any time, and methods which
allow an EAP SA to persist need to permit the EAP peer and server to
recognize when they have gotten out of sync with respect to the EAP SA
state.

For example, EAP TLS [RFC 2716] supports "fast resume" (TLS session
resumption), which assumes that both the EAP peer and server cache EAP
master keys (the TLS master secret).  An EAP peer attempting a fast
resume provides the session-id identifying the session that it wishes to
resume.  If the EAP server retains the master key corresponding to this
session in its cache, then the "fast resume" can proceed; otherwise a
full TLS exchange ensues.

An EAP peer may negotiate EAP SAs with one or more EAP servers as the
result of pre-authentication or AAA load balancing and failover effects.
For example, an EAP peer may pre-authenticate to one or more EAP
servers, or may be directed to more than one EAP server as the result of
an authentication server becoming unreachable.  In general, EAP servers
cannot be assumed to be synchronized with respect to EAP SA state,
particularly since they may not exist within the same administrative
domain.  Since an EAP SA is typically created prior to secure
association, the EAP SA is not bound to a particular target network.

3.2.  AAA-Key SA

An AAA-Key SA exists between the authenticator and authentication
server. It includes:

   the EAP peer name
   the NAS/authenticator name
   the AAA-Key
   the AAA-Key maximum lifetime (if known)
   the AAA attributes sent in the Access-Accept

The AAA-Key SA is created as the result of the transport of the AAA-
Token from the authentication server to the NAS/authenticator.  The AAA-
Key SA is more specific than the EAP SA in that it is bound to a
particular authenticator, as defined by the NAS identification attributes
included in the AAA request.

For example, within RADIUS the NAS is identified by the NAS-Identifier,
NAS-IP-Address and NAS-IPv6-Address attributes.  Unless the attributes
providing explicit scoping are providing, it is assumed that the AAA-Key
is usable by the NAS to which it is delivered, without restriction.

Since the AAA-Key SA is bound to the NAS identified in the AAA Request, a
NAS/authenticator that operates on a shared use network will share the
AAA-Key SA between multiple virtual NAS devices. Since these virtual NAS
devices might appear to the peer to be different NASes, a mechanism is
needed for the EAP peer to differentiate them, so that the peer can
determine which devices a AAA-Key can be used with.

In the case of IEEE 802.11, it has been proposed that a "Group Identifier"
be added to the Beacon and Probe Response messages, containing a MAC
address uniquely identifying a particular Access Point.  Such a "Group
Identifier" could be included in the NAS-Identifier attribute so as to
uniquely identify a particular NAS to the AAA server.

Since a AAA-Key SA may be shared between virtual NASes, it is possible for
an EAP peer to successfully complete a fast handoff between virtual NASes
operating on the same physical NAS.  Since the virtual NASes may have
access to different networks or even exist within different administrative
domains, this creates a security problem unless the AAA attributes are
applied to the new session.

For example, an EAP peer authenticating to a GUEST network could
successfully complete a fast handoff to the CORPORATE network.  This would
be harmless if it only resulted in the peer receiving the GUEST service,
without obtaining additional time on the network.

Existing RADIUS attributes may not be adequate to this task.  For example,
today there are no standard attributes usable to indicate:

a. Which SSIDs a peer is authorized to attach to.
b. The absolute time at which a session is to end (as opposed to the
   Session-Time attribute which is relative)
c. The times of day during which access is allowed
d. The Calling-Station-Ids from which a client may access the network
e.  Whether fast handoff is permitted.

Attribute a) is useful so that when a client attempts a fast handoff to
the CORPORATE network from the GUEST network, the NAS checking the AAA
attributes will discover that the peer is only authorized for GUEST, not
CORPORATE.  As a result, the fast handoff attempt will fail.

Attribute b) can be used to prevent a peer attempting a fast handoff
between the GUEST network and another network from obtaining additional
session time.

Attribute c) can be used to prevent a peer from accessing the
network outside of authorized hours.

Attribute d) can be used to ensure that a peer is accessing the network
only from an administrator-authorized NIC.  This might be important in
high security installations.

Attribute e) might be useful in situations where the administrator desires
to limit deployment of fast handoff.

In fast handoff, a single EAP SA may be used to establish multiple AAA-
Key SAs (see Appendix E for details).  Although a AAA-Key SA may not
persist longer than the maximum SA lifetime negotiated for an EAP SA
(for methods that support such a negotiation), if an EAP SA is deleted
by an EAP peer or authenticator, this does not necessarily imply
deletion of the child AAA-Key SA.  For example, fast handoff keying
material provided by an authentication server may continue to be cached
by NASes/authenticators after the corresponding EAP SA has been deleted
by the authentication server and/or peer.

3.3.  Unicast Secure Association SA

The unicast secure association SA exists between the EAP peer and
authenticator. It includes:

   the peer port identifier (Calling-Station-Id)
   the NAS port identifier (Called-Station-Id)
   the unicast Transient Session Keys (TSKs)
   the unicast secure association peer nonce
   the unicast secure association authenticator nonce
   the negotiated unicast capabilities and unicast ciphersuite.

During the phase 2a exchange, the EAP peer and authenticator demonstrate
mutual possession of the AAA-Key derived and transported in phase 1;
securely negotiate the session capabilities (including unicast
ciphersuites), and derive fresh unicast transient session keys.  The
AAA-Key SA (phase 1b) is therefore used to create the unicast secure
association SA (phase 2a), and in the process the phase 2a unicast
secure association SA is bound to ports on the EAP peer and
authenticator.  However in order for a phase 2a security association to
be established, it is not necessary for the phase 1a exchange to be
rerun each time.  This enables the EAP exchange to be bypassed when fast
handoff support is desired.

Since both peer and authenticator nonces are used in the creation of the
unicast secure association SA,  the transient session keys (TSKs) are
guaranteed to be fresh, even if the AAA-Key is not.  As a result one or
more unicast secure association SAs (phase 2a) may be derived from a
single AAA-Key SA (phase 1b).  The phase 2a security associations may
utilize the same security parameters (e.g. mode, ciphersuite, etc.) or
they may utilize different parameters.

A unicast secure association SA (phase 2a) may not persist longer than
the maximum lifetime of its parent AAA-Key SA (if known). However, the
deletion of a parent EAP or AAA-Key SA does not necessarily imply
deletion of the corresponding unicast secure association SA.  Similarly,
the deletion of a unicast secure association protocol SA does not imply
the deletion of the parent AAA-key SA or EAP SA.  However, the failure
to mutually prove possession of the AAA-Key during the unicast secure
association protocol exchange (phase 2a) is grounds for removal of a
AAA-Key SA by both parties.

An EAP peer may be able to negotiate multiple phase 2a SAs with a single
EAP authenticator, or may be able to maintain multiple phase 2a SAs with
multiple authenticators, based on a single EAP SA derived in phase 1a.
For example, during a re-key of the secure association protocol SA, it
is possible for two phase 2a SAs to exist during the period between when
the new phase 2a SA parameters (such as the TSKs) are calculated and
when they are installed. Except where explicitly specified by the
semantics of the unicast secure association protocol, it should not be
assumed that the installation of a new phase 2a SA necessarily implies
deletion of the old phase 2a SA.

On some media (e.g. 802.11) a port on an EAP peer may only establish
phase 2a and 2b SAs with a single port of an authenticator within a
given Local Area Network (LAN).  This implies that the successful
negotiation of phase 2a and/or 2b SAs between an EAP peer port and a new
authentiator port within a given LAN implies the deletion of existing
phase 2a and 2b SAs with authenticators offering access to that Local
Area Network (LAN).  However, since a given IEEE 820.11 SSID may be
comprised of multiple LANs, this does not imply an implicit binding of
phase 2a and 2b SAs to an SSID.

3.4.  Multicast Secure Association SA

The multicast secure association SA includes:

   the multicast Transient Session Keys
   the direction vector (for a uni-directional SA)
   the negotiated multicast capabilities and multicast ciphersuite

It is possible for more than one multicast secure association SA to be
derived from a single unicast secure association SA.   However, a
multicast secure association SA is bound to a single EAP SA and a single
AAA-Key SA.

During a re-key of the multicast secure association protocol SA, it is
possible for two phase 2b SAs to exist during the period between when
the new phase 2b SA parameters (such as the multicast TSKs) are
calculated and when they are installed. Except where explicitly
specified by the semantics of the multicast secure association protocol,
it should not be assumed that the installation of a new phase 2b SA
necessarily implies deletion of the old phase 2b SA.

A multicast secure association SA (phase 2b) may not persist longer than
the maximum lifetime of its parent AAA-Key or unicast secure association
SA.  However, the deletion of a parent EAP, AAA-Key or unicast secure
association SA does not necessarily imply deletion of the corresponding
multicast secure association SA.  For example, a unicast secure
association SA may be rekeyed without implying a rekey of the multicast
secure association SA.

Similarly, the deletion of a multicast secure association protocol SA
does not imply the deletion of the parent EAP, AAA-Key or unicast secure
association SA.  However, the failure to mutually prove possession of
the AAA-Key during the unicast secure association protocol exchange
(phase 2a) is grounds for removal of the AAA-Key, unicast secure
association and multicast secure association SAs.

3.5.  Key Naming

In order to support the correct processing of phase 2 security
associations, the secure association (phase 2) protocol supports the
naming of phase 2 security associations and associated transient session
keys, so that the correct set of transient session keys can be
identified for processing a given packet.  Explicit creation and
deletion operations are also typically supported so that establishment
and re-establishment of transient session keys can be synchronized
between the parties.

In order to securely bind the EAP security association (phase 1) to its
child phase 2 security association, the phase 2 secure association
protocol allows the EAP peer and authenticator to mutually prove
possession of the EAP (phase 1) keying material derived during the EAP
exchange (phase 1).  In order to avoid confusion in the case where an
EAP peer has more than one EAP security association (phase 1) applicable
to establishment of a given phase 2 security association, the secure
association protocol (phase 2) supports key naming so that the
appropriate phase 1 keying material can be utilized by both parties in
the secure association protocol exchange.

As noted earlier, the discovery phase (phase 0) may be insecure so that
in order to prevent spoofing of discovery packets, the secure
association (phase 2) protocol should support the secure verification of
discovered capabilities, including ciphersuites and other security
parameters.  This is more scalable than attempting to configure the
supported capabilities on each peer and authenticator and more secure
than unprotected capabilities negotiation.

For example, a peer might be pre-configured with policy indicating the
ciphersuite to be used in communicating with a given authenticator.
Within PPP, the ciphersuite is negotiated within the Encryption Control
Protocol (ECP), after EAP authentication is completed. Within
[IEEE80211i], the AP ciphersuites are advertised in the Beacon and Probe
Responses, and are securely verified during a 4-way exchange after EAP
authentication has completed.

As part of the secure association protocol (phase 2), it is necessary to
bind the Transient Session Keys (TSKs) to the keying material provided
in the AAA-Token.  This ensures that the EAP peer and authenticator are
both clear about what key to use to provide mutual proof of possession.
Keys within the EAP key hierarchy are named as follows:

EAP SA name
     The EAP security association is negotiated between the EAP peer and
     EAP server, and is uniquely named as follows <EAP peer name, EAP
     server name, EAP Method Type, EAP peer nonce, EAP server nonce>.
     Here the EAP peer name and EAP server name are the identifiers
     securely exchanged within the EAP method.  Since multiple EAP SAs
     may exist between an EAP peer and EAP server, the EAP peer nonce
     and EAP server nonce allow EAP SAs to be differentiated.  The
     inclusion of the Method Type in the EAP SA name ensures that each
     EAP method has a distinct EAP SA space.

MK Name
     The EAP Master Key, if supported by an EAP method, is named by the
     concatenation of the EAP SA name and a method-specific session-id.

AAA-Key Name
     The AAA-Key is named by the concatenation of the EAP SA name,
     "AAA-Key" and the authenticator name, since the AAA-Key is bound
     to a particular authenticator. For the purpose of identification,
     the NAS-Identifier attribute is recommended.  In order to ensure that
     all parties can agree on the NAS name this requires the NAS to
     advertise its name (typically using a media-specific mechanism,
     such as the 802.11 Beacon/Probe Response)."

Proposed resolution: Discuss

Issue 178: Review of Key Framework Document
Submitter name:  Tschofenig Hannes
Submitter email address: hannes.tschofenig@siemens.com
Date first submitted: 9/29/2003
Reference: http://www.levkowetz.com/ietf/rfcmarkup.cgi?url=http://www.levkowetz.com/ietf/drafts/eap/keying/review_hannes-aboba-pppext-key-problem-07.txt&comments=hannes:
Document: Keyframe-07
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

I have compiled some comments for the eap key management framework draft.
you find the comments at:

http://www.levkowetz.com/ietf/rfcmarkup.cgi?url=http://www.levkowetz.com/ietf/drafts/eap/keying/review_hannes-aboba-pppext-key-problem-07.txt&comments=hannes:

[BA] Proposed fixes are as follows:

In Section 1, change:

"Since in EAP keying material is generated by EAP
methods, transported by AAA protocols, transformed into session keys by
secure association protocols and used by link layer ciphersuites, it is"

To:

"Since in EAP keying material is generated by EAP
methods, transported by AAA protocols, transformed into session keys by
secure association protocols and used by lower layer ciphersuites, it is"

In Section 1, delete:

"The document is organized as follows:

Section 1 provides an introduction and defines terminology.
Section 2 describes the EAP key hierarchy and exchanges.
Section 3 describes EAP security associations and key naming.
Section 4 describes the threat model and security requirements.
Section 5 describes the IANA considerations.
Section 6 describes security considerations.
Section 7 provides references.
Appendix A summarizes the keying requirements for link layer ciphersuites.
Appendix B provides an example transient EAP key (TEK) hierarchy.
Appendix C provides an example MSK and EMSK hierarchy.
Appendix D provides an example Transient Session Key (TSK) derivation.
Appendix E describes AAA-Key derivation, including fast handoff."

In Section 1.2, delete:

"For example, attributes might include the peer layer 2
address (Calling-Station-Id), the authenticator layer 2 address
(Called-Station-Id) and IP address (NAS-IP-Address), the key name,
etc."

In Section 1.2, change:

"The format and wrapping of the AAA-Token, which is intended
to be accessible only to the backend authentication server and
authenticator, is defined by the AAA protocol."

To:

"The format and wrapping of the AAA-Token, which is intended
to be accessible only to the backend authentication server and
authenticator, is defined by the AAA protocol. Examples
include RADIUS [RFC2548], and Diameter [DiamEAP]."

In Section 1.2, delete:

"Key derivation
This refers to the ability of the EAP method to export a
ciphersuite-independent Master Session Key (MSK), Extended Master
Session Key (EMSK), and (optionally) an Initialization Vector (IV)."

In Section 1.2, add:

"AAA-Key
A key derived by the EAP peer and EAP server and transported to
the authenticator. In 802.11 terminology, the first 32 octets of
the AAA-Key is known as the Pairwise Master Key (PMK)."

In Section 1.3, change:

"Once the EAP peer and authenticator discover each other, they
authenticate using EAP (phase 1a)."

To:

"Once the EAP peer and authenticator discover each other, EAP
authentication may begin (phase 1a)."

In Section 1.3, delete:

"In 802.11 terminology, the first
32 octets of the AAA-Key is known as the Pairwise Master Key (PMK)."

In Section 1.3, change:

" <--------------------------------
AAA-Key transport (phase 1b)"

to:

" <--------------------------------
AAA-Key transport (optional; phase 1b)"

In Section 1.3, change:

" <----------------------------->
Multicast Secure association (phase 2b)"

To:

" <----------------------------->
Multicast Secure association (optional; phase 2b)"

In Section 1.3.2, change:

"Once the EAP peer and authenticator discover each other, they
authenticate using EAP (phase 1a)."

To:

"Once the EAP peer and authenticator discover each other, they
exchange EAP packets."

In Section 1.3.2, change:

"EAP supports either one-way authentication (in which the peer
authenticates to the EAP server), or mutual authentication (in which the
peer and EAP server mutually authenticate)."

To:

"Some EAP methods exist which only support one-way
authentication; however, EAP methods deriving keys
are required to support mutual authentication."

In Section 1.3.3, delete:

"While EAP methods may be based on key management protocols, EAP itself
is not a protocol for negotiation of security associations. While EAP
methods supporting key derivation provide for mutual authentication and
creation of EAP (phase 1) security associations, in order to preserve
media independence, they typically do not support generation of
transient session keys or negotiation of ciphersuites used in the
protection of data. As a result, where EAP is used for key derivation,
a secure association protocol (phase 2) should be provided, supporting
the creation and deletion of phase 2 security associations used for the
protection of data."

In Section 1.3.3, change:

" [2] Generation of fresh transient session keys. This is typically
accomplished via the exchange of nonces within the secure
association protocol, and includes generation of both unicast
(phase 2a) and multicast (phase 2b) session keys. While multicast
traffic may only pass in one direction in certain cases (such as in
IEEE 802.11 infrastructure mode, where only the Access Point sends
multicast traffic), in other cases (such as IEEE 802.11 adhoc
mode), both endpoints may send multicast traffic. By not using the
AAA-Key directly to protect data, the secure association protocol
protects against compromise of the AAA-Key, and by guaranteeing the
freshness of transient session key, assures that session keys are
not reused."

to:

" [2] Generation of fresh transient session keys. This is typically
accomplished via the exchange of nonces within the secure
association protocol, and includes generation of both unicast
(phase 2a) and multicast (phase 2b) session keys. By not using the
AAA-Key directly to protect data, the secure association protocol
protects against compromise of the AAA-Key, and by guaranteeing the
freshness of transient session key, assures that session keys are
not reused."

In Section 2.1.1 add to the end:

"As a result, EAP methods should not utilize identifiers associated
with a particular usage environment (e.g. MAC addresses)."


In Section 2.1.3, change:

"Ciphersuite negotiation
In practice, an EAP method may not have knowledge of the
ciphersuite that has been negotiated between the peer and
authenticator."

To:

"Knowledge of capabilities
In practice, an EAP method may not have knowledge of the
ciphersuite that has been negotiated between the peer and
authenticator."

In Section 2.2, change:

"EAP Master key (MK)
A key derived between the EAP client and server during the EAP
authentication process, and that is kept local to the EAP method
and not exported or made available to a third party. Since the MK
is a residue of a successful EAP authentication exchange, it is
possible to shorten future EAP exchanges between an EAP peer and
server by providing proof of MK possesion, a technique known as
"fast resume".

Master Session Key (MSK)
Keying material (at least 64 octets) that is derived between the
EAP client and server and exported by the EAP method. Whenever a
full EAP authentication is performed (not fast handoff), the MSK is
chosen as the AAA-Key (see Appendix E for details)."

To:

"EAP Master key (MK)
A key derived between the EAP client and server during the EAP
authentication process, and that is kept local to the EAP method
and not exported or made available to a third party."

Master Session Key (MSK)
Keying material (at least 64 octets) that is derived between the
EAP client and server and exported by the EAP method."

In Section 2.2, change:

"Extended Master Session Key (EMSK)
Additional keying material (64 octets) derived between the EAP
client and server that is exported by the EAP method. Unlike the
MSK which is transported from the authentication server to the
authenticator, the EMSK is known only to the EAP peer and server
and is not provided to a third party. The EMSK therefore is not
transported by the backend authentication server to the
authenticator, although quantities derived from it may be used as
the AAA-Key in situations in which EAP authentication is bypassed
(e.g. fast handoff).

Currently the EMSK is reserved for future uses that are not defined
yet. For example, it could be used to derive additional keying
material for purposes such as fast handoff, man-in-the-middle
vulnerability protection, etc."

to:

"Extended Master Session Key (EMSK)
Additional keying material (64 octets) derived between the EAP
client and server that is exported by the EAP method. The
EMSK is known only to the EAP peer and server and is not
provided to a third party."

In Section 3.5, delete:

"As noted earlier, the discovery phase (phase 0) may be insecure so that
in order to prevent spoofing of discovery packets, the secure
association (phase 2) protocol should support the secure verification of
discovered capabilities, including ciphersuites and other security
parameters. This is more scalable than attempting to configure the
supported capabilities on each peer and authenticator and more secure
than unprotected capabilities negotiation."

Move the contents of Section 2.4 to the beginning of Section 4.1.

In Section 4.1, delete:

"If the authenticator and backend authentication server do not mutually
authenticate, then the peer will be vulnerable to rogue backend
authentication servers, authenticators, or both. If there is no per-
packet authentication, integrity and replay protection between the
authenticator and backend authentication server, then an attacker can
spoof or modify packets in transit."

In Section 4.2.2, change:

"Session Keys
AAA protocols used for transport of EAP keying material MUST
implement and SHOULD use session keys, as in Diameter EAP
[DiamEAP] and RADIUS over IPsec [RFC3579], rather than using a
static key, as originally defined in RADIUS [RFC2865]."

To:

"Session Keys
AAA protocols used for transport of EAP keying material MUST
implement and SHOULD use dynamic key management in order to
derive fresh session keys, as in Diameter EAP [DiamEAP] and
RADIUS over IPsec [RFC3579], rather than using a
static key, as originally defined in RADIUS [RFC2865]."

In Section 4.2.2, change:

"Forgery protection
AAA protocols used for transport of EAP keying material SHOULD
provide protection against rogue authenticators masquerading as
other authenticators."

To:

"Authorization
AAA protocols used for transport of EAP keying material SHOULD
provide protection against rogue authenticators masquerading as
other authenticators."

In Section 7.1, change:

"[RFC2284bis] Blunk, L., et al. "Extensible Authentication Protocol
(EAP)", Internet draft (work in progress), draft-ietf-
eap-rfc2284bis-04.txt, June 2003."

To:

"[RFC2284bis] Blunk, L., et al. "Extensible Authentication Protocol
(EAP)", Internet draft (work in progress), draft-ietf-
eap-rfc2284bis-06.txt, October 2003."

In Section 7.2, delete:

"[RFC2434] Alvestrand, H. and T. Narten, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998."

(already listed in Section 7.1)

In Section 7.2, change:

"[DiamBASE] Calhoun, P., et al., "Diameter Base Protocol", Internet
draft (work in progress), draft-ietf-aaa-diameter-17.txt,
December 2002."

To:


"[DiamBASE] Calhoun, P., et al., "Diameter Base Protocol", RFC 3588,
September 2003."

In Section 7.2, change:

"[IEEE80211i] IEEE Draft 802.11I/D5.0, "Draft Supplement to STANDARD
FOR Telecommunications and Information Exchange between
Systems - LAN/MAN Specific Requirements - Part 11:
Wireless Medium Access Control (MAC) and physical layer
(PHY) specifications: Specification for Enhanced
Security", August 2003."

to:

"[IEEE80211i] IEEE Draft 802.11I/D6.1, "Draft Supplement to STANDARD
FOR Telecommunications and Information Exchange between
Systems - LAN/MAN Specific Requirements - Part 11:
Wireless Medium Access Control (MAC) and physical layer
(PHY) specifications: Specification for Enhanced
Security", August 2003."

Proposed Resolution: Accept

Issue 179: EAP PRF 
Submitter name:   Uri Blumenthal
Submitter email address: uri@bell-labs.com
Date first submitted: 3/21/2003
Reference:
Document: Keyframe-07
Comment type: T
Priority: S
Section: Various
Rationale/Explanation of issue:

Bernard,

I've been told that the issue of pseudo-random function
came up at yesterday's EAP WG, and people were leaning
towards 3DES.

Let me offer a better pseudo-random function - which I
am proposing for IKEv2 as well. It's designed for AES.
3DES would be OK too - though I'd be reluctant to use
a cipher with 64-bit block...

IMHO this pseudo random function is provably secure.

Please let me know what you think.

Thank you!

regards,
Uri.

P.S. I've posted this yesterday to IPsec mailing list,
and after discussion with Matt Blaze and some night
sleep, edited it a little.

This proposal is IPR-free.

PROPOSAL: AES-BASED PSEUDO RANDOM FUNCTION FOR IKEv2.

PRF(S, N)

The goal is to produce requested amount of pseudo
random bits, using AES (or other block cipher) and
variable-length input for both parameters: the secret
one (e.g. DH output) and the one publicly known (e.g.
concatenation of nonces). Should work with variable
key length, preferably support different block sizes.
Preferably, the construct is provably secure.

The following idea is strongly based on Rijndael
Submission Paper to NIST, in particular on their
recommendation for using AES as Pseudo Random
Function. It is assumed that AES is the block
cipher that will be used, but the construct is
generic enough to accomodate other block ciphers.

ALGORITHM: PRF(S, N)

S is secret, N may be known. No assumption on the quality
of randomness is made for either parameter. No limitation
on size of S, N.

Outputs pseudo-random stream of bits in cipher blocksize
chunks (128-bit for AES). Bu default - outputs the number
of bits equal to blocksize. Optionally the amount of
output bits can be specified.

Block cipher is assumed, with key-buffer for key, and
data-buffer for plaintext. AES is a natural choice.

Algorithm:

1. Fill the key-buffer with S. If S is shorter than
the key-buffer, pad the key buffer with zeroes.

2. If any bits of S are left after step (1), place
them in the data-buffer. Append parameter N to
the data-buffer. Pad the data-buffer with zeroes
if necessary, to make it multiple of cipher block
size, and at least as long as key-buffer.

3. Encrypt as many blocks of data-buffer as necessary
to fill key-buffer.

4. Take the output of (3) and fill the key-buffer.
Continue (3) and (4) for the reminder of the
data-buffer.

5. At this point the encryption engine is ready to produce
Pseudo-Random stream. Now run the encryption engine in
OFB mode (starting with input buffer filled with zeroes)
using the full block size, until the desired amount of
output bits is produced.

RATIONALE.

a. Encryption engine is keyed with secret parameter because
all the theory of block cipher security is based on the
assumption that it is the key which is unknown to the
attacker. No analysis exists (as far as I know) for the
case when the key is known, but the plaintext and/or
ciphertext aren't.

b. Changing the key at step (4) mitigates the Related Keys
attack.

c. OFB mode in step (5) allows producing [practically] any
amount of output bits, much larger than the cipher block
size.

SECURITY PROPERTIES.

A block cipher being a Pseudo Random Permutation, if the
S parameter is secret, the following hold true:

- output of (3) is pseudo-random.
- output of (5) is pseudo-random.

CONSIDERATIONS.

Security of this PRF is based on two assumptions: (a) block
cipher used is not broken, and (b) the secret parameter is
unknown to the attacker. However if a weak secret - such
as a short passwod - is used for parameter S, then it
is possible to break this algorithm by dictionary
attack. Note that this vulnerability exists in
HMAC as well, and is unavoidable (unless one
uses protocols such as PAK, EKE/SPEKE, etc).

DESIGN ALTERNATIVE.

Instead of zeroizing the data-buffer in the step (5),
one can leave it as is, effectively filled with the
new key. Cryptographic property of this is one-way-ness,
as it is impossible to invert E{K}K not knowing the key.
Whether this is a desired property, is left for the
discussion.

[Florent Bersani] Browsing through the list of open issues on the EAP Keying Framework, I
came across yours about the proposed AES-based EAP PRF.

Taking into account the discussions on the IPsec mailing list (see
http://www.sandelman.ottawa.on.ca/ipsec/2003/03/msg00294.html  for the
beginning of the thread) and the CFRG mailing list (see
http://www1.ietf.org/mail-archive/working-groups/cfrg/current/msg00161.html
for the beginning of the thread) where renowned cryptographers (Hugo
Krawczyk and Dave Wagner) made some good points IMO, I suggest this
issue be rejected for two reasons:

First, it is not for now IMHO within the scope of the EAP Keying
Framework to define such a mechanism ("Algorithms for key derivation or
mechanisms for key transport are not specified in this document." as of
version 02b);

Second, as stated above, your proposal did not (yet ;-)) reach
consensus within the cryptographic community.

P.S: I absolutely do not mean that such a proposal is not interesting:
on the contrary, I think it very valuable to suggest secure key
derivation functions (or PRNGs) based on frequent primitives (such as
AES)... Indeed, I am currently working on a survey/further analysis of
the existing schemes. If you want to follow this discussion off-line or
on the CFRG (I do not think it belongs to the EAP mailing list), you
are most welcome!

Proposed resolution: Reject

Issue 180: Conversation Overview
Submitter name: Pasi Eronen
Submitter email address: pasi.eronen@nokia.com
Date first submitted: October 14, 2003
Reference:
Document: Keying framework
Comment type: T
Priority: 1
Section: 1.3, 1.4
Rationale/Explanation of issue:

Here is a proposed replacement for section 1.3 of the
keying framework (note that this will most likely be
revised during/after the interim meeting).

1.3. Conversation Overview

   Where EAP key derivation is supported, EAP authentication is
   typically a component of a four phase exchange:

      Discovery (phase 0)
      EAP authentication (phase 1a)
      Access authorization (phase 1b)
      Service authentication (phase 2)

   In the discovery phase (phase 0), the parties locate and
   contact each, and then exchange some information about the
   service to be provided. For instance, one of the parties may
   indicate its willingness to provide a service (and to perform
   the EAP authenticator role), and the other party requests
   access to that service (assuming the EAP peer role).

   Next, the EAP peer and backend authentication server
   authenticate each other (phase 1a) and derive a shared
   session key (later called Authorization Key). In this phase,
   the authenticator just forwards EAP packets between the peer
   and backend authentication server (note that in some cases,
   the authenticator and backend authentication server can be
   colocated in the same physical node). This feature of EAP
   enables deployment of new authentication methods without
   requiring development of new code on the authenticator.

   Partially overlapping with this exchange is a second exchange
   (phase 1b), between the authenticator and the backend
   authentication server. In this exchange, the authenticator
   and backend authentication server authenticate each other
   (using some other mechanism than EAP), and authenticator
   sends information about the service requested by the peer
   (typically inside some AAA protocol attributes).  When the
   phase 1a has finished, the backend authentication server
   sends the authenticator information about whether the service
   should be provided or not, a key for protecting service
   communication (Authorization Key), and optionally more detailed
   instructions about the service to be provided.

   After both phases 1a and 1b are complete, the authenticator
   signals the peer it will allow access to the service (phase
   2). Next, the peer and authenticator typically exchange more
   parameters about the service to be provided (most likely some
   were already exchanged during phase 0), protect at least some
   of these parameters using the Authorization Key, and agree
   about keys used to protect subsequent communication. The goal
   is to ensure that an attacker not knowing the Authorization
   Key cannot modify the protected parameters or calculate the
   keys that will be subsequently used.

   The phases and the relationship between the parties is
   illustrated below.

   EAP peer                 Authenticator              Auth. Server
   --------                 -------------              ------------
     <---------------------------->
          Discovery (phase 0)
     <------------------------------------------------------>
                     EAP authentication (phase 1a)       
                                  <------------------------->
                                Access authorization (phase 1b)
     <---------------------------->
     Service authentication (phase 2)

1.3.1 A concrete example: IEEE 802.11i ESS

   (Details to be added; this is just a sketch)

   o  Phase 0: Typically, the client (peer) discovers the access
      point (authenticator) by listening to Beacon messages, and
      requests access by sending an Assocation Request
      message. The service parameters exchanged in phase 0
      include the SSID, data rates, supported ciphersuites, hop
      patterns (and other PHY parameters).

      The AP initiates phase 1a by sending an EAP Identity
      Request, encapsulated inside an EAPOL frame (though in
      some cases, the AP requests the backend authentication
      server to send this).

   o  In phase 1a, the client and backend authentication server
      authenticate each other. For instance, if EAP-TLS is used,
      they both exchange certificates, verify that the certificates
      are valid and belong to the expected party, and prove
      that they know the corresponding private keys. This exchange
      also generates a shared key between them.

   o  Phase 1b typically uses RADIUS. The RADIUS packets are
      authenticated either with RADIUS's own shared secret
      mechanism (Message-Authenticator), or IPsec. The access
      point sends an Access-Request message containing various
      service parameters (such as Service-Type,
      Calling-Station-Id, and Called-Station-Id). When phase 1a
      has finished, the backend authentication server gives
      permission for the service (Access-Accept), and sends
      e.g. Authorization Key and Session-Timeout.

   o  Phase 2 includes the four-way handshake and group key
      handshake. These exchanges protect various service parameters
      (MAC addresses, RSN IE, selected ciphersuite) and produce
      keys for encrypting the actual traffic.


   After phase 2, the parties protect the 802.11 data frames
   with TKIP or CCMP (basically, encryption and MAC using the
   keys negotiated in phase 2, and sequence numbers for replay
   protection).

1.3.2 Second example: IKEv2/IPsec

   This example assumes a "road warrior VPN gateway" type
   situation where the IKEv2 SA is authenticated solely using
   EAP (no certificates are necessary).

   o  Phase 0: IKEv2 doesn't usually use "discovery" in strict
      sense; instead, the client (initiator) is configured with
      the IPsec gateway's address or DNS name. The client
      contacts the gateway and they exchange Diffie-Hellman
      parameters, nonces and select an IKEv2 ciphersuite. The
      client also indicates the willingness to use EAP by
      leaving out the AUTH payload from the third message.
 
   o  Phase 1a is similar as above (although it is likely
      that some other EAP method than EAP-TLS would be used).

   o  Phase 1b is also very similar. Although no "RADIUS
      guidelines for IKEv2" document exists yet, RADIUS could be
      used with very small modifications (perhaps a new value
      for Service-Type and agreement about what to put in
      Calling-Station-Id/Called-Station-Id attributes).

   o  Phase 2: In this phase, the client and the gateway
      authenticate the IKEv2 SA by using Authorization Key to
      compute a MAC of the Diffie-Hellman parameters and nonces
      (and some other information) exchanged in phase 0. This
      implicitly protects other parameters and the rest of the
      conversation as well.  The service parameters negotiated
      next include details about client IP addresses, what IP
      traffic will be protected, what ciphersuites will be used,
      and so on.

   After this, the traffic is typically protected with ESP or AH.

1.3.3 Repeating the conversation

   There are several reasons why a service might require new
   phase 1a/1b conversation.
  
   o  The service may require periodic reauthentication (and
      reauthorization): A new phase 1a/1b is used to check that
      the client still has the correct credentials, and the
      authorization granted by the backend authentication server
      is still valid.

   o  Service parameters may have changed in a way that requires
      new authorization granted by the backend authentication
      server.
 
      For instance, suppose that the peer is allowed WLAN access
      with 802.11g physical layer; is the user allowed to switch
      to 802.11b?  In this case, the answer is most likely
      yes--the backend authentication server isn't concerned
      with such small details. The peer and authenticator can
      negotiate this change in service parameters without having
      a new phase 1a/1b exchange.

      However, if the user is accessing SSID "Joe's HotSpot",
      does this authorization also give access to SSID "Example
      Inc. Intranet"? Most likely no--this is a detail the
      backend authentication server would like to know about.
  
      Depending on the service, there are service parameters
      between these two extremes: some of them matter when
      authorizing access, some are small details that can be
      negotiated freely between the peer and the authenticator.
      See Section X.X for more discussion about the authorization