<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tschofenig-emu-pqpake-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="EAP-PQPAKE">The EAP-PQPAKE Authentication Method</title>
    <seriesInfo name="Internet-Draft" value="draft-tschofenig-emu-pqpake-00"/>
    <author fullname="Hannes Tschofenig">
      <organization abbrev="UniBw M.">University of the Bundeswehr Munich</organization>
      <address>
        <postal>
          <city>Neubiberg</city>
          <code>85577</code>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Dan Harkins">
      <organization>Hewlett-Packard Enterprise</organization>
      <address>
        <email>daniel.harkins@hpe.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>EAP Method Update</workgroup>
    <keyword>EAP</keyword>
    <keyword>PAKE</keyword>
    <keyword>post-quantum</keyword>
    <keyword>password authentication</keyword>
    <abstract>
      <?line 62?>

<t>This document defines EAP-PQPAKE, an Extensible Authentication Protocol
(EAP) method that uses a hybrid post-quantum password-authenticated key
exchange.  The method is based on the CPaceOQUAKE+ asymmetric PAKE and
provides mutual authentication and EAP key export from a password without
requiring public-key certificates during normal authentication.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://hannestschofenig.github.io/draft-tschofenig-emu-pqpake/draft-tschofenig-emu-pqpake.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-tschofenig-emu-pqpake/"/>.
      </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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/hannestschofenig/draft-tschofenig-emu-pqpake"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Extensible Authentication Protocol (EAP) <xref target="RFC3748"/> supports
multiple authentication methods between an EAP peer and an EAP server.
Several EAP methods use passwords directly, including EAP-pwd <xref target="RFC5931"/>
and EAP-EKE <xref target="RFC6124"/>.  These methods address the operational need for
authentication from a human-memorable password while limiting the value
of passive observation and offline dictionary attacks.</t>
      <t>Existing password-based EAP methods are built from classical public-key
assumptions.  A quantum-capable attacker that records authentication
exchanges today may later be able to recover keying material when those
classical assumptions fail.  This is undesirable for deployments where
the confidentiality or integrity of subsequent traffic remains valuable
after the authentication exchange has completed.</t>
      <t>This document specifies EAP-PQPAKE, an EAP method that encapsulates
CPaceOQUAKE+ from Section 8.3 of <xref target="I-D.vos-cfrg-pqpake"/>, revision
<tt>draft-vos-cfrg-pqpake-03</tt>.  CPaceOQUAKE+ is a hybrid
asymmetric PAKE that combines a classical PAKE component with a
post-quantum KEM-based component.  EAP-PQPAKE defines the EAP message
flow, packet formats, method transcript, exported MSK and EMSK
derivation, fragmentation behavior, and IANA registries needed to use
CPaceOQUAKE+ as an EAP method.</t>
      <t>CPaceOQUAKE+ is derived from CPaceOQUAKE, a hybrid symmetric PAKE that
sequentially composes CPace and OQUAKE.  CPace contributes a classical
PAKE whose transcript is unconditionally password hiding, while OQUAKE
contributes a post-quantum KEM-based PAKE component.</t>
      <t>EAP-PQPAKE assumes that the server has been provisioned with the
CPaceOQUAKE+ password verifiers for the peer.  The registration
procedure used to create those verifiers is specified by
CPaceOQUAKE+ and is outside the EAP authentication exchange defined in
this document.  The registered verifier consists of <tt>(v, pk, kem_blind)</tt>;
the server also stores the salt, configuration, and registration
identities.  Registration <bcp14>MUST</bcp14> authenticate the server and protect the
confidentiality and integrity of the verifier material.</t>
      <t>Either endpoint may derive the verifier: a server configured with the
password derives it and erases the password, or the peer derives it and
uploads it using the protected registration procedure described above.
The peer stores no persistent verifier state.</t>
      <t>Note: This document version is experimental and relies on a
work in progress PAKE algorithm.</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>The following terms are used throughout this document:</t>
      <dl>
        <dt>EAP peer:</dt>
        <dd>
          <t>The endpoint being authenticated by the EAP server.</t>
        </dd>
        <dt>EAP server:</dt>
        <dd>
          <t>The endpoint that selects the EAP method, stores the peer's
CPaceOQUAKE+ verifier state, and authenticates the peer.</t>
        </dd>
        <dt>PRS:</dt>
        <dd>
          <t>The password-related string input to CPaceOQUAKE+.  This is commonly
the password after local password processing.</t>
        </dd>
        <dt>U:</dt>
        <dd>
          <t>The peer identity used when registering the CPaceOQUAKE+ verifier.</t>
        </dd>
        <dt>S:</dt>
        <dd>
          <t>The server identity used when registering the CPaceOQUAKE+ verifier.</t>
        </dd>
        <dt>kem_blind:</dt>
        <dd>
          <t>A secret, random 32-octet part of the registered verifier.  It blinds
password-derived KEM key generation and is sent to the peer only in
encrypted form during password confirmation.</t>
        </dd>
        <dt>public_context:</dt>
        <dd>
          <t>Public session information encoded with <tt>EncodePublicContext</tt> as
specified in Appendix C.1 of <xref target="I-D.vos-cfrg-pqpake"/>.</t>
        </dd>
        <dt>secret_context:</dt>
        <dd>
          <t>Confidential context shared by the PAKE endpoints.  EAP-PQPAKE passes
the empty octet string as this input to CPaceOQUAKE+.</t>
        </dd>
        <dt>Config:</dt>
        <dd>
          <t>A registered set of CPaceOQUAKE+ algorithms and parameters.</t>
        </dd>
        <dt>Method key:</dt>
        <dd>
          <t>The 32-octet <tt>client_key</tt> or <tt>server_key</tt> output by the CPaceOQUAKE+
password confirmation stage.  EAP-PQPAKE expands this value to the
MSK and EMSK.</t>
        </dd>
        <dt>uint8, uint16, uint32:</dt>
        <dd>
          <t>Unsigned integers encoded in network byte order.</t>
        </dd>
        <dt>opaque16:</dt>
        <dd>
          <t>A variable-length octet string encoded as a uint16 length followed by
