<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-janfred-eap-fido-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="EAP-FIDO">EAP-FIDO</title>
    <seriesInfo name="Internet-Draft" value="draft-janfred-eap-fido-01"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2023" month="December" day="07"/>
    <area>Security</area>
    <workgroup>EAP Method Update</workgroup>
    <keyword>EAP</keyword>
    <keyword>FIDO</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 75?>

<t>This document specifies an EAP method leveraging FIDO2 keys for authentication in EAP.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-janfred-eap-fido/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        EAP Method Update Working Group mailing list (<eref target="mailto:emu@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/emu/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/emu/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 79?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Extensible Authentication Protocol (EAP) <xref target="RFC3748"/> is a widely used standard that allows a server to authenticate a client using different authentication methods.
There is a huge variety of EAP methods available, that serve different purposes and have different security implications.</t>
      <t>Two common EAP methods are EAP-PEAP and EAP-TTLS <xref target="RFC5281"/>, that both use EAP-TLS <xref target="RFC5216"/> to provide confidentiality of the inner authentication.
This inner authentication is most commonly password-based, meaning that an attacker that manages to compromise the TLS connection can eavesdrop on the authentication and observe the password.
The authentication of the server to the client within the TLS handshake thus is a vital security function of these EAP methods.</t>
      <t>The operational praxis has shown that this is a common problem and possible flaw.
The specification for EAP-TLS <xref target="RFC5216"/> does not include guidance on how to decide if a certificate is valid for this specific authentication.
Instead it assumes the client has knowledge of the expected server name.
Since most clients do not have this knowledge beforehand and no implicit way to determine this implicitly from other configuration, this has lead to user interfaces, where the default setting for certificate validation was set to "Do not validate".
To successfully configure the validation, the users need to know the correct server name.
Failure to configure this or not configuring it at all could again lead to an attacker being able to compromise the TLS connection and, as a result, also the password sent in the inner authentication.
Server administrators also need to choose their server certificate based on this and need to communicate the parameters to their users.</t>
      <t>There are two major issues here, that this specification wants to address.
Firstly, the use of passwords as authentication method implies that the password needs to be sent to the server.
If an attacker observes this exchange, they can impersonate the user at any time.
Therefore, this specification uses FIDO authentication, which is based on asymmetric cryptography.
With this method, even if an attacker is able to compromise the TLS connection, they cannot impersonate the user based on the observed data.</t>
      <t>The second major issue is the missing implicit derivation regarding certificate validation.
With EAP-FIDO, the supplicants now have a clear specification on how to decide whether or not a server certificate is considered valid for the current authentication flow.
This is achieved by using the trust anchors available on most devices and a method to determine the valid server name based on implicit information of the authentication configuration.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses terminology from EAP, as well as terminology from CTAP and WebAuthn.
There is some terminology that is ambiguous in the different contexts, to disambiguate it, the following terminology will be used in this document.
These terms will always be capitalized as shown here.</t>
      <dl>
        <dt>FIDO Authenticator:</dt>
        <dd>
          <t>Authenticator as specified by <xref target="WebAuthn"/>, Section 4: a cryptographic entity, existing in hardware or software, that can register and later assert possession of the registered key credential.</t>
        </dd>
        <dt>Discoverable Credential:</dt>
        <dd>
          <t>a public key credential source that is discoverable and usable in authentication ceremonies where the Relying Party does not provide any Credential IDs. See <xref target="WebAuthn"/>, Section 4</t>
        </dd>
        <dt>Server-Side Credential:</dt>
        <dd>
          <t>a public key credential source that is only usable in an authentication ceremony where the Relying Party supplies its Credential ID. This means that the Relying Party must manage the credential's storage and discovery, as well as be able to first identify the user in order to discover the Credential IDs to supply tho the EAP Supplicant.</t>
        </dd>
      </dl>
    </section>
    <section anchor="overview-over-the-eap-fido-protocol">
      <name>Overview over the EAP-FIDO protocol</name>
      <t>The EAP-FIDO protocol comprises two phases: the TLS handshake phase and FIDO-exchange phase.</t>
      <t>During the TLS handshake phase, TLS is used to authenticate the EAP-FIDO server to the client.</t>
      <t>During the FIDO-exchange phase, the actual FIDO authentication is executed and the client authenticates itself to the server.</t>
      <t>Once the FIDO exchange is completed successfully, the client and server can derive keying material from the TLS handshake phase implicitly.</t>
      <section anchor="tls-handshake-phase">
        <name>TLS handshake phase</name>
        <t>During the TLS handshake phase, the client and server establish a TLS tunnel.
This is done using EAP-TLS <xref target="RFC5216"/>, <xref target="RFC9190"/>, <xref target="RFC9427"/> with the modifications described in <xref target="tls_handshake_requirements"/>.
As part of the TLS handshake protocol, the EAP-FIDO server will send its certificate along with a chain of certificates leading to the certificate of a trusted CA.
The client will check this certificate using the rules in <xref target="tls_server_cert_verify"/>.</t>
        <t>Once the TLS tunnel is established, the client and server proceed to the FIDO-exchange phase to perform the authentication of the client.</t>
      </section>
      <section anchor="fido-exchange-phase">
        <name>FIDO-exchange phase</name>
        <t>In this phase, the TLS record layer is used to securely tunnel information between the EAP-FIDO client and EAP-FIDO server.</t>
        <t>For the FIDO-exchange phase, the client has two options, depending on the configuration and the capability of the FIDO token.</t>
        <t>If the FIDO Authenticator supports Discoverable Credentials and EAP-FIDO is configured to use these for authentication, the client generates a challenge from the TLS keying material and triggers a FIDO challenge.</t>
        <t>If the client is not configured to use Discoverable Credentials, the client first needs to send its username to the server.
The server will answer with a list of FIDO Credential IDs and the client will attempt to use one of these keys to authenticate.</t>
      </section>
    </section>
    <section anchor="eap-fido-protocol-flow-and-message-format">
      <name>EAP-FIDO protocol flow and message format</name>
      <t>This section describes the preconditions and the configuration needed for EAP-FIDO, the protocol flow and the message format</t>
      <section anchor="preconditions-and-configuration">
        <name>Preconditions and Configuration</name>
        <t>In order to successfully perform an EAP-FIDO authentication, the server and the client have to meet some preconditions and need to have a configuration.</t>
        <t>EAP-FIDO assumes that the FIDO Authenticator is already registered with the server, that is, the EAP-FIDO server has access to the public key used to verify the authenticator's response as well as the corresponding credential id.</t>
        <t>On the client side, the supplicant must be configured with the Relying Party ID (see <xref target="openquestions_rpid"/>, and, if Server-Side Credentials are used, with a Username.</t>
      </section>
      <section anchor="tls-handshake-phase-1">
        <name>TLS handshake phase</name>
        <t>The packet format for EAP-FIDO messages follows the format specified in <xref section="3" sectionFormat="comma" target="RFC5216"/> with the following modifications:</t>
        <ul spacing="normal">
          <li>
            <t>The Type field is set to TODO [awaiting IANA early allocation] (EAP-FIDO)</t>
          </li>
          <li>
            <t>Within the Flags field, the Version bits are set to the major version of EAP-FIDO. For this specification, the version is 0. Future EAP-FIDO versions <bcp14>MAY</bcp14> increase the version number.</t>
          </li>
        </ul>
        <section anchor="eap-fido-start-packet">
          <name>EAP-FIDO Start packet</name>
          <t>In the first packet from the server to the client, the S-bit of the Flags <bcp14>MUST</bcp14> be set, indicating the start of the EAP-FIDO protocol.
It <bcp14>MUST NOT</bcp14> be set in any subsequent packet.</t>
          <t><cref anchor="RPID_Option1" source="Janfred">Depending on the decision on the way the RPID is determined, some additional spec may be added here, see <xref target="openquestions_rpid"/>.</cref></t>
        </section>
        <section anchor="version-negotiation">
          <name>Version negotiation</name>
          <t>The version of EAP-FIDO is negotiated in the first exchange between server and client.
The server sets the highest major version number of EAP-FIDO that it supports in the V field of the flags in its Start message.
In the case of this specification, this is 0.
In its first EAP message in response, the client sets the V field to the highest major version number that it supports that is no higher than the version number offered by the server.
If the client version is not acceptable to the server, it sends an EAP-Failure to terminate the EAP session.
Otherwise, the version set by the client is the version of EAP-FIDO that <bcp14>MUST</bcp14> be used and both server and client <bcp14>MUST</bcp14> set the V field to that version number in all subsequent EAP messages.</t>
          <t>Given the limited range of the V field (values 0-7), future EAP-FIDO versions <bcp14>MUST NOT</bcp14> increase the major version if there are no changes to the outer message format.
Minor version updates that only affect the inner protocol flow <bcp14>MUST</bcp14> be done with means available during the TLS handshake, i.e. using Application Layer Protocol Negotiation (ALPN).</t>
        </section>
        <section anchor="fragmentation">
          <name>Fragmentation</name>
          <t>Each EAP-FIDO message contains a single leg of a half-duplex conversation.
Since EAP carrier protocols may constrain the length of an EAP message, it may be necessary to fragment an EAP-FIDO message across multiple EAP messages.</t>
          <t>The fragmentation method is described in <xref section="2.1.5" sectionFormat="comma" target="RFC5216"/>.</t>
        </section>
        <section anchor="tls_handshake_requirements">
          <name>TLS Handshake Requirements</name>
          <t>The client and server perform a TLS handshake following the specification in <xref section="2" sectionFormat="comma" target="RFC5216"/> and <xref section="2" sectionFormat="comma" target="RFC9190"/> with the following modifications:</t>
          <ul spacing="normal">
            <li>
              <t>TLS version 1.3 or higher <bcp14>MUST</bcp14> be negotiated.</t>
            </li>
            <li>
              <t>Mutual authentication is not required. Implementations <bcp14>MUST</bcp14> support EAP-FIDO without TLS client authentication, but <bcp14>MAY</bcp14> allow it, i.e. if EAP-FIDO is used as a 2-Factor authentication method where TLS client certificates are the first factor and the FIDO authentication is the second.</t>
            </li>
            <li>
              <t>The certificate of the server <bcp14>MUST</bcp14> be validated. The different options for validation are listed in <xref target="tls_server_cert_verify"/>.</t>
            </li>
            <li>
              <t>(FIXME, depending on RPID option) The client <bcp14>MUST</bcp14> send the desired Relying Party ID for the FIDO exchange in the Server Name Indication extension.</t>
            </li>
          </ul>
        </section>
        <section anchor="tls_server_cert_verify">
          <name>TLS Server Certificate Verification</name>
          <t>(FIXME: Currently only bulletpoints, will be converted into text)</t>
          <ul spacing="normal">
            <li>
              <t>Clients <bcp14>MUST</bcp14> support validating against a built-in list of Root CAs, ideally WebPKI.</t>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> support pinning a trust anchor</t>
            </li>
            <li>
              <t>The RPID <bcp14>MUST</bcp14> be validated against the certificate name (How exactly is still TODO)</t>
            </li>
            <li>
              <t>TODO: OCSP Stapling? Mandatory or not?</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="fido-exchange">
        <name>FIDO-exchange</name>
        <t>After the TLS handshake is completed, the client and server perform the FIDO-exchange to authenticate the client inside the TLS tunnel.</t>
        <t>This section describes the message format and the protocol flow.</t>
        <section anchor="message-format">
          <name>Message format</name>
          <t>All EAP-FIDO messages in the inner authentication consist of a CBOR sequence with two elements:</t>
          <dl>
            <dt>type:</dt>
            <dd>
              <t>integer to indicate the message type. <xref target="msgtypes"/> contains a list of the different message types.</t>
            </dd>
            <dt>attributes:</dt>
            <dd>
              <t>a CBOR encoded map with attributes. A list of the different attributes, their assigned mapkey and the type are listed in <xref target="mapkeys"/>.</t>
            </dd>
          </dl>
          <table anchor="msgtypes">
            <name>Message types</name>
            <thead>
              <tr>
                <th align="left">Type</th>
                <th align="left">Description</th>
                <th align="left">Sent by</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">-2</td>
                <td align="left">Error</td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">-1</td>
                <td align="left">Failure indicator</td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">0</td>
                <td align="left">Success indicator</td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">Authentication Request</td>
                <td align="left">Server</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">Authentication Response</td>
                <td align="left">Client</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">Information Request</td>
                <td align="left">Client</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">Information Response</td>
                <td align="left">Server</td>
              </tr>
            </tbody>
          </table>
          <table anchor="mapkeys">
            <name>Mapkeys for the attributes</name>
            <thead>
              <tr>
                <th align="left">Mapkey</th>
                <th align="left">Type</th>
                <th align="left">Label</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">UTF-8 String</td>
                <td align="left">Identity</td>
                <td align="left">User Identity (usually username)</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">UTF-8 String</td>
                <td align="left">Relying Party ID</td>
                <td align="left">See <xref target="openquestions_rpid"/></td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">Byte String</td>
                <td align="left">Additional Client Data</td>
                <td align="left">Additional Data to be signed by the FIDO Authenticator</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">Array of Byte Strings</td>
                <td align="left">PKIDs</td>
                <td align="left">List of acceptable Credential IDs</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">Byte String</td>
                <td align="left">Auth Data</td>
                <td align="left">Authdata according to <xref target="WebAuthn"/>, Section 6.1</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">Byte String</td>
                <td align="left">FIDO Signature</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">Array of UTF-8 Strings</td>
                <td align="left">Authentication requirements</td>
                <td align="left">Sent by the server to indicate the current authentication requiremens, i.e. if user presence or user verification is required</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">Byte String</td>
                <td align="left">PKID</td>
                <td align="left">Needed to identify the credential</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">Integer</td>
                <td align="left">Error Code</td>
                <td align="left">A code describing the error</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">UTF-8 String</td>
                <td align="left">Error Description</td>
                <td align="left">An optional human-readable error description</td>
              </tr>
            </tbody>
          </table>
          <section anchor="success-indicator">
            <name>Success indicator</name>
            <t>This message is the protected success indicator, as required by <xref section="5.2" sectionFormat="comma" target="RFC9427"/>.
It is sent by the server to indicate a successful authentication.
Since EAP is a strict request-response based protocol, the client needs to reply to this message, so the server can send an EAP-Success message.
The client will acknowledge the reception of this packet through the acknowledgement mechanism in EAP-TLS with an EAP-TLS acknowledgement packet.</t>
            <t>To achieve the compatibility with the protected success indication mechanism of other EAP methods, the attributes field of the message <bcp14>MUST</bcp14> be omitted, that is, this message is only one byte with the value of 0x00.</t>
          </section>
          <section anchor="failure-indicator">
            <name>Failure indicator</name>
            <t>A failure indicator message signals a non-recoverable error condition for the current authentication exchange.</t>
            <t>The attributes field of the message <bcp14>MUST</bcp14> contain at least the Error Code attribute and <bcp14>MAY</bcp14> contain the Error Description attribute.</t>
          </section>
          <section anchor="authentication-request">
            <name>Authentication Request</name>
            <t>An authentication request is sent by the server to initialize a new authentication request.
With this request, the server sends along information that the client needs to perform the FIDO authentication.</t>
            <t>The attributes field in the authentication request message contain the following attributes:</t>
            <dl>
              <dt>Relying Party ID:</dt>
              <dd>
                <t>The Relying Party ID for the FIDO authentication. See <xref target="openquestions_rpid"/>.</t>
              </dd>
              <dt>Additional Client Data:</dt>
              <dd>
                <t>(Optional) Additional data to be signed by the FIDO Authenticator.</t>
              </dd>
              <dt>PKIDs:</dt>
              <dd>
                <t>(Optional) A list of acceptable Credential IDs. This can be used to trigger a re-authentication of a specific credential or to provide a list of the Credential IDs for a specific user, if Server-Side Credentials are used.</t>
              </dd>
              <dt>Authentication Requirements:</dt>
              <dd>
                <t>(Optional) A list of requirements for the FIDO authentication. The possible options for this version of EAP-FIDO are "up" for requesting user presence and "uv" for requesting user verification. Clients <bcp14>MUST</bcp14> ignore any other value, to ensure forward compatibility.</t>
              </dd>
            </dl>
            <t>Since this packet signals the start of a new authentication, the client <bcp14>MUST</bcp14> initialize a new authentication and <bcp14>MUST NOT</bcp14> reuse information from any previous authentication attempt, even if the previous authentication exchange was not completed.
It <bcp14>MAY</bcp14> cache some data to perform sanity checks, i.e. to protect itself against misbehaving servers that try to re-initialize an authentication with the same parameters multiple times.</t>
          </section>
          <section anchor="authentication-response">
            <name>Authentication Response</name>
            <t>If a client has sufficient information to perform a FIDO authentication, the client sends an authentication response. The authentication response signifies the completion of one authentication.
This message can be sent in response to either an Authentication Request or an Information Response.</t>
            <dl>
              <dt>The attributes field in the authentication response message contain the following attributes:</dt>
              <dd>
                <t/>
              </dd>
              <dt>PKID:</dt>
              <dd>
                <t>The Credential ID of the FIDO Credential used to generate the signature.</t>
              </dd>
              <dt>Auth Data:</dt>
              <dd>
                <t>The signed auth data as returned from the FIDO Authenticator (see <xref target="FIDO-CTAP2"/>, Section 6.2)</t>
              </dd>
              <dt>FIDO Signature:</dt>
              <dd>
                <t>The signature as returned from the FIDO Authenticator (see <xref target="FIDO-CTAP2"/>, Section 6.2)</t>
              </dd>
            </dl>
            <t>All three attributes <bcp14>MUST</bcp14> be present in the authentication response message.</t>
          </section>
          <section anchor="information-request">
            <name>Information Request</name>
            <t>If a client does not have sufficient information to perform the FIDO authentication, the client can send an information request message to the server.</t>
            <t>This is the case if Server-Side Credentials are used, since the FIDO Authenticator needs the list of acceptable Credential IDs to access the actual credentials on the FIDO Authenticator.</t>
            <t>With the information request the client can transmit additional information that help the server to compile this information.</t>
            <t>The attributes field in the information request contains the following attributes:</t>
            <dl>
              <dt>Identity:</dt>
              <dd>
                <t>The identity of the user (usually a username)</t>
              </dd>
            </dl>
          </section>
          <section anchor="information-response">
            <name>Information Response</name>
            <t>The server answers to an Information Request from the client with an Information Response.</t>
            <t>This packet is used to transmit additional information to the client.</t>
            <t>The attributes field in the information response can contain any attribute that is also allowed in the Authentication Request packet.
If an attribute was both present in the Authentication Request and the Information Response packet, the client <bcp14>MUST</bcp14> discard the previous value(s) of this attribute that were sent in the Authentication Request and use the value(s) in the Information Response packet.</t>
          </section>
          <section anchor="error">
            <name>Error</name>
            <t>The Error message signals an error condition and can be sent both from client to server and vice versa.
This error condition does not necessarily lead to an authentication failure, since the EAP-FIDO server may decide that the previous authentication is sufficient. (See <xref target="examples_2hgracetime"/> for an example for this use case)</t>
            <t>The attributes field <bcp14>MUST</bcp14> include the attribute Error Code with an error code describing the error and <bcp14>MAY</bcp14> contain an Error Description attribute with a human-readable error description.</t>
          </section>
        </section>
        <section anchor="protocol-sequence">
          <name>Protocol Sequence</name>
          <t>The FIDO exchange phase starts with the server sending an authentication request to the client.
This message is sent along with the last message of the server's TLS handshake.</t>
          <t>The Authentication Request can include authentication requirements, additional client data and a list of Credential IDs.</t>
          <t>The client then decides if it has sufficient information to perform the FIDO authentication.
This can be done by probing the FIDO Authenticator with all information given in the Authentication Request message.</t>
          <t>If the FIDO authentication is already possible at this point, the client performs the FIDO authentication process and sends an Authentication Response message with the results from the FIDO authentication to the server.
This authentication flow can be used if the FIDO Authenticator has a Discoverable Credential registered for the given Relying Party ID.</t>
          <t>If the client needs additional information, i.e. because it uses Server-Side Credentials and therefore needs a list of Credential IDs, the client sends an information request to the server, which includes additional information from client to help the server to fulfill the information request.
In the current specification, this is namely an identifier, from which the EAP-FIDO server can perform a lookup for all registered FIDO credentials registered to this identifier.</t>
          <t>Upon reception of the Information Request message from the client, the server looks up the registered Credential IDs for the given identity.
Depending on the lookup, the requirements for user presence or user verification may change from the previous assumption.
The found Credential IDs, and optionally also the updated authentication requirements, are then sent with the Information Response back to the client.</t>
          <t>The client can now, with the additional information in the Information Response message, perform the FIDO authentication.
The result of the FIDO authentication is then sent to the Server in an Authentication Response message, which includes the PKID, Auth Data and FIDO Signature from the FIDO authentication result.</t>
          <t>When a server receives an Authentication Response message, it validates the FIDO data.
If the FIDO authentication is successful and the FIDO key has sufficient authorization, the server sends a Success indication message to indicate the Success of the FIDO exchange phase.
The client will acknowledge this packet using the EAP-TLS acknowledgement mechanism and the server sends an EAP-Success message.</t>
          <t>Depending on the result of the FIDO authentication, the user presence or user verification assertions and the policy for a specific FIDO credential, the server <bcp14>MAY</bcp14> choose to trigger a second FIDO authentication with a different set of authentication requirements.
This is done by sending a new Authentication Request message to the client.
This message <bcp14>MUST</bcp14> include a PKIDs attribute with only the PKID of the credential used in the previous FIDO authentication process.</t>
          <t>The client then triggers a new FIDO authentication process and answers with an Authentication Response message.</t>
          <t>The server <bcp14>MUST NOT</bcp14> trigger a challenge with the same Credential ID and Authentication Requirements twice.</t>
        </section>
      </section>
      <section anchor="fido-authentication">
        <name>FIDO authentication</name>
        <t>This section will describe the actual FIDO authentication process, that is performed between the EAP-FIDO client and the FIDO Authenticator.</t>
        <t>The client will use CTAP version 2.0 or above <xref target="FIDO-CTAP2"/> to communicate with the authenticator.</t>
        <t>The Relying Party ID  (RPID) either explicitly configured, derived from the RADIUS routing realm, from the server certificate subjectAltName:DNS or sent by the server.
In analogy to WebAuthn, the client needs to verify that the RPID either matches exactly the subjectAltName:DNS of the certificate or that the subjectAltName is a subdomain of the RPID.
For discussion on the topic regarding the relationship RPID, SAN and RADIUS Realm, see <xref target="openquestions_rpid"/>.</t>
        <t>The client data is a concatenation of two items.</t>
        <t>The first item is derived from the TLS keying material:</t>
        <artwork><![CDATA[
FIDO_CHALLENGE_TLS = TLS-Exporter("fido challenge", NULL, 32)
]]></artwork>
        <t>The second item is the optional additional client data sent by the server.</t>
        <t>Both items are concatenated and hashed using SHA-256.
The result is the clientDataHash for the FIDO authentication.</t>
      </section>
    </section>
    <section anchor="implementation-guidelines">
      <name>Implementation Guidelines</name>
      <t>TODO</t>
    </section>
    <section anchor="design-decisions">
      <name>Design decisions</name>
      <t>This section documents several design decisions for the EAP-FIDO protocol</t>
      <section anchor="registration-of-fido2-keys-is-out-of-scope">
        <name>Registration of FIDO2 keys is out of scope</name>
        <t>The FIDO CTAP protocol has distinct primitives for the registration and the usage of a FIDO2 credential.
This specification requires that the registration of the security token has been done out-of-band, for example using the WebAuthn protocol in a browser context.</t>
        <t>There are multiple degrees of freedom when registering a token with CTAP version 2.
This specification recognizes the following choices at registration time, and defines how to effectuate an authentication transaction for any combination of these choices.</t>
        <section anchor="discoverable-credentials-vs-server-side-credentials">
          <name>Discoverable Credentials vs. Server-Side Credentials</name>
          <t>FIDO2 tokens contain a master key which never leaves the security perimeter of the token.
FIDO2 tokens transact by generating asymmetric keypairs which are bound to a scope (often: a domain name, a RADIUS realm).
The scoped keying material can be accessed using two different methods:</t>
          <ul spacing="normal">
            <li>
              <t>Server-Side Credentials: The keying material is not accessible directly, but only by providing a Credential ID that was generated during registration. Depending on the actual implementation inside the FIDO Authenticator, the Credential ID may be used as a seed to re-generate the specific key pair with the help of the FIDO Authenticator's master key. Other FIDO Authenticator implementations may store the keypair and generate a random Credential ID by which the key can be referenced. To trigger an authentication, the client must provide the correct Credential ID to the FIDO Authenticator. It is fair to assume that the number of Server-Side Credentials that a FIDO Authenticator can generate is not significantly limited, so the number of keys should not weigh in to the consideration whether or not it is worth to register a new Server-Side Credential for a given scope.</t>
            </li>
            <li>
              <t>Discoverable Credentials: The keying material is stored on the security token itself, along with the scope for which the keypair was generated. During authentication transactions, only the scope (as configured, or as sent by the server) determines which keypair is to be used in the transaction. The key can store multiple keys for the same scope. The number of slots for Discoverable Credentials is limited, and this limit needs to be considered when deciding whether or not a new Discoverable Credential should be registered for a specific use case.</t>
            </li>
          </ul>
          <t>EAP-FIDO supports both Discoverable and Server-Side Credentials.</t>
          <t>Registering a Discoverable Credential has several advantages and one disadvantage:</t>
          <ul spacing="normal">
            <li>
              <t>No username needs to be sent during the authentication transaction</t>
            </li>
            <li>
              <t>The transaction requires less round-trips due to skipping the username transmission process</t>
            </li>
            <li>
              <t>The amount of data sent from EAP server to EAP peer is significantly smaller, reducing the probability of extra roundtrips or packet fragmentation</t>
            </li>
            <li>
              <t>The scopes of the stored credentials can be seen and enumerated by the EAP supplicant, helping the user in finding the right value for configuring the EAP realm</t>
            </li>
            <li>
              <t>The Discoverable Credential consumes space on the FIDO Authenticator, which might be limited</t>
            </li>
          </ul>
        </section>
        <section anchor="user-involvement-during-registration">
          <name>User involvement during registration</name>
          <t>Token registration can involve one of two levels of asserting the user presence.</t>
          <ul spacing="normal">
            <li>
              <t>UP (userPresence): the registration ceremony ensures that a person is present at the token while registering the device (e.g. human tissue needs to touch a physical security key while the registration transaction executes).</t>
            </li>
            <li>
              <t>UV (userVerification): the security token registers a unique property of the user during the registration ceremony, such that it is asserted that only the exact same person can interact with the token in the future (e.g. by registering a fingerprint or facial recognition)</t>
            </li>
          </ul>
          <t>During authentication transactions, an EAP-FIDO server can request one of three levels of asserting user presence.</t>
          <ul spacing="normal">
            <li>
              <t>Silent (interaction with a human is not required)</t>
            </li>
            <li>
              <t>UP (physical interaction with a person is required)</t>
            </li>
            <li>
              <t>UV (physical interaction with the registered user is required).</t>
            </li>
          </ul>
          <t>An authentication transaction can not request a higher level than was set at registration time; i.e. a token registered in UP mode can not transact in UV mode.</t>
          <t>EAP-FIDO supports all three transaction modes, and the server can signal its required minimum assertion level for each individual authentication transaction.</t>
        </section>
      </section>
      <section anchor="fido2-key-scopes">
        <name>FIDO2 key scopes</name>
        <t>The scope of a FIDO2 key as set during the registration transaction determines the contexts in which it can be used.
In EAP-FIDO, the following three notions interplay:</t>
        <ul spacing="normal">
          <li>
            <t>the realm of username as used in the EAP-Identity exchange ("outer ID")</t>
          </li>
          <li>
            <t>the servername as presented during the EAP-TLS exchange by the EAP-FIDO server</t>
          </li>
          <li>
            <t>the relyingPartyIdentifier (rpId) that is used during the FIDO CTAP client authentication phase</t>
          </li>
        </ul>
        <t>EAP-FIDO requires the registered scope to be:</t>
        <ul spacing="normal">
          <li>
            <t>identical to the realm in the outer ID</t>
          </li>
          <li>
            <t>within the same second-level domain as the EAP-TLS server certificate will be</t>
          </li>
          <li>
            <t>within the same second-level domain as the FIDO rpId</t>
          </li>
        </ul>
      </section>
      <section anchor="eap-method-with-eap-tls-vs-standalone-eap-method-to-be-used-in-tunnels">
        <name>EAP-Method with EAP-TLS vs standalone EAP method to be used in tunnels</name>
        <t>Since there already exist EAP methods that provide a TLS tunnel and are capable of encapsulating further EAP methods, e.g. EAP-PEAP, EAP-TTLS or EAP-TEAP, the question arises, why this specification does not focus solely on the FIDO exchange as a standalone EAP method instead of re-specifying a new EAP-method that again makes use of EAP-TLS.</t>
        <t>The main reason for a decision against this is the potential for misconfiguration.
One of the goals for this EAP method is to provide a means to validate the server certificate using implicit configuration options.
Using EAP-TTLS or EAP-PEAP would counteract this goal, since in most supplicants the configuration for the different phases of the tunneled TLS methods is done separately, so the users would have to configure the certificate check parameters manually again.
Additionally, not every supplicant application may allow the code for the phase 2 exchange to access information about the phase 1 exchange, namely the server certificate parameters, which is necessary for the security of the EAP-FIDO exchange.
Specifying EAP-FIDO as standalone EAP methods could therefore require modifying the EAP stack.
Implementers might be tempted to re-use the insecure and error-prone configuration interfaces.
To prevent this from the start, EAP-FIDO specifies an EAP-TLS based EAP method that cannot be used standalone.</t>
        <t>Although this requires potentially duplicate code for supplicants that support multiple EAP-TLS based methods, the authors believe this means of specification to be more resistant against implementation errors and prevent error-prone user interfaces.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC editor: Remove this section, as well as the reference to <xref target="RFC7942"/> before publication</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -20?>
      </t>
      <t>There is one early prototype proof-of-concept implementation of EAP-FIDO into hostap (hostapd for the server side, wpa_supplicant on the client side) available.
The implementation was done before the specification of this draft was finished and is therefore not compatible with any draft version (different message format, simplified message flow, missing security checks), but serves as a proof-of-concept for the overall principle of using FIDO to perform an eduroam login.
The source code can be found under <eref target="https://git.rieckers.it/rieckers/hostap/-/tree/eap_fido_poc_tnc23">https://git.rieckers.it/rieckers/hostap/-/tree/eap_fido_poc_tnc23</eref></t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has IANA actions:</t>
      <ul spacing="normal">
        <li>
          <t>EAP type code point for EAP-FIDO</t>
        </li>
        <li>
          <t>EAP-FIDO registry
          </t>
          <ul spacing="normal">
            <li>
              <t>Message types</t>
            </li>
            <li>
              <t>Attributes</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5216">
          <front>
            <title>The EAP-TLS Authentication Protocol</title>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="R. Hurst" initials="R." surname="Hurst"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides support for multiple authentication methods. Transport Layer Security (TLS) provides for mutual authentication, integrity-protected ciphersuite negotiation, and key exchange between two endpoints. This document defines EAP-TLS, which includes support for certificate-based mutual authentication and key derivation.</t>
              <t>This document obsoletes RFC 2716. A summary of the changes between this document and RFC 2716 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5216"/>
          <seriesInfo name="DOI" value="10.17487/RFC5216"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
        <reference anchor="RFC9427">
          <front>
            <title>TLS-Based Extensible Authentication Protocol (EAP) Types for Use with TLS 1.3</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The Extensible Authentication Protocol-TLS (EAP-TLS) (RFC 5216) has been updated for TLS 1.3 in RFC 9190. Many other EAP Types also depend on TLS, such as EAP-Flexible Authentication via Secure Tunneling (EAP-FAST) (RFC 4851), EAP-Tunneled TLS (EAP-TTLS) (RFC 5281), the Tunnel Extensible Authentication Protocol (TEAP) (RFC 7170). It is possible that many vendor-specific EAP methods, such as the Protected Extensible Authentication Protocol (PEAP), depend on TLS as well. This document updates those methods in order to use the new key derivation methods available in TLS 1.3. Additional changes necessitated by TLS 1.3 are also discussed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9427"/>
          <seriesInfo name="DOI" value="10.17487/RFC9427"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="WebAuthn" target="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/">
          <front>
            <title>Web Authentication: An API for accessing Public Key Credentials Level 2</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date year="2021" month="April" day="08"/>
          </front>
        </reference>
        <reference anchor="FIDO-CTAP2" target="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html">
          <front>
            <title>Client to Authenticator Protocol (CTAP)</title>
            <author>
              <organization>FIDO Alliance</organization>
            </author>
            <date year="2022" month="June" day="21"/>
          </front>
        </reference>
        <reference anchor="FIDO-SecRef" target="https://fidoalliance.org/specs/common-specs/fido-security-ref-v2.1-ps-20220523.html">
          <front>
            <title>FIDO Security Reference</title>
            <author>
              <organization>FIDO Alliance</organization>
            </author>
            <date year="2022" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="FIDO-Glossary" target="https://fidoalliance.org/specs/common-specs/fido-glossary-v2.1-ps-20220523.html">
          <front>
            <title>FIDO Technical Glossary</title>
            <author>
              <organization>FIDO Alliance</organization>
            </author>
            <date year="2022" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="IETF115-emu-minutes" target="https://datatracker.ietf.org/meeting/115/materials/minutes-115-emu-202211071530-00">
          <front>
            <title>EMU @ IETF 115, Minutes</title>
            <author>
              <organization>IETF</organization>
            </author>
            <date year="2022" month="November" day="07"/>
          </front>
        </reference>
        <reference anchor="RFC3748">
          <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="L. Blunk" initials="L." surname="Blunk"/>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="J. Carlson" initials="J." surname="Carlson"/>
            <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>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 Point-to-Point Protocol (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 A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3748"/>
          <seriesInfo name="DOI" value="10.17487/RFC3748"/>
        </reference>
        <reference anchor="RFC5281">
          <front>
            <title>Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0 (EAP-TTLSv0)</title>
            <author fullname="P. Funk" initials="P." surname="Funk"/>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>EAP-TTLS is an EAP (Extensible Authentication Protocol) method that encapsulates a TLS (Transport Layer Security) session, consisting of a handshake phase and a data phase. During the handshake phase, the server is authenticated to the client (or client and server are mutually authenticated) using standard TLS procedures, and keying material is generated in order to create a cryptographically secure tunnel for information exchange in the subsequent data phase. During the data phase, the client is authenticated to the server (or client and server are mutually authenticated) using an arbitrary authentication mechanism encapsulated within the secure tunnel. The encapsulated authentication mechanism may itself be EAP, or it may be another authentication protocol such as PAP, CHAP, MS-CHAP, or MS-CHAP-V2. Thus, EAP-TTLS allows legacy password-based authentication protocols to be used against existing authentication databases, while protecting the security of these legacy protocols against eavesdropping, man-in-the-middle, and other attacks. The data phase may also be used for additional, arbitrary data exchange. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5281"/>
          <seriesInfo name="DOI" value="10.17487/RFC5281"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 553?>

<section anchor="example-use-cases-and-protocol-flows">
      <name>Example use cases and protocol flows</name>
      <section anchor="usecases_passkey_silent">
        <name>Authentication using Discoverable Credentials with silent authentication</name>
        <t>With this use case, the server will send an Authentication Request containing only the Relying Party Id attribute.</t>
        <t>The client can trigger the silent authentication with the Discoverable Credential stored on the FIDO Authenticator and includes the response from the FIDO Authenticator into the Authentication Response message.</t>
        <t>The server can look up the Credential IDs in its database, verify the FIDO signature with the stored public key and, if the signature was valid, send a protected success indicator to the client.
The client responds with an acknowledgement and the server sends an EAP-Success</t>
      </section>
      <section anchor="authentication-using-discoverable-credentials-with-silent-auth-for-wifi-and-uv-auth-for-vpn">
        <name>Authentication using Discoverable Credentials with silent auth for WiFi and uv auth for VPN</name>
        <t>With this use case, the server will modify the Authentication Request based on which RADIUS client (the Wifi Controller or the VPN appliance) sent the request.</t>
        <t>If the WiFi appliance sent the request, silent auth is used, and the flow is identical with the previous use case.</t>
        <t>If the request came from the VPN appliance (e.g. because the VPN is done via IPSEC with EAP), the server adds "uv" in the Authentication Requirements attribute, which triggers an UV action on the client's side.</t>
        <t>The client triggers the authentication with the Discoverable Credential with user verification and responds to the server with the authentication data. The server verifies the signature, sends a success indication, the client acknowledges and the server sends an EAP-Success.</t>
      </section>
      <section anchor="authentication-with-server-side-credentials">
        <name>Authentication with Server-Side Credentials</name>
        <t>In this use case, the FIDO Authenticator does not have a Discoverable Credential for the Relying Party ID. Instead, the server has a list of Credential IDs stored for each username.</t>
        <t>After the initial Authentication Request from the server, the client does not have enough data to trigger the FIDO Authentication, so it needs additional information.</t>
        <t>The client then sends an Information Request message with its username.</t>
        <t>The server looks up the username in its database and sends back a list of Credential IDs it has stored for this user with an Information Response message.</t>
        <t>The client can now trigger the FIDO authentication with this list and responds with an Authentication Response, that includes the Credential ID that was actually used for this FIDO authentication.</t>
        <t>The server can now verify the signature and client and server finalize the EAP method.</t>
      </section>
      <section anchor="authentication-with-server-side-credentials-and-user-specific-authentication-policies">
        <name>Authentication with Server-Side Credentials and user-specific authentication policies</name>
        <t>In this use case, different users have different authentication policies, i.e. employees are allowed to use silent authentication, but administrators need an authentication with user presence.</t>
        <t>The server starts with an AuthenticationRequest and no authentication requirements or an empty array as authentication requirements.
The client transmits its identity to the server in the Information Request message.
Now the server looks up the user and their registered Credential IDs, and checks whether or not user presence verification is necessary.</t>
        <t>If it is necessary, the server includes an authentication requirements attribute with the "up" value along with the PKIDs in the Information Response message.
Since the client discards any previous attribute values, it now performs a FIDO authentication with user presence, and responds to the server.</t>
      </section>
      <section anchor="authentication-with-mandatory-verification-after-a-timespan">
        <name>Authentication with mandatory verification after a timespan</name>
        <t>It may be desired to force a user verification after a timespan, to ensure that the FIDO token is still in possession of the user.
This timespan is specific for each token, so the check whether or not the token is still allowed to perform only silent authentication can only be done after the authentication has happened.</t>
        <t>Given, a user has two registered token, one was verified recently and the other exceeded the verification timespan.</t>
        <t>The server start with an authentication request, the client answers with an Information Request and the Identity, the server transmits the Information Response with the two PKIDs and the client performs the silent FIDO authentication with the "expired" FIDO token.
After sending the Authentication Response, the server verifies the FIDO authentication and recognizes the expired FIDO token.
Now the server sends a new Authentication Request with the PKID of the expired token and "uv" as Authentication Requirement.
The client now performs the FIDO authentication again, this time with user verification and sends the Authentication Response to the server.
The server stores the timestamp of the successful user verification in its database and sends the success indicator.</t>
      </section>
      <section anchor="examples_2hgracetime">
        <name>Authentication with mandatory verification after a timespan with a grace period</name>
        <t>As with the previous example, in this case the FIDO token again have a token-specific timeout to allow silent authentication for a period of time after a successful user verification.
Unlike in the previous example, this time there is a grace period that still allows a silent authentication for a while after the timer expired.
The intention is to not kick out the user in the moment the timer expires, i.e. a user is currently not in the vicinity of the device at that time, but one would not want to kick out the user if it needs to reconnect due to poor wifi performance.
Instead, the user may choose a convinient time to verify their identity/presence within this grace period.</t>
        <t>The protocol flow is the same as the previous example, but this time the second Authentication Request from the server cannot be answered from the client, since the user is not performing the user verification.
Instead, the client will send an Error message with error code TODO (FIDO authentication Timeout).</t>
        <t>The server can now decide whether or not the silent authentication is still acceptable.
If it is, meaning that the timeout for silent authentication has expired, but it is still in the grace period, it answers with a Success Indicator.
If not, meaning that the grace period has expired too, the server will send a Failure Indicator with the appropriate error code.</t>
      </section>
      <section anchor="fa-authentication-with-client-certificate-on-tls-layer-and-fido-in-the-inner-authentication">
        <name>2FA-Authentication with client certificate on TLS layer and FIDO in the inner authentication</name>
        <t>Since EAP-FIDO uses TLS, it is possible to perform two-factor authentication directly with only EAP-FIDO.
In this case, the client and server perform mutual authentication at the TLS layer.</t>
        <t>The server can now determine the identity of the user based on the certificate and already look up the stored Credential IDs.
With this lookup, the server can already include the PKIDs in the Authentication Request.
The client doesn't need to send an Information Request, since it already has all information.
It can immediately perform the FIDO authentication process and send the Authentication Response to the server.</t>
      </section>
    </section>
    <section anchor="open-questions-regarding-protocol-design">
      <name>Open Questions regarding Protocol design</name>
      <t>Note to RFC Editor: Remove this section and all references from this section before publication.</t>
      <t>Since this specification is an early draft, there are a lot of open questions that we want to get community feedback on.</t>
      <section anchor="openquestions_rpid">
        <name>How to determine the FIDO Relying Party ID?</name>
        <t>FIDO needs a relying party ID to function.
The question is how this RPID is determined and verified, there are several options that all have pros and cons.</t>
        <t>The main thing is to have in mind, that there are three relevant parameters, that need to be put into a certain relationship:</t>
        <ul spacing="normal">
          <li>
            <t>the RADIUS realm (i.e. 'anonymous@dfn.de')</t>
          </li>
          <li>
            <t>the RPID (i.e. 'eduroam.dfn.de')</t>
          </li>
          <li>
            <t>the Server Certificate Name (usually subjectAltName:DNS, i.e. 'radius.eduroam.dfn.de', in the following abbreviated simply with SAN)</t>
          </li>
        </ul>
        <t>All these three parameters need to be in a pre-defined relationship to allow a simple and hard-to-mess-up-and-still-secure configuration.
Both the client and the server have to agree on what the RPID is, in order for the FIDO authentication to succeed.
If there is a defined relationship between the RPID and the certificate name (i.e. SAN needs to be a subrealm of the RPID), then the client needs to verify the certificate against exactly that.
When does the client do that? What security implications does that bring?
All these options need some thought.</t>
        <section anchor="option-1-configuration">
          <name>Option 1: Configuration</name>
          <t>The first option would be to just have the RPID as a configuration item, maybe with a default on the realm of the outer username.
Adding a configuration option complicates the setup of the EAP method, but hopefully not too much.
A misconfiguration of the RPID is also not that critical from a security standpoint.
The effects of a misconfigured RPID are only a problem if the used FIDO key is also registered with a third party, in which case the third party could trick the client to connect to a bogous network.</t>
          <t>If the RPID deviates from the realm, the client could send the requested RPID using Server Name Indication.</t>
        </section>
        <section anchor="option-2-mandate-rpid-to-equal-realm-of-the-username">
          <name>Option 2: Mandate RPID to equal Realm of the Username</name>
          <t>The second option would be to mandate that the RPID is equal to the realm portion of the username.
This restricts options on how to use EAP-FIDO and may cause unnecessary difficulties in routing, if the convenient routing domain (e.g. the registered domain for a company) should not be used as RPID due to security concerns, or different RPIDs should be used under the same routing realm.</t>
        </section>
        <section anchor="option-3-rpid-is-determined-by-the-server-and-sent-before-the-tls-handshake">
          <name>Option 3: RPID is determined by the server and sent before the TLS handshake</name>
          <t>Since the RPID plays an important role in the decision whether or not the certificate sent by the server is to be trusted, the RPID should be determined before the TLS handshake.
The server could determine the RPID based on the outer username and send it as payload in the EAP-TLS Start packet.
This way, the client has a clear indication as to whether or not to trust the server certificate sent in the subsequent TLS handshake.</t>
          <t>However, this opens up some security issues that are yet to be investigated, since the RPID could be modified by an on-path attacker.</t>
        </section>
        <section anchor="option-4-rpid-is-determined-by-the-server-and-sent-after-the-tls-handshake">
          <name>Option 4: RPID is determined by the server and sent after the TLS handshake</name>
          <t>With this option, the problem is that the client needs to cache the server certificate in order to determine if the RPID is valid. for the given certificate, unless the rules for certificate verification and RPID determination specify it otherwise.
One possibility to circumvent this would be to allow the server certificate names and the RPID to deviate, but validate both against the realm of the outer username, e.g. a realm of example.com with a server certificate for radius.example.com and the FIDO RPID fido.example.com.</t>
          <t>This, however, adds a whole lot more of security concerns, especially in environments with different independent divisions under the same domain suffix.</t>
        </section>
      </section>
      <section anchor="missing-features">
        <name>Missing Features</name>
        <t>There are a lot of features, that have been brought up by several people at several occasions.
This EAP method could include spec to address these problems.
Also there may be FIDO-specific things that are not part of this specification.</t>
        <section anchor="deprovisioning-of-eap-configuration">
          <name>Deprovisioning of EAP configuration</name>
          <t>It may be useful to directly include a way to signal in-band that an EAP configuration should be deleted.</t>
          <t>The idea stems from the discussion at IETF 115 about EAP-DIE <xref target="IETF115-emu-minutes"/>.</t>
          <t>With EAP-FIDO it may be desirable to also allow for deletion of Discoverable Credentials. (Maybe residential Server-Side Credentials too?</t>
          <t>Input on the need and specific way to achieve this is welcome.</t>
        </section>
      </section>
    </section>
    <section anchor="document-status">
      <name>Document Status</name>
      <t>Note to RFC Editor: Remove this section before publication.</t>
      <section anchor="change-history">
        <name>Change History</name>
        <t>draft-janfred-eap-fido-00:</t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Initial draft version</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>draft-janfred-eap-fido-01:</t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Updated terminology to align with the FIDO/WebAuthn terminology</t>
              </li>
              <li>
                <t>Reword introduction</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="missing-specs">
        <name>Missing Specs</name>
        <ul spacing="normal">
          <li>
            <t>Error codes and Error handling</t>
          </li>
          <li>
            <t>Key derivation for i.e. WPA2
            </t>
            <ul spacing="normal">
              <li>
                <t>Will be exported from TLS layer, maybe include some information from the FIDO exchange to bind it to the FIDO exchange?</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The document authors want to thank Alexander Clouter for the idea of a default authentication server name.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8V92XIbV5bgO74ih34wWQFAJCXZLk5Xu1ikZLNLW4uUNRUV
NYoE8gJIK5GJyoUQLelf+nV+Y+bH5qx3y0xKnu6I8YNFAJl3Offs253NZpM2
bwtzlhw8OX81e3p1+fJgki4WtbkNvlqmrVlX9d1Z0rTZZJJVyzLdwltZna7a
2a9puapNNjPpbrbKs2p2fDJpusU2b5q8Ktu7HTx59eTm6QQGfThJa5PC4Ndm
2dV5e3cw2Vf1+3VddTueMnlu2k2VJW92Gcx6MHlv7uCJ7GySzBL4Gf/BReG/
N8+uJ7em7Az8mNwzRJLwIg7ewlR5uU5+wmfx+22aF/C92XZ/zk27mlf1+mAy
STt4vcZBZwlv9N/ScvYU9mjq/H3yOjfL96Zu4PckgTfOkkvTtc1yY5rkaVXD
H125bkrT/pZ8Sn4y9TYtkxdpC7BIi+S1aUxaLzdJWmbJk6xb0g/JC9MiHGjI
pq2Nac+S88J8gKdMvStSGOuEflxWGazn5Pjk+x/4M8DwLPmLqYu8lAe6ssWj
4pnv6EvDG61l5X/OVuU8M/STHvfl0xf0GU7lLNnv93P7jALhujUr2MrbvGxN
7Tb/tCoz3gTsrTVlCrvWv57CYvjHYGen0ySlg0sykxTfvinzW1hV3v6f/+Xt
8dHD7x57W3wCcJ01XT07L34zbWvCzT7rPpjtourqtb/fhlY839OK/1zzouZF
F2z89ZPrmycvzsPNe89OygoA2cISzyaTvFy5T0ny1izOAVnKM3pbaQm+TfBr
U7Y5ny8cZpmcv7pK4O0kXS4NkAbg4atuUeTL5K/mLrlA7ILn06JJnplbUySn
B7xMi4wW4oDGRQbnAMDDqS6qsqnqNu+29BDiPID4+PRkdvxodsxo0qb1GiG/
adtdc/bgAe5x/xDx/cHN6wf48IPXTy5me7PA+crZ6Qy/O350/MMDeB8JbnZx
c/7qNNjoRZHDkpO28ncLG3xVV221rIrkEN85GtsGjgpIXuRpuTTh0k9nx9/N
Tk8Gl44sJpW3aAPNziwb+np2ezo/me0aXvx3J4/52yWtc9ZWs9Rf52wn67Sv
mbpO2xTfPj3+7vRkvmm3hW4fGNZrswr2TxtQRgY4vzK10a387v0+np0+/D37
XVbbbVXOvM03spJZbVY+JE6PH58+DPbyU1E1TQp009vNjVluSgBPkegz/792
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
Agu7PxYhrwAA

-->

</rfc>
