<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-vicente-lamps-rotation-envelope-00" ipr="trust200902" submissionType="IETF" xml:lang="en" version="3">

  <front>
    <title abbrev="PQ-Rotation-Envelope">CA-Side Post-Quantum Rotation Envelope for X.509 Issuance Continuity</title>

    <seriesInfo name="Internet-Draft" value="draft-vicente-lamps-rotation-envelope-00"/>

    <author fullname="Brian Vicente" initials="B." surname="Vicente">
      <organization>Sanctum SecOps LLC</organization>
      <address>
        <postal><city>Pine City</city><region>NY</region><country>United States of America</country></postal>
        <email>bvicente@sanctumsecops.com</email>
        <uri>https://orcid.org/0009-0006-6395-5308</uri>
      </address>
    </author>

    <date/>

    <area>Security</area>
    <workgroup>Limited Additional Mechanisms for PKIX and SMIME</workgroup>

    <keyword>post-quantum cryptography</keyword>
    <keyword>X.509</keyword>
    <keyword>certificate extension</keyword>
    <keyword>CA continuity</keyword>
    <keyword>rotation envelope</keyword>
    <keyword>issuance manifest</keyword>
    <keyword>hybrid cryptography</keyword>
    <keyword>migration</keyword>

    <abstract>
      <t>This document defines the X.509 Post-Quantum Rotation Envelope
extension, a Certification Authority (CA) side commitment mechanism
that allows an issuing CA to publish, sign, and bind to its issued
certificates a machine-verifiable guarantee of post-quantum (PQ) or
PQ/T hybrid issuance continuity across the CA's own key-rotation
boundaries.  The mechanism is complementary to, and does not overlap
with, subject-side commitments such as the
<tt>continuityPeriod</tt> field defined in
<xref target="I-D.reddy-lamps-x509-pq-commit"/>: where that draft
captures the CA's continuity obligation to continue presenting PQ or composite
certificates after the current certificate's notAfter, this document
captures the issuing CA's parallel obligation to remain capable of
issuing such certificates across its own root and intermediate key
rotations during the same migration window.</t>

      <t>The Rotation Envelope extension carries a SHA-384 hash of a
CA-published, signed JSON manifest hosted at a stable
<tt>/.well-known/pki-rotation-envelope</tt> URI under the issuer's
authorityInfoAccess host.  The manifest enumerates: (a) the algorithm
identifiers the CA commits to continue supporting for issuance through
a stated envelopeNotAfter date, (b) the successor-CA SubjectPublicKey
hashes already provisioned for the next CA key generation, and
(c) the OCSP and CRL distribution endpoints that will remain
authoritative through the envelope window.  Relying parties that
understand the extension can verify, at any time during the current
certificate's lifetime, that the CA's published continuity posture
matches what was bound at issuance, detecting silent CA-side
degradation, unannounced CA replacement, or rollback of PQ-capable
issuance commitments.</t>

      <t>This document is filed independently and is intended to be