that many octets.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>EAP is a lock-step request/response protocol in which the EAP server
sends each Request and the EAP peer sends the corresponding Response.
CPaceOQUAKE+ is initiated by the client.  EAP-PQPAKE therefore uses a
server request carrying the salt and a fresh nonce to solicit the first
CPaceOQUAKE+ message from the peer after identity and configuration
negotiation have completed.</t>
      <t>A successful EAP-PQPAKE exchange has the following shape:</t>
      <artwork type="ascii-art"><![CDATA[
 EAP peer                                      EAP server
 --------                                      ----------

                          EAP-PQPAKE-Start/Request
                  <---------------------------------
 EAP-PQPAKE-Start/Response
 --------------------------------->

                          EAP-PQPAKE-PAKE1/Request
                  <---------------------------------
 EAP-PQPAKE-PAKE1/Response  (msg1: Ya)
 --------------------------------->

                          EAP-PQPAKE-PAKE2/Request
                          (msg2: Yb, s, T, rho)
                  <---------------------------------
 EAP-PQPAKE-PAKE2/Response  (msg3: ct, h)
 --------------------------------->

                          EAP-PQPAKE-Confirm/Request
                          (msg4: enc_c, client_confirm)
                  <---------------------------------
 EAP-PQPAKE-Confirm/Response  (msg5: server_confirm)
 --------------------------------->

                          EAP-Success
                  <---------------------------------
]]></artwork>
      <t>The Start exchange negotiates one CPaceOQUAKE+ configuration and
identifies the peer and server.  After receiving the peer identity, the
server locates the stored <tt>(v, pk, kem_blind)</tt> and salt for that peer
and selected configuration.  The PAKE1 and PAKE2 exchanges carry the
first three CPaceOQUAKE+ messages.  The Confirm exchange carries the
password confirmation challenge <tt>msg4</tt> and response <tt>msg5</tt>.  The field
<tt>rho</tt> in the diagram denotes the public matrix seed of ML-BUA-sKEM.</t>
      <t>On success, both endpoints derive the EAP MSK and EMSK from the
CPaceOQUAKE+ method key.  On failure, either endpoint can send an
EAP-PQPAKE-Failure message.  The server terminates failed exchanges with
EAP-Failure.</t>
    </section>
    <section anchor="cpaceoquake-use">
      <name>CPaceOQUAKE+ Use</name>
      <t>EAP-PQPAKE uses the six CPaceOQUAKE+ functions in Section 8.3 of
<xref target="I-D.vos-cfrg-pqpake"/>.  The peer calls <tt>Init</tt>, <tt>InitiatorContinue</tt>,
and <tt>InitiatorFinish</tt>; the server calls <tt>Respond</tt>, <tt>ResponderContinue</tt>,
and <tt>ResponderFinish</tt>.</t>
      <t>The CPaceOQUAKE+ messages carried by this method are opaque to
EAP-PQPAKE.  Implementations that implement CPaceOQUAKE+ directly, rather
than using a CPaceOQUAKE+ library interface, <bcp14>MUST</bcp14> follow the selected
CPaceOQUAKE+ configuration exactly.  In particular, OQUAKE ciphertext
lengths and parsing are determined by the BUA-sKEM parameters of that
configuration and <bcp14>MUST NOT</bcp14> be inferred from public-key lengths.  Kemeleon
uniform encoding is applied only where CPaceOQUAKE+ specifies it, such as
to the ML-BUA-sKEM public-key material, and <bcp14>MUST NOT</bcp14> be applied to
ciphertexts unless the selected CPaceOQUAKE+ configuration explicitly
requires it.</t>
      <t>The peer computes the CPaceOQUAKE+ verifier material <tt>(v, seed)</tt> from
PRS, salt, U, and S using <tt>GenVerifierMaterial</tt>.  At registration,
<tt>GenVerifier</tt> creates <tt>(v, pk, kem_blind)</tt>: it samples a fresh
<tt>kem_blind</tt> and derives the KEM key pair from
<tt>DeriveKEMSeed(seed, kem_blind)</tt>.  The server <bcp14>MUST</bcp14> store <tt>v</tt>, <tt>pk</tt>,
<tt>kem_blind</tt>, the 32-octet salt, the configuration, and the registration
identities.  It <bcp14>MUST NOT</bcp14> store <tt>seed</tt> or the corresponding KEM secret
key.  The server <bcp14>MUST NOT</bcp14> disclose <tt>kem_blind</tt> in the Start or PAKE1
exchange; CPaceOQUAKE+ carries it only inside the encrypted password
confirmation challenge.</t>
      <t>The EAP-PQPAKE session identifier <tt>sid</tt> and CPaceOQUAKE+ contexts are:</t>
      <sourcecode type="pseudocode"><![CDATA[
sid = H("EAP-PQPAKE sid" ||
        lv_encode(start_request_payload) ||
        lv_encode(start_response_payload) ||
        lv_encode(pake1_request_payload))
public_context = EncodePublicContext(sid, U, S)
secret_context = b""
]]></sourcecode>
      <t>Here <tt>H</tt> is the EAP hash selected by the configuration and <tt>lv_encode</tt>
is the two-octet length-prefix encoding defined in
<xref target="I-D.vos-cfrg-pqpake"/>.  Each <tt>_payload</tt> value is the complete
exchange-specific payload after reassembly, including its field length
prefixes.  It excludes the EAP header, Flags, PQPAKE-Exch, Total-Length,
and fragmentation acknowledgements.  Quoted labels are ASCII octets
without a terminating zero.</t>
      <t>U is the Peer-ID value from Start/Response, excluding its type and
length; S is the Server-ID value from Start/Request, excluding its type
and length.  These <bcp14>MUST</bcp14> be the exact octet strings used for verifier
registration.  A peer <bcp14>MUST</bcp14> check S against its configured registration
before starting the PAKE.  Implementations <bcp14>MUST NOT</bcp14> normalize these
octet strings during the exchange.  Changing either registration
identity requires reprovisioning.  The identity types and their wire
encodings are also bound through <tt>sid</tt>.</t>
      <t><tt>EncodePublicContext</tt> <bcp14>MUST</bcp14> use the four-octet, big-endian length
prefixes from Appendix C.1 of <xref target="I-D.vos-cfrg-pqpake"/>.  Both endpoints
pass the resulting <tt>public_context</tt> and the empty <tt>secret_context</tt> to
their initial CPaceOQUAKE+ call.  CPaceOQUAKE internally supplies the
first stage's key and transcript hash as the contexts for OQUAKE.</t>
      <t>The CPaceOQUAKE+ functions compute their own transcript hash <tt>th</tt>.
