<?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.39 (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-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <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-01"/>
    <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>
    <author initials="N." surname="Williams" fullname="Nico Williams">
      <organization>Cryptonector</organization>
      <address>
        <email>nico@cryptonector.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="26"/>
    <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 92?>

<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 105?>

<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"/> uses an <tt>IMPLICIT TAGS</tt> module environment.  All three arms
are <tt>IMPLICIT OCTET STRING</tt> carrying DER-encoded structures; receivers
identify the chosen arm by the context tag alone.</t>
        <sourcecode type="asn1"><![CDATA[
-- KRB5PkinitTypes DEFINITIONS IMPLICIT TAGS ::= BEGIN
PA-PK-AS-REP ::= CHOICE {
    dhSignedData    [0] IMPLICIT OCTET STRING,
        -- RFC 4556: DH/ECDH path
        --   content: KDCDHKeyInfo ({{RFC4556}} Section 3.2.3.1)
    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>
        <t>The field name <tt>dhSignedData</tt> matches RFC 4556's actual ASN.1 module;
the informal name <tt>dhInfo</tt> used in some descriptions refers to the same
arm.</t>
        <t>Tag <tt>[2]</tt> MUST be verified against the IANA Kerberos PKINIT Parameters
registry before publication to confirm no other extension has claimed it.</t>
      </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 }

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[
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[
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 (KerberosV5 module): Int32

PkinitKEMSuppPubInfo ::= SEQUENCE {
    enctype         [0] Int32,
        -- Kerberos enctype of the AS reply key.
    as-REQ          [1] OCTET STRING,
        -- DER(AS-REQ).
    kemSignedData   [2] 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.</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>
        <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) with
ML-DSA (<xref target="RFC9882"/>) RECOMMENDED.  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 or contains no approved
KDF, the KDC defaults to <tt>id-alg-hkdf-with-sha512</tt>.</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>A KDC SHOULD include <tt>TD-EPHEMERAL-KEY-PARAMETERS-DATA</tt> in
<tt>KDC_ERR_PREAUTH_REQUIRED</tt> to allow the client to select an acceptable
algorithm on its first attempt. This avoids a retry round trip, which is
particularly valuable for post-quantum deployments where both ML-DSA
signatures and ML-KEM encapsulation keys are significantly larger than their
traditional counterparts, making the overhead of a failed attempt much
higher.</t>
        <sourcecode type="asn1"><![CDATA[
-- TD-EPHEMERAL-KEY-PARAMETERS (formerly TD-DH-PARAMETERS) reuses the
-- existing IANA integer from RFC 4556 Section 3.2.2. The ASN.1 encoding
-- is unchanged (SEQUENCE OF AlgorithmIdentifier); RFC 5349 extended the
-- scope to include ECDH. This specification further extends it to include
-- ML-KEM and composite ML-KEM parameter sets.

TD-EPHEMERAL-KEY-PARAMETERS-DATA ::= SEQUENCE OF AlgorithmIdentifier
    -- DH, ECDH, ML-KEM, and composite ML-KEM algorithms the KDC supports,
    -- in decreasing preference order (RFC 4556 Section 3.2.2).
]]></sourcecode>
      </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> (as defined in
<xref target="sec-proactive-adv"/>) in the error response. 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="15" month="June" 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-16"/>
        </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 846?>

<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:
H4sIAAAAAAAAA81963LbSJbmfzxFjurHkB4CJepmSR73DE3SJbUtiUXKXdPR
sWFCZFJCiwTYAChZbaljfu0D7MwD7LPso/ST7LnkFQQleXdjY6qjqygSeTt5
7ufLRBiGQZmUc3kstgZZUYZ/WcVpuVqIT/JB9NNJvCxW87hMslTcJ+WNOPsc
fuqfiSQVg9XVPJnQc938YVlm13m8vHkQsywXp2lSJvFcdFbljUzLZMI9QKtP
Mr+SeVaIxuDT6fnpZXMriK+ucnmH49M34eDX7lYwzSZpvIBZTfN4VoZX2W12
lz2Et0lZyjRc3iYwQrj8yyTcbgfQu7zO8odjUZTToFhdLZKigPHKhyV0cNq/
/Bgky/xYlPmqKHe2t4+2d4I4lzEMOZKTVZ6UD1vBfZbfXufZagnfdrPFAqZb
mf2lnNyk2Ty7fhDn8lspfpGpzOmnreBWPkAH0+NAiNCskf7gRdHHpUNf+oKJ
qT/2Rh1uDl8FRRmn06/xPEthCQ+yCJYJdl5mE/5TiCLLy1zOCvP3w8L9c5It
lvGkNL+ursw3aRYEMawty2m+8H8BWwMtO5H4wISm73gDOnP5DeYic++3LL+O
0+SvtPxjMZRTcRKXLdj4SUS/y0WczI9FrDbuX3M5vYnLCOYQ+GP+PhLDpJjc
SGfI36/miUzd71853J9zarJ5tPNI/JbM50m8KJzxzpNJ5n/vj8f8ncpJmeXu
cCm0+9eJ8yOPmGb5AlreSSTv8GN3p90+Uh8P22/31Mfdo4O2+rjX3tnWH/f3
D9TH/YP9Hf3x8MD0APyrPx7Yfg92dbOjw0Pd79HR7j5+/Hg6GO1s7x7T3LW0
n2XT1VyGn+MSOFyGH+ICqArSHPpSfwZcD6QoFmKELBnn0y3uJs6vJTDTTVku
i+Off55mSQRU+7m9HR1s7xz+fH46uoxw4AhGphZTENNjsbO9sxduH9I3lgkV
zWFa5zQs6I7TtICprkopspkZuxDwX1cSGzhOk6dUyDyRRZLOMt3lFk5ADL58
2IKeYR743GgAJAyPtjs+OYYS9m4hYRRaNmqxIYyVLcT5agHi7Ii7+AKDXIue
LGW+AEUE85zohz8kRjFkefEDpBoNIjWvvO2Rq70fbh/8fyIX/goEQmqpyYCs
3UWivRUY5iKePA17USLLWTiPF8sCFHGI2iUrklKGt3Lx0iNFcl0cBwGO7YvK
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
jOltn14ekd/Ea6ogUfC/Aai+jTwFgwAA

-->

</rfc>