considered alongside, not in place of,
<xref target="I-D.reddy-lamps-x509-pq-commit"/>.  The two mechanisms
address orthogonal sides of the same PQ migration window: subject-side
declaration of intent (Reddy et al.) and CA-side guarantee of
issuance capability (this document).</t>
    </abstract>
  
        <note title="Supplementary Materials" removeInRFC="true">
      <t>
        Reference implementation: CygnetLib
        (<eref target="https://github.com/sanctumsecopsmssp/CygnetLib">https://github.com/sanctumsecopsmssp/CygnetLib</eref>).
        JSON evidence: algorithm registry, CNSA 2.0 compliance matrix, IETF PQC
        interoperability status, and ACTV test vectors are in the
        <tt>evidence/</tt> directory.
        CAGE/NCAGE: 20XS3. Apex website:
        <eref target="https://www.sanctumsecops.com/">https://www.sanctumsecops.com/</eref>.
      </t>
    </note>

<note title="Source and Archival" removeInRFC="true">
      <t>
        Source for this draft is maintained at
        <eref target="https://github.com/Sanc-Admin/lamps-pqchc">https://github.com/Sanc-Admin/lamps-pqchc</eref>
        (repository to be renamed to <tt>lamps-rotation-envelope</tt> in a
        subsequent maintenance cycle; the existing repository continues to
        host the canonical source until that rename completes).
        A citable archival version of this document is available at Zenodo:
        <eref target="https://doi.org/10.5281/zenodo.20584243">https://doi.org/10.5281/zenodo.20584243</eref>.
        Author ORCID iD:
        <eref target="https://orcid.org/0009-0006-6395-5308">https://orcid.org/0009-0006-6395-5308</eref>.
      </t>
      <t>
        Discussion of this document occurs on the IETF "spasm" (LAMPS) mailing list
        (spasm@ietf.org). Issues and pull requests may be filed at the GitHub
        repository linked above.
      </t>
    </note>

    <note title="IPR Considerations" removeInRFC="true">
      <t>
        Sanctum IP Co (a Delaware corporation, assignee of Sanctum SecOps LLC) has filed or
        intends to file United States patent applications
        covering subject matter described in this document. By posting this
        Internet-Draft, the author submits to the IETF Trust the rights described
        in Section 5 of BCP 78 and BCP 79. Patent licensing terms are not yet known.
        Implementers and reviewers should consult the IETF Datatracker IPR
        disclosure page for this document for current disclosure status.
      </t>
          <t>
        All intellectual property described in this document is owned by
        Sanctum IP Co, 128 Dry Run Rd, Pine City, NY 14871.
        Contact: bvicente@sanctumsecops.com.
      </t>
</note>

    <note title="Differentiation from draft-reddy-lamps-x509-pq-commit" removeInRFC="true">
      <t>This document is intentionally orthogonal to
<xref target="I-D.reddy-lamps-x509-pq-commit"/>.  The Reddy et al.
draft places a subject-side <tt>continuityPeriod</tt> declaration in
end-entity certificates, declaring the subject's intent to continue
presenting PQ or composite certificates after notAfter.  This document
places a CA-side Rotation Envelope extension in CA-issued
certificates, binding a hash of a CA-published, signed manifest of
issuance-continuity commitments across the CA's own key rotations.
The two mechanisms answer different questions:
</t>
    <ul><li>draft-reddy answers "Will the subject still present a PQ
  certificate next time?"</li><li>This document answers "Will the issuing CA still be capable of,
  and committed to, signing a PQ certificate at the next renewal?"</li></ul></note>

  </front>

  <middle>

    <section anchor="introduction">
      <name>Introduction</name>
      <t>The standardization of post-quantum cryptographic (PQC) algorithms
by the National Institute of Standards and Technology (NIST) —
specifically ML-DSA <xref target="FIPS204"/>, ML-KEM <xref target="FIPS203"/>, and SLH-DSA
<xref target="FIPS205"/> — marks an inflection point for Internet PKI.  NIST IR
8547 <xref target="NIST-IR-8547"/> establishes that all quantum-vulnerable
traditional asymmetric algorithms are to be deprecated after 2030 and
disallowed for new protection after 2035.  The CNSA 2.0 suite
<xref target="CNSA2"/> requires National Security Systems to be fully compliant by
2031.  Operators of long-lived PKI infrastructure must therefore plan
and execute algorithm migrations across a multi-year window that
spans certificate lifetimes currently in service.</t>

      <t>ML-DSA <xref target="FIPS204"/> and ML-KEM <xref target="FIPS203"/> are founded on the hardness of
Module Learning With Errors (MLWE) and Module Short Integer Solution (MSIS)
problems over polynomial rings — lattice-based problems for which no
efficient quantum algorithm is known.  SLH-DSA <xref target="FIPS205"/> is founded on
the collision resistance of cryptographic hash functions, providing
security even against adversaries with quantum computers running Grover's
algorithm <xref target="GROVER1996"/>, subject to the hash length requirements discussed
in <xref target="security-hash"/>.</t>

      <t>The LAMPS Working Group has made substantial progress in defining how
PQ and PQ/T hybrid algorithms are encoded in X.509 certificates.
Composite ML-DSA <xref target="I-D.ietf-lamps-pq-composite-sigs"/> defines 18
composite signature algorithm identifiers; Composite ML-KEM
<xref target="I-D.ietf-lamps-pq-composite-kem"/> defines 12 composite KEM
identifiers.  RFC 9763 <xref target="RFC9763"/> allows a current traditional
certificate and a current PQ certificate to be bound to the same
subject.  The certificate discovery mechanism
<xref target="I-D.ietf-lamps-certdiscovery"/> enables a primary certificate to
point to a secondary certificate already issued.</t>

      <t>Despite this progress, a specific lifecycle gap remains unaddressed:
no existing mechanism allows a certificate holder to make a
cryptographically verifiable commitment, in the current certificate,
to the specific PQ key material that will appear in the successor
certificate.  <xref target="I-D.reddy-lamps-x509-pq-commit"/> provides a
<tt>continuityPeriod</tt> field that declares, in days, the subject's
intent to continue presenting PQC or composite certificates after
the current certificate's notAfter.  This is a valuable declaration
of temporal intent, but it does not bind that intent to any specific
future key.  A relying party that caches this declaration cannot
determine whether the key in a future renewal certificate matches
what was actually intended at the time of issuance — nor can it
detect a key substitution by an adversary.</t>

      <t>This document addresses that gap by defining a Rotation Envelope extension that:</t>

      <ol spacing="normal" type="1">
        <li>Carries a cryptographic hash of the future SubjectPublicKeyInfo
(SPKI) in a EnvelopeManifestReference structure, binding the commitment
to specific key material.</li>
        <li>Encodes the intended envelope committed algorithm-set identifier alongside the
hash, enabling relying parties to assess algorithm support without
awaiting the next-generation CA-signed successor certificate.</li>
        <li>Declares a envelopeNotAfter time after which the commitment is
considered expired and MUST NOT be enforced.</li>
        <li>Provides an optional manifestURI where operators may publish
human-readable migration commitments and supporting documentation.</li>
        <li>Remains non-critical per RFC 5280 <xref target="RFC5280"/> Section 4.2, so
legacy relying parties that do not recognize the extension will
ignore it, preserving backward compatibility throughout the
migration window.</li>
      </ol>

      <t>The Rotation Envelope extension is advisory and non-authoritative.  The
extension does not modify RFC 5280 path validation semantics.
Enforcement of the commitment is left to envelope-aware application
software, certificate policy, and relying-party trust decisions.</t>

      <section anchor="related-work">
        <name>Relationship to Existing Work</name>
        <t>The design of Rotation Envelope is informed by several related efforts:</t>

        <t><strong>draft-reddy-lamps-x509-pq-commit</strong> <xref target="I-D.reddy-lamps-x509-pq-commit"/>:
The closest direct predecessor.  That document defines a <tt>continuityPeriod</tt>
integer expressing the number of days beyond notAfter during which the
subject intends to continue presenting PQC or composite certificates.
Rotation Envelope addresses the explicit gap noted in that draft: the absence of
any cryptographic binding to a specific future key.</t>

        <t><strong>draft-ounsworth-lamps-pq-external-pubkeys</strong>
<xref target="I-D.ounsworth-lamps-pq-external-pubkeys"/>:
This expired individual submission references a current external public
key by hash.  Rotation Envelope extends the same hash-of-SPKI principle into the
forward-commitment dimension: rather than referencing a key that exists
today, the Rotation Envelope commitment references a key that is intended for use
in the future next-generation CA-signed successor certificate.</t>

        <t><strong>RFC 9763</strong> <xref target="RFC9763"/>:
Binds a current traditional certificate and a current PQ certificate to
the same subject identity.  RFC 9763 addresses horizontal binding between
coexisting certificates; Rotation Envelope addresses vertical, forward binding between
a current certificate and its future successor.</t>

        <t><strong>draft-ietf-lamps-certdiscovery</strong> <xref target="I-D.ietf-lamps-certdiscovery"/>:
Points to a secondary certificate via hash and URI.  The secondary
certificate must already exist.  Rotation Envelope targets the prior period before
the next-generation CA-signed successor certificate has been issued.</t>

        <t><strong>Composite ML-DSA</strong> <xref target="I-D.ietf-lamps-pq-composite-sigs"/> and
<strong>Composite ML-KEM</strong> <xref target="I-D.ietf-lamps-pq-composite-kem"/>:
Define how composite keys are encoded in current X.509 structures.  They
contain no commitment mechanism, no downgrade signaling, and no lifecycle
integration.  Rotation Envelope is complementary: it can commit to either a pure
ML-DSA/ML-KEM key or a composite key as the intended successor.</t>

        <t><strong>RFC 9773 (ACME ARI)</strong> <xref target="RFC9773"/>:
Defines the ACME Renewal Information extension, including <tt>renewalInfo</tt>,
<tt>suggestedWindow</tt>, and the <tt>replaces</tt> field.  Section 5.4 of this document
describes how a envelope-bearing certificate can be integrated with ARI to
schedule commitment-aware renewals before the envelopeNotAfter deadline.</t>
      </section>

      <section anchor="patent-notice">
        <name>Patent Notice</name>
        <t>The authors are not aware of any patent or patent application that
covers the mechanisms described in this document.  This notice is
provided pursuant to IETF BCPs on intellectual property.</t>
      </section>
    </section>

    <section anchor="conventions">
      <name>Conventions and Definitions</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.</t>

      <t>The following terms are used throughout this document.  Terms
defined in RFC 9794 <xref target="RFC9794"/> ("PQ/T Hybrid terminology") are used
in accordance with the definitions therein.</t>

      <t><strong>Envelope Committed Algorithm Set:</strong>
The post-quantum or PQ/T hybrid algorithm that the issuing CA
declares it intends to use in the next-generation CA-signed successor certificate, identified by
an AlgorithmIdentifier in the Rotation Envelope extension.</t>

      <t><strong>Envelope Manifest Hash:</strong>
A cryptographic hash computed over the DER encoding of the intended
future SubjectPublicKeyInfo, bound in the EnvelopeManifestReference structure
of the Rotation Envelope extension.  The hash serves as a pre-commitment to specific
future key material.</t>

      <t><strong>Commitment Validity Time (envelopeNotAfter):</strong>
The GeneralizedTime value in the Rotation Envelope extension beyond which the
commitment is considered expired.  A envelope-aware relying party MUST NOT
enforce downgrade detection semantics after this time has passed.</t>

      <t><strong>EnvelopeManifestReference:</strong>
The ASN.1 structure within the Rotation Envelope extension that carries the hash
algorithm identifier, the Envelope Manifest Hash, and an optional algorithm
hint for the future key.</t>

      <t><strong>Issuance-Time Policy Binding:</strong>
The property that the Envelope Manifest Hash is embedded in the certificate
at issuance and signed by the issuing CA, making the commitment part of
the CA-signed certificate content.  The CA's signature over the Rotation Envelope
extension binds the commitment to the issuing CA and the
issuance time.</t>

      <t><strong>CRQC:</strong>
A cryptographically relevant quantum computer — one with sufficient
qubit depth and fidelity to threaten the security of classical
asymmetric algorithms such as RSA, ECDSA, and ECDH.</t>

      <t><strong>HNDL / TNFL:</strong>
Harvest-Now-Decrypt-Later (HNDL) or Transcript-Now-Forge-Later (TNFL):
a threat model in which an adversary records classical-algorithm-protected
traffic today and decrypts or forges it once a CRQC becomes available.</t>

      <t><strong>SPKI:</strong>
SubjectPublicKeyInfo — the ASN.1 structure defined in RFC 5280 that
encodes a subject's public key and its associated algorithm identifier.</t>

      <t><strong>Successor Certificate:</strong>
The certificate issued to renew or replace the current certificate.
The Rotation Envelope extension commits to the SPKI that is intended to appear
in the next-generation CA-signed successor certificate.</t>
    </section>

    <section anchor="problem-statement">
      <name>Problem Statement</name>

      <section anchor="hndl-tnfl">
        <name>The Harvest-Now-Decrypt-Later and Transcript-Now-Forge-Later Threats</name>
        <t>Adversaries with sufficient resources are believed to be collecting
encrypted data and signed records today under the expectation that a
CRQC will eventually be available to break the underlying classical
algorithms.  For long-lived secrets, key establishment material, and
non-repudiation records, this "harvest" phase has effectively already
begun.  NIST IR 8547 <xref target="NIST-IR-8547"/> projects a 2035 hard cutoff for
applying new cryptographic protection using quantum-vulnerable algorithms.</t>

        <t>The specific threat to PKI arises from two quantum algorithms.  Shor's
algorithm <xref target="SHOR1994"/> solves the Integer Factorization Problem (IFP) and
the Elliptic Curve Discrete Logarithm Problem (ECDLP) in polynomial
quantum time, directly breaking the security of RSA (whose security rests
on IFP) and ECDSA/ECDH (whose security rests on ECDLP).  A certificate
whose public key uses RSA-2048, P-256, or any elliptic curve group of
equivalent classical security is rendered completely insecure by a
sufficiently capable CRQC running Shor's algorithm.  Grover's algorithm
<xref target="GROVER1996"/> provides a quadratic speedup for unstructured search,
effectively halving the bit-security of symmetric keys and hash functions;
this motivates the SHA-384/SHA-512 requirements in Section 4 and
Section 6.2 of this document.</t>

        <t>The urgency of PQ migration is further quantified by Mosca's inequality
<xref target="MOSCA2018"/>: if the sum of (1) the time remaining until a CRQC is
available and (2) the secrecy lifetime required for data protected today
exceeds the time available to complete a migration, then migration should
be treated as overdue.  For long-lived PKI root certificates with
25-year validity periods, Mosca's inequality implies that migration cannot
be safely deferred even if a CRQC is not expected for a decade or more.
The Rotation Envelope extension directly addresses the migration phase that Mosca's
inequality makes urgent: providing a machine-verifiable, cryptographically
bound mechanism for orderly per-certificate PQ transition.</t>

        <t>The HNDL and TNFL threat models share a common implication for PKI: the
window between when a classical key is first used and when a CRQC breaks
it is the exposure window.  Narrowing this window requires early, orderly
migration to PQ algorithms — a process that spans multiple certificate
issuance cycles.</t>
      </section>

      <section anchor="migration-window">
        <name>The Multi-Year Migration Window</name>
        <t>A typical TLS end-entity certificate has a validity period of 90 days to
two years.  A root CA certificate may have a validity period of 25 years.
The multi-year migration window created by NIST IR 8547 timelines means
that multiple successive certificate issuance events must each move
incrementally toward a fully PQ or PQ/T hybrid PKI.  During this window,
the same domain or service will present different certificates at
successive renewal events — some classical, some composite, and
eventually some fully PQ.</t>

        <t>This creates the downgrade-at-renewal gap: an adversary who can present
a forged or substitute classical certificate at the moment of renewal,
preventing the PQ or composite certificate from being issued or accepted,
gains access to encrypted traffic for the lifetime of that substitute
certificate.</t>
      </section>

      <section anchor="downgrade-gap">
        <name>The Downgrade-at-Renewal Gap</name>
        <t>Downgrade attacks during the migration window take the following form:</t>
        <ol spacing="normal" type="1">
          <li>The current certificate is about to expire or be renewed.</li>
          <li>The legitimate operator has generated a PQ or composite successor key
and intends to request issuance of a PQ or composite next-generation CA-signed successor certificate.</li>
          <li>An adversary, potentially equipped with a CRQC, intercepts or
influences the renewal process — for example, by forging ACME order
responses, by suppressing the PQ certificate in TLS negotiation, or by
exploiting CA issuance policies that still accept classical CSRs.</li>
          <li>The certificate presented after renewal is classical rather than PQ.</li>
          <li>The relying party, lacking any machine-verifiable record of the prior
commitment to a PQ key, accepts the classical certificate.</li>
        </ol>
        <t>The adversary has achieved an undetectable downgrade.  The relying party
has no basis to reject the classical certificate because no prior
commitment was recorded in the previous certificate.</t>
      </section>

      <section anchor="temporal-insufficient">
        <name>Why Temporal Declarations Are Insufficient Without Cryptographic Binding</name>
        <t><xref target="I-D.reddy-lamps-x509-pq-commit"/> defines a <tt>continuityPeriod</tt> field
that declares the number of days beyond notAfter that the subject intends
to present PQC or composite certificates.  This declaration addresses the
observation-based heuristic: if a relying party has previously seen a
PQC certificate for a given subject, it may treat the absence of a PQC
certificate during the continuity window as suspicious.</t>

        <t>However, temporal declarations without cryptographic binding have
the following limitations:</t>

        <ol spacing="normal" type="1">
          <li><t><strong>No key specificity:</strong> The declaration says "we will use some PQ
algorithm" but does not commit to which key.  An adversary who
generates a different PQ key pair and presents it at renewal bypasses
the downgrade heuristic entirely — the relying party observes a PQ
certificate and accepts it, not knowing a key substitution occurred.</t></li>
          <li><t><strong>TOFU bootstrap problem:</strong> A relying party that connects to a service
for the first time during the migration window may never have seen a
envelope-bearing certificate.  It has no cached commitment to use as a
downgrade baseline.</t></li>
          <li><t><strong>Silent cessation:</strong> If the operator or an adversary presents a
classical certificate without revoking the prior PQ certificate, the
temporal declaration cannot distinguish intentional policy change from
attack.  The draft acknowledges this as an open problem.</t></li>
          <li><t><strong>No ACME-ARI integration:</strong> The temporal declaration provides no
hook for automated certificate management systems to schedule
commitment-aware renewals that verify the PQ key material is consistent
with what was committed at issuance time.</t></li>
        </ol>

        <t>A cryptographically bound commitment to specific future key material
addresses each of these gaps.  Cryptographic binding means:</t>

        <ul spacing="normal">
          <li>The CA's signature over the commitment makes substitution of the
committed hash a forgery that any verifier can detect.</li>
          <li>The hash of the future SPKI is specific to a particular key, not merely
an algorithm family declaration.</li>
          <li>The envelopeNotAfter field provides a machine-processable schedule
anchor that ACME-ARI can act on.</li>
        </ul>
      </section>
    </section>

    <section anchor="requirements">
      <name>Requirements for a Forward Key Commitment Extension</name>
      <t>This section states requirements that a solution to the downgrade-at-renewal
gap SHOULD satisfy.  These requirements are stated in abstract,
non-implementation-specific language.</t>

      <t>REQ-1: <strong>Forward SPKI Hash Binding.</strong>
A solution MUST provide a mechanism for embedding a cryptographic hash of
the future SubjectPublicKeyInfo in the current certificate, in a field that
is covered by the CA's signature.  The hash algorithm used MUST itself be
post-quantum resistant (i.e., resistant to the Grover speedup on second-preimage search, which
reduces SHA-256's effective quantum second-preimage resistance from 256
bits to approximately 128 bits, and SHA-384's from 384 bits to
approximately 192 bits).  SHA-384 or SHA-512, or their SHA-3 equivalents
of equivalent or greater length, SHOULD be used.</t>

      <t>REQ-2: <strong>Envelope Committed Algorithm Set Identification.</strong>
A solution MUST include an AlgorithmIdentifier for the intended committed
algorithm, enabling relying parties to assess algorithm support without
waiting for the next-generation CA-signed successor certificate to be issued.</t>

      <t>REQ-3: <strong>Machine-Verifiable Downgrade Detection.</strong>
A envelope-aware relying party MUST be able to verify, at the time of
observing a next-generation CA-signed successor certificate, whether the SPKI in that certificate
matches the Envelope Manifest Hash in the predecessor certificate.  A mismatch
MUST be treated as a commitment failure.</t>

      <t>REQ-4: <strong>Commitment Validity Window.</strong>
A solution MUST include a commitment expiry time (envelopeNotAfter)
expressed as a GeneralizedTime.  Relying parties MUST NOT enforce
commitment semantics after this time has passed.  The envelopeNotAfter
value SHOULD be set to a time no later than the latest date by which
the operator's declared algorithm migration policy requires completion.</t>

      <t>REQ-5: <strong>ACME-ARI Scheduling Hook.</strong>
A solution SHOULD be integrable with ACME Renewal Information (ARI) <xref target="RFC9773"/>
so that a CA or ACME server can trigger a renewal with a <tt>suggestedWindow</tt>
that falls at or before envelopeNotAfter.  The renewal SHOULD result in
a next-generation CA-signed successor certificate whose SPKI matches the Envelope Manifest Hash.</t>

      <t>REQ-6: <strong>NIST Security Level Identification.</strong>
The committed algorithm SHOULD be specified with sufficient precision to
allow relying parties to identify the NIST security level of the intended
future key.  For ML-DSA, this corresponds to the distinction between
ML-DSA-44, ML-DSA-65, and ML-DSA-87 as defined in <xref target="FIPS204"/>.</t>

      <t>REQ-7: <strong>Policy URI Binding.</strong>
A solution SHOULD provide an optional URI field pointing to a human-readable
or machine-parseable policy document that describes the operator's
algorithm migration schedule and commitment governance.</t>

      <t>REQ-8: <strong>Non-Critical, Legacy-Safe Deployment.</strong>
A solution MUST be deployable as a non-critical X.509 v3 extension per
RFC 5280 <xref target="RFC5280"/> Section 4.2.  Legacy relying parties that do not
recognize the extension MUST be unaffected — the extension MUST NOT cause
them to reject the certificate.  envelope-aware behavior is layered on top
of the existing RFC 5280 path validation semantics, not substituted for them.</t>

      <t>REQ-9: <strong>DER Encoding.</strong>
The extension value MUST be encoded in Distinguished Encoding Rules (DER)
as specified in <xref target="RFC5280"/> Section 1.  All internal fields MUST use DER
canonical encoding.</t>

      <t>REQ-10: <strong>Experimental Deployability.</strong>
Prior to formal IANA assignment of an id-pe OID, operators SHOULD be able
to use a private enterprise arc for experimental deployments, with
documentation clearly distinguishing the experimental arc from any future
permanent assignment.</t>
    </section>

    <section anchor="rotation-envelope-extension">
      <name>The Rotation Envelope Extension</name>

      <section anchor="extension-overview">
        <name>Extension Overview</name>
        <t>The CA-Side PQ Rotation Envelope extension is an X.509 v3 extension
under the id-pe arc (<xref target="RFC5280"/> Section 4.2.2).  The extension MUST
be marked non-critical.</t>

        <t>The extension carries an advisory, non-authoritative statement from
the issuing CA (as recorded by the issuing CA) that:</t>

        <ol spacing="normal" type="1">
          <li>The subject intends the named committed algorithm to be present in
the next-generation CA-signed successor certificate issued before envelopeNotAfter.</li>
          <li>The specific key material for that next-generation CA-signed successor certificate is
identified by a cryptographic hash over the future
SubjectPublicKeyInfo, if the EnvelopeManifestReference field is present.</li>
          <li>A policy URI, if present, identifies further operator-published
commitment governance documentation.</li>
        </ol>

        <t>The extension content is covered by the issuing CA's signature over
the tbsCertificate, providing Issuance-Time Policy Binding (see
Section 3 definitions).</t>
      </section>

      <section anchor="asn1-module">
        <name>ASN.1 Module</name>
        <sourcecode type="asn.1">
PQ-Rotation-Envelope-2026
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0) TBD1 }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