Password confirmation uses the <tt>SK</tt> and <tt>th</tt> output by the symmetric
CPaceOQUAKE stage: <tt>PC.Challenge(SK, th, pk, kem_blind)</tt> and
<tt>PC.Respond(SK, th, seed, challenge)</tt>.  Implementations <bcp14>MUST</bcp14> preserve
these inputs exactly; they <bcp14>MUST NOT</bcp14> substitute an EAP-specific
transcript hash for <tt>th</tt>.  The initial public context binds the EAP
configuration negotiation, identities, salt, and server nonce, while
the internal transcript hashes bind the subsequent PAKE messages.
The final <tt>th</tt> is returned with <tt>client_key</tt> or <tt>server_key</tt> after
successful password confirmation.</t>
      <t>The intermediate <tt>SK</tt> <bcp14>MUST NOT</bcp14> be used for EAP key export.  The server
<bcp14>MUST NOT</bcp14> release or use the candidate key held in the state returned
by <tt>ResponderContinue</tt> until <tt>ResponderFinish</tt> succeeds.  The peer
obtains its method key only after <tt>InitiatorFinish</tt> verifies the
server's password confirmation value.</t>
      <t>An implementation <bcp14>MUST</bcp14> abort the exchange if a CPaceOQUAKE+ operation
raises <tt>AuthenticationError</tt>, <tt>CPaceError</tt>, or another surfaced
cryptographic failure, if a received message has incorrect length or
framing for the selected configuration, or if the selected configuration
does not match one offered by the server.</t>
      <t>OQUAKE's implicit rejection and random-key behavior <bcp14>MUST</bcp14> be preserved.
An implementation <bcp14>MUST NOT</bcp14> expose a distinguishable error for an
OQUAKE confirmation mismatch that the underlying protocol handles by
returning an unrelated key.  Such a mismatch is detected during the
subsequent password confirmation exchange.</t>
    </section>
    <section anchor="configurations">
      <name>Configurations</name>
      <t>An EAP-PQPAKE configuration identifies all cryptographic parameters
needed by CPaceOQUAKE+ and the EAP exporter.  This document defines one
mandatory-to-implement configuration:</t>
      <dl>
        <dt><tt>cpaceoquakeplus-x25519-mlbuaskem1024-xwing</tt>:</dt>
        <dd>
          <t>The preferred configuration in Section 9.5.1 of
<xref target="I-D.vos-cfrg-pqpake"/>, with the common parameters from Section 9.1.</t>
        </dd>
      </dl>
      <table>
        <thead>
          <tr>
            <th align="left">Component</th>
            <th align="left">Algorithm or parameter</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CPace group</td>
            <td align="left">CPACE-X25519-SHA512</td>
          </tr>
          <tr>
            <td align="left">CPace hash</td>
            <td align="left">SHA-512</td>
          </tr>
          <tr>
            <td align="left">OQUAKE BUA-sKEM</td>
            <td align="left">ML-BUA-sKEM-1024</td>
          </tr>
          <tr>
            <td align="left">PAKE-KDF</td>
            <td align="left">HKDF-SHA-256</td>
          </tr>
          <tr>
            <td align="left">Password-confirmation KEM</td>
            <td align="left">X-Wing</td>
          </tr>
          <tr>
            <td align="left">PC-KDF</td>
            <td align="left">HKDF-SHA-256</td>
          </tr>
          <tr>
            <td align="left">PC-KSF</td>
            <td align="left">scrypt(N = 32768, r = 8, p = 1)</td>
          </tr>
          <tr>
            <td align="left">Common parameters</td>
            <td align="left">Nv = 32, Nkc = 32, Nr = 64, Nkey = 32</td>
          </tr>
          <tr>
            <td align="left">EAP hash H and HKDF hash</td>
            <td align="left">SHA-256</td>
          </tr>
        </tbody>
      </table>
      <t>The scrypt function is specified in <xref target="RFC7914"/>.  For ML-BUA-sKEM-1024,
Kemeleon.t is 132, Npk is 1596, Nt is 1564, the public matrix seed is
32 octets, and Nct is 1568.  For the X-Wing password-confirmation KEM,
Nseed is 32, Npk is 1216, and Nct is 1120.  This configuration requires
both ML-KEM-1024 for OQUAKE and ML-KEM-768 as used by X-Wing.</t>
      <t>The domain separation tag is the following 32-octet value, shown in
hexadecimal:</t>
      <artwork><![CDATA[
7de162c387ba1bad9c790e7e56bd245d6753d045185cbc3972eba34ddac1a9db
]]></artwork>
      <t>This CPaceOQUAKE+ DST <bcp14>MUST</bcp14> be used throughout CPace, OQUAKE, transcript
hashing, verifier generation, and password confirmation.  It <bcp14>MUST NOT</bcp14>
be combined with the DST values of standalone CPaceOQUAKE or OQUAKE
configurations.</t>
      <t>Implementations conforming to this document <bcp14>MUST</bcp14> implement this
configuration.  Other configurations <bcp14>MAY</bcp14> be registered as described in
<xref target="iana"/>.  New configurations <bcp14>MUST</bcp14> specify the complete CPaceOQUAKE+
parameter set, satisfy Section 9.6 of <xref target="I-D.vos-cfrg-pqpake"/>, and use
a hybrid KEM for password confirmation.  They <bcp14>MUST</bcp14> also specify the EAP
hash and the HKDF hash used by <xref target="key-derivation"/>.</t>
      <t>This configuration and the <tt>-03</tt> message formats are incompatible with
the Ristretto255/Argon2id configuration and encodings in earlier
versions of this EAP draft.  Deployments using those versions <bcp14>MUST</bcp14>
reprovision verifiers with <tt>GenVerifier</tt> from the referenced revision,
including a fresh <tt>kem_blind</tt>.  The old verifier material <bcp14>MUST NOT</bcp14> be
reinterpreted as a registration for this configuration.</t>
    </section>
    <section anchor="packet-format">
      <name>Packet Format</name>
      <t>EAP-PQPAKE packets consist of the standard EAP header followed by an
EAP-PQPAKE method header and the exchange-specific payload.  Multi-octet
integers are encoded in network byte order.</t>
      <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |  Identifier   |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Flags     |  PQPAKE-Exch  |   Data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <t>Code, Identifier, Length, and Type are the EAP fields defined in
<xref target="RFC3748"/>.  The Type value for EAP-PQPAKE is TBD1.</t>
      <t>The Flags field is defined as follows:</t>
      <artwork type="ascii-art"><![CDATA[
 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|L|M| Reserved  |
+-+-+-+-+-+-+-+-+
]]></artwork>
      <dl>
        <dt>L:</dt>
        <dd>
          <t>Length included.  When set, a uint16 Total-Length field appears at the
