<?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 compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bokovoy-kitten-pkinit-pqc-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="PKINIT-PQC">Post-quantum Key Encapsulation with ML-KEM in Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)</title>
    <seriesInfo name="Internet-Draft" value="draft-bokovoy-kitten-pkinit-pqc-02"/>
    <author initials="A." surname="Bokovoy" fullname="Alexander Bokovoy">
      <organization>Red Hat, Inc.</organization>
      <address>
        <email>abokovoy@redhat.com</email>
      </address>
    </author>
    <author initials="J." surname="Rische" fullname="Julien Rische">
      <organization>Red Hat, Inc.</organization>
      <address>
        <email>jrische@redhat.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <area>Security</area>
    <workgroup>Common Authentication Technology Next Generation</workgroup>
    <keyword>Kerberos</keyword>
    <keyword>PKINIT</keyword>
    <keyword>post-quantum</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>ML-DSA</keyword>
    <keyword>KEM</keyword>
    <abstract>
      <?line 86?>

<t>This document specifies extensions to the Kerberos PKINIT
pre-authentication mechanism <xref target="RFC4556"/> <xref target="RFC8636"/> to support
post-quantum key establishment using the Module-Lattice-Based
Key-Encapsulation Mechanism (ML-KEM) algorithms defined in <xref target="FIPS203"/>.</t>
      <t>The extensions define a new <tt>kemInfo</tt> arm in <tt>PA-PK-AS-REP</tt>, a
<tt>KDCKEMInfo</tt> structure signed by the KDC, HKDF-based AS reply key
derivation (HKDF-SHA-512 for ML-KEM), and downgrade-prevention rules.
The KEM path framework supports multiple KEM algorithms including
ML-KEM, composite ML-KEM algorithms, and future KEM standards.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Common Authentication Technology Next Generation Working Group mailing list (kitten@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/kitten/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/abbra/kitten-pkinit-pqc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 99?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Kerberos PKINIT pre-authentication mechanism <xref target="RFC4556"/> relies on
public-key cryptography for initial authentication.  The Diffie-Hellman
and RSA paths it defines are vulnerable to a cryptographically relevant
quantum computer.  <xref target="RFC5349"/> adds Elliptic Curve Diffie-Hellman (ECDH)
support and <xref target="RFC8636"/> adds algorithm agility, but neither addresses the
quantum threat.</t>
      <t>This document defines a new KEM path in PKINIT that uses Key
Encapsulation Mechanism (KEM) algorithms, in particular the
Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) <xref target="FIPS203"/>.
Rather than agreeing on a shared secret via a DH exchange, the client
generates an ephemeral KEM key pair and sends the encapsulation key in a
CMS-signed <tt>AuthPack</tt> (<xref target="RFC5652"/> Section 5). The KDC encapsulates
against it, signs the ciphertext and algorithm selection in <tt>KDCKEMInfo</tt>,
and returns the signed structure. Both parties derive the AS reply key
using HKDF (<xref target="RFC5869"/>).</t>
      <t>The design preserves the security properties of the RFC 4556 DH path
(the client's ephemeral key is authenticated by the client's signing
certificate; the KDC's response is authenticated by the KDC's signing
certificate) while providing post-quantum forward secrecy through ML-KEM.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
      </t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The KEM path is activated when <tt>AuthPack.clientPublicValue</tt> contains an
ML-KEM or composite ML-KEM OID.  The exchange proceeds as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>The client generates an ephemeral KEM key pair, places the encapsulation
key in <tt>AuthPack.clientPublicValue</tt>, and sends a signed <tt>AuthPack</tt> in
<tt>PA-PK-AS-REQ</tt>.</t>
        </li>
        <li>
          <t>The KDC verifies the <tt>AuthPack</tt> signature, encapsulates against the
client's encapsulation key to obtain a shared secret <tt>ss</tt> and ciphertext
<tt>kemct</tt>, signs them in a <tt>KDCKEMInfo</tt> structure, and returns
<tt>PA-PK-AS-REP.kemInfo</tt>.</t>
        </li>
        <li>
          <t>The client verifies the KDC signature, decapsulates to recover <tt>ss</tt>,
and both parties derive the AS reply key using HKDF-SHA-512 over
<tt>PkinitKEMSuppPubInfo</tt>.</t>
        </li>
      </ol>
      <t>No DH exchange takes place.  The shared secret is established entirely
through one-sided encapsulation; freshness is provided by the per-request
ephemeral key pair and the echoed nonce.</t>
    </section>
    <section anchor="sec-kem-interface">
      <name>KEM Algorithm Interface</name>
      <t>This specification uses the following generic KEM algorithm interface:</t>
      <t><strong>Encap(ek) → (ss, ct)</strong>: Takes an encapsulation key <tt>ek</tt> and returns a
shared secret <tt>ss</tt> and ciphertext <tt>ct</tt>.</t>
      <t><strong>Decap(dk, ct) → ss</strong>: Takes a decapsulation key <tt>dk</tt> and ciphertext <tt>ct</tt>
and returns the shared secret <tt>ss</tt>.</t>
      <t>For ML-KEM (<xref target="FIPS203"/>), these correspond to:
- <tt>Encap(ek)</tt> = <tt>ML-KEM.Encaps(ek)</tt> (FIPS 203 Algorithm 17)
- <tt>Decap(dk, ct)</tt> = <tt>ML-KEM.Decaps(dk, ct)</tt> (FIPS 203 Algorithm 18)</t>
      <t>The notation <tt>Encap()</tt> and <tt>Decap()</tt> is used throughout this document to
describe the generic KEM path protocol. When implementing ML-KEM specifically,
use the FIPS 203 algorithms. Future specifications extending this framework
to other KEM algorithms MUST define their mapping to this interface.</t>
    </section>
    <section anchor="sec-alg-id-encoding">
      <name>Algorithm Identifier Encoding</name>
      <t>The <tt>parameters</tt> field MUST be absent from all algorithm identifiers used
in this specification.  The source of this requirement differs by
algorithm family:</t>
      <t>(a)  ML-KEM and ML-DSA identifiers (<xref target="RFC9935"/>, <xref target="RFC9881"/>): the
     algorithm parameter set is fully encoded in the OID; no parameters
     field is defined.  Applies to:</t>
      <artwork><![CDATA[
 *  `clientPublicValue.algorithm` when carrying an ML-KEM ephemeral key
 *  `KDCKEMInfo.kemAlgorithm`
]]></artwork>
      <t>(b)  HKDF identifiers (<xref target="RFC8619"/> Section 3): the OID
     <tt>id-alg-hkdf-with-sha512</tt> has absent parameters by definition.
     Only SHA-512 is defined for the KEM path (<xref target="sec-kdf-oids"/>).
     Applies to:</t>
      <artwork><![CDATA[
 *  `KDCKEMInfo.kdfAlgorithm`
 *  `AuthPack.supportedKDFs` entries
]]></artwork>
    </section>
    <section anchor="sec-asn1-types">
      <name>New ASN.1 Types</name>
      <section anchor="sec-pa-pk-as-rep">
        <name>Extended <tt>PA-PK-AS-REP</tt></name>
        <t><xref target="RFC4556"/>'s <tt>KerberosV5-PK-INIT-SPEC</tt> module is <tt>DEFINITIONS EXPLICIT