IMPORTS
    EXTENSION
        FROM PKIX-CommonTypes-2009
            { iso(1) identified-organization(3) dod(6) internet(1)
              security(5) mechanisms(5) pkix(7) id-mod(0) 57 }
    AlgorithmIdentifier{}
        FROM PKIX1Algorithms2008
            { iso(1) identified-organization(3) dod(6) internet(1)
              security(5) mechanisms(5) pkix(7) id-mod(0) 45 }
    id-pe
        FROM PKIX1Explicit-2009
            { iso(1) identified-organization(3) dod(6) internet(1)
              security(5) mechanisms(5) pkix(7) id-mod(0) 51 } ;

-- Object Identifier for the Rotation Envelope Extension

id-pe-pq-rotation-envelope  OBJECT IDENTIFIER ::=  { id-pe TBD2 }

-- The Rotation Envelope Extension

ext-PQRotationEnvelope EXTENSION ::= {
    SYNTAX        PQRotationEnvelope
    IDENTIFIED BY id-pe-pq-rotation-envelope }

-- Main Extension Structure

PQRotationEnvelope ::= SEQUENCE {
    envelopeValid      BOOLEAN,
    envelopeCommittedAlgorithmSet
        AlgorithmIdentifier { ALGORITHM, {...} },
    futureKeyCommitment  EnvelopeManifestReference OPTIONAL,
    envelopeNotAfter   GeneralizedTime,
    manifestURI            IA5String OPTIONAL
}

