<?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 4.0.1) -->
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bokovoy-kitten-pkinit-pqc-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.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-00"/>
    <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="01"/>
    <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 98?>

<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), downgrade-prevention rules, and a
<tt>PAChecksum2</tt> extension providing checksum algorithm agility in
<tt>PKAuthenticator</tt>.  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 113?>

<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>
      <t>This document also defines <tt>PAChecksum2</tt>, an extension to
<tt>PKAuthenticator</tt> that provides checksum algorithm agility, supplementing the
SHA-1-only <tt>paChecksum</tt> field of RFC 4556 for new deployments.</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 4), 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. It is deprecated in {{sec-rsa-deprecation}}.
    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 anchor="sec-pachecksum2">
        <name><tt>PAChecksum2</tt> Extension</name>
        <t><xref target="RFC4556"/> hardwires the <tt>paChecksum</tt> field in <tt>PKAuthenticator</tt> to use
SHA-1.  <xref target="RFC8636"/> Section 3 acknowledges this limitation but does not
provide a mechanism to negotiate alternative checksum algorithms, noting
that for DH and ECDH paths the KDF binding (which includes the entire
AS-REQ in key derivation) provides an eventual integrity check.</t>
        <t>This specification extends <tt>PKAuthenticator</tt> with a <tt>paChecksum2</tt> field
to provide checksum algorithm agility at the request validation layer.
<tt>PAChecksum2</tt> was first defined in <xref target="MS-PKCA"/> §2.2.3 (PA-PK-AS-REQ).</t>
        <sourcecode type="asn1"><![CDATA[
PAChecksum2 ::= SEQUENCE {
    checksum                [0] OCTET STRING,
        -- Checksum computed over KDC-REQ-BODY using the algorithm
        -- specified in algorithmIdentifier.
    algorithmIdentifier     [1] AlgorithmIdentifier
        -- Digest algorithm OID. The parameters field MUST be absent.
        -- Implementations MUST support:
        --   SHA-512: 2.16.840.1.101.3.4.2.3 (NIST CSOR, RFC 5754)
        -- Implementations MAY support:
        --   SHA-256: 2.16.840.1.101.3.4.2.1 (NIST CSOR, RFC 5754)
        --   SHA-384: 2.16.840.1.101.3.4.2.2 (NIST CSOR, RFC 5754)
}
]]></sourcecode>
        <t>The <tt>PKAuthenticator</tt> structure from <xref target="RFC4556"/> is extended as follows:</t>
        <sourcecode type="asn1"><![CDATA[
PKAuthenticator ::= SEQUENCE {
    cusec                   [0] INTEGER (0..999999),
    ctime                   [1] KerberosTime,
    nonce                   [2] INTEGER (0..4294967295),
    paChecksum              [3] OCTET STRING OPTIONAL,
        -- RFC 4556: SHA-1 checksum over KDC-REQ-BODY.
    freshnessToken          [4] OCTET STRING OPTIONAL,
        -- RFC 8070: PA_AS_FRESHNESS token from KDC.
    paChecksum2             [5] PAChecksum2 OPTIONAL,
        -- This specification: algorithm-agile checksum over
        -- KDC-REQ-BODY.
    ...
}
]]></sourcecode>
        <dl>
          <dt>Client behavior:</dt>
          <dd>
            <t>A client constructing a PKINIT request conforming to this
specification MUST include the <tt>paChecksum2</tt> field and SHOULD include
the <tt>paChecksum</tt> field (SHA-1, per <xref target="RFC4556"/>).  Both checksums,
when present, are computed over the same KDC-REQ-BODY input.</t>
          </dd>
          <dt>KDC validation:</dt>
          <dd>
            <t>A KDC conforming to this specification MUST require <tt>paChecksum2</tt> to
be present in the request.  If <tt>paChecksum2</tt> is absent, the KDC
returns <tt>KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED</tt> (error code 79,
<xref target="RFC4556"/>).
</t>
            <t>The KDC MUST validate <tt>paChecksum2</tt>.  If <tt>paChecksum</tt> is also
present, the KDC MUST validate it as well.  The KDC returns the
following errors:</t>
            <ul spacing="normal">
              <li>
                <t><tt>KDC_ERR_SUMTYPE_NOSUPP</tt> (error code 15, <xref target="RFC4120"/>): if the
digest algorithm in <tt>paChecksum2.algorithmIdentifier</tt> is not
supported by the KDC.</t>
              </li>
              <li>
                <t><tt>KRB_AP_ERR_MODIFIED</tt> (error code 41, <xref target="RFC4120"/>): if
verification of <tt>paChecksum2</tt> fails, or if <tt>paChecksum</tt> is
present and its verification fails.</t>
              </li>
            </ul>
          </dd>
        </dl>
      </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 for new deployments</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>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 6 and MUST NOT be retained.</t>
          </li>
        </ol>
        <t>Steps 1–5 MUST complete before step 6.  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
client MUST NOT fall back to traditional key-establishment algorithms (DH,
ECDH, RSA). This ensures quantum-resistant authentication and key
establishment are paired. 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>
      <t>Clients using traditional certificates (RSA, ECDSA) MAY fall back from
post-quantum KEM to traditional key establishment (DH, ECDH) 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-rsa-deprecation">
      <name>RSA Path Deprecation</name>
      <t>The <tt>encKeyPack [1]</tt> path is quantum-vulnerable.  New deployments SHOULD
NOT use <tt>encKeyPack</tt>.  Existing deployments MAY continue using it for
traditional compatibility during migration.</t>
    </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 5).
<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 6,
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.</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 6).  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="pachecksum2-and-replay-prevention">
        <name><tt>paChecksum2</tt> and Replay Prevention</name>
        <t><tt>paChecksum2</tt> binds the KDC-REQ-BODY to the authenticator using a
quantum-safe digest.  Implementations MUST NOT accept requests in which
<tt>paChecksum2</tt> is absent when operating in KEM mode, as defined in
<xref target="sec-pachecksum2"/>.</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="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="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="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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="27" month="March" 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-14"/>
        </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>
        <reference anchor="MS-PKCA" target="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-pkca/">
          <front>
            <title>[MS-PKCA]: Public Key Cryptography for Initial Authentication (PKINIT) in Kerberos Protocol</title>
            <author>
              <organization>Microsoft Corporation</organization>
            </author>
            <date year="2023" month="September" day="20"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 919?>

<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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
wf8BvQingx2OAAA=

-->

</rfc>
