[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits] [IPR]
Versions: 00 01 02 03 04 05 06 07 08 09 10 11
12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35
36 37 38
Internet Draft P.Urien
Document: draft-urien-eap-smartcard-03.txt A.J. Farrugia
M.Groot
G.Pujolle
J.Abellan
Expires: March 2004
EAP-Support in smartcard
Status
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC 2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsolete by other documents
at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
1 Abstract
This document will describe the interface to the EAP protocol in
smartcards, which could store multiple identities associated to
Network Access Identifiers.
Urien & All Informational - Expires March 2004 1
Integrating EAP in smartcards October 2003
Table of Contents
1 Abstract.........................................................1
2 Overview.........................................................3
3 Terms............................................................3
4 Identification label.............................................4
5 UserID Coding Rules..............................................5
6 Mandatory and optional services..................................5
6.1 Add-Identity................................................5
6.2 Delete-Identity.............................................5
6.3 Get-Preferred-Identity......................................6
6.4 Get-Current-Identity........................................6
6.5 Get-Next-Identity...........................................6
6.6 Get-Profile-Data............................................6
6.7 Set-Identity................................................6
6.8 Process-EAP.................................................7
6.9 Get-Session-Key (SK)........................................7
6.10 Relationship with the 802.1X supplicant state machine......7
6.11 Authentication-Status......................................8
6.12 Multiple EAP Identity selections...........................8
7 Relationships with the Authentication Agent......................9
8 ISO 7816-4 APDUs.................................................9
8.1 ISO 7816 Status Word.......................................10
8.2 PIN Management.............................................10
8.2.1 Verify PIN...........................................10
8.2.2 Change PIN...........................................11
8.2.3 Enable PIN...........................................11
8.2.4 Disable PIN..........................................11
8.2.5 Unblock PIN..........................................11
8.3 Multi-Applications smartcard considerations................12
8.4 Add-Identity...............................................12
8.5 Delete-Identity............................................12
8.6 Get-Preferred-Identity.....................................13
8.7 Get-Current-Identity.......................................13
8.8 Get-Next-Identity..........................................13
8.9 Get-Profile-Data...........................................13
8.10 Set-Identity..............................................14
8.11 Set-Multiple-Identity.....................................14
8.12 Process-EAP...............................................14
8.13 Get-Session-Key...........................................16
8.14 Get-Current-Version.......................................17
8.15 Get-802.1X-State..........................................17
8.16 Commands summary..........................................18
9 State Machine Sequence..........................................18
9.1 Supplicant software state machine sequence.................18
9.2 Smartcard EAP framework state machine sequence.............19
10 Security Considerations........................................19
10.1 General Considerations....................................19
10.2 PEAP Consideration........................................20
11 Intellectual Property Right Notice.............................20
12 Annex 1 (Informative) - EAP/SIM packet detail..................20
Urien & All Informational - Expires March 2004 2
Integrating EAP in smartcards October 2003
13 Annex 2 (Informative) - EAP/MD5 packet details.................24
14 Annex 3 (Informative) TLS support..............................26
14.1 Fragment maximum size.....................................26
14.2 EAP/TLS messages format...................................26
14.3 Example of EAP/TLS Authentication.........................27
15 Annex 4 (Normative) ASN.1 BER Tag coding for the subscriber
profile information...............................................28
15.1 ASN.1 Subscriber Profile Encoding.........................28
15.1.1 EapID...............................................28
15.1.2 EapType.............................................28
15.1.3 Version.............................................28
15.1.4 User Credential.....................................28
15.1.5 UserProfile.........................................29
15.1.6 UserProfile encoding example........................29
16 Annex 5 (Informative) APDUs exchange example...................29
17 References.....................................................30
18 Author's Addresses.............................................31
2 Overview
All technologies derived from 802.11 specifications such as 802.11a,
802.11b, 802.11g need strong security protocols for data privacy,
integrity and network access. The 802.1X [8] specification describes
the risks and the protocols for the protection of the exchanged data
during the network connection.
802.1X specification requires the Extensible Authentication Protocol
(EAP) to be used as the framework for application dependent
authentication processes with a mutual authentication between the
supplicant and the authenticator. It is obvious that the role of the
supplicant in this specification could partly be implemented in the
smartcard as an authentication processing mean. The flexibility of
EAP (RFC 2284) specification does not provide a Mandatory-to-
implement solution. The structure of the EAP frames allows the
applications to identify the EAP type of consequently to operate the
appropriate authentication.
This draft describes a standard interface to EAP implementation
embedded in a smartcard. This device is generally considered as the
most secure computing platform.
3 Terms
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119.
Authentication Agent: A piece of software implemented in the
supplicant that processes the authentication sequence.
AS
Authentication Server
Urien & All Informational - Expires March 2004 3
Integrating EAP in smartcards October 2003
Authenticator: See the IEEE 802.1X specification for a definition of
this concept.
EAP
Extensible Authentication Protocol
GSM
Global System for Mobile communications
IMSI
International Mobile Subscriber Identifier, used in GSM to identify
subscribers.
NAI
Network Access Identifier
PIN
Personal Identification Number
SK
Session Key
SIM
Subscriber Identity Mobile
Supplicant: an IEEE 802.1X concept, which in the context of IEEE
802.11 represents a STA (station) seeking to attach to an IEEE 802
LAN via an IEEE 802.1X Port. See the IEEE 802.1X specification for a
complete definition
4 Identification label
802.1X specification [5] requires an authentication between the
authentication server (AS) and the supplicant. The authentication is
embedded in the Extensible Authentication Protocol (EAP) RFC2284 [1]
specification. The authentication consists of a challenge response
between both parties without consideration of the involved crypto-
suite. Before starting the mutual authentication, the AS needs the
supplicant identity to establish the session. The AS or the
authenticator sends an EAP Request Identity to the supplicant that
returns its system identity. A user may own several identities
associated to corporate networks or operatorsÆ networks.
The identification label is a pointer to a system identity (the EAP-
ID value returned in the EAP-Identity.response message) stored in
smartcard; it may be of various types:
1. A network SSID as described in the 802.11 standard [4].
2. A userÆs identification (userid) e.g. an ASCII string. A network
access identifier, NAI [6] may be used as userid.
3. A pseudonym, e.g. a friendly name.
Urien & All Informational - Expires March 2004 4
Integrating EAP in smartcards October 2003
According to the network environment, the supplicant software needs
to set the appropriate identity and verifies if the smartcard is
able to mirror the authenticator.
If the smartcard is not able to process the authentication related
to the identity then any setting process is rejected by the NAK
code.
The subsequent sections give the description of the methods used by
a supplicant for processing an 802.1X authentication using the
smartcard.
Annex one provides a reference implementation example for a SIM
based authentication. Annex two provides a reference implementation
example for a MD5 based authentication. Annex three provides a
reference implementation for a TLS based authentication. Annex four
describes the userÆs profile according to the ASN.1 [9] syntax.
5 UserID Coding Rules
This section describes the structure and the architecture of the
userid.
A userid consists of 2 fields separated by the Internet symbol "@".
The right hand side of the "@" symbol is the userid realms while the
left hand side is an application dependent and unique identification
number. EAP/SIM has defined the userid where the application
identification is "1IMSI". Other userid such as email address can be
used by the application.
6 Mandatory and optional services
Mandatory services must be implemented in any smartcard that claims
conformance with this draft. Optional services are not required by
basic authentication operations.
6.1 Add-Identity
Status: Optional.
This command and the Delete-Identity are part of the userÆs identity
management protocols. The smartcard is initially manufactured
without any identification label. The personalization or the
supplicant software adds in the smartcard userÆs identification
label that can be retrieved by other smartcard command.
6.2 Delete-Identity
Status: Optional
This command and the add-Identity are part of the userÆs identity
management protocols. The smartcard contains a list of one or
several identification labels that can be retrieved by the
supplication software. The command deletes one entry of the
smartcard list.
Urien & All Informational - Expires March 2004 5
Integrating EAP in smartcards October 2003
6.3 Get-Preferred-Identity
Status: Optional
The smartcard contains at least one userÆs identity related to the
userÆs network subscription. The supplicant software gets from the
smartcard the initial and preferred identification label. If the
user has more than one identity the supplicant software uses the
Get-Next-Identity to read all the available other userÆs identities.
6.4 Get-Current-Identity
Status: Mandatory
The smartcard contains at least one userÆs identity related to the
userÆs network subscription. The supplicant software gets from the
smartcard its current identification label.
6.5 Get-Next-Identity
Status: Mandatory
The smartcard may contain one or more userÆs identities according to
the userÆs network subscriptions. The supplicant software should
prompt the userÆs identity and a subsequent selection allows the
smartcard to process the appropriate EAP authentication type. The
method Get-Next-Identity allows the supplicant software to read all
the available userÆs identities.
The Get-Next-Identity method may inform the supplicant software when
all userÆs identities have been read. Otherwise the supplicant
software detects the identity list end when it gets again the first
identity.
6.6 Get-Profile-Data
Status: Optional
The Authentication Agent or the authenticator may request the
subscriber profile information. The Get-Profile-Data returns all
related information available in the smartcard. Details of the
subscriber profile information are given in annex 4. The
implementation of the information may be ruled but ASN.1 BER coding
specification [9] or by an XML dialect [10].
6.7 Set-Identity
Status: Mandatory
Once the Identity selection is processed, the supplicant software
needs to set the smartcard EAP framework according to the selected
userÆs identity. The Set-Identity sets or restarts the smartcard EAP
framework state machine for further processing using the EAP-Packets
method.
The supplicant software can set the EAP framework using the
pseudonym if available in the smartcard. If the pseudonym is not
available the supplicant software uses the permanent identity to set
the EAP framework according to the previous section.
Urien & All Informational - Expires March 2004 6
Integrating EAP in smartcards October 2003
6.8 Process-EAP
Status: Mandatory
The EAP process is described in the RFC 2284 specification [1] and
involves several EAP requests and responses packets,
1) EAP request/response Identity;
2) A suite of EAP request/response related to a particular
authentication scenario; and
3) EAP success or failure.
The Set-Identity restarts the smartcard EAP framework state machine
for further processing using the EAP-Packets method.
An incoming EAP/Request/Identity restarts the smartcard EAP
framework state machine for further processing using other EAP-
Packets methods.
The smartcard receives the RFC 2284 frames. It retrieves the
appropriate EAP authentication type in the frame and the identifier.
The smartcard maintains the EAP state machine and returns an EAP NAK
packet if the state sequence is broken. In that case it restarts the
AUTHENTICATING state.
Any EAP request is silently ignored if the state machine was not
started.
The last step of the protocol retrieving the session Key from the
smartcard can be accomplished only if the last EAP packet received
from the authentication is an EAP success packet.
6.9 Get-Session-Key (SK)
Status: Mandatory.
At the end of a successful authentication the supplicant needs to
update the appropriate crypto suite (if any) using the session key.
The Get-Session-Key returns to the supplicant software the key to
initialize radio security protocols like TKIP, or CCMP.
For obvious security reasons this service is available only if the
smartcard has received an EAP success packet.
In an 801.1X [5] context, SK should be interpreted as the unicast
key.
In an 802.11i or WPA context SK should be interpreted as the PMK
(Pairwise Master Key).
6.10 Relationship with the 802.1X supplicant state machine
The supplicant state machine, as described in 802.1x standard is
split between the terminal and the smartcard. The smartcard only
Urien & All Informational - Expires March 2004 7
Integrating EAP in smartcards October 2003
implements the AUTHENTICATING state. Upon reception of the Set-
Identity command smartcard unconditionally transits in the
AUTHENTICATING state. Upon reception of the EAP Identity-Request
message, smartcard unconditionally moves in the ACQUIRED state,
delivers an Identity response message and re-enters the
AUTHENTICATING state. In agreement with the 802.1x state machine all
EAP requests are processed in the AUTHENTICATING state. The final
EAP notification message (either success or failure) indicates the
end of the authentication process. If any error occurs during the
authentication procedure (reception of NAK or failure messages ...)
the smartcard restarts at the AUTHENTICATING state where it will
wait for an identity request or the first EAP-Type request.
If the EAP smartcard support security features like PIN code or
biometric identification, all EAP messages will be silently discard
before the occurrence of a successful bearer authentication.
reset
+-------------------+ +------>+----------------------+
+-->| ACQUIRED | | +-->| AUTHENTICATING |<-+
| +-------------------+ | | +----------------------+ |
| | txRspId(reveiveId,| | | | txRspAuth(receivedId,| |
| | previousId)| | | | previousId) | |
| | previousId= | | | | previousId= | |
| | receivedId | | | | reveivedId | |
| +-------------------+ | | +--+---+----------+----+ |
| | | | | | reqId | |
| +----------------+ +--<---+ | +---->--+
| reqAuth | error
+--------------------<------------------------+
6.11 Authentication-Status
At any time, the smartcard may return the authentication status.
This status may reveal the following situations:
1) No authentication identity has been selected.
2) Authenticating
3) Authentication Success, AUTHENTICATING state restarted.
4) Authentication failure, AUTHENTICATING state restarted.
6.12 Multiple EAP Identity selections
Multiple EAP authentications may be processed simultaneously in the
same smartcard. If this capability is supported, the following rules
apply:
1) Multiple EAP Identities may be selected at the same time.
2) The supplicant software shall indicate in the Set-Identity
command short identifier to be associated with the selected EAP
identity.
Urien & All Informational - Expires March 2004 8
Integrating EAP in smartcards October 2003
Note: If another EAP identity was associated with the same short
identity this EAP identity becomes necessarily unlinked and is no
longer more possible to accessible to it unless a new set-identity
command is processed (in this case the state machine is reset) or
unless a different short identity has been also associated with it.
The supplicant software shall include this short identifier within
the EAP-Packets, Authentication-Status and Get-Session-Key commands
to inform which of the selected EAP identities the command is
targeted to.
The smartcard and the supplicant software shall maintain a separate
EAP state machine for each of the different selected EAP identities.
Note: the EAP state machine is associated with each EAP identity:
whether two or more different short identities are associated to the
same EAP identity, the results of EAP-Packets, Authentication-Status
and Get-Session-Key commands do not depend on the short identifier
used to refer the EAP identity. In other words, there is only one
state machine for selected EAP Identity dependently of the short
identities associated with it.
7 Relationships with the Authentication Agent
The authentication agent is a piece of software implemented in the
supplicant that processes the authentication sequence. This
component must be able to detect a smartcard. If this device is not
present, or if it silently discards an EAP.request message, then
authentication agent must reject all incoming request messages by
the NAK code.
8 ISO 7816-4 APDUs
This section of the document provides an implementation of the
previous descriptions for an ISO 78176-4 compatible smartcard. The
section does not preclude of the transport protocol used between the
smartcard and the reader. Thus, this specification does not mandate-
to-implement any transport protocol such as T=0 or T=1, which are
not in the scope of this document. It should be noted that all
values are in hex representation.
The restriction and security related descriptions are not present in
the document. Annexes of this document give implementation examples.
Note: Class byte value defined in this section ('A0') shall be
interpreted as an implementation example. Other values may be used
respecting conventions defined in ISO 78176-4.
Urien & All Informational - Expires March 2004 9
Integrating EAP in smartcards October 2003
8.1 ISO 7816 Status Word
According to ISO 7816, the status word SW1,SW2 is a two bytes word,
giving information about current operation either success or
failure.
'90' '00' indicates an operation success
'98' '04' indicates one of the following events,
- Access Condition not fulfilled, e.g. a pin code presentation
is required.
- Unsuccessful user PIN verification, at least one attempt left.
'98' '40' indicate one of the following events
- Unsuccessful user PIN verification, no attempt left
- Smartcard blocked
'67' 'XX'
- Incorrect parameter P3
'6B' 'XX'
- Incorrect parameter P1 or P2
'6D' 'XX'
- Unknown instruction code (INS) given in the command
'6E' 'XX'
- Wrong instruction class (CLA) given in the command
'6F' 'XX'
- Technical problem, not implemented à
'61 ''XX'
- Operation result must be fetched by the ISO Get Response APDU
(CLA = 'C0', P3= 'XX')
'6C ''XX'
- Operation must be performed again, with the LE parameter
value sets to 'XX'.
'70' '00'
- Packet silently discarded.
'70' '01'
- Authentication failure
8.2 PIN Management
Some services may require that the smartcardÆs bearer presents its
PIN code.
Smartcard returns the '98' '04' status word when itÆs necessary to
check the PIN code, before accessing to a particular service (see
previous section). A PIN code is typically a four digits decimal
number, ASCII encoded, and ranging between '0000' and '9999'.
8.2.1 Verify PIN
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Verify | A0 | 20 | 00 | 00 | 10 | 00 |
+--------+-----+-----+----+----+----+----+
Urien & All Informational - Expires March 2004 10
Integrating EAP in smartcards October 2003
The ISO APDU Verify is used when a PIN code presentation is required
Le is the PIN code length, typically height ASCII encoded bytes.
8.2.2 Change PIN
This APDU modifies the user PIN code.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Change | A0 | 24 | 00 | 00 | 10 | 00 |
+--------+-----+-----+----+----+----+----+
The old PIN (8 bytes) and new PIN (8 bytes) are presented
8.2.3 Enable PIN
This APDU enables the user PIN function.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Enable | A0 | 26 | 00 | 00 | 08 | 00 |
+--------+-----+-----+----+----+----+----+
The user PIN code (8 bytes) is presented.
8.2.4 Disable PIN
This APDU disables the user PIN function.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Disable| A0 | 28 | 00 | 00 | 08 | 00 |
+--------+-----+-----+----+----+----+----+
The user PIN code is presented.
8.2.5 Unblock PIN
This APDU unblocks a smartcard, blocked after three wrong PIN code
presentations.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Unblock| A0 | 2C | 00 | 00 | 10 | 00 |
+--------+-----+-----+----+----+----+----+
The user PIN code (8 bytes) and an unblock code (8 bytes) are
presented.
Urien & All Informational - Expires March 2004 11
Integrating EAP in smartcards October 2003
8.3 Multi-Applications smartcard considerations
A smartcard may store several applications, each of them being
identified by a set of bytes referred as the Application IDentifier
(AID).
The ISO APDU Select is used when itÆs necessary to select an
application, able to process one or more EAP authentication
scenarios.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| Select | 00 | A4 | 04 | 00 | XX | 00 |
+--------+-----+-----+----+----+----+----+
Le is the AID length.
According to ISO 7816-7 AID is made of two parts
-RID, a mandatory 5 bytes field that identifies a company or a
standardization body.
-PIX, up to 11 bytes, which identifies an application.
8.4 Add-Identity
This command adds an identification label as described in the
section: Identification Label Coding Rules. The smartcard list is
managed by the smartcard. The identification label is appended as
the last element of the list.
Identity coding guidelines are not yet specified.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 17 | 00 | 81 | xx | 00 |
+--------+-----+-----+----+----+----+----+
8.5 Delete-Identity
This command deletes the identification label as described in the
section: Identification Label Coding Rules. The command parameter
gives the identification label to be deleted.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 17 | 00 | 82 | xx | 00 |
+--------+-----+-----+----+----+----+----+
Urien & All Informational - Expires March 2004 12
Integrating EAP in smartcards October 2003
8.6 Get-Preferred-Identity
This command returns the userÆs preferred identification label as
described in the section: Identification Label Coding Rules
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 17 | 00 | 02 | 00 | XX |
+--------+-----+-----+----+----+----+----+
8.7 Get-Current-Identity
This command returns userÆs current identification label as
described in the section: Identification Label Coding Rules.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 18 | 00 | AA | 00 | XX |
+--------+-----+-----+----+----+----+----+
If "multiple EAP Identity selection" is not supported, P2 (AA value)
shall be set to '00'.
If "multiple EAP Identity selection" is supported, P2 (AA value)
shall indicate the short identifier associated with the selected EAP
identity to which the command is targeted. These short identifiers
are coded as described in Set-Identity command.
8.8 Get-Next-Identity
This command returns a user identification label as described in the
section: Identification Label Coding Rules.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 17 | 00 | 01 | 00 | XX |
+--------+-----+-----+----+----+----+----+
8.9 Get-Profile-Data
The command returns the related subscriber profile information
according to the application requirements and format. Profile coding
rules are defined in annex 4.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 1A | 00 | AA | 00 | YY |
+--------+-----+-----+----+----+----+----+
Urien & All Informational - Expires March 2004 13
Integrating EAP in smartcards October 2003
If "multiple EAP Identity selection" is not supported, P2 (AA value)
shall be set to '00'.
If "multiple EAP Identity selection" is supported, P2 (AA value)
shall indicate the short identifier associated with the selected EAP
identity to which the command is targeted. These short identifiers
are coded as described
8.10 Set-Identity
The command resets and initializes the state machine for processing
the EAP Packets. The first step after this command is an EAP request
identity packet. If a different EAP packet is sent to the smartcard
the smartcard returns an EAP NAK response.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 16 | 00 | 80 | XX | 00 |
+--------+-----+-----+----+----+----+----+
8.11 Set-Multiple-Identity
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 16 | 00 | 83 | XX | 00 |
+--------+-----+-----+----+----+----+----+
The command resets and initializes the state machine for processing
the EAP Packets. The first step after this command is an EAP request
identity packet. If a different EAP packet is sent to the smartcard
the smartcard returns an EAP NAK response.
When "multiple EAP Identity selection" is supported, then the first
status byte is '90' and the second one indicates the short
identifier (coded in 1 byte) to be associated with the selected
identity.
8.12 Process-EAP
The command is the method for EAP packet management. The smartcard
identifies the EAP packet type and processes the EAP authentication
according to current state machine. The state machine sequences have
to be respected and the smartcard enforces the EAP sequence
processing.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | AA | XX | YY |
+--------+-----+-----+----+----+----+----+
Urien & All Informational - Expires March 2004 14
Integrating EAP in smartcards October 2003
The EAP request or response packet lengths are represented by the
unknown value XX and YY. The supplicant software should set these
elements in accordance with the EAP packet types.
If "multiple EAP Identity selection" is not supported, P2 (AA value)
shall be set to '00'.
If "multiple EAP Identity selection" is supported, P2 (AA value)
shall indicate the short identifier associated with the selected EAP
identity to which the command is targeted. These short identifiers
are coded as described in Set-Identity command.
Most EAP request packets will produce an EAP response packet from
the smartcard. If no response is to be produced (e.g. packet
silently discard because invalid sequence) the smartcard shall
inform the client software with an alert status word (70 00).
Success and failure packets do not require any response from the EAP
client. A "successfully ending of command (90 00)" status word shall
be send from the smartcard once a success EAP packet is processed.
An alert status word (70 00) shall be send from the smartcard once a
failure EAP packet is received.
EAP Identity packets are independent of the authentication type;
this section of the document provides the packet details. The rest
of the EAP packet being authentication protocol dependent, they are
detailed in the informative annex of this document.
The description of the EAP/Request/Identity is detailed according to
the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length = 5 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 |
+-+-+-+-+-+-+-+-+
The description of the EAP/Response/identity is detailed according
to the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 | |
+-+-+-+-+-+-+-+-+ |
| User Identity |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Urien & All Informational - Expires March 2004 15
Integrating EAP in smartcards October 2003
Note : Command chaining and extended length
1) When an incoming EAP packet exceeds 255 bytes, the transport
mechanisms for Extended APDU described in ISO/IEC 7816-3 for T=0 and
T=1 may be used
For T=0 the APDU Command (APDU-C) is split into data strings of at
most 255 bytes and transported in the Data Field of a series of
consecutive APDU ENVELOPE
For T=1 the APDU-C is split into data strings of at most 254 bytes
and transported in the Information Field of chained I-blocks. In
both cases, on reception of the TPDU the smartcard has to
concatenate the successive data strings in order to obtain the
original APDU.
2) When an outgoing EAP packet exceeds 256 bytes, the smartcard may
use the mechanisms described in ISO/IEC 7816-4, i.e. extended length
field (ISO/IEC 7816-4 2002) for T=0 and T=1.
For T=0 the APDU response (APDU-R) is split into successive data
strings of at most 256 bytes by the card. The Terminal can retrieve
them by a series of consecutive GET RESPONSE APDU.
For T=1 the APDU-R is split into data strings of at most 254 bytes
by the card and transported in the Information Field of chained I-
blocks. On reception, the Terminal performs the concatenation of the
Information Field of the successive I-blocks to get the APDU-R. The
supplicant software shall then reassemble the complete EAP packet
before sending it to the authenticator.
8.13 Get-Session-Key
Once the state machine has received the EAP Success packet the
smartcard process is able to send the Session Key used by the 802.1X
specification for the crypto-suite.
As an illustration the EAP SIM authentication [2] specifies the
Session Key usage according to the system cryptographic suite.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | A6 | 00 | AA | 00 | 20 |
+--------+-----+-----+----+----+----+----+
If "multiple EAP Identity selection" is not supported, P2 (AA value)
shall be set to æ00Æ.
If "multiple EAP Identity selection" is supported, P2 (AA value)
shall indicate the short identifier associated with the selected EAP
identity to which the command is targeted. These short identifiers
are coded as described in Set-Identity Command.
Urien & All Informational - Expires March 2004 16
Integrating EAP in smartcards October 2003
8.14 Get-Current-Version
This command returns the EAP-Type protocol version and the WLAN-SCC
version.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 18 | xx | yy | 00 | 02 |
+--------+-----+-----+----+----+----+----+
P1=00, Reserved
P1 is the current EAP-Type
P2=0, gets the EAP-Type version
P2=1, gets the WLAN-SCC version
8.15 Get-802.1X-State
This command returns the current smartcard 802.1X state.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 19 | 00 | AA | 00 | 01 |
+--------+-----+-----+----+----+----+----+
If "multiple EAP Identity selection" is not supported, P2 (AA value)
shall be set to æ00Æ.
If "multiple EAP Identity selection" is supported, P2 (AA value)
shall indicate the short identifier associated with the selected EAP
identity to which the command is targeted. These short identifiers
are coded as described in Set-Identity Command.
Returned values:
01 No Identity set, EAP messages silently discarded.
02 EAP/Request/Identity received, AUTHENTICATING state.
03 Authentication in progress, AUTHENTICATING state.
04 Success, AUTHENTICATING state, waiting for an EAP/Request
05 Failure, AUTHENTICATING state, waiting for an EAP/Request
06 Error, AUTHENTICATING state, waiting for an EAP/Request
Urien & All Informational - Expires March 2004 17
Integrating EAP in smartcards October 2003
8.16 Commands summary.
+------------------------+-----+-----+----+----+----+----+
| Command |Class| INS | P1 | P2 | Lc | Le |
+------------------------+-----+-----+----+----+----+----+
| Process-EAP | A0 | 80 | 00 | ii | xx | yy |
+------------------------+-----+-----+----+----+----+----+
| Get-802.1X-State | A0 | 19 | 00 | ii | 00 | 01 |
+------------------------+-----+-----+----+----+----+----+
| Get-Session-Key | A0 | A6 | 00 | ii | 00 | xx |
+------------------------+-----+-----+----+----+----+----+
| Get-Profile-Data | A0 | 1A | 00 | ii | 00 | yy |
+------------------------+-----+-----+----+----+----+----+
| Get-Current-Identity | A0 | 18 | 00 | ii | 00 | yy |
+------------------------+-----+-----+----+----+----+----+
| Get-Next-Identity | A0 | 17 | 00 | 01 | 00 | yy |
+------------------------+-----+-----+----+----+----+----+
| Get-Preferred-Identity | A0 | 17 | 00 | 02 | 00 | yy |
+------------------------+-----+-----+----+----+----+----+
| Set-Identity | A0 | 16 | 00 | 80 | xx | 00 |
+------------------------+-----+-----+----+----+----+----+
| Set-Multiple-Identity | A0 | 16 | 00 | 83 | xx | 00 |
+------------------------+-----+-----+----+----+----+----+
| Add-Identity | A0 | 17 | 00 | 81 | xx | 00 |
+------------------------+-----+-----+----+----+----+----+
| Delete-Identity | A0 | 17 | 00 | 82 | xx | 00 |
+------------------------+-----+-----+----+----+----+----+
| Get-Current-Version | A0 | 18 | xx | yy | 00 | 02 |
+------------------------+-----+-----+----+----+----+----+
| Verify-PIN | A0 | 20 | 00 | 00 | 08 | 00 |
+------------------------+-----+-----+----+----+----+----+
| Change-PIN | A0 | 24 | 00 | 00 | 10 | 00 |
+------------------------+-----+-----+----+----+----+----+
| Enable-PIN | A0 | 26 | 00 | 00 | 08 | 00 |
+------------------------+-----+-----+----+----+----+----+
| Disable-PIN | A0 | 28 | 00 | 00 | 08 | 00 |
+------------------------+-----+-----+----+----+----+----+
| Unblock-PIN | A0 | 2C | 00 | 00 | 10 | 00 |
+------------------------+-----+-----+----+----+----+----+
| Select-AID | A0 | A4 | 04 | 00 | xx | 00 |
+------------------------+-----+-----+----+----+----+----+
9 State Machine Sequence
9.1 Supplicant software state machine sequence
+-----------------------+ +-----------------------+
|A-Get userÆs identity |>>>|B-Set userÆs identity |>>>
+-----------------------+ +-----------------------+
+---------------------------+ +---------------------------+
|C-send/receive EAP packets |>>>|D-Get-Session-Key |
+---------------------------+ +---------------------------+
Urien & All Informational - Expires March 2004 18
Integrating EAP in smartcards October 2003
Transitions:
A-B : All available identities received by Get-Next-Identity
commands
B-C : Set-Identity command successfully performed
C-D : Successful ending of EAP-Packets command with no outgoing
packet(Status word of the command equals æ9000'). This can be also
detected by 'authenticated' status following the Authentication-
Status command.
D-C : An incoming EAP packet
9.2 Smartcard EAP framework state machine sequence
+----------------------+ +----------------------+
| Z-Identity not set |>>>| Y-Authenticating |>>>
+----------------------+ +----------------------+
+----------------------+ +----------------------+
| X-Authenticated | | W- Not authenticated |
| /Authenticating | | /Authenticating |
+----------------------+ +----------------------+
Transitions:
Z-Y : An available identity successfully set
Y-X : EAP success packet received
Y-W : EAP failure packet received
X-Y : EAP Request identity packet received
W-Y : EAP Request identity packet received
10 Security Considerations
10.1 General Considerations
As a reference implementation the previous section provides the
details of the EAP authentication using the GSM SIM. This section of
the document highlights the new potential risks providers of
application may face by re-using deployed networks for other
purposes. From the document [7] fatal flaw does exist when have
physical access to the smartcard.
The nature of the Internet network does no longer require getting
physical access to the smartcard. Worms, Trojan horses or viruses
can move to the computing platforms and performs the jobs. It is
important for a reference implementation to provide the relevant
level of protection for the new applications but not to create other
flaws.
Urien & All Informational - Expires March 2004 19
Integrating EAP in smartcards October 2003
Other consideration have been introduced in [2] to protect the
smartcard against crypto attack and recommends the authentication
should take place in a PROTECTED ENVIRONMENT.
10.2 PEAP Consideration
Protected Extensible Authentication Protocol (PEAP) [12] is a pre-
processing protocol that allows the privacy of data when processing
EAP [1] protocol. EAP protocol, as defined in [1], starts by an EAP
packet request/Identity. The EAP packet response Identity returns
the userÆs identification label with no privacy being not part of
[1].
PEAP protocol allows both part of the EAP packet exchange creating a
session key that can be for privacy over the subsequent execution of
the EAP protocol.
This implementation of EAP in the smartcard shall allow performing a
PEAP tunnel for privacy. Once PEAP first phase has been successfully
preformed, the EAP protocol has defined shall be performed according
the EAP smartcard requirements.
11 Intellectual Property Right Notice
To be specify according to the author and participant.
12 Annex 1 (Informative) - EAP/SIM packet detail.
The protocol implementation is out of the scope of this document but
as a reference implementation this section gives details using the
SIM as specified by [3]. Other protocol can be implemented using ISO
7816-3 TPDU. This section of the document gives the APDU syntax and
coding which makes the specification protocol free.
The first EAP packet is the EAP Request Identity. This initial
packet format complies with [1]. The smartcard returns an EAP
response identity according to the IMSI length and the supported
version according to [2].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | 05 | YY |
+--------+-----+-----+----+----+----+----+
The description of the EAP/Request/identity is detailed according to
the IETF RFC 2284 [1]. This EAP packet doesnÆt respect the EAP/SIM
format since it is only part of [1].
Urien & All Informational - Expires March 2004 20
Integrating EAP in smartcards October 2003
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length = 5 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 |
+-+-+-+-+-+-+-+-+
The description of the EAP/Response/identity is detailed according
to the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 | |
+-+-+-+-+-+-+-+-+ |
| |
| User Identity |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Note the EAP/Response/Identity when returning the userÆs identity
that includes the IMSI includes the real coded IMSI in the EAP
packet and not the IMSI coded for GSM network. Further information
can be retrieved in [3] for the IMSI coding in the SIM during the
SIM setting.
The user Identity field can contains the userÆs permanent pseudonym
or re-authentication identity.
The second EAP Packet is the EAP request SIM start as represented in
the IETF draft document [2].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | XX | YY |
+--------+-----+-----+----+----+----+----+
The description of the EAP/Request/SIM/Start is detailed according
to [2] incoming SIM data where further information can be retrieved.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 18 | Subtype = 10 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AT_PERM..._REQ | Length = 1 | Reserved |
Urien & All Informational - Expires March 2004 21
Integrating EAP in smartcards October 2003
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AT_FULL..._RES | Length = 1 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AT_ANY_ID_REQ | Length = 1 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AT_VERSION_L...| Length | Actual Version List Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Supported version 1 | Supported version 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Supported version 3 | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The description of the EAP/Response/SIM/Start is detailed according
to [2] outgoing SIM data where further information can be retrieved.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 18 | Subtype = 10 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AT_NONCE_MT | Length = 5 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| NONCE_MT |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_SELECTED | Length = 1 | Select Version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_IDENTITY | Length | Actual Identity Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| User Identity (Optional) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The description of the EAP/Response/SIM/Start is detailed according
to [2] outgoing SIM data where further information can be retrieved.
The third EAP Packet is the EAP request SIM Challenge as represented
in the IETF draft document [2].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | XX | 1C |
+--------+-----+-----+----+----+----+----+
Urien & All Informational - Expires March 2004 22
Integrating EAP in smartcards October 2003
The description of the EAP/Request/SIM/Challenge is detailed
according to [2] incoming SIM data where further information can be
retrieved.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 18 | Subtype = 11 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_RAND | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| n*RAND |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_MAC | Length = 5 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| MAC |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_IV | Length = 5 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Initialization Vector (Optional) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_ENCR_DATA | Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Encrypted Data (Optional) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The description of the EAP/Response/SIM/Challenge is detailed
according to [2] outgoing SIM data where further information can be
retrieved.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 18 | Subtype = 11 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT_MAC | Length = 5 | Reserved |
Urien & All Informational - Expires March 2004 23
Integrating EAP in smartcards October 2003
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| MAC |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The last EAP Packet is the EAP success notification as represented
in the IETF RFC 2284 [2].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | 04 | 00 |
+--------+-----+-----+----+----+-- -+----+
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Success | Identifier | Length = 04 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
13 Annex 2 (Informative) - EAP/MD5 packet details
The first EAP packet is the EAP Request Identity. This initial
packet format complies with the RFC 2284. The smartcard returns an
EAP response identity according to the NAI length.
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | 05 | YY |
+--------+-----+-----+----+----+----+----+
The description of the EAP/Request/identity is detailed according to
the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length = 5 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 |
+-+-+-+-+-+-+-+-+
The description of the EAP/Response/identity is detailed according
to the IETF RFC 2284 [1].
Urien & All Informational - Expires March 2004 24
Integrating EAP in smartcards October 2003
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 01 | |
|-+-+-+-+-+-+-+-+ Identity Value |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The second EAP Packet is the EAP/request/MD5/challenge as
represented in the IETF RFC 2284 [1].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | XX | 16 |
+--------+-----+-----+----+----+----+----+
The description of the EAP/Request/MD5/challenge is detailed
according to the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 04 | |
|-+-+-+-+-+-+-+-+ MD5-Challenge.Value |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The description of the EAP/Response/MD5/challenge is detailed
according to the IETF RFC 2284 [1].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Response | Identifier | Length = 16 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 04 | Type_Size=10 | |
|-+-+-+-+-+-+-+-+---------------+ MD5 Digest Value |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The third EAP Packet is the EAP success notification as represented
in the IETF RFC 2284 [1].
+--------+-----+-----+----+----+----+----+
|Command |Class| INS | P1 | P2 | Lc | Le |
+--------+-----+-----+----+----+----+----+
| | A0 | 80 | 00 | 00 | 04 | 00 |
+--------+-----+-----+----+----+-- -+----+
Urien & All Informational - Expires March 2004 25
Integrating EAP in smartcards October 2003
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Success | Identifier | Length = 04 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Further information can be retrieved from the IETF draft document
[2].
14 Annex 3 (Informative) TLS support
14.1 Fragment maximum size.
A single TLS record may be up to 16384 octets in length, but a TLS
message may span multiple TLS records, and a TLS certificate message
may in principle be as long as 16MB. The group of EAP-TLS messages
sent in a single round may thus be larger than the maximum RADIUS
packet size of 4096 octets, or the maximum 802 LAN frame size.
The chaining and extended length mechanisms identified in this
document provide enough extension to manage incoming and outgoing
EAP-TLS packets. Then, authenticator shall not necessary follow a
specific fragment policy regarding whether EAP-TLS is provided by
the smartcard or not.
However, in order to prevent multiple segmentation and re-assembly
operations, the maximum EAP message length of a no fragmented packet
shall be set to 240 bytes. For a fragmented EAP message, the maximum
length value shall be 240 bytes.
As defined in EAP-TLS, when the smartcard receives an EAP-Request
packet with the M bit set, it MUST respond with an EAP-Response with
EAP-Type=EAP-TLS and no data. This serves as a fragment ACK.
14.2 EAP/TLS messages format.
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 <= 240 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 13 | Flag | TLS Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLS Message Length | TLS DATA |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Urien & All Informational - Expires March 2004 26
Integrating EAP in smartcards October 2003
Flags
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|L M S R R R R R|
+-+-+-+-+-+-+-+-+
L = Length included.
M = More fragments
S = EAP-TLS start, set in an EAP-TLS Start message.
R = Reserved
14.3 Example of EAP/TLS Authentication
Smartcard Authentication Server
<- EAP-Request/
Identity
EAP-Response/
Identity (MyID) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS Start)
EAP-Response/
EAP-Type=EAP-TLS
TLS client_hello)->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS server_hello,
TLS certificate,
TLS certificate_request,
TLS server_hello_done)
(Fragment 1: L, M bits set)
EAP-Response/
EAP-Type=EAP-TLS ->
<- PPP EAP-Request/
EAP-Type=EAP-TLS
(Fragment 2)
EAP-Type=EAP-TLS
(TLS certificate,
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished) ->
<- EAP-Request/
EAP-Type=EAP-TLS
(TLS change_cipher_spec,
TLS finished)
EAP-Response/
EAP-Type=EAP-TLS ->
<- EAP-Success
Urien & All Informational - Expires March 2004 27
Integrating EAP in smartcards October 2003
15 Annex 4 (Normative) ASN.1 BER Tag coding for the subscriber profile
information
The subscriber profile is a collection of data associated to every
identity. It can be used be the operating system of a wireless
terminal in order to get information about user credentials.
15.1 ASN.1 Subscriber Profile Encoding
15.1.1 EapID
EapID ::= OCTET STRING
The EAP-ID associated to the current identity.
15.1.2 EapType
EapType ::= INTEGER
The EAP type associated to the current identity.
15.1.3 Version
Version ::= INTEGER
The protocol version associated to an EAP type.
15.1.4 User Credential
UserCredential ::= SEQUENCE OF CredentialObject
CredentialObject ::= SEQUENCE {
ObjectValue SubscriberInformation
}
SubscriberInformation ::= CHOICE {
SSIDList [0] IMPLICIT SEQUENCE OF {
SSIDName OCTET STRING
},
SubscriberCertificate [1] IMPLICIT SEQUENCE OF {
Certificate X509Certificate
},
RootCertificate [2] IMPLICIT SEQUENCE OF {
Certificate X509Certificate
}
X509Certificate an ASN.1 definition, as described in [13].
Urien & All Informational - Expires March 2004 28
Integrating EAP in smartcards October 2003
15.1.5 UserProfile
UserProfile ::= SEQUENCE {
ThisEapID EapID,
ThisEapType EapType,
ThisVersion Version,
ThisCredential UserCredential
}
15.1.6 UserProfile encoding example
30 82 xx yy
04 05 31 32 33 34 35 EapID = 1235
02 01 0D EapType = EAP-TLS
02 01 01 Version = 1
30 xx
A0 0E
04 05 61 62 63 64 65 SSID = abcde
04 05 66 67 68 69 6A SSID = fghij
A1 82 xx yy
First X509Certificate
Second X509Certificate
A2 82 xx yy
First Root X509Certificate
Second Root X509Certificate
16 Annex 5 (Informative) APDUs exchange example
This annex shows ISO 7816 (T=0) TPDUs exchanged between the
smartcard and the authentication agent
// Select EAP application (AID= 11 22 33 44 55 66 01)
Select.request: 00 A4 04 00 07 11 22 33 44 55 66 01
Select.response: 90 00
// Get current identity
Get-Current-Identity.request: A0 18 00 00 00
Get-Current-Identity.response 98 04
// !Pin code is requested
// PIN code verification (0000)
Verify.request: A0 20 00 00 08 30 30 30 30 FF FF FF FF
Verify.response: 90 00
// Try again
Get-Current-Identity.request: A0 18 00 00 00
Get-Current-Identity.response: 6C 04
Get-Current-Identity.request A0 18 00 00 04
Get-Current-Identity.response: 61 62 63 64 90 00
Urien & All Informational - Expires March 2004 29
Integrating EAP in smartcards October 2003
// Get-Next-Identity()
Get-Next-Identity.request: A0 17 00 01 00
Get-Next-Identity.response: 6C 04
Get-Next-Identity.request: A0 17 00 01 04
Get-Next-Identity.response: 61 62 63 64 90 00
// Set-Identity()
Set-Identity.request: A0 16 00 80 04 61 62 63 64
Set-Identity.response: 90 00
// Process EAP-Packets()
EAP-Packet.request: A0 80 00 00 05 01 A5 00 05 01
EAP-Packet.response: 61 09
GetResponse.request: A0 C0 00 00 09
GetResponse.response: 02 A5 00 09 01 61 62 63 64 90 00
EAP-Packet.request A0 80 00 00 08 01 A6 00 08 04 02 12 34
EAP-Packet.response: 61 16
GetResponse.request: A0 C0 00 00 16
GetResponse.response: 02 A6 00 16 04 10 CF A5 2D CD 63 5F 5C 6D
55 B8 09 FD B7 BB EC 3C 90 00
17 References
[1] L. Blunk, J. Vollbrecht, "PPP Extensible Authentication Protocol
(EAP)", RFC 2284, March 1998. (NORMATIVE)
[2] EAP SIM Authentication draft version 8 (NORMATIVE)
[3] GSM Technical Specification GSM 11.11. Digital cellular
telecommunications system (Phase 2+); Specification of the
Subscriber Identity Module - Mobile Equipment (SIM - ME)
[4] Part 11: Wireless LAN Medium Access Control (MAC) and Physical
Layer (PHY) Specifications
[5] Standards for Local and Metropolitan Area Networks: Standard for
Port based Network Access Control.
[6] "The Network Access Identifier" rfc 2486
[7] "Can you Clone a GSM Smartcard (SIM)? " From Charles Brookson
Chairman GSM Association Security Group
[8] Part 11: Wireless Medium Access Control (MAC) and physical layer
(PHY) specifications: Specification for Enhanced Security
[9] ASN.1 standard 2002 edition ISO/IEC 8825.1.
http://asn1.elibel.tm.fr/en/standards/index.htm
Urien & All Informational - Expires March 2004 30
Integrating EAP in smartcards October 2003
[10] Extensible Markup Language (XML) 1.0 (Second Edition), W3C
Recommendation 6 October 2000
[11] B. Aboba, D. Simon, EAP TLS Authentication Protocol RFC 2716,
October 1999.
[12] H. Andersson, S. Josefsson, G. Zorn, D. Simon, A. Palekar,
"Protected EAP Protocol (PEAP)", draft-josefsson-pppext-eap-tls-eap-
05.txt, work-in-progress, September 2002. (INFORMATIVE)
[13] PKCS #6: Extended-Certificate Syntax Standard, An RSA
Laboratories Technical Note, Version 1.5, Revised November 1, 1993.
18 Author's Addresses
Pascal Urien
ENST
46 rue Barrault
75013 Paris Phone: NA
France Email: Pascal.Urien@enst.fr
Augustin J. Farrugia
Impasse des CAMEGIERS Phone: NA
Ceyreste, 13600 France Email: afarrugia@csi.com
Max de Groot
Gemplus
Avenue du Pic de Bertagne
BP 100, 13881 Gemenos Phone: NA
France Email: max.de-groot@gemplus.com
Guy Pujolle
LIP6 - University Paris 6
8 rue Capitaine Scott Phone: NA
Paris 75015 France Email: Guy.Pujolle@lip6.fr
Jorge Abellan
Axalto.
50, Av Jean Jaures Phone: +33 1 46 00 59 33
Montrouge 92542 France Email: Jorge.abellan@slb.com
Urien & All Informational - Expires March 2004 31
Html markup produced by rfcmarkup 1.129d, available from
https://tools.ietf.org/tools/rfcmarkup/