-- Future Key Commitment Structure

EnvelopeManifestReference ::= SEQUENCE {
    hashAlgorithm
        AlgorithmIdentifier { DIGEST-ALGORITHM, {...} },
    spkiHash             OCTET STRING,
    keyAlgorithmHint
        AlgorithmIdentifier { ALGORITHM, {...} } OPTIONAL
}

END
</sourcecode>
      </section>

      <section anchor="field-definitions">
        <name>Field Definitions</name>

        <section anchor="commitment-valid">
          <name>envelopeValid</name>
          <t>The envelopeValid field is a BOOLEAN indicating whether the
commitment encoded in this extension is currently asserted as valid
by the issuing CA.</t>

          <ul spacing="normal">
            <li>A value of TRUE indicates the subject is asserting an active
commitment.  This is the normative case.</li>
            <li>A value of FALSE indicates the commitment has been explicitly
rescinded by the subject (e.g., due to a change in key generation
schedule).  A envelope-aware relying party that observes envelopeValid
set to FALSE in a certificate MUST treat any prior cached commitment
for this subject as revoked.  Issuance of a certificate with
envelopeValid FALSE is the mechanism by which subjects signal
commitment revocation without revoking the certificate itself.</li>
          </ul>

          <t>Conforming implementations MUST include this field.</t>
        </section>

        <section anchor="committed-algorithm">
          <name>envelopeCommittedAlgorithmSet</name>
          <t>The envelopeCommittedAlgorithmSet field is an AlgorithmIdentifier identifying
the post-quantum or PQ/T hybrid algorithm the subject intends to use
in the next-generation CA-signed successor certificate.</t>

          <t>The AlgorithmIdentifier MUST identify a post-quantum or composite
algorithm.  AlgorithmIdentifiers for ML-DSA variants are defined in
the LAMPS ML-DSA certificate profile (draft-ietf-lamps-dilithium-certificates).
AlgorithmIdentifiers for composite algorithms are defined in
<xref target="I-D.ietf-lamps-pq-composite-sigs"/> (for signatures) and
<xref target="I-D.ietf-lamps-pq-composite-kem"/> (for KEMs).</t>

          <t>A envelope-aware relying party SHOULD verify that the algorithm OID in the
envelopeCommittedAlgorithmSet field is an algorithm the relying party supports, as
an early signal of future interoperability.</t>
        </section>

        <section anchor="future-key-commitment">
          <name>futureKeyCommitment</name>
          <t>The futureKeyCommitment field is OPTIONAL.  When present, it contains
a EnvelopeManifestReference structure binding the commitment to a specific
public key value.  When absent, the commitment is algorithm-level only
(an advisory declaration of which algorithm will be used), without
binding to specific key material.</t>

          <t>Implementations that wish to enable REQ-3 (machine-verifiable downgrade
detection at the key level) MUST include this field.  Its omission
reduces the strength of the commitment to algorithm-level intent only.</t>

          <section anchor="hash-algorithm">
            <name>hashAlgorithm</name>
            <t>The hashAlgorithm field in EnvelopeManifestReference is an
AlgorithmIdentifier specifying the hash algorithm used to compute
spkiHash.  The hash is computed over the full DER encoding of the
future SubjectPublicKeyInfo.</t>

            <t>The hash algorithm MUST provide at least 256 bits of preimage
resistance.  Implementations SHOULD use SHA-384 or SHA-512 (<xref target="FIPS180"/>),
or SHA3-384 or SHA3-512 (<xref target="FIPS202"/>).  Use of SHA-256 is permitted but
not recommended, as its effective quantum-collision resistance
is reduced to approximately 85 bits under the Grover algorithm.
Implementations MUST NOT use MD5, SHA-1, or SHA-224.</t>
          </section>

          <section anchor="spki-hash">
            <name>spkiHash</name>
            <t>The spkiHash field is an OCTET STRING containing the output of
hashAlgorithm applied to the DER encoding of the full
SubjectPublicKeyInfo that is intended to appear in the successor
certificate.</t>

            <sourcecode>