start of Data.</t>
        </dd>
        <dt>M:</dt>
        <dd>
          <t>More fragments.  When set, more fragments of the same EAP-PQPAKE
message follow.</t>
        </dd>
        <dt>Reserved:</dt>
        <dd>
          <t><bcp14>MUST</bcp14> be sent as zero and <bcp14>MUST</bcp14> be ignored by the receiver.</t>
        </dd>
      </dl>
      <t>PQPAKE-Exch identifies the exchange payload:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Exchange</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x00</td>
            <td align="left">Reserved</td>
          </tr>
          <tr>
            <td align="right">0x01</td>
            <td align="left">Start</td>
          </tr>
          <tr>
            <td align="right">0x02</td>
            <td align="left">PAKE1</td>
          </tr>
          <tr>
            <td align="right">0x03</td>
            <td align="left">PAKE2</td>
          </tr>
          <tr>
            <td align="right">0x04</td>
            <td align="left">Confirm</td>
          </tr>
          <tr>
            <td align="right">0x05</td>
            <td align="left">Failure</td>
          </tr>
          <tr>
            <td align="right">0x06-0x7f</td>
            <td align="left">Unassigned</td>
          </tr>
          <tr>
            <td align="right">0x80-0xff</td>
            <td align="left">Private Use</td>
          </tr>
        </tbody>
      </table>
      <t>If the L bit is set, Data begins with:</t>
      <artwork type="ascii-art"><![CDATA[
 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Total-Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <t>Total-Length is the length in octets of the unfragmented EAP-PQPAKE
message, including the EAP header, EAP-PQPAKE method header, and
payload.</t>
      <section anchor="identity-types">
        <name>Identity Types</name>
        <t>Identity Type is a one-octet field.  This document defines the following
values:</t>
        <table>
          <thead>
            <tr>
              <th align="right">Value</th>
              <th align="left">Name</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x00</td>
              <td align="left">Reserved</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="right">0x01</td>
              <td align="left">Opaque</td>
              <td align="left">Opaque octet string</td>
            </tr>
            <tr>
              <td align="right">0x02</td>
              <td align="left">NAI</td>
              <td align="left">Network Access Identifier</td>
            </tr>
            <tr>
              <td align="right">0x03</td>
              <td align="left">FQDN</td>
              <td align="left">Fully Qualified Domain Name</td>
            </tr>
            <tr>
              <td align="right">0x04-0x7f</td>
              <td align="left">Unassigned</td>
              <td align="left">Available for assignment</td>
            </tr>
            <tr>
              <td align="right">0x80-0xff</td>
              <td align="left">Private Use</td>
              <td align="left">Private Use</td>
            </tr>
          </tbody>
        </table>
        <t>Implementations <bcp14>MUST</bcp14> support receiving Opaque and NAI identities.
Implementations that use FQDN identities <bcp14>MUST</bcp14> use the A-label form for
internationalized domain names.</t>
      </section>
      <section anchor="start-payloads">
        <name>Start Payloads</name>
        <t>The Start/Request payload is sent by the server:</t>
        <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Config-Count  |   Reserved    |        Config-ID[0]          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Config-ID[1] ...                                      ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Server-IDType |              Server-ID                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Config-Count is the number of 16-bit Config-ID values offered by the
server.  It <bcp14>MUST</bcp14> be greater than zero.  Config-ID values are listed in
preference order.  Reserved <bcp14>MUST</bcp14> be sent as zero and ignored by the
receiver.  Server-ID is an opaque16 field preceded by Server-IDType.</t>
        <t>The Start/Response payload is sent by the peer:</t>
        <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Selected-Config        | Peer-IDType   | Peer-ID      ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Selected-Config <bcp14>MUST</bcp14> be one of the Config-ID values in the
Start/Request.  Peer-ID is an opaque16 field preceded by Peer-IDType.
The server uses Selected-Config and Peer-ID to locate the peer's stored
salt and verifier <tt>(v, pk, kem_blind)</tt> for its Server-ID.</t>
      </section>
      <section anchor="cpaceoquake-message-mapping">
        <name>CPaceOQUAKE+ Message Mapping</name>
        <t>EAP-PQPAKE carries the five CPaceOQUAKE+ protocol messages as EAP
payload fields.  Each field contains the complete serialized message
specified in Appendix C.5 of <xref target="I-D.vos-cfrg-pqpake"/>, inside an EAP
<tt>opaque16</tt> field.  This outer length prefix is additional to any length
prefix inside the serialized message.  The EAP exchanges map to the
CPaceOQUAKE+ functions as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">EAP-PQPAKE field</th>
              <th align="left">Sender</th>
              <th align="left">Source value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CPaceOQUAKE-msg1</td>
              <td align="left">peer</td>
              <td align="left">
                <tt>msg1</tt> from <tt>CPaceOQUAKE+.Init</tt></td>
            </tr>
            <tr>
              <td align="left">CPaceOQUAKE-msg2</td>
              <td align="left">server</td>
              <td align="left">
                <tt>msg2</tt> from <tt>CPaceOQUAKE+.Respond</tt></td>
            </tr>
            <tr>
              <td align="left">CPaceOQUAKE-msg3</td>
              <td align="left">peer</td>
              <td align="left">
                <tt>msg3</tt> from <tt>CPaceOQUAKE+.InitiatorContinue</tt></td>
            </tr>
            <tr>
              <td align="left">PC-Challenge</td>
              <td align="left">server</td>
              <td align="left">
                <tt>msg4</tt> from <tt>CPaceOQUAKE+.ResponderContinue</tt></td>
            </tr>
            <tr>
              <td align="left">PC-Response</td>
              <td align="left">peer</td>
              <td align="left">
                <tt>msg5</tt> from <tt>CPaceOQUAKE+.InitiatorFinish</tt></td>
            </tr>
          </tbody>
        </table>
        <t>The following sequence uses the contexts and registration values from
<xref target="cpaceoquake-use"/>.  Each returned state replaces the endpoint's
previous state.  Serialization and parsing use Appendix C.5 of
<xref target="I-D.vos-cfrg-pqpake"/> at the EAP payload boundary.</t>
        <sourcecode type="pseudocode"><![CDATA[
peer_state, msg1 = CPaceOQUAKE+.Init(
    PRS, salt, U, S, public_context, secret_context)
server_state, msg2 = CPaceOQUAKE+.Respond(
    v, public_context, secret_context, msg1)
peer_state, msg3 = CPaceOQUAKE+.InitiatorContinue(
    peer_state, msg2)
server_state, msg4 = CPaceOQUAKE+.ResponderContinue(
    server_state, msg3, pk, kem_blind)
client_key, msg5, th = CPaceOQUAKE+.InitiatorFinish(
    peer_state, msg4)
server_key, th = CPaceOQUAKE+.ResponderFinish(server_state, msg5)
]]></sourcecode>
        <t>Before invoking a function that consumes a message, the receiver <bcp14>MUST</bcp14>
have reassembled the complete EAP payload and checked all field lengths
and framing.  Missing, duplicated, or additional fields <bcp14>MUST</bcp14> cause the
exchange to abort.  EAP fragmentation <bcp14>MUST NOT</bcp14> change field values,
message direction, or processing order, as required by Appendix D of
<xref target="I-D.vos-cfrg-pqpake"/>.  Retransmissions <bcp14>MUST</bcp14> reuse the original
encoded messages and cached EAP Responses; they <bcp14>MUST NOT</bcp14> cause a
CPaceOQUAKE+ operation to run again on the same state.</t>
      </section>
      <section anchor="pake1-payloads">
        <name>PAKE1 Payloads</name>
        <t>The PAKE1/Request payload is sent by the server:</t>
        <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Server-Nonce                         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Salt                              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Server-Nonce is an opaque16 field containing at least 32 octets of
fresh random data generated by the server.  Salt is an opaque16 field
containing the 32-octet salt stored for the selected registration.</t>
        <t>The PAKE1/Response payload is sent by the peer:</t>
        <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       CPaceOQUAKE-msg1                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>CPaceOQUAKE-msg1 is an opaque16 field containing the first
CPaceOQUAKE+ message <tt>msg1</tt>, returned by <tt>CPaceOQUAKE+.Init</tt>.
Its contents are <tt>lv_encode(Ya)</tt>, where <tt>Ya</tt> is the CPace initiator
message.  The internal <tt>lv_encode</tt> prefix <bcp14>MUST</bcp14> be retained inside the
EAP opaque16 field.</t>
      </section>
      <section anchor="pake2-payloads">
        <name>PAKE2 Payloads</name>
        <t>The PAKE2/Request payload is sent by the server:</t>
        <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       CPaceOQUAKE-msg2                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>The PAKE2/Response payload is sent by the peer:</t>
        <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       CPaceOQUAKE-msg3                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Both fields are encoded as opaque16 values.</t>
        <t>CPaceOQUAKE-msg2 contains <tt>msg2</tt> from <tt>CPaceOQUAKE+.Respond</tt>, encoded
as <tt>lv_encode(Yb) || s || T || rho</tt>.  <tt>Yb</tt> is the CPace responder
message; <tt>(s, T, rho)</tt> is the OQUAKE initiator message.  CPaceOQUAKE-msg3
contains <tt>msg3</tt> from <tt>CPaceOQUAKE+.InitiatorContinue</tt>, encoded as
<tt>ct || h</tt>, the OQUAKE responder message.  The lengths of <tt>s</tt>, <tt>T</tt>,
<tt>rho</tt>, <tt>ct</tt>, and <tt>h</tt> are determined by the selected configuration.</t>
      </section>
      <section anchor="confirm-payloads">
        <name>Confirm Payloads</name>
        <t>The Confirm/Request payload is sent by the server:</t>
        <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         PC-Challenge                         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>The Confirm/Response payload is sent by the peer:</t>
        <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          PC-Response                         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Both fields are encoded as opaque16 values.  PC-Challenge contains
<tt>msg4</tt> from <tt>CPaceOQUAKE+.ResponderContinue</tt>, encoded as
<tt>enc_c || client_confirm</tt>.  <tt>enc_c</tt> encrypts the password-confirmation
KEM ciphertext together with <tt>kem_blind</tt>; its length is the
password-confirmation KEM's Nct plus 32 octets.  <tt>client_confirm</tt> has
Nkc octets.  PC-Response contains <tt>msg5</tt> from
<tt>CPaceOQUAKE+.InitiatorFinish</tt>, which is the Nkc-octet
<tt>server_confirm</tt>.  The confirmation names follow the underlying PAKE:
the server sends <tt>client_confirm</tt> and the peer sends <tt>server_confirm</tt>.</t>
        <t>For the mandatory configuration, the serialized messages have the
following lengths, excluding the EAP opaque16 prefix and packet header:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Message</th>
              <th align="right">Length in octets</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CPaceOQUAKE-msg1</td>
              <td align="right">34</td>
            </tr>
            <tr>
              <td align="left">CPaceOQUAKE-msg2</td>
              <td align="right">1694</td>
            </tr>
            <tr>
              <td align="left">CPaceOQUAKE-msg3</td>
              <td align="right">1600</td>
            </tr>
            <tr>
              <td align="left">PC-Challenge</td>
              <td align="right">1184</td>
            </tr>
            <tr>
              <td align="left">PC-Response</td>
              <td align="right">32</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="failure-payload">
        <name>Failure Payload</name>
        <t>The Failure payload is a uint32 Failure-Code:</t>
        <table>
          <thead>
            <tr>
              <th align="right">Value</th>
              <th align="left">Name</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x00000000</td>
              <td align="left">Reserved</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="right">0x00000001</td>
              <td align="left">No Error</td>
              <td align="left">Failure acknowledgement</td>
            </tr>
            <tr>
              <td align="right">0x00000002</td>
              <td align="left">Protocol Error</td>
              <td align="left">Malformed or unexpected message</td>
            </tr>
            <tr>
              <td align="right">0x00000003</td>
              <td align="left">Identity Unknown</td>
              <td align="left">No verifier is available for the identity</td>
            </tr>
            <tr>
              <td align="right">0x00000004</td>
              <td align="left">Authentication Failure</td>
              <td align="left">Password confirmation or PAKE validation failed</td>
            </tr>
            <tr>
              <td align="right">0x00000005</td>
              <td align="left">Authorization Failure</td>
              <td align="left">Authentication succeeded but access is denied</td>
            </tr>
            <tr>
              <td align="right">0x00000006</td>
              <td align="left">No Config Chosen</td>
              <td align="left">No acceptable configuration was selected</td>
            </tr>
            <tr>
              <td align="right">0x00000007-0xfeffffff</td>
              <td align="left">Unassigned</td>
              <td align="left">Available for assignment</td>
            </tr>
            <tr>
              <td align="right">0xff000000-0xffffffff</td>
              <td align="left">Private Use</td>
              <td align="left">Private Use</td>
            </tr>
          </tbody>
        </table>
        <t>When the peer detects an error, it <bcp14>SHOULD</bcp14> send Failure/Response.  The
server <bcp14>MUST</bcp14> then send EAP-Failure.  When the server detects an error, it
<bcp14>SHOULD</bcp14> send Failure/Request.  The peer <bcp14>SHOULD</bcp14> answer with
Failure/Response containing No Error, and the server <bcp14>MUST</bcp14> then send
EAP-Failure.  Implementations <bcp14>MAY</bcp14> use Authentication Failure instead of
Identity Unknown to avoid disclosing whether a peer identity exists.</t>
      </section>
    </section>
    <section anchor="fragmentation">
      <name>Fragmentation</name>
      <t>Post-quantum KEM public keys and ciphertexts can make EAP-PQPAKE
messages larger than a lower layer's EAP payload limit.  EAP-PQPAKE
therefore supports fragmentation using the L and M flags in the method
header.</t>
      <t>Implementations <bcp14>MUST</bcp14> support receiving fragmented EAP-PQPAKE messages.
An implementation <bcp14>MUST</bcp14> establish a fragmentation threshold.  If the lower
layer MTU is known, the threshold <bcp14>SHOULD</bcp14> be derived from that MTU.  If no
lower-layer limit is known, the threshold <bcp14>MUST</bcp14> be 1020 octets.</t>
      <t>The first fragment of a fragmented message <bcp14>MUST</bcp14> set L and M and <bcp14>MUST</bcp14>
include Total-Length.  Intermediate fragments <bcp14>MUST</bcp14> set M and <bcp14>MUST NOT</bcp14> set
L.  The final fragment <bcp14>MUST NOT</bcp14> set M and <bcp14>MUST NOT</bcp14> set L.  A
non-fragmented message <bcp14>MUST NOT</bcp14> set L or M.</t>
      <t>When the peer receives an EAP-PQPAKE Request fragment with M set, it
<bcp14>MUST</bcp14> respond with an EAP-PQPAKE Response fragment acknowledgement.  The
acknowledgement uses the same PQPAKE-Exch value, has no payload, and has
L and M cleared.  When the server receives an EAP-PQPAKE Response
fragment with M set, it <bcp14>MUST</bcp14> respond with an EAP-PQPAKE Request fragment
acknowledgement with the same properties.  The next fragment is sent only
after the acknowledgement is received.</t>
      <t>Receivers <bcp14>MUST</bcp14> reassemble all fragments before parsing the
exchange-specific payload.  A receiver <bcp14>MUST</bcp14> abort if Total-Length is
inconsistent with the received fragments, if fragments from different
exchanges are interleaved, or if the reassembled message exceeds a local
policy limit.</t>
    </section>
    <section anchor="key-derivation">
      <name>Key Derivation</name>
      <t>The peer obtains <tt>client_key</tt> and the final transcript hash <tt>th</tt> from
<tt>CPaceOQUAKE+.InitiatorFinish</tt> after verifying Confirm/Request.  The
server obtains the matching <tt>server_key</tt> and <tt>th</tt> from
<tt>CPaceOQUAKE+.ResponderFinish</tt> after verifying Confirm/Response.  These
keys are the method key used below.  No intermediate PAKE key or
unverified candidate key may be exported.  EAP-PQPAKE exports MSK and
EMSK as required by <xref target="RFC3748"/> and <xref target="RFC5247"/>.</t>
      <t>The Method-ID is:</t>
      <sourcecode type="pseudocode"><![CDATA[
Method-ID = H("EAP-PQPAKE Method-ID" ||
              uint16(Selected-Config) || lv_encode(th))
]]></sourcecode>
      <t><tt>th</tt> is the final CPaceOQUAKE+ transcript hash, which binds the
initial EAP public context and all five protocol messages, including
both password confirmation values.  It <bcp14>MUST NOT</bcp14> be replaced by the
transcript hash of an intermediate PAKE stage.  <tt>Selected-Config</tt> is
encoded as the two-octet value selected in Start/Response.</t>
      <t>The Session-ID is:</t>
      <sourcecode type="pseudocode"><![CDATA[
Session-ID = EAP-Type-Code || Method-ID
]]></sourcecode>
      <t>where EAP-Type-Code is the single-octet EAP method type assigned by
IANA for EAP-PQPAKE.</t>
      <t>Following the key naming guidance in <xref target="RFC4962"/>, exported key names are:</t>
      <sourcecode type="pseudocode"><![CDATA[
MSK-name  = Session-ID || "MSK"
EMSK-name = Session-ID || "EMSK"
]]></sourcecode>
      <t>The MSK and EMSK are derived using HKDF <xref target="RFC5869"/> with the EAP HKDF
hash selected by the configuration (SHA-256 for the mandatory
configuration).  <tt>Hash.length</tt> is that hash's output length in octets:</t>
      <sourcecode type="pseudocode"><![CDATA[
exporter_secret = HKDF-Extract(zeros(Hash.length), method_key)
key_material = HKDF-Expand(exporter_secret,
                           "EAP-PQPAKE Exported Keys" ||
                           Session-ID ||
                           Method-ID,
                           128)
MSK  = key_material[0:64]
EMSK = key_material[64:128]
]]></sourcecode>
      <t>The slice end indexes are exclusive; MSK and EMSK are each 64 octets.</t>
      <t>After deriving the MSK and EMSK, both endpoints <bcp14>MUST</bcp14> erase the
CPaceOQUAKE+ method key, intermediate PAKE secrets, KEM decapsulation
secrets, password-confirmation state, and ephemeral copies of the
password-derived seed and <tt>kem_blind</tt>.  This does not erase the server's
stored registration.  Ephemeral secrets and any unexported candidate
keys <bcp14>MUST</bcp14> also be erased when the method fails or times out.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>EAP-PQPAKE inherits the cryptographic security properties and limitations
of CPaceOQUAKE+ <xref target="I-D.vos-cfrg-pqpake"/>.  The EAP encapsulation defined
here binds EAP identities, configuration negotiation, salt, server nonce,
and all carried CPaceOQUAKE+ messages through its public context and
internal transcript hashes.  The following claims are stated in the
style expected for EAP methods used in wireless LANs <xref target="RFC4017"/>.</t>
      <t>The hybrid security of CPaceOQUAKE+ depends on the CPaceOQUAKE+
composition specified in <xref target="I-D.vos-cfrg-pqpake"/>.  The sequential
composition relies on CPace being unconditionally password hiding: the
CPace transcript does not reveal information about the password-related
string even if the classical Diffie-Hellman assumption later fails.
OQUAKE is not assumed to have that unconditional password-hiding
property; it provides the post-quantum KEM-based component of the
hybrid design.  EAP-PQPAKE therefore does not define a parallel
composition and does not permit substituting a different PAKE component
unless that component is specified by a registered CPaceOQUAKE+
configuration with an applicable security analysis.</t>
      <t>Section 11.2 of <xref target="I-D.vos-cfrg-pqpake"/> qualifies the post-quantum
security analysis: the UC proofs use the classical random oracle model.
OQUAKE-style protocols do not realize the standard UC PAKE
functionality with quantum random-oracle access under the cited
analysis, although this does not yield an attack recovering passwords
or keys and a closely related protocol has a stand-alone game-based
proof in that model.  EAP-PQPAKE does not claim a stronger quantum UC
result.  Its security against quantum attackers relies on OQUAKE;
CPace alone does not provide post-quantum PAKE security.</t>
      <dl>
        <dt>Passive attacks:</dt>
        <dd>
          <t>A passive attacker observing EAP-PQPAKE messages is not expected to
learn the password, the CPaceOQUAKE+ method key, the MSK, or the EMSK.
The method is intended to protect recorded exchanges against attackers
with future quantum capabilities, subject to the hybrid security
assumptions of CPaceOQUAKE+.</t>
        </dd>
        <dt>Active attacks:</dt>
        <dd>
          <t>An active attacker can drop, delay, replay, or modify EAP messages.
Such modification causes transcript or confirmation failure unless the
attacker knows the password or breaks the underlying CPaceOQUAKE+
assumptions.  Implementations <bcp14>MUST</bcp14> reject unexpected exchange ordering,
malformed encodings, and configuration mismatches, while preserving
OQUAKE's implicit rejection behavior described in <xref target="cpaceoquake-use"/>.</t>
        </dd>
        <dt>Dictionary attacks:</dt>
        <dd>
          <t>Password authentication methods cannot prevent online guessing.  EAP
servers <bcp14>MUST</bcp14> implement rate limits or equivalent controls for failed
authentications.  Implementations <bcp14>SHOULD</bcp14> avoid distinguishable error
behavior between unknown identities and incorrect passwords.</t>
        </dd>
        <dt>Forward secrecy:</dt>
        <dd>
          <t>Compromise of the password after an exchange completes does not reveal
earlier MSK or EMSK values unless the attacker also breaks the
underlying assumptions for the recorded exchange.  Compromise of the
full registered verifier <tt>(v, pk, kem_blind)</tt> permits offline password
guessing and server impersonation to the peer.  It does not by itself
permit client impersonation without recovering the password, the
password-derived seed, or the corresponding decapsulation key, as
discussed in Section 11.5 of <xref target="I-D.vos-cfrg-pqpake"/>.  Affected
credentials require reprovisioning.</t>
        </dd>
        <dt>Downgrade protection:</dt>
        <dd>
          <t>The selected configuration and the server's offered configuration list
are included in the EAP-PQPAKE transcript.  A downgrade attempt that
changes negotiation messages is detected during password confirmation.
Implementations <bcp14>MUST NOT</bcp14> offer configurations that are prohibited by
local policy.</t>
        </dd>
        <dt>Identity protection:</dt>
        <dd>
          <t>EAP-PQPAKE does not encrypt the Start exchange.  A passive observer can
see the server and peer identities unless this method is used inside a
protected tunnel.  An anonymous outer EAP identity alone does not hide
the identities in the Start exchange.  This mapping uses the same
identities for registration and the session public context; the
underlying PAKE permits these to differ, but this document does not
define such an identity mapping.  Changing a registration identity
requires recomputing and reprovisioning the verifier.</t>
        </dd>
        <dt>Verifier handling:</dt>
        <dd>
          <t>The server stores the salt and the CPaceOQUAKE+ verifier
<tt>(v, pk, kem_blind)</tt>.  The password-derived seed used to derive the
password-confirmation KEM key pair <bcp14>MUST NOT</bcp14> be stored by the server.
Registration and reprovisioning are outside this method
and need channel authentication, confidentiality, and integrity.  A
fresh secret <tt>kem_blind</tt> is required for each registration and <bcp14>MUST</bcp14>
be protected with the rest of the verifier.  The memory-hard password
stretching used by CPaceOQUAKE+ hardens
password-derived verifier material against offline guessing after
verifier compromise; it does not replace online rate limiting for EAP
authentication attempts.</t>
        </dd>
        <dt>Side channels:</dt>
        <dd>
          <t>CPaceOQUAKE+ discusses timing considerations for OQUAKE and ML-KEM
processing.  In addition to the Tempo construction used by OQUAKE,
the augmented transformation blinds KEM key generation with
<tt>kem_blind</tt>.  Removing this blinding or disclosing <tt>kem_blind</tt> before
password confirmation invalidates that protection.  Implementations
<bcp14>MUST</bcp14> preserve the blinding and its encryption, use constant-time
comparison for confirmation values, and keep Kemeleon.EncodeEk
randomness secret.  They <bcp14>SHOULD</bcp14> use implementations of the selected
primitives that address known timing attacks.</t>
        </dd>
        <dt>Denial of service:</dt>
        <dd>
          <t>The recommended configuration uses scrypt password stretching on the
peer and post-quantum cryptography on both endpoints.  Servers <bcp14>SHOULD</bcp14>
apply admission control before expensive operations, for example by
limiting concurrent sessions per peer, realm, or lower-layer attachment.</t>
        </dd>
        <dt>Fragmentation:</dt>
        <dd>
          <t>Fragmentation increases buffering requirements.  Implementations <bcp14>MUST</bcp14>
enforce local maximum reassembled lengths and discard incomplete
fragmented messages on timeout.</t>
        </dd>
      </dl>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate one EAP Method Type from the "Method Types"
registry:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1</td>
            <td align="left">EAP-PQPAKE</td>
            <td align="left">RFC-TBD</td>
          </tr>
        </tbody>
      </table>
      <t>IANA is requested to create the "EAP-PQPAKE Exchange Types" registry.
The registration policy is Specification Required <xref target="RFC8126"/> for values
0x06 through 0x7f.  Values 0x80 through 0xff are for Private Use.  The
initial values are listed in <xref target="packet-format"/>.</t>
      <t>IANA is requested to create the "EAP-PQPAKE Configurations" registry.
The registry contains 16-bit values.  The registration policy is
Specification Required for values 0x0002 through 0x7fff.  Values 0x8000
through 0xffff are for Private Use.  The initial contents are:</t>
      <table>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x0000</td>
            <td align="left">Reserved</td>
            <td align="left">RFC-TBD</td>
          </tr>
          <tr>
            <td align="right">0x0001</td>
            <td align="left">cpaceoquakeplus-x25519-mlbuaskem1024-xwing</td>
            <td align="left">RFC-TBD</td>
          </tr>
        </tbody>
      </table>
      <t>IANA is requested to create the "EAP-PQPAKE Identity Types" registry.
The registry contains 8-bit values.  The registration policy is
Specification Required for values 0x04 through 0x7f.  Values 0x80
through 0xff are for Private Use.  The initial values are listed in
<xref target="identity-types"/>.</t>
      <t>IANA is requested to create the "EAP-PQPAKE Failure Codes" registry.  The
registry contains 32-bit values.  The registration policy is
Specification Required for values 0x00000007 through 0xfeffffff.  Values
0xff000000 through 0xffffffff are for Private Use.  The initial values
are listed in <xref target="failure-payload"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC5247">
          <front>
            <title>Extensible Authentication Protocol (EAP) Key Management Framework</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, enables extensible network access authentication. This document specifies the EAP key hierarchy and provides a framework for the transport and usage of keying material and parameters generated by EAP authentication algorithms, known as "methods". It also provides a detailed system-level security analysis, describing the conditions under which the key management guidelines described in RFC 4962 can be satisfied. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5247"/>
          <seriesInfo name="DOI" value="10.17487/RFC5247"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC7914">
          <front>
            <title>The scrypt Password-Based Key Derivation Function</title>
            <author fullname="C. Percival" initials="C." surname="Percival"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document specifies the password-based key derivation function scrypt. The function derives one or more secret keys from a secret string. It is based on memory-hard functions, which offer added protection against attacks using custom hardware. The document also provides an ASN.1 schema.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7914"/>
          <seriesInfo name="DOI" value="10.17487/RFC7914"/>
        </reference>
        <reference anchor="I-D.vos-cfrg-pqpake">
          <front>
            <title>Hybrid Post-Quantum Password Authenticated Key Exchange</title>
            <author fullname="Jelle Vos" initials="J." surname="Vos">
              <organization>Apple, Inc.</organization>
            </author>
            <author fullname="Stanislaw Jarecki" initials="S." surname="Jarecki">
              <organization>University of California, Irvine</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple, Inc.</organization>
            </author>
            <date day="14" month="October" year="2026"/>
            <abstract>
              <t>   This document describes four post-quantum password authenticated key
   exchange (PAKE) protocols: OQUAKE, OQUAKE+, CPaceOQUAKE, and
   CPaceOQUAKE+. OQUAKE and OQUAKE+ are standalone PAKEs that both offer
   security against a quantum-capable attacker.  OQUAKE is a symmetric
   PAKE, suitable for use cases where both parties share a view of the
   password.  OQUAKE+ is an augmented version of OQUAKE suitable for
   client-server settings where only one party (the client) knows the
   password.  CPaceOQUAKE is a hybrid PAKE that runs a classical PAKE
   (CPace) and OQUAKE sequentially, and CPaceOQUAKE+ is its augmented
   version.  This document also provides recommended configurations for
   each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vos-cfrg-pqpake-03"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4017">
          <front>
            <title>Extensible Authentication Protocol (EAP) Method Requirements for Wireless LANs</title>
            <author fullname="D. Stanley" initials="D." surname="Stanley"/>
            <author fullname="J. Walker" initials="J." surname="Walker"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The IEEE 802.11i MAC Security Enhancements Amendment makes use of IEEE 802.1X, which in turn relies on the Extensible Authentication Protocol (EAP). This document defines requirements for EAP methods used in IEEE 802.11 wireless LAN deployments. The material in this document has been approved by IEEE 802.11 and is being presented as an IETF RFC for informational purposes. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4017"/>
          <seriesInfo name="DOI" value="10.17487/RFC4017"/>
        </reference>
        <reference anchor="RFC4962">
          <front>
            <title>Guidance for Authentication, Authorization, and Accounting (AAA) Key Management</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="July" year="2007"/>
            <abstract>
              <t>This document provides guidance to designers of Authentication, Authorization, and Accounting (AAA) key management protocols. The guidance is also useful to designers of systems and solutions that include AAA key management protocols. Given the complexity and difficulty in designing secure, long-lasting key management algorithms and protocols by experts in the field, it is almost certainly inappropriate for IETF working groups without deep expertise in the area to be designing their own key management algorithms and protocols based on Authentication, Authorization, and Accounting (AAA) protocols. The guidelines in this document apply to documents requesting publication as IETF RFCs. Further, these guidelines will be useful to other standards development organizations (SDOs) that specify AAA key management. 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="132"/>
          <seriesInfo name="RFC" value="4962"/>
          <seriesInfo name="DOI" value="10.17487/RFC4962"/>
        </reference>
        <reference anchor="RFC5931">
          <front>
            <title>Extensible Authentication Protocol (EAP) Authentication Using Only a Password</title>
            <author fullname="D. Harkins" initials="D." surname="Harkins"/>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This memo describes an Extensible Authentication Protocol (EAP) method, EAP-pwd, which uses a shared password for authentication. The password may be a low-entropy one and may be drawn from some set of possible passwords, like a dictionary, which is available to an attacker. The underlying key exchange is resistant to active attack, passive attack, and dictionary attack. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5931"/>
          <seriesInfo name="DOI" value="10.17487/RFC5931"/>
        </reference>
        <reference anchor="RFC6124">
          <front>
            <title>An EAP Authentication Method Based on the Encrypted Key Exchange (EKE) Protocol</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP) describes a framework that allows the use of multiple authentication mechanisms. This document defines an authentication mechanism for EAP called EAP-EKE, based on the Encrypted Key Exchange (EKE) protocol. This method provides mutual authentication through the use of a short, easy to remember password. Compared with other common authentication methods, EAP-EKE is not susceptible to dictionary attacks. Neither does it require the availability of public-key certificates. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6124"/>
          <seriesInfo name="DOI" value="10.17487/RFC6124"/>
        </reference>
      </references>
    </references>
    <?line 921?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge contributors and reviewers.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
bUWpdU7wDm+6N/2/AfGjfMRakwAA

-->

</rfc>