TAGS</tt>, like the base Kerberos V5 module it extends.  The <tt>PA-PK-AS-REP</tt>
arms carry DER-encoded structures; receivers identify the chosen arm
by the context tag alone.</t>
        <sourcecode type="asn1"><![CDATA[
-- KerberosV5-PK-INIT-SPEC DEFINITIONS EXPLICIT TAGS ::= BEGIN
PA-PK-AS-REP ::= CHOICE {
    dhInfo          [0] DHRepInfo,
        -- RFC 4556: DH/ECDH path.  DHRepInfo ({{RFC4556}}
        -- Section 3.2.3.1) carries:
        --   dhSignedData:  CMS SignedData wrapping KDCDHKeyInfo
        --   serverDHNonce: DHNonce OPTIONAL
    encKeyPack      [1] IMPLICIT OCTET STRING,
        -- RFC 4556: RSA path (deprecated)
        --   content: ReplyKeyPack ({{RFC4556}} Section 3.2.3.2)
    kemInfo         [2] IMPLICIT OCTET STRING,
        -- NEW: KEM path (this specification)
        --   content: KEMRepInfo ({{sec-kemrepinfo}})
    ...
}
]]></sourcecode>
      </section>
      <section anchor="sec-kemrepinfo">
        <name><tt>KEMRepInfo</tt></name>
        <sourcecode type="asn1"><![CDATA[
-- id-pkinit OID arc (RFC 4556):
-- id-pkinit OBJECT IDENTIFIER ::= { 1 3 6 1 5 2 3 }

id-pkinit-KEMKeyData OBJECT IDENTIFIER ::= { id-pkinit TBD-IANA }

-- KerberosV5-PK-INIT-SPEC module default (RFC 4556): fields without
-- an explicit IMPLICIT or EXPLICIT keyword are EXPLICIT tagged.
KEMRepInfo ::= SEQUENCE {
    kemSignedData       [0] IMPLICIT OCTET STRING,
        -- CMS SignedData ({{RFC5652}} Section 5):
        --   eContentType = id-pkinit-KEMKeyData
        --   eContent     = DER(KDCKEMInfo)
        --   signerInfos  = KDC signature over KDCKEMInfo
    ...
}
]]></sourcecode>
        <t><tt>eContent</tt> in <tt>kemSignedData</tt> MUST be present (detached signatures are
prohibited).</t>
      </section>
      <section anchor="sec-kdckeminfo">
        <name><tt>KDCKEMInfo</tt></name>
        <sourcecode type="asn1"><![CDATA[
-- KerberosV5-PK-INIT-SPEC module default (RFC 4556): fields without
-- an explicit IMPLICIT or EXPLICIT keyword are EXPLICIT tagged.
KDCKEMInfo ::= SEQUENCE {
    kemAlgorithm    [0] AlgorithmIdentifier,
        -- KEM algorithm and parameter set used (e.g., ML-KEM-768).
        -- MUST match clientPublicValue.algorithm OID.
    kemct           [1] OCTET STRING,
        -- KEM ciphertext produced by Encap(ek) (see {{sec-kem-interface}}).
        -- Algorithm-specific sizes: see {{sec-mlkem-sizes}} for ML-KEM.
    kdfAlgorithm    [2] AlgorithmIdentifier,
        -- HKDF variant selected from supportedKDFs (fixes RFC 8636
        -- unauthenticated selection flaw).
    nonce           [3] INTEGER (0..4294967295) OPTIONAL,
        -- When present, MUST equal pkAuthenticator.nonce from the
        -- client's AS-REQ. Implementations SHOULD include this field.
        -- Future KEM variants and hybrid DH+KEM modes MAY omit it if
        -- alternative freshness mechanisms are defined by their
        -- respective specifications.
    serverNonce     [4] OCTET STRING OPTIONAL,
        -- Reserved for future hybrid DH+KEM modes. Analogous to
        -- RFC 4556 serverDHNonce. MUST be absent in pure ML-KEM.
    ...
}
]]></sourcecode>
        <t><tt>kemAlgorithm</tt> makes <tt>KDCKEMInfo</tt> self-describing and provides signed