spkiHash = Hash( hashAlgorithm, DER( future-SubjectPublicKeyInfo ) )
</sourcecode>

            <t>The DER encoding of SubjectPublicKeyInfo is taken over the complete
ASN.1 structure including the AlgorithmIdentifier and the subjectPublicKey
BIT STRING, as defined in RFC 5280 <xref target="RFC5280"/> Section 4.1.</t>
          </section>

          <section anchor="key-algorithm-hint">
            <name>keyAlgorithmHint</name>
            <t>The keyAlgorithmHint field is OPTIONAL.  When present, it provides the
AlgorithmIdentifier for the algorithm used to generate the committed key,
as a convenience for relying parties that wish to assess future algorithm
compatibility before the next-generation CA-signed successor certificate is issued.  In most cases,
keyAlgorithmHint and envelopeCommittedAlgorithmSet will carry the same OID, and
keyAlgorithmHint MAY be omitted.  keyAlgorithmHint is useful when
envelopeCommittedAlgorithmSet is a composite OID and the relying party needs to
independently assess each component's compatibility.</t>
          </section>
        </section>

        <section anchor="commitment-not-after">
          <name>envelopeNotAfter</name>
          <t>The envelopeNotAfter field is a GeneralizedTime value specifying the
last time at which the commitment is asserted to be valid.  After this
time, a envelope-aware relying party MUST NOT rely on the commitment for
downgrade detection.</t>

          <t>The envelopeNotAfter value:</t>

          <ul spacing="normal">
            <li>SHOULD NOT be later than the certificate's own notAfter field plus
the maximum expected renewal lead time for the operator's environment.
Excessively long envelopeNotAfter values prolong the exposure window
if the committed key is later compromised.</li>
            <li>SHOULD be set so as to fall before or coincident with any applicable
regulatory or compliance deadline (e.g., NIST IR 8547 2035 cutoff,
or CNSA 2.0 2031 enforcement date <xref target="CNSA2"/>).</li>
            <li>MUST be expressed in the format "YYYYMMDDHHMMSSZ" per RFC 5280
<xref target="RFC5280"/> Section 4.1.2.5.</li>
          </ul>
        </section>

        <section anchor="policy-uri">
          <name>manifestURI</name>
          <t>The manifestURI field is OPTIONAL.  When present, it is an IA5String
containing a URI that points to a human-readable or machine-parseable
document where the operator publishes its PQ algorithm migration policy,
key custody procedures, and commitment governance documentation.</t>

          <t>Relying parties SHOULD NOT require the URI to be resolvable at certificate
validation time.  The URI is informational; its availability and content
are outside the scope of this specification.</t>
        </section>
      </section>

      <section anchor="processing-rules">
        <name>Processing Rules</name>

        <section anchor="cert-issuance">
          <name>Certificate Issuance</name>
          <ol spacing="normal" type="1">
            <li>The certificate subject SHALL generate the intended future PQ or
composite key pair before requesting issuance of a certificate
containing the Rotation Envelope extension.</li>
            <li>The subject computes spkiHash = Hash(hashAlgorithm, DER(future-SPKI))
over the full DER encoding of the future SubjectPublicKeyInfo.</li>
            <li>The subject includes the EnvelopeManifestReference in the Certificate
Signing Request (CSR) or in a separate signed commitment attestation
submitted to the CA.</li>
            <li>The issuing CA MUST verify that the envelopeValid field is TRUE
before embedding an active commitment.</li>
            <li>The issuing CA MUST verify that the envelopeCommittedAlgorithmSet OID refers to
a post-quantum or composite algorithm.  A CA MUST NOT issue a
certificate with a Rotation Envelope extension in which envelopeCommittedAlgorithmSet
identifies a classical-only algorithm.</li>
            <li>The issuing CA SHOULD verify that envelopeNotAfter is not less than
the current time plus a reasonable minimum commitment window (e.g.,
at least as long as the certificate's own validity period).</li>
            <li>The extension MUST be marked non-critical (criticality = FALSE).</li>
            <li>The CA signs the tbsCertificate, which includes the extension, thereby
providing Issuance-Time Policy Binding over the commitment.</li>
          </ol>
        </section>

        <section anchor="cert-consumption">
          <name>Certificate Consumption by Envelope-Aware Relying Parties</name>
          <ol spacing="normal" type="1">
            <li><t>Upon processing a certificate containing a Rotation Envelope extension, a
envelope-aware relying party:</t>
              <ol spacing="normal" type="a">
                <li>Verifies the certificate chain per RFC 5280 <xref target="RFC5280"/> path
validation (Section 6) without modification.  The Rotation Envelope extension
does not alter path validation semantics.</li>
                <li>If envelopeValid is FALSE, clears any previously cached
commitment for the subject and treats this certificate as
having no active forward commitment.</li>
                <li><t>If envelopeValid is TRUE and the current time is before
envelopeNotAfter, stores the following commitment record
for the subject's identity (e.g., SubjectAltName):</t>
                  <ul spacing="normal">
                    <li>The committed algorithm OID.</li>
                    <li>The EnvelopeManifestReference (hashAlgorithm, spkiHash,
keyAlgorithmHint), if present.</li>
                    <li>The envelopeNotAfter value.</li>
                    <li>The manifestURI, if present.</li>
                    <li>The issuer and serial number of the current certificate
(for correlation with ACME <tt>replaces</tt> tracking per <xref target="RFC9773"/>).</li>
                  </ul>
                </li>
              </ol>
            </li>
            <li><t>The commitment record MUST be purged when:</t>
              <ol spacing="normal" type="a">
                <li>The current time exceeds envelopeNotAfter.</li>
                <li>A next-generation CA-signed successor certificate is accepted whose SPKI matches the
Envelope Manifest Hash (successful commitment fulfillment; see
Section 5.3).</li>
                <li>A certificate with envelopeValid = FALSE is received for the
subject.</li>
                <li>The relying party's local policy for commitment record retention
has been exceeded (implementation-defined).</li>
              </ol>
            </li>
          </ol>
        </section>

        <section anchor="renewal-fulfillment">
          <name>Renewal and Commitment Fulfillment</name>
          <ol spacing="normal" type="1">
            <li><t>When a envelope-aware relying party encounters a next-generation CA-signed successor certificate
for a subject for which a commitment record exists:</t>
              <ol spacing="normal" type="a">
                <li>Compute CandidateHash = Hash(hashAlgorithm from commitment record,
DER(SPKI of next-generation CA-signed successor certificate)).</li>
                <li>Compare CandidateHash to the spkiHash in the commitment record.</li>
                <li>If the hashes match: the commitment is FULFILLED.  The relying
party SHOULD accept the next-generation CA-signed successor certificate (subject to normal
RFC 5280 path validation) and SHOULD log the commitment fulfillment
event.  The commitment record is purged per Section 5.2(2b).</li>
                <li><t>If the hashes do NOT match: the commitment is VIOLATED.  The
relying party MUST treat this as a commitment failure.  The
appropriate response is implementation-defined and MAY include:</t>
                  <ul spacing="normal">
                    <li>Rejecting the next-generation CA-signed successor certificate for envelope-dependent
application-layer operations.</li>
                    <li>Generating an alert or log entry indicating a commitment
failure event.</li>
                    <li>Initiating out-of-band confirmation with the certificate
subject via the manifestURI.</li>
                  </ul>
                  <t>A relying party MUST NOT silently accept a next-generation CA-signed successor certificate
with a commitment violation when the EnvelopeManifestReference field was
present and envelopeValid was TRUE in the predecessor certificate.</t>
                </li>
              </ol>
            </li>
            <li>If the EnvelopeManifestReference field is absent in the predecessor
certificate, the commitment is algorithm-level only.  In this case,
a envelope-aware relying party SHOULD verify that the successor
certificate's SPKI algorithm OID matches the envelopeCommittedAlgorithmSet OID.
A mismatch between the committed algorithm and the successor
certificate's key algorithm SHOULD be treated as a commitment
failure.</li>
          </ol>
        </section>

        <section anchor="downgrade-detection">
          <name>Downgrade Detection</name>
          <ol spacing="normal" type="1">
            <li><t>If a envelope-aware relying party holds a commitment record for a
subject with envelopeNotAfter in the future, and the relying
party encounters a certificate for that subject whose SPKI is based
solely on a classical algorithm (RSA, ECDSA, ECDH, EdDSA in
standalone non-composite form):</t>
              <ol spacing="normal" type="a">
                <li>The relying party SHOULD treat this as a potential downgrade event.</li>
                <li>The relying party MUST NOT accept the certificate for envelope-dependent
operations without additional out-of-band assurance.</li>
                <li>The relying party SHOULD log the downgrade event, including the
subject identity, the committed algorithm OID, and the observed
classical algorithm OID.</li>
              </ol>
            </li>
            <li><t>A commitment failure and a potential downgrade event are distinct:</t>
              <ul spacing="normal">
                <li>A commitment failure occurs when the SPKI hash does not match the
Envelope Manifest Hash (key substitution case).</li>
                <li>A downgrade event occurs when the algorithm family is classical
rather than PQ or composite (algorithm regression case).</li>
              </ul>
              <t>Both are treated as protocol violations for envelope-dependent
operations.</t>
            </li>
          </ol>
        </section>

        <section anchor="acme-ari">
          <name>Integration with ACME Renewal Information (ARI)</name>
          <t>ACME Renewal Information <xref target="RFC9773"/> provides the <tt>renewalInfo</tt> resource,
<tt>suggestedWindow</tt>, and <tt>replaces</tt> field.  The following integration is
RECOMMENDED for operators using ACME certificate management:</t>

          <ol spacing="normal" type="1">
            <li><t><strong>Scheduling:</strong> When an ACME server manages certificates bearing
the Rotation Envelope extension, the <tt>suggestedWindow</tt> in the <tt>renewalInfo</tt>
resource for that certificate SHOULD be set to begin no later than
a reasonable lead time before envelopeNotAfter.  This ensures the
renewal process completes and the next-generation CA-signed successor certificate is issued
while the commitment is still in force.</t></li>
            <li><t><strong>Replacement tracking:</strong> When an ACME order is submitted to renew
a envelope-bearing certificate, the <tt>replaces</tt> field in the new ACME
Order SHOULD reference the predecessor certificate (by the
{issuer, serial} identifier as defined in <xref target="RFC9773"/> Section 5).
This allows the CA and relying parties to correlate the renewal
with the outstanding commitment.</t></li>
            <li><t>This step is OPTIONAL for CAs that do not implement envelope-aware
order validation, and it requires the CA to have access to the
predecessor certificate — which is typically possible via the
issuer's own certificate repository or the<strong>PQ key validation at order time:</strong> A CA that receives an ACME Order
with a <tt>replaces</tt> field referencing a envelope-bearing predecessor
certificate SHOULD verify that the SPKI in the new Order's CSR
matches the spkiHash in the predecessor's EnvelopeManifestReference.  If
the hash does not match, the CA SHOULD reject the Order with an
appropriate error indicating a commitment mismatch.
<tt>replaces</tt> reference.</t></li>
            <li><t><strong>Explanation URL:</strong> The CA MAY set the <tt>explanationURL</tt> field of
the <tt>renewalInfo</tt> resource to the same URI as the manifestURI in the
Rotation Envelope extension, providing consistent reference between the ACME
renewal workflow and the commitment governance documentation.</t></li>
          </ol>
        </section>
      </section>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>

      <section anchor="security-advisory">
        <name>Advisory, Not Authoritative</name>
        <t>The Rotation Envelope extension is advisory and non-authoritative.  The commitment
expressed in the extension is made by the issuing CA and
recorded by the CA; it is not a guarantee enforceable by technical
protocol alone.  A relying party's response to a commitment violation
is a matter of local policy.</t>

        <t>A certificate subject that includes the Rotation Envelope extension but fails to
honor the commitment (by presenting a classical or non-matching key at
renewal) incurs a protocol violation that envelope-aware relying parties
may detect and act upon.  The extension is analogous to a published
service commitment — machine-verifiable and CA-attested, but not
self-executing.</t>
      </section>

      <section anchor="security-hash">
        <name>Preimage Resistance and Hash Algorithm Selection</name>
        <t>The security of the spkiHash commitment depends on the second-preimage
resistance of the hashAlgorithm.  An adversary who can find a second
preimage can substitute a different future key while maintaining the
hash match.</t>

        <t>For a hash algorithm providing n bits of output, the relevant security
properties for the spkiHash commitment are:</t>

        <ul spacing="normal">
          <li><t><strong>Second-preimage resistance</strong> (finding a different input with the same
hash): classically 2^n operations; under Grover's algorithm applied to
second-preimage search, approximately 2^(n/2) quantum operations.</t></li>
          <li><t><strong>Collision resistance</strong> (finding any two inputs with the same hash):
classically 2^(n/2) operations (birthday bound); under the
Brassard-Høyer-Tapp (BHT) algorithm, approximately 2^(n/3) quantum
operations.</t></li>
        </ul>

        <t>For the spkiHash commitment, the relevant property is <strong>second-preimage
resistance</strong>: an adversary must find a distinct SubjectPublicKeyInfo that
hashes to the same value as the committed future SPKI.  The classical
security level equals the hash output length n; the quantum security level
under Grover is approximately n/2 bits.  This implies:</t>

        <ul spacing="normal">
          <li>SHA-256 (n=256): 256-bit classical second-preimage resistance;
approximately 128-bit quantum second-preimage resistance.  SHA-256 SHOULD
NOT be used as the sole hash algorithm in commitments extending beyond
2030, as the effective quantum advantage is approaching practical
relevance.</li>
          <li>SHA-384 (n=384): 384-bit classical second-preimage resistance;
approximately 192-bit quantum second-preimage resistance.  SHA-384 is
the RECOMMENDED minimum for high-assurance environments.</li>
          <li>SHA-512 (n=512) or SHA3-512 (n=512): 512-bit classical;
approximately 256-bit quantum second-preimage resistance.  Preferred
for commitments extending to 2035 or beyond.</li>
        </ul>

        <t>The hash algorithm selection SHOULD be consistent with the security level
implied by the envelopeCommittedAlgorithmSet.  For example, a commitment to
ML-DSA-87 (NIST security category 5, targeting at least 256 bits of
classical security) warrants SHA-512 or SHA3-512.</t>
      </section>

      <section anchor="security-correlation">
        <name>Public Key Correlation</name>
        <t>The spkiHash field reveals information about the future public key to
any party that observes the current certificate.  Specifically:</t>

        <ul spacing="normal">
          <li>The hash provides a commitment binding: if two certificates appear
with the same spkiHash and hashAlgorithm, they commit to the same
future key.  This enables correlation of certificates across different
organizational entities if the same future key hash appears in multiple
Rotation Envelope extensions.</li>
          <li>The hash does not reveal the future public key itself.  However, if the
committed algorithm is an asymmetric algorithm with known key structure,
an adversary with access to the public key at renewal time can trivially
verify whether the key matches the prior commitment.</li>
        </ul>

        <t>Operators SHOULD generate a unique future key pair for each Rotation Envelope
commitment and MUST NOT reuse a committed future key in more than one
Rotation Envelope extension unless the operator explicitly intends cross-certificate
correlation to be observable.</t>
      </section>

      <section anchor="security-substitution">
        <name>Commitment Substitution Attack</name>
        <t>An adversary who can perform a man-in-the-middle attack at the CA during
certificate issuance could, in principle, substitute a different spkiHash
for the value submitted by the legitimate subject.  The adversary would
then substitute the corresponding key at renewal time.</t>

        <t>The Issuance-Time Policy Binding property (the CA's signature over the
extension in the tbsCertificate) prevents post-issuance substitution of
the hash.  However, it does not prevent issuance-time substitution if the
adversary can compromise the CA issuance pipeline.  Mitigations include:</t>

        <ul spacing="normal">
          <li>The subject retaining a signed copy of the CSR or commitment attestation
containing the original spkiHash before submitting it to the CA.</li>
          <li>Certificate Transparency (CT) logging, which records the issued
certificate and thus the committed spkiHash, enabling detection of
discrepancies between submitted and issued commitments.</li>
          <li>Use of CSR attestation mechanisms such as draft-ietf-lamps-csr-attestation
to provide hardware-backed proof of the private key controlling the
committed SPKI.</li>
        </ul>
      </section>

      <section anchor="security-crqc">
        <name>CRQC-Era Considerations</name>
        <t>The Rotation Envelope extension is designed for deployment during the transition to
PQC.  Once a CRQC becomes available:</t>

        <ul spacing="normal">
          <li>Existing classical certificates in the PKI can be forged or decrypted.</li>
          <li>CAs that sign certificates with classical algorithms can have their
signing keys broken, enabling forgery of Rotation Envelope extensions.</li>
        </ul>

        <t>Therefore, the value of the Rotation Envelope commitment depends on the certificate
chain and the CA's signing algorithm:</t>

        <ul spacing="normal">
          <li>A Rotation Envelope extension in a certificate signed by a CA using only classical
algorithms does not provide post-quantum security for the commitment
itself.  A CRQC adversary could forge the CA signature and substitute
the commitment.</li>
          <li>A Rotation Envelope extension in a certificate signed by a CA using ML-DSA or a
composite algorithm retains its commitment integrity even if a CRQC
is available, because forging the CA signature would require breaking
the PQ component.</li>
        </ul>

        <t>Operators seeking CRQC-era integrity of their CA continuity envelopes SHOULD
ensure their issuing CA chain uses ML-DSA or composite signing algorithms
before the commitment window extends into the period when a CRQC is
considered a realistic threat.  This is consistent with CNSA 2.0
<xref target="CNSA2"/> requirements, which mandate ML-DSA-87 for all NSS certificate
signatures by 2031.</t>
      </section>

      <section anchor="security-downgrade-forcing">
        <name>Downgrade-Forcing Attack</name>
        <t>An adversary may attempt to force a downgrade by:</t>

        <ol spacing="normal" type="1">
          <li>Preventing the legitimate subject from completing renewal during
the ACME-ARI suggested window.</li>
          <li>Presenting a classical or non-matching certificate after
envelopeNotAfter has passed, when the relying party's downgrade
detection has expired.</li>
        </ol>

        <t>Mitigations:</t>

        <ul spacing="normal">
          <li>The operator SHOULD set envelopeNotAfter to a value sufficiently
beyond the expected renewal date to account for operational delays,
but not so far beyond as to create an extended window during which
a compromised classical key is assumed to be valid.</li>
          <li>The CA SHOULD reject a renewal order for a envelope-bearing certificate
that references a classical-only SPKI when ARI-integrated Rotation Envelope
validation is in force.</li>
          <li>Relying parties SHOULD log commitment expirations and flag any
transitions from PQ or composite certificates to classical certificates
that occur close to or after envelopeNotAfter.</li>
        </ul>
      </section>

      <section anchor="security-tofu">
        <name>TOFU Bootstrap Problem</name>
        <t>A relying party that encounters a envelope-bearing certificate for the
first time has no prior basis for validating the freshness of the
commitment.  The "trust on first use" (TOFU) problem means that if
the very first certificate observed for a subject already contains a
commitment violation, the relying party cannot detect it.</t>

        <t>This problem is not specific to the Rotation Envelope mechanism; it is shared by all observation-
based downgrade detection mechanisms, including
<xref target="I-D.reddy-lamps-x509-pq-commit"/>.</t>

        <t>Partial mitigations include:</t>

        <ul spacing="normal">
          <li>Certificate Transparency logs: relying parties can query CT logs to
observe the history of certificates issued for a subject before the
first direct connection.  A subject that has previously issued envelope-
bearing certificates creates a CT-observable commitment history.</li>
          <li>ACME <tt>replaces</tt> field correlation: when ARI is in use, the chain of
renewal Orders provides a verifiable history of certificate issuance
events that can be cross-checked against CT log entries.</li>
          <li>Out-of-band pinning: high-assurance environments may publish the
expected spkiHash via a separate, authenticated channel (e.g., DNSSEC-
signed TXT records or operator-published Rotation Envelope policy documents
referenced by manifestURI).</li>
        </ul>

        <t>The TOFU bootstrap problem is acknowledged as a known limitation of this
specification.  Future work may address it through additional mechanisms
such as signed commitment announcements or integration with certificate
policy OIDs that attest to an operator's Rotation Envelope enrollment.</t>
      </section>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>

      <section anchor="iana-id-pe">
        <name>id-pe OID Assignment</name>
        <t>IANA is requested to assign an Object Identifier for the Rotation Envelope extension
under the id-pe arc:</t>

        <sourcecode>
id-pe-pq-rotation-envelope  OBJECT IDENTIFIER ::=  { id-pe TBD2 }
</sourcecode>

        <t>The base id-pe arc is <tt>1.3.6.1.5.5.7.1</tt> as defined in RFC 5280
<xref target="RFC5280"/> Section 4.2.2.  The assigned id-pe value TBD2 will result
in a final OID of <tt>1.3.6.1.5.5.7.1.TBD2</tt>.</t>

        <t>IANA is also requested to assign an Object Identifier for the ASN.1
module under the id-mod arc:</t>

        <sourcecode>
id-mod-pq-rotation-envelope-2026
        OBJECT IDENTIFIER ::= { id-mod TBD1 }
</sourcecode>

        <t>Both assignments are TBD pending IANA processing.</t>
      </section>

      <section anchor="iana-experimental">
        <name>Experimental OID Arc</name>
        <t>Prior to permanent IANA assignment, operators wishing to conduct
experimental deployments of the Rotation Envelope extension may use OIDs under
the IANA Private Enterprise Number (PEN) arc for Sanctum SecOps LLC:</t>

        <sourcecode>
1.3.6.1.4.1.65953
</sourcecode>

        <t>Specifically, the experimental arc for Rotation Envelope extensions is:</t>

        <sourcecode>
id-pe-pq-rotation-envelope-experimental  OBJECT IDENTIFIER ::=
    { 1 3 6 1 4 1 65953 1 1 }
</sourcecode>

        <t>This experimental OID MUST NOT be used in production deployments or
in certificates submitted to public Certificate Transparency logs
without explicit documentation that the OID is experimental and subject
to change.  The experimental arc is distinct from any permanent
id-pe assignment.</t>
      </section>
    </section>

  </middle>

  <back>

    <references>
      <name>References</name>

      <references anchor="normative-references">
        <name>Normative References</name>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9794.xml"/>

        <reference anchor="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS" value="203"/>
          </reference>

        <reference anchor="FIPS204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS" value="204"/>
          </reference>

        <reference anchor="FIPS205">
          <front>
            <title>Stateless Hash-Based Digital Signature Standard</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS" value="205"/>
          </reference>

      </references>

      <references anchor="informative-references">
        <name>Informative References</name>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9773.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9763.xml"/>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-pq-composite-sigs.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-pq-composite-kem.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-certdiscovery.xml"/>

        <reference anchor="I-D.reddy-lamps-x509-pq-commit">
          <front>
            <title>X.509 Certificate Extension for Post-Quantum Hosting Continuity</title>
            <author initials="T." surname="Reddy.K" fullname="Tirumaleswar Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author initials="J." surname="Gray" fullname="John Gray">
              <organization>Entrust</organization>
            </author>
            <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
              <organization>Intuit</organization>
            </author>
            <date year="2026" month="February" day="25"/>
          </front>
          </reference>

        <reference anchor="I-D.ounsworth-lamps-pq-external-pubkeys">
          <front>
            <title>External Public Key Information for use in PKI messages</title>
            <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
              <organization>Entrust</organization>
            </author>
            <author initials="J." surname="Gray" fullname="John Gray">
              <organization>Entrust</organization>
            </author>
            <date year="2024"/>
          </front>
          </reference>

        <reference anchor="NIST-IR-8547">
          <front>
            <title>Transition to Post-Quantum Cryptography Standards</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="November"/>
          </front>
          <seriesInfo name="NIST IR" value="8547 ipd"/>
          </reference>

        <reference anchor="CNSA2">
          <front>
            <title>Commercial National Security Algorithm Suite 2.0</title>
            <author><organization>NSA</organization></author>
            <date year="2022" month="September"/>
          </front>
          </reference>

        <reference anchor="FIPS180">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author><organization>NIST</organization></author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS" value="180-4"/>
          </reference>

        <reference anchor="FIPS202">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author><organization>NIST</organization></author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="NIST FIPS" value="202"/>
          </reference>

        <reference anchor="SHOR1994">
          <front>
            <title>Algorithms for Quantum Computation: Discrete Logarithms and Factoring</title>
            <author initials="P.W." surname="Shor" fullname="Peter W. Shor"/>
            <date year="1994"/>
          </front>
          <seriesInfo name="Proceedings of the 35th Annual Symposium on Foundations of Computer Science" value="pp. 124-134"/>
          </reference>

        <reference anchor="GROVER1996">
          <front>
            <title>A Fast Quantum Mechanical Algorithm for Database Search</title>
            <author initials="L.K." surname="Grover" fullname="Lov K. Grover"/>
            <date year="1996"/>
          </front>
          <seriesInfo name="Proceedings of the 28th Annual ACM Symposium on Theory of Computing" value="pp. 212-219"/>
          </reference>

        <reference anchor="MOSCA2018">
          <front>
            <title>Cybersecurity in an Era with Quantum Computers: Will We Be Ready?</title>
            <author initials="M." surname="Mosca" fullname="Michele Mosca"/>
            <date year="2018"/>
          </front>
          <seriesInfo name="IEEE Security &amp; Privacy" value="Vol. 16, No. 5, pp. 38-41"/>
          </reference>

      </references>
    </references>

    <section anchor="appendix-a">
      <name>Appendix A: Example Rotation Envelope Extension DER Encoding</name>
      <t>This appendix shows a non-normative, illustrative encoding of a Rotation Envelope
extension.  The example commits to a future ML-DSA-65 key using a
SHA-384 hash.</t>

      <section anchor="appendix-a-scenario">
        <name>Certificate Subject Scenario</name>
        <ul spacing="normal">
          <li>Current certificate: ECDSA P-256, 2-year validity, expires 2027-01-01.</li>
          <li>Committed algorithm: ML-DSA-65 (OID 2.16.840.1.101.3.4.3.18).</li>
          <li>Future key: Pre-generated ML-DSA-65 key pair.  The DER encoding of the
future SubjectPublicKeyInfo is hashed with SHA-384.</li>
          <li>envelopeNotAfter: 2027-04-01 (3 months beyond certificate notAfter to
accommodate renewal lead time).</li>
        </ul>
      </section>

      <section anchor="appendix-a-asn1">
        <name>ASN.1 Value (Informative)</name>
        <sourcecode type="asn.1">
PQRotationEnvelope ::= SEQUENCE {
    envelopeValid TRUE,
    envelopeCommittedAlgorithmSet SEQUENCE {
        algorithm  2.16.840.1.101.3.4.3.18  -- id-ML-DSA-65
    },
    futureKeyCommitment SEQUENCE {
        hashAlgorithm SEQUENCE {
            algorithm  2.16.840.1.101.3.4.2.2  -- id-sha384
        },
        spkiHash  OCTET STRING (48 bytes -- SHA-384 output),
        keyAlgorithmHint ABSENT  -- as above
    },
    envelopeNotAfter  GeneralizedTime "20270401000000Z",
    manifestURI  ABSENT
}
</sourcecode>

        <t>The extension appears in the certificate's extensions list as:</t>

        <sourcecode type="asn.1">
Extension ::= SEQUENCE {
    extnID    1.3.6.1.5.5.7.1.TBD2,  -- id-pe-pq-rotation-envelope
    critical  FALSE,                  -- MUST be non-critical
    extnValue OCTET STRING {  -- DER of PQRotationEnvelope
        -- (DER bytes omitted; see description above)
    }
}
</sourcecode>
      </section>
    </section>

    <section anchor="appendix-b">
      <name>Appendix B: Relationship to NIST IR 8547 Migration Timeline</name>
      <t>NIST IR 8547 <xref target="NIST-IR-8547"/> (initial public draft, November 2024)
establishes the following transition timeline for quantum-vulnerable
algorithms:</t>

      <table>
        <thead>
          <tr>
            <th>Milestone</th>
            <th>Date</th>
            <th>Implication for Rotation Envelope</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Deprecation of 112-bit classical algorithms</td>
            <td>2030</td>
            <td>CA continuity envelopes for lower-security-level environments SHOULD have envelopeNotAfter no later than 2030.</td>
          </tr>
          <tr>
            <td>Disallowment of all classical asymmetric algorithms</td>
            <td>2035</td>
            <td>CA continuity envelopes in high-assurance environments SHOULD be set to complete migration before 2035.</td>
          </tr>
          <tr>
            <td>CNSA 2.0 full enforcement for NSS</td>
            <td>2031</td>
            <td>CA continuity envelopes in National Security System contexts SHOULD have envelopeNotAfter no later than 2031.</td>
          </tr>
        </tbody>
      </table>

      <t>The NIST IR 8547 note on hybrid modes states that the disallowment
of quantum-vulnerable algorithms after 2035 was not intended to apply
to hybrid modes that incorporate an approved PQC algorithm alongside a
quantum-vulnerable algorithm.  This means PQ/T composite certificates
(as defined in <xref target="I-D.ietf-lamps-pq-composite-sigs"/>) remain usable
beyond 2035 within the scope of that NIST guidance.  CA continuity envelopes
to composite algorithms are therefore consistent with long-term
compliance, provided the composite includes an approved PQC component.</t>
    </section>

    <section anchor="appendix-c">
      <name>Appendix C: Comparison with Related Mechanisms</name>

      <table>
        <thead>
          <tr>
            <th>Mechanism</th>
            <th>Fwd Commit?</th>
            <th>Key Bind?</th>
            <th>Downgrade?</th>
            <th>ARI Hook?</th>
            <th>Non-Crit?</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>draft-reddy pq-commit</td>
            <td>Temporal only</td>
            <td>No</td>
            <td>Heuristic only</td>
            <td>No</td>
            <td>Yes</td>
          </tr>
          <tr>
            <td>RFC 9763 Related Cert</td>
            <td>No (current binding)</td>
            <td>Current cert only</td>
            <td>No</td>
            <td>No</td>
            <td>Yes</td>
          </tr>
          <tr>
            <td>certdiscovery certHash</td>
            <td>No (existing cert)</td>
            <td>Existing cert hash</td>
            <td>No</td>
            <td>No</td>
            <td>Yes</td>
          </tr>
          <tr>
            <td>ounsworth ext-pubkeys</td>
            <td>No (current key)</td>
            <td>Current key hash</td>
            <td>No</td>
            <td>No</td>
            <td>N/A</td>
          </tr>
          <tr>
            <td><strong>This document (Rotation Envelope -01)</strong></td>
            <td><strong>Yes (future SPKI hash)</strong></td>
            <td><strong>Yes (spkiHash)</strong></td>
            <td><strong>Yes (REQ-3)</strong></td>
            <td><strong>Yes (Section 5.4)</strong></td>
            <td><strong>Yes</strong></td>
          </tr>
        </tbody>
      </table>

      <t>This comparison illustrates that the Rotation Envelope extension as defined in
this document is the only mechanism in the current LAMPS WG landscape
that simultaneously provides forward key commitment with cryptographic
binding, machine-verifiable downgrade detection, and ACME-ARI
scheduling integration.</t>
    </section>

    <section anchor="acknowledgments" numbered="false">
      <name>Acknowledgments</name>
      <t>The author thanks Tirumaleswar Reddy.K, John Gray, and Yaron Sheffer for
their work on draft-reddy-lamps-x509-pq-commit, which identified the
temporal commitment gap and provided the direct motivation for this work.</t>

      <t>Thanks to Mike Ounsworth, Massimiliano Pala, Jan Klaußner, and Scott
Fluhrer for their work on composite ML-DSA and composite ML-KEM, which
establish the algorithm encoding infrastructure that CA continuity envelopes
reference.</t>

      <t>Thanks to Alison Becker, Rebecca Guthrie, and Michael J. Jenkins for
their work on RFC 9763 and the CNSA 2.0 PKIX profile, which clarify
the NSS certificate requirements that motivate Rotation Envelope in high-assurance
contexts.</t>

      <t>Thanks to the LAMPS Working Group for the broader PQC certificate
infrastructure this document builds upon.</t>

      <t>This document was prepared for public review as a contribution to the
IETF LAMPS Working Group.  It describes a problem domain and
requirements; it does not disclose any proprietary internal
architecture.</t>
    </section>

  </back>

</rfc>