confirmation that the KDC processed the correct algorithm (verified in
<xref target="sec-client-processing"/> step 5), avoiding implicit inference from
<tt>kemct</tt> length alone.</t>
      </section>
      <section anchor="sec-authpack">
        <name>Extended <tt>AuthPack</tt></name>
        <sourcecode type="asn1"><![CDATA[
-- KerberosV5-PK-INIT-SPEC module default (RFC 4556): fields without
-- an explicit IMPLICIT or EXPLICIT keyword are EXPLICIT tagged.
AuthPack ::= SEQUENCE {
    pkAuthenticator     [0] PKAuthenticator,
    clientPublicValue   [1] SubjectPublicKeyInfo OPTIONAL,
        -- DH/ECDH path: ephemeral DH/ECDH public key (RFC 4556).
        -- KEM path:     ephemeral ML-KEM encapsulation key, encoded per
        --               RFC 9935.
        -- RSA path:     MUST be absent.
    supportedCMSTypes   [2] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
        -- Used in RSA path only (deprecated; see RFC 4556 Section 3.1.4).
    clientDHNonce       [3] DHNonce OPTIONAL,
        -- Pure KEM path (this specification): MUST be absent when
        -- clientPublicValue contains a KEM algorithm OID (see
        -- {{sec-asn1-types}}). Future hybrid DH+KEM specifications MAY define
        -- use of this field alongside KEM OIDs.
    supportedKDFs       [4] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
        -- KDFAlgorithmId is AlgorithmIdentifier; no separate type is
        -- defined.
        -- KEM path: HKDF algorithm OIDs ({{sec-kdf-oids}}). Only
        --   HKDF-SHA-512 is defined for the KEM path; this field
        --   SHOULD contain id-alg-hkdf-with-sha512. If absent when a
        --   KEM OID is in clientPublicValue, HKDF-SHA-512 is assumed.
        -- DH/ECDH path: DH-KDF algorithm OIDs (RFC 8636).
    ...
}
]]></sourcecode>
      </section>
      <section anchor="sec-supppubinfo">
        <name><tt>PkinitKEMSuppPubInfo</tt></name>
        <sourcecode type="asn1"><![CDATA[
-- Types imported from RFC 4120 (KerberosV5Spec2 module): Int32
--
-- PkinitKEMSuppPubInfo is not a sub-element of the KEM arm; it is
-- only used as the HKDF "info" parameter ({{sec-kdf-derivation}})
-- and is never transmitted.  Its fields are IMPLICIT tagged rather
-- than inheriting the EXPLICIT TAGS default of
-- KerberosV5-PK-INIT-SPEC (RFC 4556).

PkinitKEMSuppPubInfo ::= SEQUENCE {
    enctype         [0] IMPLICIT Int32,
        -- Kerberos enctype of the AS reply key.
    as-REQ          [1] IMPLICIT OCTET STRING,
        -- DER(AS-REQ).
    kemSignedData   [2] IMPLICIT OCTET STRING,
        -- DER(KEMRepInfo.kemSignedData): the KDC-signed KDCKEMInfo.
    ...
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-mode-selection">
      <name>Mode Selection</name>
      <t>The exchange mode is determined by the algorithm OID in
<tt>clientPublicValue</tt>:</t>
      <table anchor="tab-mode-selection">
        <name>Mode selection by clientPublicValue OID</name>
        <thead>
          <tr>
            <th align="left">clientPublicValue</th>
            <th align="left">OID type</th>
            <th align="left">Mode</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Absent</td>
            <td align="left">—</td>
            <td align="left">RSA path (<tt>encKeyPack</tt>); deprecated by <xref target="I-D.rische-kitten-pkinit-crypto-deprec"/></td>
          </tr>
          <tr>
            <td align="left">Present</td>
            <td align="left">DH or ECDH OID</td>
            <td align="left">DH/ECDH path (<xref target="RFC4556"/> / <xref target="RFC8636"/>)</td>
          </tr>
          <tr>
            <td align="left">Present</td>
            <td align="left">ML-KEM or composite ML-KEM OID</td>
            <td align="left">KEM path (this specification)</td>
          </tr>
          <tr>
            <td align="left">Present</td>
            <td align="left">Unrecognized OID</td>
            <td align="left">Error (see <xref target="sec-downgrade"/>); MUST NOT fall back to RSA path</td>
          </tr>
        </tbody>
      </table>
      <t>For the pure KEM path defined in this specification, when
<tt>clientPublicValue</tt> contains a KEM OID and <tt>clientDHNonce</tt> is also
present, the KDC MUST return <tt>KDC_ERR_PREAUTH_FAILED</tt>.  Future hybrid
DH+KEM specifications may define different nonce semantics and relax this
requirement.</t>
      <t>When present, <tt>supportedKDFs</tt> MUST contain only KDFs applicable to the
path indicated by <tt>clientPublicValue.algorithm</tt>: HKDF algorithm OIDs
(<xref target="sec-kdf-oids"/>) for the KEM path, or DH-KDF algorithm OIDs per
<xref target="RFC8636"/> for the DH/ECDH path.</t>
    </section>
    <section anchor="sec-kem-operation">
      <name>KEM Path Operation</name>
      <section anchor="sec-client-request">
        <name>Client Request Construction</name>
        <ol spacing="normal" type="1"><li>
            <t>Generate a fresh ephemeral KEM key pair <tt>(ek, dk)</tt> for the chosen
algorithm using a cryptographically secure pseudorandom number
generator (CSPRNG).  The security of the KEM path depends entirely on
the unpredictability of <tt>dk</tt> (for ML-KEM CSPRNG requirements, see
<xref target="sec-mlkem-csprng"/>).</t>
          </li>
          <li>
            <t>Encode <tt>ek</tt> as <tt>SubjectPublicKeyInfo</tt> and place it in
<tt>AuthPack.clientPublicValue</tt>.  <tt>parameters</tt> MUST be absent.  For
ML-KEM, encoding follows <xref target="RFC9935"/>.</t>
          </li>
          <li>
            <t>Set <tt>supportedKDFs</tt> to <tt>{ id-alg-hkdf-with-sha512 }</tt>.  If omitted,
HKDF-SHA-512 is assumed.</t>
          </li>
          <li>
            <t>Wrap <tt>AuthPack</tt> as the <tt>eContent</tt> of a CMS <tt>SignedData</tt> (<xref target="RFC5652"/>
Section 5) per <xref target="RFC4556"/> Section 3.2.2 and sign with the client's
signing certificate.  For full quantum resistance, the client SHOULD
use an ML-DSA certificate (<xref target="RFC9881"/>); traditional ECDSA and RSA
certificates are permitted during the transition period.  When
signing with ML-DSA, the CMS <tt>SignedData</tt> MUST conform to
<xref target="RFC9882"/> Section 3 (Signed-Data Conventions).</t>
          </li>
        </ol>
        <t>The ephemeral encapsulation key <tt>ek</tt> is authenticated by the client's
signing certificate via <tt>AuthPack.SignedData</tt> (<xref target="RFC5652"/> Section 5.2),
following the <xref target="RFC4556"/> DH path model. No separate encapsulation
certificate is required.</t>
      </section>
      <section anchor="sec-kdc-response">
        <name>KDC Response Construction</name>
        <t>The KDC's validation of the client request — verifying the CMS <tt>SignedData</tt>
signature over <tt>AuthPack</tt> and validating the client's certificate — follows
<xref target="RFC4556"/> Section 3.2.2 unchanged; a failed signature yields
<tt>KDC_ERR_INVALID_SIG</tt>. This section specifies only the KEM-path-specific steps
that follow validation.</t>
        <ol spacing="normal" type="1"><li>
            <t>Detect the KEM algorithm OID in <tt>clientPublicValue.algorithm</tt>.</t>
          </li>
          <li>
            <t>Check whether the algorithm is supported and meets the KDC's security
policy (per <xref target="RFC4556"/> Section 3.2.2):  </t>
            <t>
a.  If the algorithm OID is not recognized or not implemented, return
    <tt>KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED</tt> (error code 65) with
    <tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt> listing supported algorithms;
    stop.  </t>
            <t>
b.  If the algorithm does not satisfy the KDC's security policy, return
    <tt>KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED</tt> (error code 65) with
    <tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt> listing acceptable algorithms;
    stop.</t>
          </li>
          <li>
            <t>Select a KDF from <tt>supportedKDFs</tt> that is approved for the KEM
algorithm (see <xref target="sec-kdf-oids"/>).  If <tt>supportedKDFs</tt> is absent,
default to <tt>id-alg-hkdf-with-sha512</tt>.  If no approved KDF can be
selected, return <tt>KDC_ERR_NO_ACCEPTABLE_KDF</tt> (error code 100,
<xref target="RFC8636"/>); stop.</t>
          </li>
          <li>
            <t>Call <tt>Encap(ek)</tt> → <tt>(ss, kemct)</tt> using the selected algorithm (see
<xref target="sec-kem-interface"/>).  Exactly one encapsulation MUST be performed per
exchange; the resulting <tt>(ss, kemct)</tt> pair MUST be used in all
subsequent steps (for ML-KEM specifics, see <xref target="sec-mlkem-encap"/>).</t>
          </li>
          <li>
            <t>Build <tt>KDCKEMInfo</tt>:  </t>
            <ul spacing="normal">
              <li>
                <t><tt>kemAlgorithm</tt> = OID from <tt>clientPublicValue.algorithm</tt> (echoed back)</t>
              </li>
              <li>
                <t><tt>kemct</tt> = the ciphertext from step 4</t>
              </li>
              <li>
                <t><tt>kdfAlgorithm</tt> = selected HKDF OID</t>
              </li>
              <li>
                <t><tt>nonce</tt> = <tt>pkAuthenticator.nonce</tt> from the client's request
(SHOULD be included; see <xref target="sec-kdckeminfo"/>)</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Sign <tt>KDCKEMInfo</tt> using CMS SignedData (<xref target="RFC5652"/> Section 5).
ML-DSA is RECOMMENDED; when used, the CMS <tt>SignedData</tt> MUST
conform to <xref target="RFC9882"/> Section 3.  Place in <tt>kemSignedData</tt>.
<tt>eContent</tt> MUST be present.  Step 7 MUST follow step 6 because
<tt>PkinitKEMSuppPubInfo.kemSignedData</tt> is set to the DER encoding of
<tt>KEMRepInfo.kemSignedData</tt> produced in this step.</t>
          </li>
          <li>
            <t>Derive the AS reply key from <tt>ss</tt> per <xref target="sec-kdf"/>.  The KDC uses it to
encrypt the AS-REP <tt>enc-part</tt>.</t>
          </li>
          <li>
            <t>Return <tt>PA-PK-AS-REP.kemInfo</tt> containing <tt>KEMRepInfo</tt>.</t>
          </li>
        </ol>
      </section>
      <section anchor="sec-client-processing">
        <name>Client Response Processing</name>
        <t>The client MUST perform the following steps in order.  On any abort the
client MUST erase <tt>dk</tt> before returning.</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Verify KDC signature</strong> over <tt>kemSignedData</tt>.  Abort if invalid.</t>
          </li>
          <li>
            <t><strong>Enforce KDC signing algorithm</strong>: If the client used a post-quantum
signing certificate, verify that the KDC's <tt>kemSignedData</tt> signature
uses a quantum-resistant algorithm per <xref target="sec-downgrade"/>.  Abort if
the KDC signed with a traditional algorithm.</t>
          </li>
          <li>
            <t><strong>Verify <tt>serverNonce</tt> is absent</strong>: <tt>KDCKEMInfo.serverNonce</tt> MUST NOT
be present in pure ML-KEM exchanges defined by this specification.
Abort if present.</t>
          </li>
          <li>
            <t><strong>Extract and verify nonce</strong>: If <tt>KDCKEMInfo.nonce</tt> is present, it
MUST equal <tt>pkAuthenticator.nonce</tt>.  Abort if not.  If absent,
implementations MUST verify freshness through alternative means
(e.g., timestamp in <tt>PKAuthenticator</tt>); future KEM specifications
MUST define which mechanism applies when nonce is omitted.</t>
          </li>
          <li>
            <t><strong>Verify echoed algorithm</strong>: <tt>KDCKEMInfo.kemAlgorithm</tt> MUST exactly
match the algorithm OID in the client's own
<tt>clientPublicValue.algorithm</tt>.  Abort if they differ.  This confirms
the KDC did not substitute a different algorithm.</t>
          </li>
          <li>
            <t><strong>Validate <tt>kemct</tt> length</strong>: the byte length of <tt>KDCKEMInfo.kemct</tt>
MUST match the fixed ciphertext size for <tt>KDCKEMInfo.kemAlgorithm</tt>
(see <xref target="sec-mlkem-sizes"/> for ML-KEM sizes).  Abort if not.  KEM
algorithms MUST NOT be called on incorrectly-sized ciphertexts.</t>
          </li>
          <li>
            <t><strong>Decapsulate</strong>: <tt>ss = Decap(dk, KDCKEMInfo.kemct)</tt>
using the algorithm in <tt>KDCKEMInfo.kemAlgorithm</tt>.  Erase <tt>dk</tt>
immediately after this call completes, before any further processing.</t>
          </li>
          <li>
            <t><strong>Derive reply key</strong> from <tt>ss</tt> per <xref target="sec-kdf"/>.  Use this key to
decrypt the AS-REP <tt>enc-part</tt>.</t>
          </li>
          <li>
            <t><strong>Confirm <tt>dk</tt> erasure</strong>.  The ephemeral decapsulation key MUST have
been erased in step 7 and MUST NOT be retained.</t>
          </li>
        </ol>
        <t>Steps 1–6 MUST complete before step 7.  Decapsulation MUST NOT be called
on an unauthenticated ciphertext.</t>
      </section>
      <section anchor="sec-cert-validation">
        <name>KDC Certificate Validation</name>
        <t>The KDC certificate validation rules of <xref target="RFC4556"/> Section 3.2.3 apply
unchanged to <tt>kemSignedData</tt>.  The client uses the same trust anchors and
validation procedure as for the DH path.</t>
      </section>
    </section>
    <section anchor="sec-kdf">
      <name>AS Reply Key Derivation</name>
      <section anchor="sec-kdf-oids">
        <name>HKDF OIDs</name>
        <t>The KEM path uses <xref target="RFC8636"/>'s KDF negotiation mechanism via
<tt>supportedKDFs</tt>. For ML-KEM and composite ML-KEM, this specification
approves only HKDF-SHA-512:</t>
        <sourcecode type="asn1"><![CDATA[
id-alg-hkdf-with-sha512 OBJECT IDENTIFIER ::=
    { 1 2 840 113549 1 9 16 3 30 }
]]></sourcecode>
        <table anchor="tab-kdf-oids">
          <name>Approved KDFs for ML-KEM</name>
          <thead>
            <tr>
              <th align="left">OID</th>
              <th align="left">Hash</th>
              <th align="left">Conformance for ML-KEM</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>id-alg-hkdf-with-sha512</tt></td>
              <td align="left">SHA-512</td>
              <td align="left">MUST implement</td>
            </tr>
          </tbody>
        </table>
        <t>When <tt>clientPublicValue.algorithm</tt> contains an ML-KEM or composite ML-KEM
OID, the KDC selects a KDF from <tt>supportedKDFs</tt> that appears in the
approved list above. If <tt>supportedKDFs</tt> is absent, the KDC defaults to
<tt>id-alg-hkdf-with-sha512</tt>. If <tt>supportedKDFs</tt> is present but contains no
approved KDF, the KDC returns <tt>KDC_ERR_NO_ACCEPTABLE_KDF</tt> per
<xref target="sec-kdc-response"/> step 3; it MUST NOT silently substitute a KDF the
client did not offer.</t>
      </section>
      <section anchor="sec-kdf-derivation">
        <name>Derivation</name>
        <artwork><![CDATA[
reply_key_material = HKDF-SHA-512(
    IKM  = ss,
        -- ML-KEM.Decaps output (see {{sec-mlkem-sizes}} for ML-KEM sizes)
    salt = <not provided>,
        -- defaults to HashLen zero bytes (RFC 5869 Section 2.2);
        -- ss is uniformly random so extraction is unnecessary
    info = DER(PkinitKEMSuppPubInfo),
    L    = <random-to-key input length for enctype>
)
reply_key = random-to-key(reply_key_material)
    -- per RFC 3961 Section 3
]]></artwork>
        <t><tt>L</tt> is the <tt>random-to-key</tt> input string length for the Kerberos enctype
in <tt>PkinitKEMSuppPubInfo.enctype</tt>, as defined in the enctype's
specification:</t>
        <table anchor="tab-kdf-length">
          <name>random-to-key input lengths by enctype</name>
          <thead>
            <tr>
              <th align="left">Enctype</th>
              <th align="left">L</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>aes128-cts-hmac-sha256-128</tt> (<xref target="RFC8009"/>)</td>
              <td align="left">16 bytes</td>
            </tr>
            <tr>
              <td align="left">
                <tt>aes256-cts-hmac-sha384-192</tt> (<xref target="RFC8009"/>)</td>
              <td align="left">32 bytes</td>
            </tr>
          </tbody>
        </table>
        <t>For these enctypes <tt>random-to-key</tt> is the identity function.  Other
enctypes use the key-generation seedlength from their <xref target="RFC3961"/> crypto
profile.</t>
        <t><tt>PkinitKEMSuppPubInfo.kemSignedData</tt> is set to
<tt>DER(KEMRepInfo.kemSignedData)</tt>: the KDC-signed <tt>KDCKEMInfo</tt> only, not
the full <tt>PA-PK-AS-REP</tt>.  This avoids a circular dependency: the full
response cannot be included in the context used to derive the key that
protects it.</t>
        <t>The value <tt>reply_key</tt> produced by this derivation IS the AS reply key
used to encrypt the Kerberos AS-REP <tt>enc-part</tt>.  Both the KDC and the
client independently derive the same value from <tt>ss</tt> using the KDF
algorithm and context recorded in <tt>PkinitKEMSuppPubInfo</tt>.  The reply key
is never transmitted; both parties arrive at it through independent
computation.</t>
      </section>
    </section>
    <section anchor="sec-errors">
      <name>Error Handling</name>
      <section anchor="sec-proactive-adv">
        <name>Proactive Advertisement</name>
        <t><xref target="RFC4556"/> Section 3.4 specifies that the <tt>padata-value</tt> of the
<tt>PA_PK_AS_REQ</tt> element in the <tt>KDC_ERR_PREAUTH_REQUIRED</tt> <tt>METHOD-DATA</tt>
MUST be empty, and that "future extensions to this protocol may specify
other data to send instead of an empty OCTET STRING."  This specification
defines such an extension.</t>
        <t>A KDC SHOULD populate the <tt>padata-value</tt> of the <tt>PA_PK_AS_REQ</tt> element
with the DER encoding of <tt>PA-PK-AS-REQ-Hint</tt>:</t>
        <sourcecode type="asn1"><![CDATA[
PA-PK-AS-REQ-Hint ::= SEQUENCE {
    ephemeralKeyParameters [0] SEQUENCE OF AlgorithmIdentifier
                                   OPTIONAL,
        -- DH, ECDH, ML-KEM, and composite ML-KEM algorithms
        -- the KDC supports, in decreasing preference order.
    ...
}
]]></sourcecode>
        <t>Clients that understand <tt>PA-PK-AS-REQ-Hint</tt> SHOULD use the
<tt>ephemeralKeyParameters</tt> field to select an ephemeral key algorithm for
their first PKINIT attempt.  Clients that do not understand this extension
will ignore the <tt>padata-value</tt> as required by <xref target="RFC4556"/> Section 3.4.</t>
      </section>
      <section anchor="sec-ephemeral-key-errors">
        <name>Ephemeral Key Parameter Errors</name>
        <t>When the algorithm and parameter set in <tt>clientPublicValue.algorithm</tt> does
not satisfy the KDC's security policy, the KDC returns:</t>
        <artwork><![CDATA[
KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED    65
]]></artwork>
        <t>This error code is a renamed and expanded version of
<tt>KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED</tt> from <xref target="RFC4556"/>, which already
covers DH (<xref target="RFC4556"/>) and ECDH (<xref target="RFC5349"/>). The error code number (65)
is reused; this specification extends the scope to also cover ML-KEM and
composite ML-KEM.</t>
        <t>This error is returned when:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm OID is not recognized or not implemented by the KDC</t>
          </li>
          <li>
            <t>The algorithm does not meet the KDC's security requirements</t>
          </li>
        </ul>
        <t>The KDC SHOULD include <tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt> in the error
response.  <tt>TD-EPHEMERAL-KEY-PARAMETERS</tt> (formerly <tt>TD-DH-PARAMETERS</tt>)
reuses the existing IANA integer from <xref target="RFC4556"/> Section 3.2.2.  The
ASN.1 encoding is unchanged; <xref target="RFC5349"/> extended the scope to include
ECDH, and this specification further extends it to include ML-KEM and
composite ML-KEM parameter sets.</t>
        <sourcecode type="asn1"><![CDATA[
TD-EPHEMERAL-KEY-PARAMETERS-DATA ::= SEQUENCE OF AlgorithmIdentifier
]]></sourcecode>
        <t>After receiving this error, the client follows <xref target="RFC4556"/> Section 3.2.2
retry behavior, selecting a different parameter set from
<tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt> that satisfies the client's security
policy. If no mutually acceptable parameter set exists, the exchange
MUST be terminated.</t>
      </section>
      <section anchor="sec-kem-errors">
        <name>KEM Path Errors</name>
        <t>When <tt>clientPublicValue</tt> contains a KEM OID, the KDC MUST NOT return DH
digest negotiation errors (<tt>KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED</tt>,
<tt>KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED</tt>). The only applicable error for
parameter negotiation failure on the KEM path is
<tt>KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED</tt> (<xref target="sec-ephemeral-key-errors"/>).</t>
      </section>
    </section>
    <section anchor="sec-downgrade">
      <name>Downgrade Prevention</name>
      <t>When a client uses a post-quantum certificate (e.g., ML-DSA per <xref target="RFC9881"/>,
composite ML-DSA per <xref target="I-D.ietf-lamps-pq-composite-sigs"/>, or future
quantum-resistant signature algorithms) and sends a post-quantum KEM
encapsulation key (ML-KEM or composite ML-KEM) in <tt>clientPublicValue</tt>, the
following rules apply:</t>
      <ul spacing="normal">
        <li>
          <t>The client MUST NOT fall back to traditional key-establishment algorithms
(DH, ECDH, RSA).  The client MAY retry with a different post-quantum KEM
algorithm from <xref target="sec-kem-errors"/>.  If no post-quantum KEM is available,
the client MUST fail the authentication attempt.</t>
        </li>
        <li>
          <t>The client MUST verify that the KDC's <tt>kemSignedData</tt> signature was
produced using a quantum-resistant algorithm (e.g., ML-DSA per
<xref target="RFC9882"/>, composite ML-DSA per
<xref target="I-D.ietf-lamps-pq-composite-sigs"/>, or future quantum-resistant
signature algorithms).  If the KDC signed with a traditional algorithm
(RSA, ECDSA), the client MUST reject the response.</t>
        </li>
      </ul>
      <t>These rules ensure that quantum-resistant authentication and key
establishment are paired end-to-end when the client's certificate indicates
a commitment to post-quantum security.  See <xref target="sec-security"/> for further
discussion.</t>
      <t>Clients using traditional certificates MAY fall back from post-quantum KEM
to traditional key establishment for backward compatibility with
non-upgraded KDCs.  The security considerations regarding unauthenticated
error messages in <xref target="RFC4556"/> Section 5 apply.</t>
    </section>
    <section anchor="sec-algorithms">
      <name>Algorithm Requirements</name>
      <section anchor="sec-kem-algs">
        <name>KEM Algorithms</name>
        <section anchor="sec-pure-mlkem">
          <name>Pure ML-KEM Algorithms</name>
          <table anchor="tab-pure-mlkem">
            <name>Pure ML-KEM algorithm requirements</name>
            <thead>
              <tr>
                <th align="left">Algorithm</th>
                <th align="left">OID</th>
                <th align="left">NIST Category</th>
                <th align="left">Conformance</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">ML-KEM-512</td>
                <td align="left">2.16.840.1.101.3.4.4.1</td>
                <td align="left">1</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">ML-KEM-768</td>
                <td align="left">2.16.840.1.101.3.4.4.2</td>
                <td align="left">3</td>
                <td align="left">MUST implement</td>
              </tr>
              <tr>
                <td align="left">ML-KEM-1024</td>
                <td align="left">2.16.840.1.101.3.4.4.3</td>
                <td align="left">5</td>
                <td align="left">SHOULD</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-composite-kem">
          <name>Composite ML-KEM Algorithms</name>
          <table anchor="tab-composite-kem">
            <name>Composite ML-KEM algorithm requirements</name>
            <thead>
              <tr>
                <th align="left">Algorithm</th>
                <th align="left">OID</th>
                <th align="left">NIST Category</th>
                <th align="left">Conformance</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">id-MLKEM768-ECDH-P256-SHA3-256</td>
                <td align="left">1.3.6.1.5.5.7.6.59</td>
                <td align="left">3</td>
                <td align="left">SHOULD</td>
              </tr>
              <tr>
                <td align="left">id-MLKEM768-X25519-SHA3-256</td>
                <td align="left">1.3.6.1.5.5.7.6.58</td>
                <td align="left">3</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">id-MLKEM1024-ECDH-P384-SHA3-256</td>
                <td align="left">1.3.6.1.5.5.7.6.63</td>
                <td align="left">5</td>
                <td align="left">SHOULD</td>
              </tr>
            </tbody>
          </table>
          <t>Composite algorithms are defined in
<xref target="I-D.ietf-lamps-pq-composite-kem"/>.</t>
        </section>
      </section>
      <section anchor="sec-client-alg-selection">
        <name>Client Algorithm Selection</name>
        <t>As with <xref target="RFC4556"/> DH path algorithm selection, the client selects which
KEM algorithm to use based on local policy. Algorithm selection is
implementation-defined.</t>
        <t>If the client receives proactive advertisement (<xref target="sec-proactive-adv"/>) and
supports none of the advertised algorithms, it MUST fail the authentication
attempt rather than trying an unadvertised algorithm.</t>
      </section>
      <section anchor="sec-min-security">
        <name>KDC Security Policy</name>
        <t>As with <xref target="RFC4556"/> Section 3.2.2, the KDC enforces a security policy for
ephemeral key algorithms. The specific policy is implementation-defined.</t>
        <t>For ML-KEM, implementations MAY use NIST security categories as a basis for
policy decisions:</t>
        <table anchor="tab-security-levels">
          <name>NIST security categories for ML-KEM</name>
          <thead>
            <tr>
              <th align="left">Category</th>
              <th align="left">Algorithm</th>
              <th align="left">Post-quantum bit security</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">ML-KEM-512</td>
              <td align="left">128 bits</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">ML-KEM-768</td>
              <td align="left">192 bits</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">ML-KEM-1024</td>
              <td align="left">256 bits</td>
            </tr>
          </tbody>
        </table>
        <t>NIST recommends ML-KEM-768 (Category 3) as the default parameter set, as it
provides a large security margin at a reasonable performance cost. Composite
parameter sets combining ML-KEM with traditional algorithms provide the
security category of their ML-KEM component for post-quantum resistance.</t>
      </section>
    </section>
    <section anchor="sec-message-size">
      <name>Message Size Considerations</name>
      <t>An <tt>AuthPack</tt> with an ephemeral ML-KEM-768 encapsulation key (1184 bytes,
see <xref target="sec-mlkem-sizes"/>) signed with ML-DSA-65 (3309-bytes signature
<xref target="FIPS204"/>) will exceed UDP datagram limits.  TCP transport (<xref target="RFC5021"/>)
is REQUIRED for ML-KEM PKINIT.  All Kerberos infrastructure (KDCs, clients,
firewalls) MUST support TCP Kerberos before enabling ML-KEM PKINIT.</t>
    </section>
    <section anchor="sec-mlkem">
      <name>ML-KEM-Specific Considerations</name>
      <t>This section captures behavior specific to ML-KEM (<xref target="FIPS203"/>).  When
this specification is extended to other KEM algorithms, per-algorithm
sections following this structure SHOULD be added.  The core protocol
defined in <xref target="sec-kem-interface"/> through <xref target="sec-errors"/> is intentionally
algorithm-agnostic; ML-KEM details are isolated here following the model
of <xref target="RFC3961"/>.</t>
      <section anchor="sec-mlkem-sizes">
        <name>Key and Ciphertext Sizes</name>
        <t>All sizes are fixed by <xref target="FIPS203"/>; no variability is permitted.</t>
        <table anchor="tab-mlkem-sizes">
          <name>ML-KEM fixed key and ciphertext sizes</name>
          <thead>
            <tr>
              <th align="left">Algorithm</th>
              <th align="left">Encapsulation key</th>
              <th align="left">Ciphertext</th>
              <th align="left">Shared secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ML-KEM-512</td>
              <td align="left">800 bytes</td>
              <td align="left">768 bytes</td>
              <td align="left">32 bytes</td>
            </tr>
            <tr>
              <td align="left">ML-KEM-768</td>
              <td align="left">1184 bytes</td>
              <td align="left">1088 bytes</td>
              <td align="left">32 bytes</td>
            </tr>
            <tr>
              <td align="left">ML-KEM-1024</td>
              <td align="left">1568 bytes</td>
              <td align="left">1568 bytes</td>
              <td align="left">32 bytes</td>
            </tr>
          </tbody>
        </table>
        <t>The client MUST validate <tt>KDCKEMInfo.kemct</tt> length against these values
before calling Decapsulate (<xref target="sec-client-processing"/> step 6).
<xref target="FIPS203"/> does not define behavior for <tt>ML-KEM.Decaps</tt> on
incorrectly-sized input.</t>
      </section>
      <section anchor="sec-mlkem-csprng">
        <name>CSPRNG Requirement</name>
        <t>Both ML-KEM key generation and encapsulation MUST use a cryptographically
secure pseudorandom number generator (CSPRNG) satisfying the requirements
of <xref target="FIPS203"/> Section 3.3.  The security of the KEM path depends on:</t>
        <ul spacing="normal">
          <li>
            <t>Client-side: the unpredictability of the ephemeral decapsulation key <tt>dk</tt>
during key generation.</t>
          </li>
          <li>
            <t>KDC-side: the unpredictability of the randomness used during
<tt>ML-KEM.Encaps(ek)</tt>, which produces the shared secret <tt>ss</tt> and ciphertext
<tt>kemct</tt>.</t>
          </li>
        </ul>
        <t>A weak or predictable RNG on either side compromises the AS reply key.</t>
      </section>
      <section anchor="sec-mlkem-encap">
        <name>Encapsulation and Decapsulation</name>
        <dl>
          <dt>KDC:</dt>
          <dd>
            <t><tt>(ss, kemct) = ML-KEM.Encaps(ek)</tt> per <xref target="sec-kdc-response"/> step 4.</t>
          </dd>
          <dt>Client:</dt>
          <dd>
            <t><tt>ss = ML-KEM.Decaps(dk, kemct)</tt> per <xref target="sec-client-processing"/> step 7,
followed by immediate <tt>dk</tt> erasure.</t>
          </dd>
        </dl>
        <t>The shared secret <tt>ss</tt> is 32 bytes for all three ML-KEM variants.</t>
      </section>
    </section>
    <section anchor="sec-security">
      <name>Security Considerations</name>
      <section anchor="quantum-resistance">
        <name>Quantum Resistance</name>
        <t>The KEM path achieves post-quantum confidentiality only when both the KEM
algorithm and the KDC signing algorithm are quantum-resistant.  Using
ML-KEM with a traditional ECDSA or RSA signing certificate provides PQC key
establishment but not PQC authentication; an adversary with a quantum
computer could impersonate the KDC by forging its traditional signature.
Deployers seeking full quantum resistance MUST use ML-DSA (<xref target="RFC9881"/>)
or a composite ML-DSA variant (<xref target="I-D.ietf-lamps-pq-composite-sigs"/>) for
KDC signing.  When the client itself uses a post-quantum signing
certificate, the downgrade prevention rules in <xref target="sec-downgrade"/> require the
client to enforce quantum-resistant KDC authentication as well, ensuring
end-to-end quantum resistance.</t>
      </section>
      <section anchor="ephemeral-decapsulation-key-hygiene">
        <name>Ephemeral Decapsulation Key Hygiene</name>
        <t>The ephemeral decapsulation key <tt>dk</tt> MUST be erased as soon as
decapsulation completes (<xref target="sec-client-processing"/> step 7).  Failure to
erase <tt>dk</tt> negates forward secrecy: an attacker who later recovers
<tt>dk</tt> can recompute <tt>ss</tt> and derive the AS reply key for any recorded
exchange that used the corresponding <tt>ek</tt>.</t>
      </section>
      <section anchor="authenticated-kdf-inputs">
        <name>Authenticated KDF Inputs</name>
        <t><xref target="RFC8636"/> leaves the KDF algorithm unprotected: a man-in-the-middle
could modify the <tt>kdfAlgorithm</tt> field before the client processes the
response.  This specification places <tt>kdfAlgorithm</tt> inside the
KDC-signed <tt>KDCKEMInfo</tt>, making it authenticated.  Clients MUST NOT
derive a reply key using an algorithm not present in the signed
structure.</t>
      </section>
      <section anchor="unauthenticated-error-messages">
        <name>Unauthenticated Error Messages</name>
        <t>The security considerations in <xref target="RFC4556"/> Section 5 regarding unauthenticated
<tt>KRB-ERROR</tt> messages apply to <tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt>. Clients MUST
enforce their configured security policy regardless of advertised algorithms.</t>
      </section>
      <section anchor="algorithm-downgrade-prevention">
        <name>Algorithm Downgrade Prevention</name>
        <t>The downgrade prevention rules in <xref target="sec-downgrade"/> are mandatory and
unconditional.  A client that allows a fallback from the KEM path to the
DH/RSA path on receiving a traditional response exposes the session to an
active attacker who can exploit a traditional-path vulnerability.</t>
      </section>
      <section anchor="nonce-generation">
        <name>Nonce Generation</name>
        <t>The nonce in <tt>PKAuthenticator</tt> provides replay protection. Implementations
MUST generate nonces from a Deterministic Random Bit Generator (DRBG)
approved by <xref target="SP800-90A"/>. Counter-based or predictable nonces compromise
replay protection.</t>
      </section>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <section anchor="new-kerberos-error-code">
        <name>New Kerberos Error Code</name>
        <t>IANA is requested to assign a new Kerberos Message Error Code in the
"Kerberos Message Error Codes" sub-registry of the "Kerberos Parameters"
registry:</t>
        <table anchor="tab-iana-error">
          <name>Renamed Kerberos error code</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Old Name</th>
              <th align="left">New Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">65</td>
              <td align="left">
                <tt>KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED</tt></td>
              <td align="left">
                <tt>KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED</tt></td>
              <td align="left">
                <xref target="RFC4556"/>, This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="new-pkinit-oid">
        <name>New PKINIT OID</name>
        <t>IANA is requested to assign a new object identifier under the PKINIT OID
arc (<tt>id-pkinit</tt>, <tt>1.3.6.1.5.2.3</tt>) in the "SMI Security for PKIX
Module Identifier" registry:</t>
        <table anchor="tab-iana-oid">
          <name>New PKINIT OID assignment</name>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">
                <tt>id-pkinit-KEMKeyData</tt></td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="update-to-kerberos-pre-authentication-data-types-registry">
        <name>Update to Kerberos Pre-Authentication Data Types Registry</name>
        <t>IANA is requested to update the description of the existing entry for
<tt>TD-DH-PARAMETERS</tt> in the "Kerberos Pre-Authentication Data Types"
sub-registry of the "Kerberos Parameters" registry:</t>
        <dl>
          <dt>Old description:</dt>
          <dd>
            <t>"Typed data for <tt>KDC_ERR_KEY_TOO_WEAK</tt>; contains a list of acceptable
Diffie-Hellman algorithm identifiers."</t>
          </dd>
          <dt>New name and description:</dt>
          <dd>
            <t><tt>TD-EPHEMERAL-KEY-PARAMETERS</tt>, "Typed data for
<tt>KDC_ERR_EPHEMERAL_KEY_PARAMS_NOT_ACCEPTED</tt> and <tt>KDC_ERR_KEY_TOO_WEAK</tt>; contains
a list of acceptable ephemeral key-establishment algorithm identifiers,
including DH, ECDH, ML-KEM, and composite ML-KEM algorithms."</t>
          </dd>
        </dl>
        <t>The integer value and ASN.1 encoding (<tt>SEQUENCE OF AlgorithmIdentifier</tt>)
are unchanged.  No new integer allocation is required.</t>
      </section>
    </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="RFC3961">
          <front>
            <title>Encryption and Checksum Specifications for Kerberos 5</title>
            <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
            <date month="February" year="2005"/>
            <abstract>
              <t>This document describes a framework for defining encryption and checksum mechanisms for use with the Kerberos protocol, defining an abstraction layer between the Kerberos protocol and related protocols, and the actual mechanisms themselves. The document also defines several mechanisms. Some are taken from RFC 1510, modified in form to fit this new framework and occasionally modified in content when the old specification was incorrect. New mechanisms are presented here as well. This document does NOT indicate which mechanisms may be considered "required to implement". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3961"/>
          <seriesInfo name="DOI" value="10.17487/RFC3961"/>
        </reference>
        <reference anchor="RFC4120">
          <front>
            <title>The Kerberos Network Authentication Service (V5)</title>
            <author fullname="C. Neuman" initials="C." surname="Neuman"/>
            <author fullname="T. Yu" initials="T." surname="Yu"/>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This document provides an overview and specification of Version 5 of the Kerberos protocol, and it obsoletes RFC 1510 to clarify aspects of the protocol and its intended use that require more detailed or clearer explanation than was provided in RFC 1510. This document is intended to provide a detailed description of the protocol, suitable for implementation, together with descriptions of the appropriate use of protocol messages and fields within those messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4120"/>
          <seriesInfo name="DOI" value="10.17487/RFC4120"/>
        </reference>
        <reference anchor="RFC4556">
          <front>
            <title>Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)</title>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="B. Tung" initials="B." surname="Tung"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>This document describes protocol extensions (hereafter called PKINIT) to the Kerberos protocol specification. These extensions provide a method for integrating public key cryptography into the initial authentication exchange, by using asymmetric-key signature and/or encryption algorithms in pre-authentication data fields. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4556"/>
          <seriesInfo name="DOI" value="10.17487/RFC4556"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </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="RFC8009">
          <front>
            <title>AES Encryption with HMAC-SHA2 for Kerberos 5</title>
            <author fullname="M. Jenkins" initials="M." surname="Jenkins"/>
            <author fullname="M. Peck" initials="M." surname="Peck"/>
            <author fullname="K. Burgin" initials="K." surname="Burgin"/>
            <date month="October" year="2016"/>
            <abstract>
              <t>This document specifies two encryption types and two corresponding checksum types for Kerberos 5. The new types use AES in CTS mode (CBC mode with ciphertext stealing) for confidentiality and HMAC with a SHA-2 hash for integrity.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8009"/>
          <seriesInfo name="DOI" value="10.17487/RFC8009"/>
        </reference>
        <reference anchor="RFC8619">
          <front>
            <title>Algorithm Identifiers for the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>RFC 5869 specifies the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) algorithm. This document assigns algorithm identifiers to the HKDF algorithm when used with three common one-way hash functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8619"/>
          <seriesInfo name="DOI" value="10.17487/RFC8619"/>
        </reference>
        <reference anchor="RFC8636">
          <front>
            <title>Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) Algorithm Agility</title>
            <author fullname="L. Hornquist Astrand" initials="L." surname="Hornquist Astrand"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="M. Cullen" initials="M." surname="Cullen"/>
            <author fullname="G. Hudson" initials="G." surname="Hudson"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document updates the Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) standard (RFC 4556) to remove protocol structures tied to specific cryptographic algorithms. The PKINIT key derivation function is made negotiable, and the digest algorithms for signing the pre-authentication data and the client's X.509 certificates are made discoverable.</t>
              <t>These changes provide preemptive protection against vulnerabilities discovered in the future in any specific cryptographic algorithm and allow incremental deployment of newer algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8636"/>
          <seriesInfo name="DOI" value="10.17487/RFC8636"/>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </reference>
        <reference anchor="RFC9935">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM)</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a quantum-resistant Key Encapsulation Mechanism. This document specifies the conventions for using the ML-KEM in X.509 Public Key Infrastructure. The conventions for the subject public keys and private keys are also specified.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9935"/>
          <seriesInfo name="DOI" value="10.17487/RFC9935"/>
        </reference>
        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="203"/>
        </reference>
        <reference anchor="SP800-90A" target="https://doi.org/10.6028/NIST.SP.800-90Ar1">
          <front>
            <title>Recommendation for Random Number Generation Using Deterministic Random Bit Generators</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="June"/>
          </front>
          <seriesInfo name="NIST SP" value="800-90A Rev. 1"/>
        </reference>
        <reference anchor="RFC9882">
          <front>
            <title>Use of the ML-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="B. Salter" initials="B." surname="Salter"/>
            <author fullname="A. Raine" initials="A." surname="Raine"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>The Module-Lattice-Based Digital Signature Algorithm (ML-DSA), as defined by NIST in FIPS 204, is a post-quantum digital signature scheme that aims to be secure against an adversary in possession of a Cryptographically Relevant Quantum Computer (CRQC). This document specifies the conventions for using the ML-DSA signature algorithm with the Cryptographic Message Syntax (CMS). In addition, the algorithm identifier syntax is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9882"/>
          <seriesInfo name="DOI" value="10.17487/RFC9882"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-pq-composite-kem">
          <front>
            <title>Composite ML-KEM for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="1" month="September" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST ML-KEM in hybrid with
   traditional algorithms RSA-OAEP, ECDH, X25519, and X448.  These
   combinations are tailored to meet security best practices and
   regulatory guidelines.  Composite ML-KEM is applicable in any
   application that uses X.509 or PKIX data structures that accept ML-
   KEM, but where the operator wants extra protection against breaks or
   catastrophic bugs in ML-KEM.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-21"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-pq-composite-sigs">
          <front>
            <title>Composite Module-Lattice-Based Digital Signature Algorithm (ML-DSA) for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST Module-Lattice-Based
   Digital Signature Algorithm (ML-DSA) in hybrid with traditional
   algorithms RSASSA-PKCS1-v1.5, RSASSA-PSS, ECDSA, Ed25519, and Ed448.
   These combinations are tailored to meet regulatory guidelines in
   certain regions.  Composite ML-DSA is applicable in applications that
   use X.509 or PKIX data structures that accept ML-DSA, but where the
   operator wants extra protection against breaks or catastrophic bugs
   in ML-DSA, and where existential unforgeability (EUF-CMA) level
   security is acceptable.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-19"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5021">
          <front>
            <title>Extended Kerberos Version 5 Key Distribution Center (KDC) Exchanges over TCP</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This document describes an extensibility mechanism for the Kerberos V5 protocol when used over TCP transports. The mechanism uses the reserved high-bit in the length field. It can be used to negotiate TCP-specific Kerberos extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5021"/>
          <seriesInfo name="DOI" value="10.17487/RFC5021"/>
        </reference>
        <reference anchor="RFC5349">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)</title>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="K. Jaganathan" initials="K." surname="Jaganathan"/>
            <author fullname="K. Lauter" initials="K." surname="Lauter"/>
            <date month="September" year="2008"/>
            <abstract>
              <t>This document describes the use of Elliptic Curve certificates, Elliptic Curve signature schemes and Elliptic Curve Diffie-Hellman (ECDH) key agreement within the framework of PKINIT -- the Kerberos Version 5 extension that provides for the use of public key cryptography. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5349"/>
          <seriesInfo name="DOI" value="10.17487/RFC5349"/>
        </reference>
        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="204"/>
        </reference>
        <reference anchor="I-D.rische-kitten-pkinit-crypto-deprec">
          <front>
            <title>Deprecation of Outdated Cryptographic Algorithms and Parameters in Kerberos PKINIT</title>
            <author fullname="Julien Rische" initials="J." surname="Rische">
              <organization>Red Hat, Inc.</organization>
            </author>
            <date day="23" month="June" year="2026"/>
            <abstract>
              <t>   This document deprecates several outdated cryptographic algorithms
   and parameters from the Kerberos PKINIT specification (RFC 4556) and
   its extensions (RFC 5349, RFC 8636).  Specifically, it deprecates the
   RSA key transport mechanism for reply key delivery, the Diffie-
   Hellman MODP group 2 (1024-bit) parameter, the SHA-1-based
   octetstring2key key derivation function, and the
   sha1WithRSAEncryption CMS signature algorithm.  It also defines a new
   paChecksum2 field in the PKAuthenticator structure to provide
   checksum algorithm agility.

   This document updates RFC 4556, RFC 5349, and RFC 8636.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rische-kitten-pkinit-crypto-deprec-00"/>
        </reference>
      </references>
    </references>
    <?line 874?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors thank the IETF KITTEN and LAMPS working groups for
discussion of post-quantum PKINIT approaches, and the NIST team for
<xref target="FIPS203"/> and <xref target="FIPS204"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/G/4NNmX3IgAAA==

-->

</rfc>
