<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-geng-acme-sm2dualcert-rotation-00" category="info" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="ACME SM2 Dual-Certificate Rotation">ACME STAR Extension for SM2 Dual-Certificate Automated Key Rotation</title>
    <seriesInfo name="Internet-Draft" value="draft-geng-acme-sm2dualcert-rotation-00"/>
    <author initials="F." surname="Geng" fullname="Feng Geng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>gengfeng@huawei.com</email>
      </address>
    </author>
    <author initials="P." surname="Wu" fullname="Panyu Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wupanyu3@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Wang" fullname="Guilin Wang">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wang.guilin@huawei.com</email>
      </address>
    </author>
    <author initials="X." surname="Chen" fullname="Xin Chen">
      <organization>TrustAsia</organization>
      <address>
        <email>palos.chen@trustasia.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="20"/>
    <workgroup>Automated Certificate Management Environment Working Group</workgroup>
    <keyword/>
    <keyword/>
    <keyword/>
    <abstract>
      <?line 117?>

<t>The SM2 dual-certificate system, specified in <xref target="GMT.0034-2014"/>, employs a dual-certificate architecture in which each entity holds both a signature certificate and an encryption certificate. The encryption private key is generated and escrowed by the Key Management Center (KMC).</t>
      <t>This document defines an <strong>ACME Profile</strong> that adapts the core protocol of <xref target="RFC8555"/> to the specific deployment scenario of SM2 dual-certificate management in the ShangMi (SM) ecosystem. Building upon the dual-certificate foundation framework defined in [I-D.geng-acme-sm2dualcert-extension], this document defines a STAR extension for the ACME protocol that enables <strong>synchronized short-term automatic renewal</strong> of SM2 dual certificates. The signature certificate follows <xref target="RFC8739"/> (ACME STAR) for automatic renewal with the same key pair; the encryption certificate achieves automated key rotation with a fresh key pair per epoch based on <strong>Asynchronous Remote Key Generation (ARKG)</strong> <xref target="Frymann2020"/>.</t>
      <t>This extension establishes a <strong>unified ARKG seed chain key derivation system</strong>: the KMC holds a seed <tt>seed_kmc</tt> and derives all encryption certificate key pairs <tt>(pk_i, sk_i)</tt> for all epochs via the ARKG algorithm, enabling stateless, lightweight KMC operations. On this basis, this extension provides <strong>two private key delivery modes</strong>:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Mode A (ARKG Envelope Delivery)</strong>: delivers <tt>sk_i</tt> to the client via a digital envelope, fully inheriting the envelope mechanism of the base framework.</t>
        </li>
        <li>
          <t><strong>Mode B (ARKG Offline DH Derivation)</strong>: the initial private key is obtained via envelope delivery; subsequent private keys are derived offline by the client, providing key insulation security properties.</t>
        </li>
      </ul>
      <t>Both modes share the same ARKG cryptographic infrastructure, differing only in the final delivery mechanism of the private key. Deployers may choose according to their requirements, with full compatibility and coexistence achieved through ACME directory object negotiation.</t>
      <t><strong>Document Positioning</strong>: This document is intended for the <strong>specific SM ecosystem</strong> as a practical guide and interoperability reference, and does not seek to become a general Internet standard.</t>
    </abstract>
  </front>
  <middle>
    <?line 132?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Automatic Certificate Management Environment (ACME) protocol <xref target="RFC8555"/> provides a standardized mechanism for automated certificate issuance and management. The ACME core resource model defines an <strong>Order</strong> as a request for a single certificate. Each Order contains the identifiers to be authenticated, the authorizations that must be completed, and the final certificate URL.</t>
      <t><xref target="GMT.0034-2014"/> specifies an SM2 dual-certificate system that employs a dual-certificate architecture. In this architecture, each entity is assigned both a signature certificate and an encryption certificate. The signature certificate is used for identity authentication and digital signatures, while the encryption certificate is used for data encryption and key establishment. Both certificates are issued to the same entity but serve different security purposes and are subject to different key management policies.</t>
      <t>A notable feature of the SM2 dual-certificate system is that the encryption private key is generated by the Key Management Center (KMC) and securely delivered to the end entity. The KMC encrypts the encryption private key using the entity's <strong>signature public key</strong> via a digital envelope (as defined in <xref target="GMT.0010-2023"/>), and the end entity decrypts it using its signature private key. This key escrow mechanism is mandated by compliance and regulatory requirements for recoverability and auditability.</t>
      <t>[I-D.geng-acme-sm2dualcert-extension] defines the basic integration of SM2 dual certificates with ACME, introducing the <tt>auth-01</tt> challenge and the digital envelope delivery mechanism. <xref target="RFC8739"/> (ACME STAR) defines automatic renewal of short-term certificates, enabling clients to obtain continuously renewed certificates without repeatedly executing the full ACME flow.</t>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>SM2 dual certificates are currently at a critical stage of large-scale deployment. However, their issuance and lifecycle management still rely largely on manual procedures, whereas many existing PKI deployments have adopted automated certificate management protocols such as ACME. As certificate lifetimes continue to decrease, automated enrollment, issuance, renewal, and deployment become increasingly important for reducing operational overhead and improving deployment efficiency. Supporting SM2 dual certificates in ACME enables automated lifecycle management while leveraging existing ACME infrastructure and operational practices.</t>
        <t>The base framework [I-D.geng-acme-sm2dualcert-extension] addresses the "first step" of automated issuance for SM2 dual certificates, but two key issues remain to be solved: First, the encryption certificate private key is centrally escrowed by the KMC. If the KMC stores private keys independently for each certificate, it faces scalability bottlenecks in large-scale deployments (millions of certificates)—the storage, backup, and security management of private keys grow linearly with the number of certificates, becoming a serious operational pain point. Second, the security requirements for encryption certificates are higher than those for signature certificates—private key compromise directly threatens the confidentiality of historical data and is difficult to remediate after the fact. Therefore, encryption certificates naturally require higher renewal frequency than signature certificates, necessitating "automated key rotation" beyond "automated issuance."</t>
        <t>This document defines an ACME STAR extension on top of the base framework, specifically addressing <strong>automated key rotation</strong> for encryption certificates. By introducing an <strong>Asynchronous Remote Key Generation (ARKG) seed chain</strong>, the KMC can derive the full lifecycle key sequence for each encryption certificate in a stateless manner, eliminating the private key storage bottleneck in large-scale deployments while providing security properties such as <strong>key insulation</strong> and <strong>auditable recovery</strong>, enabling encryption certificates to use fresh key pairs at each automatic renewal.</t>
        <t>This document aims to fill this gap, providing a complete ACME-compliant solution for automated, secure management of large-scale SM2 encryption certificates.</t>
      </section>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>The standard ACME flow faces three key challenges in the SM2 dual-certificate use case:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Generation and delivery of encryption private keys</strong>: Standard ACME requires the client to generate key pairs, whereas SM2 encryption certificates require the KMC to generate and escrow encryption private keys, necessitating a secure delivery mechanism. STAR <xref target="RFC8739"/> addresses the "automatic renewal" procedural aspect but requires <strong>renewal using the same key pair</strong>, which cannot satisfy the security requirement of "fresh key per epoch" for encryption certificates.</t>
          </li>
          <li>
            <t><strong>Scalability bottleneck of KMC private key storage</strong>: The base framework requires the KMC to store and manage private keys independently for each encryption certificate. In large-scale deployments (millions of certificates), the storage, backup, and security management of private keys grow linearly with the number of certificates, becoming a serious scalability bottleneck.</t>
          </li>
          <li>
            <t><strong>Complexity of auditable recovery of historical private keys</strong>: SM compliance requirements <xref target="GMT.0034-2014"/> mandate that encryption private keys shall be capable of auditable recovery. If the KMC stores private keys independently for each certificate, the backup, version management, and secure deletion of historical private keys grow linearly with the number of certificates, increasing operational complexity and risk of exposure.</t>
          </li>
        </ol>
      </section>
      <section anchor="solution-overview">
        <name>Solution Overview</name>
        <t>This document addresses the above three challenges as follows:</t>
        <ul spacing="normal">
          <li>
            <t>For the <strong>signature certificate</strong>, the standard ACME flow is fully reused; the client may choose to use the traditional CSR method or the <tt>pk-01</tt> challenge <xref target="I-D.geng-acme-public-key"/> to complete the application.</t>
          </li>
          <li>
            <t>For the <strong>encryption certificate</strong>, this document defines an automated key rotation mechanism based on Asynchronous Remote Key Generation (ARKG) <xref target="Frymann2020"/>, enabling the encryption certificate to achieve <strong>automated key rotation</strong> within the STAR framework —deriving a fresh key pair at each renewal without requiring the client to re-execute authorization challenges or change the certificate retrieval method.</t>
          </li>
          <li>
            <t>The KMC derives all encryption certificate key pairs through a unified ARKG seed chain, achieving <strong>stateless operations</strong> and complete <strong>auditable recovery capability</strong>. This design maintains compatibility with existing ACME clients and servers, introduces no new Order types, and concentrates all SM-specific logic in a small number of extensionfields such as the <tt>auth-01</tt> challenge and <tt>authKey</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="scope-and-positioning">
        <name>Scope and Positioning</name>
        <t>The extension mechanism defined in this document <strong>applies only to dedicated trust systems that comply with SM standards (GM/T series)</strong> , such as SM2 certificate authentication systems and internal SM PKI deployments. This document <strong>does not apply to</strong> public trust TLS certificate systems (such as the Web PKI governed by the CA/Browser Forum). In the international PKI ecosystem, STAR <xref target="RFC8739"/> and ARI <xref target="RFC9773"/> address large-scale deployment operational challenges from two ends of the certificate lifecycle—STAR brings certificate renewal into the automation track through short-validity certificates, and ARI provides a mechanism for CAs to regulate client renewal behavior. Together, they drive the evolution of international certificate management toward full automation.</t>
        <t>The SM ecosystem has unique constraints: encryption certificate private keys are centrally escrowed by the KMC, and private key compromise directly threatens historical encrypted data—a backward security gap that no post-hoc revocation mechanism can remedy. This document introduces STAR's automated renewal concept into the SM2 dual-certificate system while adding a <strong>key insulation</strong> property for encryption certificates, ensuring that each epoch uses independently derived key pairs and that compromise of any epoch's private keydoes not affect other epochs. Short validity periods serve "future" exposure window management, while key insulation protects "past" encrypted data security; together they constitute complete security protection for SM2 encryption certificates.</t>
        <t><strong>Positioning Statement on Key Escrow</strong>: The security model of <xref target="RFC8555"/> assumes that certificate private keys are generated locally by the client and do not leave the client's trust boundary. The mechanism described in this document, whereby encryption private keys are centrally generated and escrowed by the KMC, is a <strong>mandatory requirement</strong> imposed by <xref target="GMT.0034-2014"/> and related regulatory frameworks on encryption certificates. This document merely provides ACME protocol-level adaptation to this established regulatory fact and does not constitute a general recommendation for key escrow architectures, nor does it change the principle that signature certificate private keys must be generated by the client and remain within its domain.</t>
        <t><strong>Positioning Statement on ACME Profile</strong>: This document defines an <strong>ACME Profile</strong> that adapts the core protocol of <xref target="RFC8555"/> to the specific deployment scenario of SM2 dual- certificate management in the SM ecosystem. This Profile follows the Profile framework conventions defined in <xref target="I-D.ietf-acme-profiles"/>.</t>
        <t><strong>Positioning Statement on Key Escrow Security Boundary</strong>: This document overlays a cryptographically auditable layer (see Section 7) on the established regulatory fact of key escrow. Although the KMC holds all encryption private keys, each epoch's private key is derived via the ARKG seed chain and leaves a verifiable cryptographic commitment in the Merkle tree. Even without relying on the CA's online records, relying parties and auditors can independently verify the cryptographic binding between the encryption certificate and the authorizing signature certificate. This document provides the maximum possible security assurance under the constraint of key escrow through the design philosophy of "escrow auditable" rather than "escrow trusted."</t>
      </section>
      <section anchor="relationship-to-existing-work">
        <name>Relationship to Existing Work</name>
        <ul spacing="normal">
          <li>
            <t><strong>Based on [I-D.geng-acme-sm2dualcert-extension]</strong>: Inherits the SM2 dual-certificate basic integration framework, digital envelope mechanism, <tt>auth-01</tt> challenge, and <tt>sm2AuthKeyHash</tt> extension. The server directly converts <tt>authKey</tt> (JWK format) to <tt>SubjectPublicKeyInfo</tt> for delivery to the KMC.</t>
          </li>
          <li>
            <t><strong>Aligned with <xref target="I-D.bradleylundberg-cfrg-arkg"/></strong>: The ARKG algorithm in this specification is a concrete instantiation of that generic framework on the SM2 curve.</t>
          </li>
          <li>
            <t><strong>Based on <xref target="RFC8739"/> STAR</strong>: The signature certificate uses the STAR automatic renewal mode; the encryption certificate borrows STAR's "logical resource" modeling approach and three-phaseflow structure.</t>
          </li>
          <li>
            <t><strong>References <xref target="RFC6962"/> Certificate Transparency</strong>: The Merkle root for audit proofs is submitted to CT logs.</t>
          </li>
          <li>
            <t><strong>Follows <xref target="I-D.ietf-acme-profiles"/></strong>: This document, as an ACME Profile, follows the conventions of that framework.</t>
          </li>
        </ul>
      </section>
      <section anchor="relationship-to-delegated-credential-scenarios">
        <name>Relationship to Delegated Credential Scenarios</name>
        <t>The encryption certificate key escrow and automated rotation problem addressed by this document can be viewed as a special certificate delegation scenario—the client delegates generation and management of the encryption private key to the KMC while retaining exclusive control of the signature key. This differs from <xref target="RFC9115"/> (Delegated Credentials), which addresses "certificate issuance delegation"; this document addresses "<strong>key generation and escrow delegation</strong>." The differences are as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Dimension</th>
              <th align="left">RFC 9115 (Delegated Credentials)</th>
              <th align="left">This Document (GM Profile)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Delegated object</td>
              <td align="left">Certificate issuance authority</td>
              <td align="left">Encryption key generation and escrow</td>
            </tr>
            <tr>
              <td align="left">Delegatee</td>
              <td align="left">Third party (e.g., CDN)</td>
              <td align="left">KMC (Key Management Center)</td>
            </tr>
            <tr>
              <td align="left">Private key holder</td>
              <td align="left">Delegatee holds private key</td>
              <td align="left">KMC generates and escrows; client holds copy</td>
            </tr>
            <tr>
              <td align="left">Use case</td>
              <td align="left">Third party applies for certificate on behalf of principal</td>
              <td align="left">Compliance requirement for encryption private key to be managed by KMC</td>
            </tr>
          </tbody>
        </table>
        <t><xref target="RFC9115"/> provides a Profile for the "third party holds private key" scenario; this document provides a Profile for the "third party generates and escrows private key" scenario. Together, they constitute a complete picture of ACME delegation capabilities.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD 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. This document uses all terms defined in Section 2 of [I-D.geng-acme-sm2dualcert-extension].</t>
      <t><strong>New terms defined in this specification</strong>:</t>
      <ul spacing="normal">
        <li>
          <t><strong>ARKG</strong>: Asynchronous Remote Key Generation, as defined in <xref target="Frymann2020"/>. The ARKG in this specification is a concrete instantiation of the generic framework in <xref target="I-D.bradleylundberg-cfrg-arkg"/> on the SM2 curve.</t>
        </li>
        <li>
          <t><strong>KMC Seed</strong>: <tt>seed_kmc</tt>, a long-term secret held by the KMC, used to derive all encryption certificate key pairs via ARKG.</t>
        </li>
        <li>
          <t><strong>Epoch</strong>: The version number of an encryption certificate, incremented at each key rotation.</t>
        </li>
        <li>
          <t><strong>Mode A (ARKG Envelope Delivery)</strong>: A mode in which the KMC derives key pairs via ARKG and delivers the private key to the client via a digital envelope.<strong>Mode B (ARKG Offline DH Derivation)</strong>: A mode in which the initial key is obtained via envelope delivery, and subsequent keys are derived offline by the client.</t>
        </li>
        <li>
          <t><strong>ARKG Derivation Factor (<tt>cred</tt>)</strong>: A public parameter used in ARKG for key derivation.</t>
        </li>
        <li>
          <t><strong>KMC Public Key Sequence</strong>: <tt>pk_kmc[j]</tt>, a series of public keys derived from <tt>seed_kmc</tt>, used for offline DH derivation in Mode B.</t>
        </li>
        <li>
          <t><strong><tt>account_thumbprint</tt></strong>: The JWK Thumbprint of the ACME account public key that initiated the request, computed as per Section 3 of <xref target="RFC7638"/>. This value provides cryptographic account public key binding in the <tt>auth-01</tt> signature input, enabling offline auditability of the signature.</t>
        </li>
      </ul>
      <t><strong>Note</strong>: JWK Thumbprint <xref target="RFC7638"/> uses the SHA-256 hash algorithm, which is a mandatory requirement of RFC 7638. This use of SHA-256 is limited to JWK Thumbprint computation and does not affect the consistency of this document's SM algorithm suite (SM2/SM3/SM4).</t>
      <t><strong>Automated Key Rotation</strong>: In this specification, this term refers to the mechanism by which encryption certificates derive fresh key pairs at each automatic renewal, distinguishing it from other terms such as "Key Evolution." This specification is technically implemented based on ARKG and uses "Automated Key Rotation" in business description to more accurately reflect its actual effect in the certificate renewal context.</t>
    </section>
    <section anchor="unified-arkg-key-derivation-system">
      <name>Unified ARKG Key Derivation System</name>
      <t>This section defines the core cryptographic infrastructure of this specification—the ARKG key derivation system. <strong>Mode A and Mode B share the complete cryptographic mechanisms defined in this section</strong>; the difference lies only in the private key delivery method defined in Section 4.</t>
      <section anchor="arkg-sm-cryptographic-suite">
        <name>ARKG SM Cryptographic Suite</name>
        <t>The ARKG SM cryptographic suite adopted by this protocol consists of the following cryptographic algorithms:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Algorithm Component</th>
              <th align="left">SM Algorithm</th>
              <th align="left">Specification Reference</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Public-key cryptosystem</td>
              <td align="left">SM2 (sm2p256v1 curve)</td>
              <td align="left">GM/T 0003-2012</td>
              <td align="left">Elliptic curve group operations, public/private key derivation</td>
            </tr>
            <tr>
              <td align="left">Hash function</td>
              <td align="left">SM3 (256-bit output)</td>
              <td align="left">GM/T 0004-2012</td>
              <td align="left">Seed chain, Merkle tree, signature hashing</td>
            </tr>
            <tr>
              <td align="left">Pseudorandom function</td>
              <td align="left">HMAC-SM3</td>
              <td align="left">GM/T 0042-2015</td>
              <td align="left">Derivation factor derivation (PRF)</td>
            </tr>
            <tr>
              <td align="left">Symmetric encryption</td>
              <td align="left">SM4 (128-bit key)</td>
              <td align="left">GM/T 0002-2012</td>
              <td align="left">Digital envelope encryption (Mode A)</td>
            </tr>
            <tr>
              <td align="left">Random number generation</td>
              <td align="left">RNG conforming to GM/T 0108-2021</td>
              <td align="left">GM/T 0108-2021</td>
              <td align="left">Seed generation, key derivation</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Algorithm OID Specification</strong>: The standard OID for the SM3 cryptographic hash algorithm adopted in this document is 1.2.156.10197.1.401, as defined in <xref target="GMT.0006-2023"/>. This OID shall be used for all newly generated certificates and signatures. Refer to Appendix B for handling of legacy alternative OIDs.</t>
        <t>ARKG consists of the following four polynomial-time algorithms:</t>
        <t>(1) <tt>Setup(1^λ) → params</tt>: Takes a security parameter as input and outputs system public parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Elliptic curve group <tt>G</tt> (prime order <tt>q</tt>, generator <tt>P</tt>), using the SM2 curve</t>
          </li>
          <li>
            <t>Hash function <tt>H</tt>: SM3</t>
          </li>
          <li>
            <t>Pseudorandom function <tt>PRF</tt>: HMAC-SM3</t>
          </li>
        </ul>
        <t>(2) <tt>KeyGen(params) → (pk_seed, sk_seed)</tt>: Generates a seed key pair, <tt>sk_seed ← Z_q</tt>, <tt>pk_seed = sk_seed · P</tt>. The seed private key is securely held by the KMC. In this specification, <tt>sk_seed</tt> corresponds to <tt>seed_kmc</tt>. Random number generation MUST conform to <xref target="GMT.0108-2021"/> requirements.</t>
        <t>(3) <tt>DerivePK(pk_seed, cred) → pk</tt>: <tt>pk = pk_seed + (PRF(cred) mod q) · P</tt>, where <tt>+</tt> denotes elliptic curve point addition.</t>
        <t>(4) <tt>DeriveSK(sk_seed, cred) → sk</tt>: <tt>sk = (sk_seed + PRF(cred)) mod q</tt></t>
        <t><strong>Security Note</strong>: The security of <tt>cred = PRF(k_i, meta_i)</tt> depends on the confidentiality of <tt>k_i</tt>. Even if an attacker learns the plaintext value of <tt>cred</tt>, they cannot compute the output of <tt>PRF(cred)</tt> because the key of <tt>PRF</tt> is <tt>k_i</tt>. Therefore, <tt>cred</tt> can be safely transmitted over public channels (Mode B).</t>
      </section>
      <section anchor="seed-chain-and-key-derivation">
        <name>Seed Chain and Key Derivation</name>
        <t>The KMC maintains a seed chain:</t>
        <artwork><![CDATA[
k_0 = random secret (256 bits), generated using an RNG conforming to {{GMT.0108-2021}}
k_{i+1} = H(k_i || 0x00 || counter_i)
]]></artwork>
        <t>where <tt>counter_i</tt> is a monotonically increasing integer (starting from 0). <tt>counter_i</tt> MUST be incremented with each epoch and <strong>MUST NOT</strong> be reused. The derivation factor is defined as: <tt>cred_i = PRF(k_i, meta_i)</tt>, where <tt>meta_i</tt> contains domain separation information including the domain name, epoch number, and algorithm identifier.</t>
        <t><strong><tt>meta_i</tt> Encoding Specification</strong>:</t>
        <t><tt>meta_i</tt> MUST use the following ASN.1 DER-encoded SEQUENCE structure:</t>
        <artwork><![CDATA[
MetaData ::= SEQUENCE {
domain OCTET STRING, -- UTF-8 encoded domain name
epoch INTEGER, -- Current epoch number (64-bit unsigned integer)
algorithm OCTET STRING, -- UTF-8 string of algorithm identifier
purpose OCTET STRING -- Domain separation string, value "key-derivation"
}
]]></artwork>
        <t><tt>k_i</tt> is used as the HMAC-SM3 key, and <tt>DER-encoded(MetaData)</tt> is used as the HMAC-SM3 message. The output of <tt>PRF(k_i, meta_i)</tt> is 256 bits (SM3 output length), used directly as the <tt>cred</tt> value in <tt>DerivePK</tt> and <tt>DeriveSK</tt>.</t>
        <t><strong>Domain Separation</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>Seed chain: <tt>H(k_i || 0x00 || counter_i)</tt></t>
          </li>
          <li>
            <t>Merkle tree leaf: <tt>H(0x01 || sk_i || meta_i)</tt></t>
          </li>
          <li>
            <t>Mode B KMC public key: <tt>pk_kmc[j] = DerivePK(pk_seed, "kmc-public-key" || 0x00 || uint32_to_bytes(j))</tt></t>
          </li>
          <li>
            <t>Mode B DH derivation domain separation: <tt>meta_i_dh</tt> uses the same <tt>MetaData</tt> structure as above, but with the <tt>purpose</tt>field set to <tt>"dh-derivation"</tt></t>
          </li>
        </ul>
        <t><strong>Key Derivation</strong>: For each epoch <tt>i</tt>, the KMC derives:</t>
        <artwork><![CDATA[
sk_i = DeriveSK(sk_seed, cred_i)
pk_i = DerivePK(pk_seed, cred_i)
]]></artwork>
        <t><strong><tt>seed_kmc</tt> Generation Requirements</strong>:</t>
        <t>Generation of <tt>seed_kmc</tt> <strong>MUST</strong> satisfy the following requirements:</t>
        <ol spacing="normal" type="1"><li>
            <t>Use a cryptographically secure random number generator conforming to <xref target="GMT.0108-2021"/>.</t>
          </li>
          <li>
            <t><strong>SHOULD</strong> combine multiple independent entropy sources (e.g., hardware RNG, operating system entropy, administrator-provided random seeds).</t>
          </li>
          <li>
            <t><strong>SHOULD</strong> perform entropy estimation after generation to ensure at least 256 bits of cryptographic strength.</t>
          </li>
          <li>
            <t>For high-security deployments, <strong>RECOMMENDED</strong> to use a multiple-party generation ceremony, with the seed stored in a threshold-shared manner.</t>
          </li>
        </ol>
      </section>
      <section anchor="security-properties">
        <name>Security Properties</name>
        <ul spacing="normal">
          <li>
            <t><strong>Correctness</strong>: <tt>pk_i = sk_i · P</tt> holds for all epochs.</t>
          </li>
          <li>
            <t><strong>Past-key compromise resistance</strong>: Even if the current private key is compromised, historical private keys cannot be recovered as long as the historical derivation factors <tt>cred_i</tt> are not compromised.</t>
          </li>
          <li>
            <t><strong>Future-key compromise resistance</strong>: The one-way property of the seed chain ensures that compromise of a future seed does not affect historical keys.</t>
          </li>
          <li>
            <t><strong>Auditability</strong>: The KMC stores the complete <tt>(k_i, meta_i)</tt> sequence and can recover private keys for any epoch under authorization with verifiable proof.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="encryption-private-key-delivery-modes">
      <name>Encryption Private Key Delivery Modes</name>
      <t>Based on the unified ARKG key derivation system defined in Section 3, this section defines two private key delivery modes. Both modes share the same key derivation infrastructure (<tt>seed_kmc</tt> → <tt>cred_i</tt> → <tt>(pk_i, sk_i)</tt>), differing only in the final delivery mechanism of <tt>sk_i</tt>.</t>
      <section anchor="mode-a-arkg-envelope-delivery-default">
        <name>Mode A: ARKG Envelope Delivery (Default)</name>
        <t>Mode A private key deliveryflow:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Key Derivation</strong>: The KMC derives the current epoch key pair <tt>(pk_i, sk_i)</tt> via the ARKG seed chain (per Section 3).</t>
          </li>
          <li>
            <t><strong>Envelope Assembly</strong>: The KMC encapsulates <tt>sk_i</tt> in a digital envelope. The envelope structure follows CMS <tt>EnvelopedData</tt> or <tt>SignedAndEnvelopedData</tt> syntax (<xref target="RFC5652"/> /<xref target="GMT.0010-2023"/>), encrypted using the client's signature public key.</t>
          </li>
          <li>
            <t><strong>Envelope Delivery</strong>: The envelope is returned in the <tt>finalize</tt> response or via the envelope endpoint.</t>
          </li>
          <li>
            <t><strong>Client Decryption</strong>: The client decrypts the envelope using its signature private key to obtain <tt>sk_i</tt>.</t>
          </li>
        </ol>
        <t><strong>CMS Version and Profile</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>When using <tt>EnvelopedData</tt>, the <tt>version</tt>field MUST be set to <tt>0</tt> (per <xref target="RFC5652"/> Section 6.1).</t>
          </li>
          <li>
            <t>When using <tt>SignedAndEnvelopedData</tt>, the <tt>version</tt>field MUST be set to <tt>1</tt> (per <xref target="RFC5652"/> Section 10.2, when using <tt>KeyTransRecipientInfo</tt>).</t>
          </li>
          <li>
            <t>The <tt>digestAlgorithms</tt>field MUST contain at least one digest algorithm identifier and <strong>MUST</strong> use the SM3 algorithm (OID <tt>1.2.156.10197.1.401</tt>).</t>
          </li>
          <li>
            <t>The <tt>keyEncryptionAlgorithm</tt> <strong>MUST</strong> use the SM2 public-key encryption algorithm OID <tt>1.2.156.10197.1.301.3</tt>, with <tt>parameters</tt> set to <tt>NULL</tt> (encoded as <tt>05 00</tt>).</t>
          </li>
          <li>
            <t>The <tt>contentEncryptionAlgorithm</tt> MUST use the SM4-CBC algorithm OID <tt>1.2.156.10197.1.104.2</tt>.</t>
          </li>
          <li>
            <t>If using <tt>SignedAndEnvelopedData</tt>, <strong>signature MUST be applied before encryption</strong>.</t>
          </li>
        </ul>
        <t><strong>Note</strong>: <tt>SignedAndEnvelopedData</tt> is noted as having ill-defined semantics in <xref target="RFC5652"/> (see <xref target="RFC5652"/> Section 10). This document uses this type for compatibility with <xref target="GMT.0010-2023"/>. Implementers should be aware of this semantic limitation; in deployment scenarios where only confidentiality protection is required and the communication channel already provides integrity protection, using <tt>EnvelopedData</tt> (version = 0) is also an acceptable alternative (see Section 3.3.1 of the base framework [I-D.geng-acme-sm2dualcert-extension]).</t>
      </section>
      <section anchor="mode-b-arkg-offline-dh-derivation-optional-enhancement">
        <name>Mode B: ARKG Offline DH Derivation (OPTIONAL Enhancement)</name>
        <t>Mode B is suitable for scenarios where the client needs <strong>fully offline private key derivation</strong> or pursues <strong>extreme stateless KMC operations</strong>. Mode B's bootstrap phase depends on digital envelope delivery of the initial <tt>sk_0</tt>; therefore, the client MUST explicitly set <tt>includeEnvelope: true</tt> when creating the order.</t>
        <t>Mode B private key deliveryflow:</t>
        <t><strong>Step 1: Initial Private Key Acquisition (via Mode A Envelope Delivery)</strong></t>
        <t>The client <strong>obtains the initial private key <tt>sk_0</tt> via Mode A envelope delivery</strong>.</t>
        <t><strong>Critical Dependency</strong>: Mode B's bootstrap phase depends on digital envelope delivery of <tt>sk_0</tt>; therefore, the client <strong>MUST</strong> explicitly set <tt>includeEnvelope: true</tt> when creating the order. If the client does not set this, the server will omit envelope assembly, the client will be unable to obtain <tt>sk_0</tt>, and subsequent key rotation cannot commence. In Mode B, the <tt>includeEnvelope</tt> parameter only affects the initial bootstrap phase envelope delivery. Once switched to Mode B's offline DH derivation, this parameter no longer applies.</t>
        <t><strong>Step 2: KMC Public Key Derivation</strong></t>
        <t>The KMC derives the KMC public key sequence from the same <tt>seed_kmc</tt>:</t>
        <artwork><![CDATA[
sk_kmc[j] = DeriveSK(sk_seed, "kmc-public-key" || 0x00 || uint32_to_bytes(j))
pk_kmc[j] = DerivePK(pk_seed, "kmc-public-key" || 0x00 || uint32_to_bytes(j))
]]></artwork>
        <t>Each <tt>pk_kmc[j]</tt> has a preset validity period (RECOMMENDED: 1 year).</t>
        <t><strong>Security Constraints</strong>: <tt>sk_kmc[j]</tt> MUST be protected at the same security level as <tt>seed_kmc</tt>. Operations using <tt>sk_kmc[j]</tt> MUST be performed in a protected cryptographic environment (e.g., HSM or TEE) to prevent side-channel attacks. Sensitive data in memory MUST be zeroized immediately after operations complete.</t>
        <t><strong>Old Key Retention</strong>: Rotated old <tt>sk_kmc[j]</tt> MUST be retained for at least the <strong>maximum encryption certificate validity period permitted in the current deployment</strong>. If the maximum certificate validity period is less than 30 days, MAY retain for 30 days to provide a securitymargin. This retention period ensures that all encryption certificate private keys derived using that <tt>pk_kmc[j]</tt> remain auditable and recoverable throughout the certificate validity period.</t>
        <t><strong>Step 3: KMC Public Key Distribution</strong></t>
        <t><tt>pk_kmc[0]</tt> is returned directly in the <tt>finalize</tt> response via the <tt>kmc_public_key</tt>field. Updates to subsequent <tt>pk_kmc[j]</tt> (<tt>j&gt;0</tt>) are obtained via the <tt>GET /acme/key-rotation-state/{orderID}/kmc-public-key</tt> endpoint (see Section 6.4).</t>
        <t><strong>Step 4: Subsequent Private Key Offline Derivation</strong></t>
        <t>The client holds the current private key <tt>sk_i</tt> and the current KMC public key <tt>pk_kmc[j]</tt>, computing entirely offline:</t>
        <t><strong>Client Computation</strong>:</t>
        <artwork><![CDATA[
delta_i = PRF(DH(sk_i, pk_kmc[j]), i || meta_i_dh)
sk_{i+1} = sk_i + delta_i
]]></artwork>
        <t><strong>Server Computation</strong>:</t>
        <artwork><![CDATA[
delta_i = PRF(DH(sk_kmc[j], pk_i), i || meta_i_dh)
pk_{i+1} = pk_i + delta_i · P
sk_{i+1} = sk_i + delta_i
]]></artwork>
        <t>Due to the symmetry of DH, both parties compute the same <tt>delta_i</tt>, ensuring <tt>sk_{i+1} · P = pk_{i+1}</tt>.</t>
        <t><strong>Encoding Specification</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>The output of <tt>DH(sk_i, pk_kmc[j])</tt> is an elliptic curve point on the SM2 curve (affine coordinates). This point MUST be encoded in SEC1 uncompressed point format (<tt>0x04 || x || y</tt>, where x and y are each 32-byte big-endian integers) as input to the PRF.</t>
          </li>
          <li>
            <t><tt>i</tt> is a 64-bit unsigned integer, <strong>MUST</strong> be encoded as 8 bytes in big-endian byte order.</t>
          </li>
          <li>
            <t><tt>meta_i_dh</tt> uses the same ASN.1 DER-encoded <tt>MetaData</tt> structure as in Section 3.2, but with the <tt>purpose</tt>field set to <tt>"dh-derivation"</tt>.</t>
          </li>
        </ul>
        <t>The complete PRF input is:</t>
        <artwork><![CDATA[
PRF_input = DH_point_bytes || uint64_to_big_endian(i) || DER_encoded(MetaData_dh)
]]></artwork>
        <t><strong>Client Verification</strong>: After obtaining each new certificate, the client MUST verify that <tt>sk_{i+1} · P == pk_{i+1}</tt>.<strong>Verification Failure Recovery Procedure</strong>: If verification fails, the client MUST:</t>
        <ol spacing="normal" type="1"><li>
            <t>Check whether the local derivation state (<tt>sk_i</tt>, <tt>pk_kmc[j]</tt>, <tt>epoch</tt>) is consistent with the server state. If inconsistent, obtain the latest state via <tt>GET /acme/key-rotation-state/{orderID}</tt>.</t>
          </li>
          <li>
            <t>If the state is consistent but verification still fails, the client SHOULD retry derivation and verification up to 3 times.</t>
          </li>
          <li>
            <t>If retries still fail, the client MUST terminate rotation and report a <tt>keyDerivationFailed</tt> error. Recovery options include: <strong>re-initiate the bootstrapflow</strong> (i.e., re-apply for an encryption certificate with <tt>includeEnvelope: true</tt> to obtain a new initial private key via Mode A), or <strong>fall back to Mode A</strong> (if supported by the server).</t>
          </li>
        </ol>
        <t><strong>Step 5: KMC Public Key Update</strong></t>
        <t>The client detects updates to <tt>pk_kmc[j]</tt> by periodically polling the state resource. Detection is performed by checking the value of the <tt>kmcPublicKeyVersion</tt> field in the <tt>key-rotation- state</tt> resource. When this value changes, the client SHOULD obtain the new KMC public key via <tt>GET /acme/key-rotation-state/{orderID}/kmc-public-key</tt>. The recommended polling strategy is determined by the client based on the deployment scenario; the server SHOULD indicate caching policy via the <tt>Cache-Control</tt> header to help clients optimize polling frequency (see Section 6.4).</t>
      </section>
      <section anchor="mode-relationship-and-migration">
        <name>Mode Relationship and Migration</name>
        <t><strong>Mode Relationship</strong>: Both modes share the same ARKG key derivation infrastructure. Mode B's initial bootstrap depends on Mode A's envelope mechanism. Mode B is an <strong>enhancement</strong> of Mode A (switching to offline derivation after obtaining the initial private key), not a replacement.</t>
        <t><strong>Mode Migration</strong>: Clients can migrate smoothly from Mode A to Mode B: complete one envelope delivery to obtain the current <tt>sk_i</tt>, obtain <tt>pk_kmc[0]</tt>, and switch to offline derivation for subsequent renewals.</t>
        <t><strong>Interoperability</strong>: Servers MUST support Mode A and MAY support Mode B. Clients select the mode via the <tt>derivationMode</tt>field.</t>
      </section>
      <section anchor="encryption-private-key-delivery-mode-selection-guide">
        <name>Encryption Private Key Delivery Mode Selection Guide</name>
        <t>The following decision guide applies to deployers needing to select an encryption private key delivery mode. All servers MUST support Mode A; Mode B is an OPTIONAL enhancement.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Deployment Scenario</th>
              <th align="left">Recommended Mode</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Maximum compatibility with base framework required</td>
              <td align="left">
                <strong>Mode A (Envelope)</strong></td>
              <td align="left">Full inheritance, zero protocol deviation</td>
            </tr>
            <tr>
              <td align="left">Lowest deployment risk desired</td>
              <td align="left">
                <strong>Mode A (Envelope)</strong></td>
              <td align="left">Mature mechanism, already validated</td>
            </tr>
            <tr>
              <td align="left">Large-scale deployment (millions of certificates)</td>
              <td align="left">
                <strong>Mode B (Offline DH)</strong></td>
              <td align="left">Stateless derivation, client offline</td>
            </tr>
            <tr>
              <td align="left">Client needs offline private key derivation</td>
              <td align="left">
                <strong>Mode B (Offline DH)</strong></td>
              <td align="left">Only online for certificate retrieval</td>
            </tr>
            <tr>
              <td align="left">Key insulation security property required</td>
              <td align="left">
                <strong>Mode B (Offline DH)</strong></td>
              <td align="left">Private key compromise does not affect other epochs</td>
            </tr>
            <tr>
              <td align="left">Most direct audit recovery requirement</td>
              <td align="left">
                <strong>Mode A (Envelope)</strong></td>
              <td align="left">Storage is evidence</td>
            </tr>
            <tr>
              <td align="left">PQC migration preparation prioritized</td>
              <td align="left">
                <strong>Mode B (Offline DH)</strong></td>
              <td align="left">Smoothly replaceable with PQC KEM</td>
            </tr>
          </tbody>
        </table>
        <t>Both modes can coexist on the same server, and different orders may use different modes.</t>
      </section>
    </section>
    <section anchor="protocol-flow">
      <name>Protocol Flow</name>
      <t>This section borrows the three-phase structure of <xref target="RFC8739"/> STAR, dividing the synchronized short-term automatic renewal process for SM2 dual certificates into three phases: <strong>Bootstrap</strong>, <strong>Auto Renewal</strong>, and <strong>Certificate Access</strong>.</t>
      <section anchor="phase-one-bootstrap">
        <name>Phase One: Bootstrap</name>
        <t><strong>Step 1: Signature Certificate Authorization and Issuance</strong></t>
        <t>The signature certificate is the foundation of identity authentication and <strong>MUST</strong> complete domain authorization verification and issuancefirst.</t>
        <ol spacing="normal" type="1"><li>
            <t>The client generates a signature key pair, creates a signature certificate order, and MUST include <tt>"auto-renewal": true</tt> in the <tt>newOrder</tt> request.</t>
          </li>
          <li>
            <t>The client completes standard ACME authorization challenges (HTTP-01, DNS-01, or pk-01). <strong>The signature certificate MUST NOT use the <tt>auth-01</tt> challenge</strong>.</t>
          </li>
          <li>
            <t>Submit <tt>finalize</tt>; the CSR contains the signature public key. The server issues the signature certificate.</t>
          </li>
        </ol>
        <t><strong>Step 2: Encryption Certificate Initial Issuance (Reusing Authorization)</strong></t>
        <t>The encryption certificate MUST be initiated <strong>after the signature certificate is issued</strong>, <strong>reusing</strong> the signature certificate's authorization. The <tt>auth-01</tt> challenge in the encryption certificate order MUST be placed in a <strong>dedicated authorization object</strong> (per Section 3.3.2 of the base framework [I-D.geng-acme-sm2dualcert-extension]). This dedicated authorization object MUST NOT contain any othertype of challenge. The server MUST create exactly one <tt>auth-01</tt> dedicated authorization object for each encryption certificate Order.</t>
        <t><strong><tt>auth-01</tt> Signature Construction</strong> (per Section 3.3.2 of [I-D.geng-acme-sm2dualcert-extension]):</t>
        <artwork><![CDATA[
message = "ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint
]]></artwork>
        <t>The signature value MUST use the normalized form <tt>s &lt;= n/2</tt>. The challenge URL is guaranteed by the server to be globally unique and non-reusable; the <tt>token</tt> has at least 128 bits of entropy; together they ensure non-replayability of the signature. The <tt>account_thumbprint</tt> provides account binding, ensuring the signature cannot be transferred to another account.</t>
        <t>Upon successful challenge, the server triggers the KMC to derive the initial key pair <tt>(pk_0, sk_0)</tt> via ARKG, assembles the digital envelope, and returns it in the <tt>finalize</tt> response. Mode B additionally derives and delivers <tt>pk_kmc[0]</tt>.</t>
      </section>
      <section anchor="phase-two-auto-renewal">
        <name>Phase Two: Auto Renewal</name>
        <ul spacing="normal">
          <li>
            <t><strong>Signature Certificate Auto Renewal (STAR)</strong>: Automatic renewal per the <xref target="RFC8739"/> STAR mode.</t>
          </li>
          <li>
            <t><strong>Encryption Certificate Auto Rotation</strong>: Mode A delivers new private keys via envelope; Mode B derives new private keys via offline DH.</t>
          </li>
          <li>
            <t><strong>Dual-Certificate Validity Binding</strong>: The <tt>notAfter</tt> of the encryption certificate MUST be ≤ the <tt>notAfter</tt> of the signature certificate. If the signature certificate is revoked or expires, the encryption certificate SHOULD also be revoked or have rotation stopped.</t>
          </li>
          <li>
            <t><strong>Synchronized Renewal Mechanism</strong>: Automatic renewal/rotation of both certificate types MUST be synchronized. The server MUST track the bound signature certificate STAR order via the <tt>syncWith</tt>field. If the signature certificate order referenced by <tt>syncWith</tt> is deleted or unreachable, the server SHOULD set the encryption certificate's rotation status to <tt>paused</tt> and log the event in the audit log.</t>
          </li>
        </ul>
      </section>
      <section anchor="phase-three-certificate-access">
        <name>Phase Three: Certificate Access</name>
        <t>The client obtains the currently valid short-term certificate via a <strong>fixed URL</strong>. The encryption certificate URL isfixed in the state resource.</t>
      </section>
    </section>
    <section anchor="acme-protocol-extensions">
      <name>ACME Protocol Extensions</name>
      <t>The extensions defined in this document follow the general ACME extension pattern: extension parameters are passed in the <strong>JWS Payload</strong> of the <tt>newOrder</tt> request, consistent with the <tt>newOrder</tt> request format defined in <xref target="RFC8555"/> Section 7.4. All extension parameters are protected by JWS signatures, ensuring their integrity and source authenticity. Standard ACME servers ignore unknown payloadfields, ensuring backward compatibility.</t>
      <section anchor="directory-object-extensions">
        <name>Directory Object Extensions</name>
        <artwork><![CDATA[
{
  "key-rotation": {
    "supportedModes": [
      "envelope",
      "dh-offline"
    ],
    "supportedSyncModes": [
      1,
      3
    ],
    "supportedAlgorithms": [
      "sm2p256v1-sm3"
    ],
    "maxEpochDuration": 2592000,
    "minEpochDuration": 604800
  },
  "key-rotation-state": "https://.../acme/key-rotation-state/"
}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>supportedModes</tt>: List of encryption private key delivery modes supported by the server. <tt>"envelope"</tt> is the default mode and MUST be supported by all servers; <tt>"dh-offline"</tt> is an OPTIONAL enhancement mode.</t>
          </li>
          <li>
            <t><tt>supportedSyncModes</tt>: List of synchronization mode identifiers supported by the server. Mode <tt>1</tt> indicates "standard DH derivation mode"; mode <tt>3</tt> indicates "composite derivation mode" (currently undefined, reserved for future extension). Thefirst byte provided by the client in the <tt>seedSync</tt>field MUST be within this list.</t>
          </li>
          <li>
            <t><tt>supportedAlgorithms</tt>: List of algorithm combinations supported by the server. The string format is <tt>curve-hash</tt>; currently, <tt>"sm2p256v1-sm3"</tt> is supported. The client MUST select one item from this list for the <tt>algorithm</tt>field in the <tt>newOrder</tt> request. <strong>Algorithm Extension Strategy</strong>: If the SM Administration releases post-quantum replacement algorithms for SM2 or other algorithm combinations in the future, new algorithm identifiers (such as <tt>"sm2p256v1+ml-kem-768"</tt> or the standard name assigned by the SM Administration) can be registered in this registry. Clients and servers negotiate via the directory object for smooth migration. This mechanism aligns with the IETF's ongoing "Quantum-Ready Profiles for ACME" and "Post-Quantum Cryptographic Agility Profile for ACME" work.</t>
          </li>
          <li>
            <t><tt>maxEpochDuration</tt>/<tt>minEpochDuration</tt>: Maximum/minimum epoch duration allowed by the server (in <strong>seconds</strong>).</t>
          </li>
          <li>
            <t><tt>key-rotation-state</tt>: Directory template URL for the state resource.### 6.2. Creation of Encryption Certificate Orders</t>
          </li>
        </ul>
      </section>
      <section anchor="creation-of-encryption-certificate-orders">
        <name>Creation of Encryption Certificate Orders</name>
        <artwork><![CDATA[
{
  "identifiers": [
    {
      "type": "dns",
      "value": "example.com"
    }
  ],
  "authorizations": [
    "https://.../authz/123"
  ],
  "authKey": {
    "kty": "EC",
    "crv": "sm2p256v1",
    "x": "...",
    "y": "..."
  },
  "includeEnvelope": true,
  "auto-renewal": true,
  "key-rotation": {
    "algorithm": "sm2p256v1-sm3",
    "derivationMode": "dh-offline",
    "seedSync": "base64url(0x01 || eph_pk)",
    "initialEpoch": 0,
    "syncWith": "https://.../order/sig/123"
  }
}
]]></artwork>
        <t><strong><tt>key-rotation</tt> Object Field Descriptions</strong>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>algorithm</tt>: REQUIRED. Algorithm combination identifier; value MUST be one of the <tt>supportedAlgorithms</tt> list in the directory object.</t>
          </li>
          <li>
            <t><tt>derivationMode</tt>: OPTIONAL. Encryption private key delivery mode; values are <tt>"envelope"</tt> (Mode A) or <tt>"dh-offline"</tt> (Mode B). Default is <tt>"envelope"</tt>. If the server does not support the requested mode, it SHOULD return an <tt>unsupportedDerivationMode</tt> error.</t>
          </li>
          <li>
            <t><tt>seedSync</tt>: OPTIONAL. Synchronization information for Mode B bootstrap phase. Format is base64url encoding of <tt>sync_mode_byte || eph_pk</tt>, where thefirst byte <tt>sync_mode_byte</tt> indicates the synchronization mode (MUST correspond to one of the values in the directory's <tt>supportedSyncModes</tt>). <tt>eph_pk</tt> is the public key of a temporary key pair generated by the client, using the SM2 curve (sm2p256v1), represented in uncompressed point encoding (<tt>0x04 || x || y</tt>, 32 bytes each). The temporary private key SHOULD be cleared from memory immediately after initial synchronization completes. This temporary public key is used to establish initial synchronization of the KMC public key index during the bootstrap phase. If the client does not provide thisfield, the server SHOULD use default value <tt>0x01</tt> as the synchronization mode and generate the corresponding temporary public key.</t>
          </li>
          <li>
            <t><tt>initialEpoch</tt>: OPTIONAL. Requested initial epoch number. Default is <tt>0</tt>. If the server does not support the specified value (e.g., already exists), it SHOULD return an <tt>epochRollback</tt> error.</t>
          </li>
          <li>
            <t><tt>syncWith</tt>: OPTIONAL. Bound signature certificate STAR order URL for synchronized dual- certificate renewal. If provided, the server MUST validate its validity. <strong><tt>includeEnvelope</tt> Field</strong>: Default is <tt>false</tt>. The server includes <tt>envelope</tt> in delivery only when the client explicitly sets it to <tt>true</tt>. Mode B MUST explicitly set <tt>includeEnvelope: true</tt>.</t>
          </li>
        </ul>
        <t><strong>Server Processing</strong>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Verify that <tt>authKey</tt> is present and correctly formatted. If missing, return <tt>authKeyMissing</tt>.</t>
          </li>
          <li>
            <t>If <tt>derivationMode</tt> is <tt>"dh-offline"</tt> but the server does not support it, return <tt>unsupportedDerivationMode</tt>.</t>
          </li>
          <li>
            <t>Verify that the signature certificate order referenced by <tt>syncWith</tt> exists, is valid, and contains the same <tt>identifier</tt>.</t>
          </li>
          <li>
            <t>Verify that the signature certificate authorization object corresponding to that identifier is valid and not expired.</t>
          </li>
          <li>
            <t><strong>Verify Signature Certificate Existence</strong>: Before triggering the KMC, verify that the signature certificate corresponding to <tt>authKey</tt> has been issued by this CA to the same ACME account, has identifiers consistent with the current Order, and is in a valid state. If verification fails, return <tt>signingCertRequired</tt>.</t>
          </li>
          <li>
            <t>Create a <tt>key-rotation-state</tt> resource with initial status <tt>"pending"</tt>.</t>
          </li>
          <li>
            <t>Trigger the KMC to derive the initial encryption key pair <tt>(pk_0, sk_0)</tt> via ARKG.</t>
          </li>
          <li>
            <t><strong>Envelope Assembly</strong>: If the client explicitly sets <tt>includeEnvelope: true</tt>, the server MUST assemble and return the digital envelope. Mode B MUST set <tt>includeEnvelope: true</tt>.</t>
          </li>
          <li>
            <t>If Mode B, additionally derive and deliver <tt>pk_kmc[0]</tt>.</t>
          </li>
          <li>
            <t>Order enters <tt>"ready"</tt> state.</t>
          </li>
        </ol>
        <t><strong>Response after successful <tt>finalize</tt></strong>:</t>
        <artwork><![CDATA[
{
  "status": "valid",
  "certificate": "https://.../cert/123",
  "envelope": "base64url(...)",
  "keyRotationState": "https://.../acme/key-rotation-state/123"
}
]]></artwork>
        <t>The <tt>envelope</tt> field in this example is present only when the client explicitly sets <tt>includeEnvelope: true</tt>.</t>
        <t><strong>Fatal Error Definitions</strong>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>invalidCSR</tt>, <tt>invalidKeyUsage</tt>, <tt>invalidSM2Signature</tt>, <tt>signingCertRequired</tt> → status transitions to <tt>invalid</tt></t>
          </li>
          <li>
            <t><tt>kmcUnavailable</tt>, <tt>envelopeGenerationFailed</tt> → status remains <tt>pending</tt> (retryable) <strong>Order and State Resource Relationship</strong>: The order enters the <tt>valid</tt> terminal state and does not change thereafter (per <xref target="RFC8555"/>). The key rotation lifecycle is managed by the independent <tt>key-rotation-state</tt> resource.</t>
          </li>
        </ul>
      </section>
      <section anchor="key-rotation-state-resource-and-state-transitions">
        <name>Key Rotation State Resource and State Transitions</name>
        <t>The state machine of this resource maintains semantic consistency with STAR's (<xref target="RFC8739"/>) auto-renewal state machine—the <tt>canceled</tt> state cancels the rotation process, not the already-issued certificate.</t>
        <t><strong>State Resource</strong>:</t>
        <artwork><![CDATA[
{
  "status": "active",
  "order": "https://.../order/123",
  "epoch": 0,
  "expires": "2026-07-23T00:00:00Z",
  "nextEpoch": "2026-07-23T00:00:00Z",
  "certificate": "https://.../cert/123",
  "derivationMode": "dh-offline",
  "envelope": "https://.../acme/key-rotation-state/123/envelope",
  "kmcPublicKey": "https://.../acme/key-rotation-state/123/kmc-public-key",
  "kmcPublicKeyVersion": 0,
  "boundSigningCert": "https://.../cert/sig/123",
  "syncWith": "https://.../order/sig/123"
}
]]></artwork>
        <t><strong>Polling Optimization</strong>: Servers SHOULD support ETag or Last-Modified headers on the <tt>key-rotation-state</tt> resource, allowing clients to use conditional requests (If-None-Match/If-Modified-Since) to reduce unnecessary transfers. This optimization is consistent with the general design for resource access in <xref target="RFC8555"/>.</t>
        <t><strong>State Transitions</strong>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Current State</th>
              <th align="left">Allowed Transitions</th>
              <th align="left">Trigger Condition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>pending</tt></td>
              <td align="left">→ <tt>active</tt></td>
              <td align="left">
                <tt>finalize</tt> successful</td>
            </tr>
            <tr>
              <td align="left">
                <tt>pending</tt></td>
              <td align="left">→ <tt>invalid</tt></td>
              <td align="left">
                <tt>finalize</tt> fatal failure or <tt>expires</tt> timeout</td>
            </tr>
            <tr>
              <td align="left">
                <tt>pending</tt></td>
              <td align="left">→ <tt>canceled</tt></td>
              <td align="left">
                <tt>POST /cancel</tt> or <tt>syncWith</tt> cancellation</td>
            </tr>
            <tr>
              <td align="left">
                <tt>active</tt></td>
              <td align="left">→ <tt>paused</tt></td>
              <td align="left">
                <tt>POST /pause</tt> or <tt>syncWith</tt> binding失效</td>
            </tr>
            <tr>
              <td align="left">
                <tt>active</tt></td>
              <td align="left">→ <tt>canceled</tt></td>
              <td align="left">
                <tt>POST /cancel</tt> or <tt>syncWith</tt> cancellation</td>
            </tr>
            <tr>
              <td align="left">
                <tt>paused</tt></td>
              <td align="left">→ <tt>active</tt></td>
              <td align="left">
                <tt>POST /resume</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>paused</tt></td>
              <td align="left">→ <tt>canceled</tt></td>
              <td align="left">
                <tt>POST /cancel</tt> or <tt>syncWith</tt> cancellation</td>
            </tr>
            <tr>
              <td align="left">
                <tt>invalid</tt>/<tt>canceled</tt></td>
              <td align="left">→ none</td>
              <td align="left">Terminal states</td>
            </tr>
          </tbody>
        </table>
        <t><strong><tt>syncWith</tt> Binding Failure Handling</strong>: When the signature certificate order referenced by <tt>syncWith</tt> is deleted or unreachable, the server SHOULD set the encryption certificate's rotation status to <tt>paused</tt> and log the event in the audit log. The client may attempt recovery via <tt>POST /resume</tt> (see Section 6.5).</t>
      </section>
      <section anchor="certificate-and-private-key-retrieval">
        <name>Certificate and Private Key Retrieval</name>
        <ul spacing="normal">
          <li>
            <t><strong>Envelope Retrieval (Mode A)</strong>: <tt>GET /acme/key-rotation-state/{orderID}/envelope</tt>, MUST set <tt>Cache-Control: no-store, private</tt>.</t>
          </li>
          <li>
            <t><strong>Envelope Re-retrieval Mechanism</strong>: If the server uses asynchronous issuance, the <tt>envelope</tt> is delivered via POST-as-GET after the Order transitions to <tt>valid</tt>. The server MUST support re-retrieval throughout the Order's retrievable lifecycle.</t>
          </li>
          <li>
            <t><strong>KMC Public Key Retrieval (Mode B)</strong>: <tt>GET /acme/key-rotation-state/{orderID}/kmc-public-key</tt>.</t>
          </li>
          <li>
            <t><strong>KMC Public Key Update Detection</strong>: Clients detect updates to <tt>pk_kmc[j]</tt> by periodically polling the <tt>key-rotation-state</tt> resource, checking for changes in the <tt>kmcPublicKeyVersion</tt>field value. When this value changes, the client SHOULD obtain the new KMC public key via <tt>GET /acme/key-rotation-state/{orderID}/kmc-public-key</tt>. The recommended polling interval for clients is half of the <tt>max-age</tt> or <tt>expires</tt> time indicated by the state resource; if the server does not provide caching hints, the client SHOULD use a polling interval not exceeding 24 hours.</t>
          </li>
        </ul>
      </section>
      <section anchor="key-rotation-management">
        <name>Key Rotation Management</name>
        <ul spacing="normal">
          <li>
            <t><strong>Automatic Advancement</strong>: The server automatically advances <tt>epoch</tt> at <tt>nextEpoch</tt>.</t>
          </li>
          <li>
            <t><strong>Manual Management Endpoints</strong>: <tt>/pause</tt>, <tt>/resume</tt>, <tt>/advance</tt>, <tt>/cancel</tt>.</t>
          </li>
          <li>
            <t><strong>POST /resume Request Format</strong>: Resume paused key rotation. The request body is a JSON object that may include the <tt>syncWith</tt>field to re-establish binding with the signature certificate.</t>
          </li>
        </ul>
        <artwork><![CDATA[
{
  "syncWith": "https://.../order/sig/123"
}
]]></artwork>
        <t>If the <tt>syncWith</tt>field is omitted, the server SHOULD attempt to restore the original binding relationship (if still valid). If the server cannot restore the binding, it SHOULD return a <tt>syncTargetInvalid</tt> error and keep the state resource <tt>paused</tt>.</t>
        <t><strong>Idempotency</strong>: All manual management endpoints are idempotent. For repeated requests that are already in the target state, the server SHOULD return HTTP 200 OK with the current resource state and no side effects.</t>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t><strong>Base Framework Error Types</strong>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Error Type</th>
              <th align="left">HTTP Status</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:authKeyMissing</tt></td>
              <td align="left">400</td>
              <td align="left">
                <tt>authKey</tt> missing from JWS Payload</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:kmcUnavailable</tt></td>
              <td align="left">503</td>
              <td align="left">KMC temporarily unavailable</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:envelopeGenerationFailed</tt></td>
              <td align="left">500</td>
              <td align="left">Envelope generation failed</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidKeyUsage</tt></td>
              <td align="left">400</td>
              <td align="left">KeyUsage does not meet requirements</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidCSR</tt></td>
              <td align="left">400</td>
              <td align="left">Encryption certificate Order finalize request contains CSR</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:invalidSM2Signature</tt></td>
              <td align="left">400</td>
              <td align="left">SM2 signature verification failed. Semantically distinct from <tt>badSignatureAlgorithm</tt> (for unsupported JWS signature algorithms) in <xref target="RFC8555"/> Section 6.7</td>
            </tr>
            <tr>
              <td align="left">
                <tt>urn:ietf:params:acme:error:signingCertRequired</tt></td>
              <td align="left">403</td>
              <td align="left">No valid signature certificate found corresponding to <tt>authKey</tt></td>
            </tr>
          </tbody>
        </table>
        <t><strong>New Error Types Defined in This Specification</strong></t>
        <table>
          <thead>
            <tr>
              <th align="left">Error Type</th>
              <th align="left">HTTP Status</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>unsupportedDerivationMode</tt></td>
              <td align="left">400</td>
              <td align="left">Server does not support requested <tt>derivationMode</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>unsupportedSyncMode</tt></td>
              <td align="left">400</td>
              <td align="left">
                <tt>seedSync</tt> mode not supported</td>
            </tr>
            <tr>
              <td align="left">
                <tt>algorithmUnsupported</tt></td>
              <td align="left">400</td>
              <td align="left">Algorithm not supported</td>
            </tr>
            <tr>
              <td align="left">
                <tt>authorizationExpired</tt></td>
              <td align="left">400</td>
              <td align="left">Reused signature certificate authorization has expired</td>
            </tr>
            <tr>
              <td align="left">
                <tt>syncTargetInvalid</tt></td>
              <td align="left">400</td>
              <td align="left">Signature certificate order referenced by <tt>syncWith</tt> is invalid</td>
            </tr>
            <tr>
              <td align="left">
                <tt>syncTargetCanceled</tt></td>
              <td align="left">400</td>
              <td align="left">Signature certificate order referenced by <tt>syncWith</tt> has been canceled</td>
            </tr>
            <tr>
              <td align="left">
                <tt>epochRollback</tt></td>
              <td align="left">400</td>
              <td align="left">Epoch rollback attempted</td>
            </tr>
            <tr>
              <td align="left">
                <tt>epochOutOfRange</tt></td>
              <td align="left">400</td>
              <td align="left">Epoch out of range</td>
            </tr>
            <tr>
              <td align="left">
                <tt>envelopeConsumed</tt></td>
              <td align="left">409</td>
              <td align="left">Envelope has already been consumed</td>
            </tr>
            <tr>
              <td align="left">
                <tt>rotationCanceled</tt></td>
              <td align="left">403</td>
              <td align="left">Rotation has been terminated</td>
            </tr>
            <tr>
              <td align="left">
                <tt>endpointNotAvailable</tt></td>
              <td align="left">404</td>
              <td align="left">Endpoint not available in current mode</td>
            </tr>
            <tr>
              <td align="left">
                <tt>keyDerivationFailed</tt></td>
              <td align="left">500</td>
              <td align="left">Private key derivation verification failed</td>
            </tr>
            <tr>
              <td align="left">
                <tt>stateInvalid</tt></td>
              <td align="left">409</td>
              <td align="left">State resource is in a terminal state</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="auditable-recovery-and-proof">
      <name>Auditable Recovery and Proof</name>
      <t>The KMC's ability to recover historical private keys via the ARKG seed chain is a core compliance feature of this specification.</t>
      <section anchor="authorized-audit-procedure">
        <name>Authorized Audit Procedure</name>
        <ul spacing="normal">
          <li>
            <t><strong>Mode A</strong>: The KMC provides <tt>sk_t</tt> directly from storage (or recomputes from the seed).</t>
          </li>
          <li>
            <t><strong>Mode B</strong>: The KMC recomputes <tt>sk_t</tt> from <tt>seed_kmc</tt>:</t>
          </li>
        </ul>
        <ol spacing="normal" type="1"><li>
            <t>Recompute <tt>cred_t</tt> and <tt>sk_t = DeriveSK(sk_seed, cred_t)</tt> from <tt>seed_kmc</tt>.</t>
          </li>
          <li>
            <t>Generate proof <tt>π_t</tt> (see Section 7.2).</t>
          </li>
        </ol>
        <t><strong>Impact of Seed Rotation on Audit</strong>: After rotation, old seeds MUST be retained for at least the maximum certificate validity period (RECOMMENDED: at least 30 days).</t>
        <t><strong>Compliance Note</strong>: The KMC's ability to recover private keys via seed derivation is, at the audit compliance level, equivalent to the "private key escrow" capability required by <xref target="GMT.0034-2014"/>.</t>
      </section>
      <section anchor="post-hoc-audit-proof-based-on-certificate-transparency-logs">
        <name>Post-hoc Audit Proof Based on Certificate Transparency Logs</name>
        <t><strong>Merkle Tree Construction</strong>: Immediately after deriving the private key for each epoch, the KMC computes its hash <tt>H(0x01 || sk_i || meta_i)</tt> and adds it to the Merkle tree, then MUST securely destroy the private key. For Mode A, the KMC already stores private keys, so Merkle tree construction is OPTIONAL; however, unified execution is recommended to simplify the audit mechanism.</t>
        <t><strong>Relationship between Merkle Tree and Seed Chain</strong>: The root of the Merkle tree can be viewed as a public commitment of the KMC seed chain. Auditors can confirm the mathematical consistency between the recovered private key and the certificate public key by verifying the Merkle path, without needing access to the KMC's seed.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document inherits all security considerations from Section 6 of [I-D.geng-acme-sm2dualcert-extension]. This section supplements security requirements specific to this specification.</t>
      <section anchor="key-management-security">
        <name>Key Management Security</name>
        <t><strong>KMC Seed Compromise Risk</strong>: The security of both modes depends on the confidentiality of <tt>seed_kmc</tt>. <tt>seed_kmc</tt> MUST be stored in an HSM (FIPS 140-2 Level 3 or EAL 4+). RECOMMENDED to use a threshold KMC architecture. The consequences of <tt>seed_kmc</tt> compromise depend on the timing of the compromise: private keys for certificates issued before the compromise can still be derived, but shortening certificate validity periods (7-30 days as recommended by this specification) can narrow the affected time window. Deployers are advised to comprehensively assess risks in conjunction with certificate validity periods and security monitoring strategies.</t>
        <t><strong><tt>sk_kmc[j]</tt> Security</strong>: <tt>sk_kmc[j]</tt> MUST be protected at the same security level as <tt>seed_kmc</tt>. Consequence differences: compromise of <tt>seed_kmc</tt> allows derivation of all epoch private keys; compromise of <tt>sk_kmc[j]</tt> only allows derivation of future private keys starting from epoch j.<strong>Seed Rotation and Audit Trail</strong>: Rotated old <tt>sk_kmc[j]</tt> MUST be retained for at least the maximum certificate validity period (RECOMMENDED: at least 30 days). New seeds are only used for future epoch key derivation. Rotation SHOULD update the KMC's HSM configuration and record the rotation event in the audit log (including timestamp, old seed identifier, new seed identifier).</t>
      </section>
      <section anchor="protocol-and-communication-security">
        <name>Protocol and Communication Security</name>
        <ul spacing="normal">
          <li>
            <t><strong>Envelope Endpoint Security</strong>: The <tt>envelope</tt> endpoint MUST require account authentication and MUST set the <tt>Cache-Control: no-store, private</tt> header.</t>
          </li>
          <li>
            <t><strong>KMC and ACME Server Trust Boundary</strong>: Communication security follows the requirements of Section 6 of the base framework. The ACME server MUST NOT directly access the KMC's seed private key.</t>
          </li>
          <li>
            <t><strong><tt>account_thumbprint</tt> Caching Security</strong>: Clients SHOULD recompute <tt>account_thumbprint</tt> each time it is needed. If caching is desired, cache entries MUST be invalidated immediately upon account key change, and cache TTL SHOULD NOT exceed 24 hours.</t>
          </li>
        </ul>
      </section>
      <section anchor="cryptographic-security">
        <name>Cryptographic Security</name>
        <t><strong>DH Public Key Validity Verification</strong>: Before performing DH computation, both server and client MUST verify the validity of the peer's public key—the public key point MUST NOT be the point at infinity, MUST satisfy the SM2 curve equation, and MUST be in the correct subgroup (<tt>q · P == O</tt>). Unverified public keys may lead to small-subgroup attacks. Verification algorithms SHOULD use constant-time implementation to prevent attackers from obtaining sensitive information through timing analysis.</t>
        <t><strong><tt>auth-01</tt> Signature Security</strong>: The <tt>account_thumbprint</tt> in the <tt>auth-01</tt> signature input provides cryptographic account binding, enabling offline auditability of the signature without relying on the CA's online records. The signature value MUST use the normalized form <tt>s &lt;= n/2</tt> to prevent signature malleability attacks.</t>
      </section>
      <section anchor="compliance-and-coordination">
        <name>Compliance and Coordination</name>
        <t><strong>Encryption Certificate MUST Include <tt>sm2AuthKeyHash</tt> Extension</strong>: Per Section 3.4 of the base framework [draft-geng-acme-sm2dualcert-extension], encryption certificates issued under this specification MUST include this extension. This extension is non-critical (<tt>critical = FALSE</tt>). Relying parties that do not understand this extension can still accept the certificate. Relying parties that need to verify the dual-certificate binding relationship SHOULD actively check the existence and hash consistency of this extension. If the extension exists and the hash does not match, they MUST reject trust; if the extension does not exist, they MAY accept the certificate but cannot verify the binding relationship.<strong><tt>syncWith</tt> Coordination Strategy</strong>: When the referenced signature certificate order enters the <tt>canceled</tt> or <tt>invalid</tt> state, the server SHOULD transition the associated state resource to <tt>canceled</tt>. When the signature certificate order is deleted or unreachable, the server SHOULD set it to <tt>paused</tt> (see Section 6.3).</t>
        <t><strong>Simplification of Revocation Strategy through Key Rotation</strong>: The key rotation mechanism in this specification simplifies revocation decisions for encryption certificates. Because each epoch's certificate has an independent key pair and short validity period, stopping automatic rotation can equivalently replace revocation operations without triggering immediate CRL/ OCSP updates, thereby reducing the load pressure on revocation infrastructure in large-scale scenarios.</t>
      </section>
      <section anchor="post-quantum-cryptography-preparedness">
        <name>Post-Quantum Cryptography Preparedness</name>
        <t>This protocol is currently based on the SM2 elliptic curve cryptosystem, which is based on the Elliptic Curve Discrete Logarithm Problem (ECDLP) and faces quantum computing threats. Although large-scale universal quantum computers have not yet become a reality, early consideration of post-quantum cryptography (PQC) migration paths is critical for the long-term security of certificate systems.</t>
        <t><strong>Threat Model</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>The effective security strength of the SM2 algorithm family in a quantum computing environment is approximately half of its classical strength (Grover's algorithm provides square-root acceleration for symmetric ciphers), while Shor's algorithm can solve ECDLP in polynomial time on a quantum computer. Therefore, at the current 128-bit security strength, SM2's quantum effective strength is approximately 64 bits.</t>
          </li>
          <li>
            <t>Attackers may adopt a "Store Now, Decrypt Later" strategy, where sensitive data encrypted today could be decrypted in the future when quantum computers become available.</t>
          </li>
        </ul>
        <t><strong>Mitigation and Migration Preparation in This Protocol</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>This protocol has already reserved algorithm negotiation mechanisms through the <tt>supportedAlgorithms</tt>field in the directory object (Section 6.1). When the SM Administration releases post-quantum replacement algorithms for SM2 in the future, smooth migration can be achieved by adding new algorithm identifiers to <tt>supportedAlgorithms</tt> without modifying the protocol framework.</t>
          </li>
          <li>
            <t>The ARKG seed chain mechanism of this protocol is naturally suitable for combination with composite encryption schemes (see Section 10.1)—the same seed chain can derive both traditional and post-quantum keys simultaneously. This scheme can synergize with the IETF's ongoing composite encryption and composite signature work (LAMPS Working Group).</t>
          </li>
        </ul>
        <t><strong>Deployment Recommendations</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>For deployment scenarios requiring long-term confidentiality (e.g., certificate validity periods exceeding 10 years), deployers are advised to <strong>formulate a PQC migration plan as soon as possible</strong> and monitor the progress of PQC algorithm standards released by the SM Administration.- When building new systems, it is recommended to prioritize deployment methods that support algorithm negotiation (i.e., this protocol's directory object includes the <tt>supportedAlgorithms</tt>field) to enable seamless future switching to PQC algorithms.</t>
          </li>
          <li>
            <t>Deployers using this protocol's encryption certificates should periodically assess the progress of quantum computing threats and adjust certificate validity periods and security parameters as needed.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="design-considerations">
      <name>Design Considerations</name>
      <t>This section is non-normative and aims to clarify the key architectural choices made in this document under the hard constraints of the SM2 dual-certificate system and their rationale.</t>
      <section anchor="independent-key-rotation-vs-synchronization-with-signature-certificate">
        <name>Independent Key Rotation vs. Synchronization with Signature Certificate</name>
        <t><strong>Question</strong>: Should encryption certificate key updates be synchronized with the signature certificate? Why not use the same key rotation cadence for both certificates?</t>
        <t><strong>Consideration</strong>: In the SM2 dual-certificate system, the signature certificate is the identity anchor; the consequence of its private key compromise is identity impersonation, which has broad impact but can be controlled through revocation mechanisms. Encryption certificate private key compromise directly threatens the confidentiality of historical data and is difficult to remediate after the fact. <strong>Therefore, encryption certificates naturally require higher update frequency than signature certificates.</strong></t>
        <t><strong>Decision</strong>: This specification decouples the encryption certificate update cycle from the signature certificate, allowing the two certificate types to rotate independently according to their respective security requirements. Encryption certificates can independently adopt shorter validity periods (e.g., 7-30 days) to minimize the exposure window of private key compromise, while signature certificates can maintain longer lifecycles (e.g., 1-2 years). This is a complete implementation of the design philosophy of the SM2 dual-certificate system.</t>
      </section>
      <section anchor="two-independent-orders-vs-single-bundle-order">
        <name>Two Independent Orders vs. Single Bundle Order</name>
        <t><strong>Question</strong>: Since SM2 dual certificates belong to the same entity, should a single Order be used to request both certificates simultaneously?</t>
        <t><strong>Consideration</strong>: Within the ACME protocol framework, two main design paths exist:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Single Order Model</strong>: Requesting both certificates in a single request appears to reduce HTTP round trips but is inconsistent with the Order single-certificate semantics of <xref target="RFC8555"/>, leading to complex error handling and state management logic.</t>
          </li>
          <li>
            <t><strong>Two-Order Model (Selected)</strong>: Creates independent Orders for each certificate, strictly ollowing the resource model of <xref target="RFC8555"/>, maintaining maximum compatibility, clear error isolation, and long-term maintainability.</t>
          </li>
        </ul>
        <t><strong>Decision</strong>: This specification chooses the two-Order model. The two certificates establish a binding relationship through the <tt>syncWith</tt>field, achieving dual-certificate coordination while maintaining Order atomicity.</t>
      </section>
      <section anchor="key-rotation-state-resource-vs-order-extension-fields">
        <name>Key Rotation State Resource vs. Order Extension Fields</name>
        <t><strong>Question</strong>: Should key rotation status be managed directly as extensionfields of the Order?</t>
        <t><strong>Consideration</strong>: In <xref target="RFC8555"/>, an Order enters the <tt>valid</tt> terminal state and does not change thereafter. STAR (<xref target="RFC8739"/>) respects this principle—the Order itself does not reflect subsequent renewal status.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Order Extension Field Approach</strong>: Placing rotation status in the Order would break Order terminal state semantics.</t>
          </li>
          <li>
            <t><strong>Independent State Resource Approach (Selected)</strong>: Placing rotation status in an independent resource keeps the Order terminal state unchanged while providingfine-grained control over the key rotation process (pause, resume, cancel).</t>
          </li>
        </ul>
        <t><strong>Decision</strong>: This specification chooses the independent state resource, respecting the Order terminal state semantics of <xref target="RFC8555"/> while providingfine-grained control over the key rotation process.</t>
      </section>
      <section anchor="envelope-delivery-vs-offline-dh-derivation">
        <name>Envelope Delivery vs. Offline DH Derivation</name>
        <t><strong>Question</strong>: Do encryption private key delivery methods need both modes? Is envelope delivery alone sufficient?</t>
        <t><strong>Consideration</strong>:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Envelope Delivery (Mode A)</strong>: Fully inherits the envelope mechanism of the base framework, with optimal compatibility, suitable for scenarios requiring consistency with traditional SM deployments.</t>
          </li>
          <li>
            <t><strong>Offline DH Derivation (Mode B)</strong>: After obtaining the initial private key, subsequent private keys are derived entirely offline without online envelope retrieval, providing key insulation and offline recovery capabilities, suitable for large-scale deployments and client offline scenarios.</t>
          </li>
        </ul>
        <t><strong>Decision</strong>: This specification provides two modes for deployers to choose from. Mode A is the default, ensuring maximum compatibility with the base framework; Mode B is an OPTIONAL enhancement, providingflexibility for deployments pursuing stateless derivation and key insulation.</t>
      </section>
      <section anchor="seed-chain-derivation-vs-direct-private-key-storage">
        <name>Seed Chain Derivation vs. Direct Private Key Storage</name>
        <t><strong>Question</strong>: Why introduce the ARKG seed chain? Why not simply have the KMC generate and store key pairs directly?</t>
        <t><strong>Consideration</strong>: If the KMC stores private keys for each encryption certificate, storage grows linearly with the number of certificates. In large-scale deployments (millions of certificates), the storage, backup, and security management of private keys become a serious scalability bottleneck.</t>
        <t><strong>Decision</strong>: The ARKG seed chain allows the KMC to hold just one seed and derive key pairs for any epoch on demand, eliminating the need to store private keys for each certificate—the KMC transforms from a "key warehouse" to a "key factory," achieving lightweight, scalable stateless operations. At the same time, any historical private key can be auditably recovered through the seed chain, meeting the compliance requirements of <xref target="GMT.0034-2014"/>.</t>
        <t><strong>Quantitative Operational Cost Consideration</strong>: In a million-certificate deployment scenario, the direct private key storage mode requires the KMC to maintain N private key records, with storage, backup, and security management overhead growing linearly with N. The seed chain derivation mode reduces storage complexity from <strong>O(N) to O(1)</strong>—the KMC only needs to hold one seed to derive any number of key pairs. At the same time, the complexity for auditors to recover historical private keys is reduced from <strong>O(N) (searching in storage) to O(log N) (via Merkle tree path verification)</strong> , significantly reducing the operational cost of compliance audits.</t>
      </section>
      <section anchor="cancellation-semantics-alignment-with-star-vs-custom">
        <name>Cancellation Semantics Alignment with STAR vs. Custom</name>
        <t><strong>Question</strong>: Should the cancellation semantics of the key rotation state align with STAR's cancellation semantics?</t>
        <t><strong>Consideration</strong>: STAR's (<xref target="RFC8739"/>) cancellation semantics are "cancel the automatic renewal process, but do not revoke already-issued certificates." If this specification adopted different cancellation semantics, it would increase the learning cost and implementation complexity for client developers.</t>
        <t><strong>Decision</strong>: The state cancellation semantics of this specification are fully aligned with STAR—the <tt>canceled</tt> state means the key rotation process has been terminated, but the currently valid encryption certificate remains valid until expiration. The cancellation applies to the automatic rotation process, not the revocation of already-issued certificates.</t>
      </section>
      <section anchor="key-insulation-as-an-additional-security-property-for-encryption-certificates">
        <name>Key Insulation as an Additional Security Property for Encryption Certificates</name>
        <t><strong>Question</strong>: As noted in Section 1.5, STAR effectively limits the exposure window after private key compromise through short-validity certificates. Is an additional security property needed for encryption certificates?</t>
        <t><strong>Consideration</strong>: Encryption certificates protect not only current communications but also historical encrypted data. Even if the exposure window is shortened to days, once a private key is compromised, all historical data encrypted with that key is at risk.</t>
        <t><strong>Decision</strong>: This specification borrows STAR's automated renewal concept while adding a <strong>key insulation</strong> property for encryption certificates—each epoch uses independently derived key pairs, and compromise of any epoch's private key does not affect other epochs. Short validity periods protect the "future" exposure window, while key insulation protects "past" encrypted data; together they constitute complete security protection for encryption certificates.</t>
      </section>
    </section>
    <section anchor="future-considerations">
      <name>Future Considerations</name>
      <section anchor="pqc-migration-and-algorithm-extension">
        <name>PQC Migration and Algorithm Extension</name>
        <t>Mode B's DH mechanism can be replaced with a PQC KEM for smooth migration. The ARKG seed chain mechanism is naturally suitable for combination with composite encryption schemes—the same seed chain can derive both traditional and post-quantum keys simultaneously.</t>
        <t>The <tt>supportedAlgorithms</tt> algorithm negotiation mechanism of this specification can coordinate with the IETF's ongoing "Quantum-Ready Profiles for ACME" and "Post-Quantum Cryptographic Agility Profile for ACME" work. In the future, PQC algorithm identifiers can be registered under these frameworks to achieve interoperability with the general ACME PQC ecosystem. The composite encryption schemes and composite ML-DSA for CMS/X.509 work being defined by the LAMPS Working Group have potential synergy with this specification's ARKG seed chain mechanism—the same seed chain can derive both traditional keys and composite signature keys simultaneously.</t>
      </section>
      <section anchor="kmc-performance-planning-for-large-scale-deployments">
        <name>KMC Performance Planning for Large-Scale Deployments</name>
        <t>In deployment scenarios with millions of certificates and weekly per-certificate rotation, the KMC's ARKG derivation compute capacity may become a new operational bottleneck. Each epoch's key derivation involves elliptic curve point multiplication (<tt>DerivePK</tt>) and scalar operations (<tt>DeriveSK</tt>), which may generate significant CPU load during peak rotation periods.</t>
        <t>The following performance optimization measures may be standardized in the future:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Pre-computation</strong>: The KMC can derive <tt>(pk_i, sk_i)</tt> for multiple future epochs in advance, pre-computing and caching during off-peak periods to mitigate peak load.</t>
          </li>
          <li>
            <t><strong>Batch Derivation</strong>: Batch derivation operations for a large number of certificates in the same epoch, utilizing SIMD or GPU acceleration.</t>
          </li>
          <li>
            <t><strong>Asynchronous Derivation</strong>: The KMC derives key pairs asynchronously after receiving the <tt>finalize</tt> request, delivering through the state resource endpoint to avoid blocking the ACME mainflow.</t>
          </li>
        </ul>
        <t>Specific optimization strategies depend on deployment scale, hardware capabilities, and security policies, and are not defined within the scope of this specification. However, deployers are advised to assess KMC derivation capacity requirements in advance and develop capacity plans.</t>
      </section>
      <section anchor="kmc-public-key-rotation-mechanism">
        <name>KMC Public Key Rotation Mechanism</name>
        <t>A standardized rotation protocol for <tt>pk_kmc[j]</tt> may be defined in the future.</t>
      </section>
      <section anchor="integration-with-ari">
        <name>Integration with ARI</name>
        <t>As noted in Section 1.5, ARI plays the role of regulating client renewal behavior in the international PKI ecosystem. The <tt>nextEpoch</tt> mechanism of this specification is semantically similar to the renewal suggestion information provided by <xref target="RFC9773"/> (ACME Renewal Information, ARI)—both are scheduling indications provided by the server to the client. Future integration or alignment with this specification's key rotation mechanism may be considered to provide clients with unified renewal time recommendations, enabling clients to obtain both certificate renewal and key rotation scheduling information through a single mechanism.</t>
      </section>
    </section>
    <section anchor="iana-and-sm-ecosystem-deployment-considerations">
      <name>IANA and SM Ecosystem Deployment Considerations</name>
      <section anchor="oid-allocation-recommendations">
        <name>OID Allocation Recommendations</name>
        <table>
          <thead>
            <tr>
              <th align="left">Extension Name</th>
              <th align="left">Recommended OID</th>
              <th align="left">Remarks</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id-sm2-auth-key-hash</td>
              <td align="left">1.2.156.10197.6.3.1</td>
              <td align="left">Currently under consultation and confirmation with the CCSTC, expected to be allocated during the standardization phase</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t><strong>Temporary OID</strong>: (for experimental deployment only, NOT for production use):<tt>id-sm2-auth-key-hash</tt>: <tt>1.3.6.1.4.1.2011.2.467.1.3</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="acme-registry-entries">
        <name>ACME Registry Entries</name>
        <t>###</t>
        <table>
          <thead>
            <tr>
              <th align="left">Registry</th>
              <th align="left">Field Name</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ACME Directory Object Fields</td>
              <td align="left">key-rotation</td>
              <td align="left">object</td>
              <td align="left">Contains supportedModes, supportedSyncModes, supportedAlgorithms, maxEpochDuration, minEpochDuration</td>
            </tr>
            <tr>
              <td align="left">ACME Directory Object Fields</td>
              <td align="left">key-rotation-state</td>
              <td align="left">string</td>
              <td align="left">Directory template URL for state resource</td>
            </tr>
            <tr>
              <td align="left">ACME Order Object Fields</td>
              <td align="left">key-rotation</td>
              <td align="left">object</td>
              <td align="left">Contains algorithm, derivationMode, seedSync, initialEpoch, syncWith</td>
            </tr>
            <tr>
              <td align="left">ACME Resource Types</td>
              <td align="left">key-rotation-state</td>
              <td align="left">
                <tt>/acme/key-rotation-state/{id}</tt></td>
              <td align="left">Key rotation state resource</td>
            </tr>
            <tr>
              <td align="left">ACME Resource Types</td>
              <td align="left">key-rotation-envelope</td>
              <td align="left">
                <tt>/acme/key-rotation-state/{id}/envelope</tt></td>
              <td align="left">Envelope endpoint (Mode A)</td>
            </tr>
            <tr>
              <td align="left">ACME Resource Types</td>
              <td align="left">key-rotation-kmc-public-key</td>
              <td align="left">
                <tt>/acme/key-rotation-state/{id}/kmc-public-key</tt></td>
              <td align="left">KMC public key endpoint (Mode B)</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Note</strong>: <tt>authKey</tt> and <tt>includeEnvelope</tt> are already registered in the base framework [I-D.geng-acme-sm2dualcert-extension]; <tt>auto-renewal</tt> is already registered in <xref target="RFC8739"/>.</t>
      </section>
      <section anchor="algorithm-identifier-registration">
        <name>Algorithm Identifier Registration</name>
        <t>Establish an algorithm identifier registration mechanism in the SM ecosystem. Initial registration items:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Identifier</th>
              <th align="left">Curve</th>
              <th align="left">Hash Algorithm</th>
              <th align="left">Corresponding OID</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">sm2p256v1-sm3</td>
              <td align="left">sm2p256v1</td>
              <td align="left">SM3</td>
              <td align="left">1.2.156.10197.1.301 / 1.2.156.10197.1.401</td>
              <td align="left">Currently only supported combination</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="GMT.0034-2014">
          <front>
            <title>Certificate Authentication System Based on SM2 Cryptographic Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2014"/>
          </front>
          <seriesInfo name="GM/T 0034-2014" value=""/>
        </reference>
        <reference anchor="GMT.0010-2023">
          <front>
            <title>SM2 Cryptographic Algorithm Encrypted Signature Message Syntax Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0010-2023" value=""/>
        </reference>
        <reference anchor="GMT.0108-2021">
          <front>
            <title>Decoy-state BB84 quantum key distribution product technology specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="GM/T 0108-2021" value=""/>
        </reference>
        <reference anchor="GMT.0006-2023">
          <front>
            <title>Cryptographic Application Identifier Specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="GM/T 0006-2023" value=""/>
        </reference>
        <reference anchor="GMT.0078-2020">
          <front>
            <title>The design guidelines for cryptographic random number generation module</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="GM/T 0078-2020" value=""/>
        </reference>
        <reference anchor="GMT.0003.4-2012">
          <front>
            <title>SM2 Elliptic Curve Public Key Cryptography Algorithm Part 4: Public Key Encryption Algorithm</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2012"/>
          </front>
          <seriesInfo name="GM/T 0003.4-2012" value=""/>
        </reference>
        <reference anchor="GMT.0005-2021">
          <front>
            <title>Randomness test specification</title>
            <author>
              <organization>State Cryptography Administration</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="GM/T 0005-2021" value=""/>
        </reference>
        <reference anchor="RFC8555" target="https://www.rfc-editor.org/info/rfc8555" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC8739" target="https://www.rfc-editor.org/info/rfc8739" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8739.xml">
          <front>
            <title>Support for Short-Term, Automatically Renewed (STAR) Certificates in the Automated Certificate Management Environment (ACME)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
            <author fullname="A. Pastor Perales" initials="A." surname="Pastor Perales"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>Public key certificates need to be revoked when they are compromised, that is, when the associated private key is exposed to an unauthorized entity. However, the revocation process is often unreliable. An alternative to revocation is issuing a sequence of certificates, each with a short validity period, and terminating the sequence upon compromise. This memo proposes an Automated Certificate Management Environment (ACME) extension to enable the issuance of Short-Term, Automatically Renewed (STAR) X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8739"/>
          <seriesInfo name="DOI" value="10.17487/RFC8739"/>
        </reference>
        <reference anchor="RFC6962" target="https://www.rfc-editor.org/info/rfc6962" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6962.xml">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC9115" target="https://www.rfc-editor.org/info/rfc9115" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9115.xml">
          <front>
            <title>An Automatic Certificate Management Environment (ACME) Profile for Generating Delegated Certificates</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. López" initials="D." surname="López"/>
            <author fullname="A. Pastor Perales" initials="A." surname="Pastor Perales"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines a profile of the Automatic Certificate Management Environment (ACME) protocol by which the holder of an identifier (e.g., a domain name) can allow a third party to obtain an X.509 certificate such that the certificate subject is the delegated identifier while the certified public key corresponds to a private key controlled by the third party. A primary use case is that of a Content Delivery Network (CDN), the third party, terminating TLS sessions on behalf of a content provider (the holder of a domain name). The presented mechanism allows the holder of the identifier to retain control over the delegation and revoke it at any time. Importantly, this mechanism does not require any modification to the deployed TLS clients and servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9115"/>
          <seriesInfo name="DOI" value="10.17487/RFC9115"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC7638" target="https://www.rfc-editor.org/info/rfc7638" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7638.xml">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
          <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="RFC9773" target="https://www.rfc-editor.org/info/rfc9773" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9773.xml">
          <front>
            <title>ACME Renewal Information (ARI) Extension</title>
            <author fullname="A. Gable" initials="A." surname="Gable"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>This document specifies how an Automated Certificate Management Environment (ACME) server may provide suggestions to ACME clients as to when they should attempt to renew their certificates. This allows servers to mitigate load spikes and ensures that clients do not make false assumptions about appropriate certificate renewal periods.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9773"/>
          <seriesInfo name="DOI" value="10.17487/RFC9773"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.geng-acme-public-key" target="https://datatracker.ietf.org/doc/html/draft-geng-acme-public-key-07" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.geng-acme-public-key.xml">
          <front>
            <title>Automated Certificate Management Environment (ACME) Extension for Public Key Challenges</title>
            <author fullname="Feng Geng" initials="F." surname="Geng">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Panyu Wu" initials="P." surname="Wu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Liang Xia" initials="L." surname="Xia">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="陈鑫" initials="C." surname="陈鑫">
              <organization>TrustAsia</organization>
            </author>
            <date day="14" month="June" year="2026"/>
            <abstract>
              <t>The Automatic Certificate Management Environment (ACME) [RFC8555] requires a PKCS#10 Certificate Signing Request (CSR) at the finalization stage. This document defines a new ACME challenge type, "pk-01", that allows a client to prove possession of a private key directly, without constructing a CSR. The primary motivation is to support key types that cannot generate CSR self-signatures, notably post-quantum Key Encapsulation Mechanism (KEM) keys. The client declares the public key via a popKey field in the "newOrder" request; the server attaches the "pk-01" challenge to existing identifier authorizations. When all required authorizations are satisfied, the ACME server issues a certificate using the validated public key and the authorized identifiers, eliminating the need for a CSR in the finalization stage.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-geng-acme-public-key-07"/>
        </reference>
        <reference anchor="I-D.ietf-acme-profiles" target="https://datatracker.ietf.org/doc/html/draft-ietf-acme-profiles-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-acme-profiles.xml">
          <front>
            <title>Automated Certificate Management Environment (ACME) Profiles Extension</title>
            <author fullname="Aaron Gable" initials="A." surname="Gable">
              <organization>Internet Security Research Group</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>This document defines how an ACME Server may offer a selection of different certificate profiles to ACME Clients, and how those clients may indicate which profile they want.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-acme-profiles-01"/>
        </reference>
        <reference anchor="I-D.bradleylundberg-cfrg-arkg" target="https://datatracker.ietf.org/doc/html/draft-bradleylundberg-cfrg-arkg-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.bradleylundberg-cfrg-arkg.xml">
          <front>
            <title>The Asynchronous Remote Key Generation (ARKG) algorithm</title>
            <author fullname="Emil Lundberg" initials="E." surname="Lundberg">
              <organization>Yubico</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <date day="5" month="July" year="2026"/>
            <abstract>
              <t>Asynchronous Remote Key Generation (ARKG) is an abstract algorithm that enables delegation of asymmetric public key generation without giving access to the corresponding private keys. This capability enables a variety of applications: a user agent can generate pseudonymous public keys to prevent tracking; a message sender can generate ephemeral recipient public keys to enhance forward secrecy; two paired authentication devices can each have their own private keys while each can register public keys on behalf of the other. This document provides three main contributions: a specification of the generic ARKG algorithm using abstract primitives; a set of formulae for instantiating the abstract primitives using concrete primitives; and an initial set of fully specified concrete ARKG instances. We expect that additional instances will be defined in the future.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bradleylundberg-cfrg-arkg-11"/>
        </reference>
        <reference anchor="Frymann2020">
          <front>
            <title>Asynchronous Remote Key Generation: An Analysis of Yubico's Proposal for W3C WebAuthn</title>
            <author initials="N." surname="Frymann" fullname="N. Frymann">
              <organization/>
            </author>
            <author initials="D." surname="Gardham" fullname="D. Gardham">
              <organization/>
            </author>
            <author initials="F." surname="Kiefer" fullname="F. Kiefer">
              <organization/>
            </author>
            <author initials="E." surname="Lundberg" fullname="E. Lundberg">
              <organization/>
            </author>
            <author initials="M." surname="Manulis" fullname="M. Manulis">
              <organization/>
            </author>
            <author initials="D." surname="Nilsson" fullname="D. Nilsson">
              <organization/>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 890?>

<section anchor="protocol-interaction-diagrams">
      <name>Protocol Interaction Diagrams</name>
      <section anchor="global-dual-certificate-flow-three-phase">
        <name>Global Dual-Certificate Flow (Three-Phase)</name>
        <figure anchor="fig-1">
          <name>Global Dual-Certificate Flow (Three-Phase)</name>
          <artwork><![CDATA[
Client                                      ACME Server                                  KMC
    |                                              |                                        |
    Note over Client,K:
    ═══ Phase One: Bootstrap ═══
    Note over Client,ACME Server:
    ─── Signature Certificate Authorization and Issuance ───
    |                                              |                                        |
    | 1. newOrder for signature cert, auto-renewal: true                                    |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 2. Return Order + authorization challenges   |                                        |
    |<---------------------------------------------|                                        |
    |                                              |                                        |
    | 3. Complete all authorization challenges     |                                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 4. finalize (CSR carrying signature public key)                                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 5. Server issues signature certificate       |                                        |
    |<---------------------------------------------|                                        |
    Note over Client,ACME Server:
    ─── Encryption Certificate Initial Issuance ───
    |                                              |                                        |
    | 6. newOrder for encryption cert, includeEnvelope: true                                |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 7. Return Order + dedicated auth-01 auth obj |                                        |
    |<---------------------------------------------|                                        |
    |                                              |                                        |
    | 8. Complete auth-01 challenge with quadruple signature                                |
    |--------------------------------------------->|                                        |
    Note over ACME Server:
    9. Signature check passed + bound signature cert validation
    |                                              |--------------------------------------->|
    |                                              | 10. Trigger KMC subsystem          |
    |                                              |                                        |
    Note over KMC:
    11. ARKG derives new key pair (pk₀, sk₀)
    |                                              |<----------------------------------------|
    |                                              | 12. Return encryption cert + digital envelope |
    |                                              |                                        |
    | 13. finalize request                         |                                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 14. Respond with cert URL + wrapped envelope |                                        |
    |<---------------------------------------------|                                        |
    Note over Client,K:
    ═══ Phase Two: Auto Renewal ═══
    Note over ACME Server:
    Signature certificate STAR auto-renew logic
    Note over KMC:
    Encryption certificate ARKG automatic key rotation
    Note over ACME Server,KMC:
    Synchronized trigger via syncWith binding mechanism
    Note over Client,K:
    ═══ Phase Three: Certificate Access ═══
    |                                              |                                        |
    | 15. GET fixed certificate URL via POST-as-GET |                                        |
    |--------------------------------------------->|                                        |
    |                                              |                                        |
    | 16. Return currently valid encryption certificate                                      |
    |<---------------------------------------------|                                        |
    Note over Client:
    Mode A: Fetch private key via envelope endpoint
    Note over Client:
    Mode B: Derive private key offline locally
]]></artwork>
        </figure>
      </section>
      <section anchor="arkg-key-derivation-layer">
        <name>ARKG Key Derivation Layer</name>
        <figure anchor="fig-2">
          <name>ARKG Key Derivation Layer</name>
          <artwork><![CDATA[
                            +---------------------------+
                            |         KMC Subsystem      |
    +-------------------------------------------------------+
    |                                                       |
    |  +------------+     +----------------------+          |
    |  | SEED:      |     | ARKG Derivation Alg  |          |
    |  | seed_kmc   |---->|                      |          |
    |  +------------+     +-----------+----------+          |
    |                                |                      |
    |                +---------------+----------------+     |
    |                |                                |     |
    |                v                                v     |
    |        +------------------+             +----------------+
    |        | CRED: cred_i     |             | PKM: KMC pubkey|
    |        | Derivation Factor|             | pk_kmc_j       |
    |        +--------+---------+             +----------------+
    |                 |                                    |
    |                 v                                    |
    |        +--------------------+                        |
    |        | PKI: Epoch key pair |                       |
    |        | pk_i, sk_i          |                       |
    |        +--------------------+                        |
    |                                                      |
    +------------------------------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="mode-a-envelope-delivery-flow">
        <name>Mode A: Envelope Delivery Flow</name>
        <figure anchor="fig-3">
          <name>Mode A: Envelope Delivery Flow</name>
          <artwork><![CDATA[
+-----------------------------+        +-----------------------------+
|         KMC Subsystem       |        |        Client Side           |
+-----------------------------+        +-----------------------------+
|                             |        |                             |
|  +----------------------+   |        |  +----------------------+  |
|  | PKI: Epoch Key Pair  |   |        |  | DEC: Decrypt envelope |  |
|  | pk_i, sk_i           |   |        |  | to retrieve sk_i      |  |
|  +----------+-----------+   |        |  +-----------+----------+  |
|             |               |        |              |             |
|             v               |        |              v             |
|  +----------------------+   |        |  +----------------------+  |
|  | ENV: Assemble envelope|  |        |  | VAL: Verify sk_i matches|  |
|  | via SM4 + SM2         |<--+--------->|    cert public key     |  |
|  +----------+-----------+   |        |  +----------------------+  |
|             |               |        |                             |
|             v               |        |                             |
|  +----------------------+   |        |                             |
|  | CERT: Issue encryption|  |        |                             |
|  | certificate          |   |        |                             |
|  +----------------------+   |        |                             |
|                             |        |                             |
+-----------------------------+        +-----------------------------+
Flow logic:
1. KMC generates epoch key pair (pk_i, sk_i)
2. KMC assembles signedAndEnvelopedData envelope using SM4/SM2
3. KMC outputs encryption certificate
4. Envelope payload is delivered to client
5. Client decrypts envelope to get sk_i
6. Client validates sk_i corresponds to certificate public key
]]></artwork>
        </figure>
      </section>
      <section anchor="mode-b-offline-dh-derivation-flow">
        <name>Mode B: Offline DH Derivation Flow</name>
        <figure anchor="fig-4">
          <name>Mode B: Offline DH Derivation Flow</name>
          <artwork><![CDATA[
+------------------------+      +------------------------------------------+      +---------------------------+
|     INIT Block         |      |               KMC Subsystem              |      |       Client Side         |
+------------------------+      +------------------------------------------+      +---------------------------+
|                        |      |                                          |      |                           |
| +--------------------+ |      | +----------------+  +----------------+ |      | +---------------------+   |
| | ENV: Envelope      | |      | | PKI: Epoch Key |  | KM: KMC Public  | |      | | INIT_SK: Obtain sk0  |   |
| | Delivery sk_0      | |      | | Pair pk_i, sk_i|  | Key pk_kmc_j    | |      | +----------+----------+   |
| +---------+----------+ |      | +-------+--------+  +--------+-------+ |      |            |              |
|           |            |      |         |                    |          |      |            v              |
|           +------------+------+         v                    +----------+------+ +---------------------+
|                        |      | +----------------------------------+     |      | | DH: Offline derive |   |
|                        |      | | EVOLVE: Rotation, derive new pair |     |      | | next epoch sk      |   |
|                        |      | +---------------+------------------+     |      | +----------+----------+   |
|                        |      |                 |                        |      |            |              |
|                        |      |                 +------------------------+------+            v              |
|                        |      |                              |             |      | +---------------------+
|                        |      |                              v             |      | | VERIFY: Check sk    |
|                        |      |               New encryption certificate issued |      | | matches cert pubkey |
|                        |      |                                          |      | +---------------------+
+------------------------+      +------------------------------------------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>This appendix is non-normative and provides essential hints for implementers of this document.</t>
      <section anchor="client-signature-construction-steps">
        <name>Client Signature Construction Steps</name>
        <t>When completing the <tt>auth-01</tt> challenge, the client MUST operate as follows:</t>
        <t>1) Compute the JWK Thumbprint of the account public key used in the <tt>newOrder</tt> request for this Order, per <xref target="RFC7638"/>, to obtain <tt>account_thumbprint</tt>.</t>
        <t><strong>Code Example (Python)</strong>:</t>
        <artwork><![CDATA[
import hashlib
import json
import base64
def compute_account_thumbprint(jwk):
    # RFC 7638 requires sorting by fixed fields
    sorted_jwk = {k: jwk[k] for k in sorted(['kty', 'crv', 'x', 'y'])}
    jwk_json = json.dumps(sorted_jwk, separators=(',', ':'))
    return base64url_encode(hashlib.sha256(jwk_json.encode('utf-8')).digest())
]]></artwork>
        <t>2) Construct the signature input <tt>message</tt> = <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt>.
3) Compute <tt>hash = SM3(message)</tt>.
4) Generate an SM2 signature on <tt>hash</tt> using the signature private key, output as <strong>ASN.1 DER encoding</strong> of <tt>SEQUENCE { r INTEGER, s INTEGER }</tt>.
5)  Ensure the signature satisfies the normalized form <tt>s &lt;= n/2</tt>; if <tt>s &gt; n/2</tt>, replace with <tt>n - s</tt>.
6)  Base64url-encode the DER-encoded signature value and place it in the <tt>authSignature</tt>field.</t>
        <t><strong>Signature Construction Order Warning</strong>: The client MUST strictly use thefield order above. Any deviation will cause server verification failure.</t>
        <t>SM2 signature encoding considerations: Clients need to use an ASN.1 DER encoding library and be aware of INTEGER encoding rules (X.690 Section 8.3.2): when the most significant bit of the integer value is 1, a leading <tt>0x00</tt> byte must be added.</t>
        <t><tt>authKey</tt> Provision: The client only needs to provide the JWK-formatted <tt>authKey</tt> in the JWS Payload of the <tt>newOrder</tt> request; <tt>SubjectPublicKeyInfo</tt> encoding is performed by the server (see Section 4.1). Envelope Retrieval from <tt>finalize</tt> Response: If <tt>includeEnvelope: true</tt> was explicitly set but no <tt>envelope</tt>field is received, it SHOULD be treated as an error and theflow terminated. When not explicitly set, the client SHOULD NOT expect the <tt>envelope</tt>field.</t>
      </section>
      <section anchor="server-verification-steps">
        <name>Server Verification Steps</name>
        <t>When verifying the <tt>auth-01</tt> signature, the server MUST use the exact same construction method as the client. Specific steps include:</t>
        <ol spacing="normal" type="1"><li>
            <t>Obtain <tt>kid</tt> from the JWS header, look up the corresponding account public key, verify JWS signature validity, and confirm the account matches the one that created the Order.</t>
          </li>
          <li>
            <t>Obtain the account JWK from the account state saved when creating the Order, compute <tt>account_thumbprint</tt> per <xref target="RFC7638"/>; do not extract this value from <tt>authSignature</tt> or the challenge response.</t>
          </li>
          <li>
            <t>Extract the signature value from <tt>authSignature</tt>, verify that <tt>token</tt> matches the challenge object and has not been used.</t>
          </li>
          <li>
            <t>Construct the signature input <tt>message</tt> = <tt>"ACME auth-01" || 0x00 || challenge_url || 0x00 || token_utf8_bytes || 0x00 || account_thumbprint</tt> using the <tt>account_thumbprint</tt> computed in step 2.</t>
          </li>
          <li>
            <t>Compute <tt>hash = SM3(message)</tt> and verify the signature using the <tt>authKey</tt> public key.</t>
          </li>
          <li>
            <t>Verify that <tt>r</tt> and <tt>s</tt> are both in the range <tt>[1, n-1]</tt> and that <tt>s &lt;= n/2</tt>.</t>
          </li>
          <li>
            <t>Verify that the signing public key matches the <tt>authKey</tt> declared in <tt>newOrder</tt>.</t>
          </li>
          <li>
            <t>Verify that the account identified by <tt>kid</tt> matches the account corresponding to <tt>authKey</tt>.</t>
          </li>
        </ol>
        <t>If the account key has been changed before the challenge is completed, the server MUST reject the challenge response, causing the associated incomplete <tt>auth-01</tt> authorization object and its Order to transition to <tt>invalid</tt>, and MUST NOT use the new account key's thumbprint to reconstruct the signature input for the old Order.</t>
        <t><strong>Cache Control</strong>: When returning a <tt>finalize</tt> response containing the <tt>envelope</tt>field, the server MUST set the <tt>Cache-Control: no-store, private</tt> header and ensure caching is explicitly disabled for the <tt>finalize</tt> endpoint at the CDN level.</t>
        <t><strong>Audit Logs</strong>: The server SHOULD record audit logs for all encryption certificate application operations, including <tt>auth-01</tt> challenge completion, KMC invocation results, certificate issuance records, and envelope delivery records.</t>
      </section>
      <section anchor="relying-party-verification-procedure">
        <name>Relying Party Verification Procedure</name>
        <t>When verifying an encryption certificate, relying parties MUST check the <tt>sm2AuthKeyHash</tt> extension:</t>
        <ol spacing="normal" type="1"><li>
            <t>Extract the <tt>sm2AuthKeyHash</tt> extension value from the encryption certificate (if present) and parse the <tt>SM2AuthKeyHash</tt> structure.</t>
          </li>
          <li>
            <t>If the extension is not present, the certificate does not conform to this specification (mandatory extension); the relying party MAY treat it as a foreign or historical certificate according to policy and SHOULD record it in the audit log.</t>
          </li>
          <li>
            <t>If the extension is present, confirm that <tt>hashAlgorithm.algorithm</tt> is the standard OID for SM3 (<tt>1.2.156.10197.1.401</tt>). If unrecognizable, the relying party SHOULD reject trust in the certificate.</t>
          </li>
          <li>
            <t>Extract the 32-byte hash value from the <tt>hashValue</tt>field.</t>
          </li>
          <li>
            <t>Extract the public key from the expected signature certificate and compute its SM3 hash.</t>
          </li>
          <li>
            <t>Compare the two for consistency. If inconsistent, the relying party MUST reject trust in the certificate and treat it as a security violation.</t>
          </li>
        </ol>
      </section>
      <section anchor="kmc-core-hints">
        <name>KMC Core Hints</name>
        <ol spacing="normal" type="1"><li>
            <t>Key generation MUST use a random number generator conforming to <xref target="GMT.0078-2020"/>, and its output MUST pass the randomness tests specified in <xref target="GMT.0005-2021"/>.</t>
          </li>
          <li>
            <t>The KDF output length parameter <tt>klen</tt> MUST be set to 128 bits (SM4 key length), with specific parameters per <xref target="GMT.0003.4-2012"/> Section 4.2.</t>
          </li>
          <li>
            <t>When parsing the <tt>SubjectPublicKeyInfo</tt> structure passed by the server: MUST support the primary encoding specified in Section 4.1 (SM2 algorithm OID direct identification). For interoperability with deployed systems, SHOULD be able to parse alternate<tt>SubjectPublicKeyInfo</tt> structures encoded with <tt>id-ecPublicKey</tt> + SM2 curve OID (<tt>1.2.156.10197.1.301</tt>).</t>
          </li>
          <li>
            <t>After encryption certificate revocation or expiration, escrowed private keys SHOULD be deleted within a reasonable period; the deletion period SHOULD be clearly stated in the CP/ CPS (recommended not to exceed 30 days) and recorded in the audit log.</t>
          </li>
          <li>
            <t>For deployments with higher requirements regarding single-point trust risk, <strong>threshold KMC</strong> or <strong>key sharding</strong> schemes are recommended; when adopting such schemes, their security model SHOULD be consistent with the threat model of this document.</t>
          </li>
        </ol>
      </section>
      <section anchor="historical-compatibility-notes">
        <name>Historical Compatibility Notes</name>
        <t><strong>SM3 Alternate OID</strong>: The standard OID for SM3 in <xref target="GMT.0006-2023"/> is <tt>1.2.156.10197.1.401</tt>. Historical implementations may have used the alternate OID <tt>1.2.156.197.1.401</tt>. Implementers SHOULD support parsing historical data using the alternate OID for validating old certificates, but MUST use the standard OID when generating new data (certificates, signatures, envelopes).</t>
      </section>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <artwork><![CDATA[
SM2-KEY-ROTATION-EXTENSIONS {
iso(1) member-body(2) cn(156) 10197 6 3 1
id-mod-sm2-kr-extensions(1)
}
DEFINITIONS IMPLICIT TAGS ::= BEGIN
EXPORTS ALL;
IMPORTS
EXTENSION
FROM PKIX1Explicit-2009 { ... }
SubjectPublicKeyInfo
FROM PKIX1Implicit-2009 { ... }
AlgorithmIdentifier
FROM CryptographicMessageSyntax-2009 { ... }
;
id-sm2-auth-key-hash OBJECT IDENTIFIER ::= { 1.2.156.10197.6.3.1 }
sm2AuthKeyHash EXTENSION ::= {
SYNTAX SM2AuthKeyHash
IDENTIFIED BY id-sm2-auth-key-hash
CRITICALITY { FALSE }
}

SM2AuthKeyHash ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
hashValue OCTET STRING (SIZE(32))
}
END
]]></artwork>
    </section>
    <section anchor="oid-quick-reference">
      <name>OID Quick Reference</name>
      <table>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">OID</th>
            <th align="left">Purpose</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">SM2 Public Key Cryptosystem</td>
            <td align="left">1.2.156.10197.1.301</td>
            <td align="left">Asymmetric encryption</td>
          </tr>
          <tr>
            <td align="left">SM3 (Standard)</td>
            <td align="left">1.2.156.10197.1.401</td>
            <td align="left">
              <strong>MUST be used for all new data</strong></td>
          </tr>
          <tr>
            <td align="left">SM3 (Alternate, historical only)</td>
            <td align="left">1.2.156.197.1.401</td>
            <td align="left">Historical data validation only</td>
          </tr>
          <tr>
            <td align="left">SM4</td>
            <td align="left">1.2.156.10197.1.104</td>
            <td align="left">Symmetric encryption</td>
          </tr>
          <tr>
            <td align="left">SM2-3 Public Key Encryption</td>
            <td align="left">1.2.156.10197.1.301.3</td>
            <td align="left">Digital envelope keyEncryptionAlgorithm</td>
          </tr>
          <tr>
            <td align="left">sm2-with-SM3</td>
            <td align="left">1.2.156.10197.1.501</td>
            <td align="left">auth-01 signature algorithm</td>
          </tr>
          <tr>
            <td align="left">id-sm2-auth-key-hash (Recommended)</td>
            <td align="left">1.2.156.10197.6.3.1</td>
            <td align="left">sm2AuthKeyHash extension</td>
          </tr>
          <tr>
            <td align="left">id-sm2-auth-key-hash (Temporary)</td>
            <td align="left">1.3.6.1.4.1.2011.2.467.1.3</td>
            <td align="left">Experimental deployment</td>
          </tr>
        </tbody>
      </table>
    </section>
  </back>
  <!-- ##markdown-source:
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
XRLvljMpQCToAfjlgdMyL9ZcZp7fBMf796QwT/A6vn1YO0AeqSvUZA0oQc/j
ztr9e58dthNRcCWHJGTfidDwogS2GJB3FKzr7S9OuQo2o22FVIUkFEbQK44m
nh19GqNqFlfrYkV0ETOax8GUi/cHe3cMaSjLFeYwdNXQCEQDByLnVvC6CFyf
FfRhiA8bZQXJ94RegWe38NlS3tWt0QtsTKC8TmcjtHZVuKp1XroG35lcrzW7
oiUg1M72u0X+7uIGuGXnT+vBTKGJtXa19/T+vxtfDb2hkJJhh3quw8hU+Cg5
kY4Labgcv6Hg4pBybGACSo8aro2vLKIJgw05AnLY5y7zlO7OMB36pHux9/tb
THBVMFX5PVHuuX2iKpRY2g5kyBejNAlqZ0bIEcww3yLi+teYQANxtjnCnkJZ
eUlTutEb3BSJKbmWjeW88+I2xubSicnLCAsC8eAC7cjTZbagyF8TkIg1pAp0
V3N8U6mO+ivQqD6gpesMSZHYBzDKkAV5eQuIgK9GnRc9MYePPbNOxuW6pti6
BcFoJFjq3EkJGojYhakWhpFEFzmnJSRoSYW7VS48XcBU0tCIBTcQyQPMuNsn
bMKyGD0ntJm0pi5GZXnPK0YUcz5m7ODUC3zRYvBNgOHfdE19V6QTlHg75rQz
DAUr0SXeI1PhWGo6eKlI1nLq6i+oH/MABfXRAq2u6mRJWUNIWSoWT3tY7VS8
JKcAmV4l3wUWkqJ6zE4blTVJIhUeVa1d496FS9KW3itC54XLB2Q6jw5JJcO2
/klVNilVGhmSl0vlV5lWg9cow2P1foiFzJLeh/jG57eoe8QHBTP2mCw6k5oS
cSYJP151R5hN4L7V42acMboKk3sdGIaHFZ7mqoJQGiPlB41YlLbwpePVpBkJ
wA2zSgn5THwzxQP22dr6lY3m0RAYprRiRUaOQDjnoixx0UHCaKM9vMnuvNMN
LNveLr+yIK4UJmwszlqZumLJ7xiCiwqdQyX6JSgKvP5TqrhyzV1fNw3NZ3tR
s3caQ9ImMdCKdXxcPAVNm8aIUF/Fo871qqm+9oIyErjE5Erd47ZA+E7gwVxX
juC2sF+WyfQiCxAYEDOeU6ZU4moPE0GrOcelhrqM5Q9HA0UPTgbRUOcas+SA
9poBSb77s3Hlu5JbonTYWfno8SOMjH3YVPzQ52t5s4/LUmoqtaisp3Z4unO3
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
r9JU41mB5lPMMQLpdhRsZTo1BvQlHOmOz/IS4Lzn248eX2/Bye9E5ndqQbAT
LLkic4G4sbkVPax9ursZSmLkufFF161pmcUmWAtGHLCY7AqQoSpXxCwOHabx
JbYYEIR6keUXcLiHGNNsy9M8BxU96mBSfNI7Rbls3TXm4SJZq89Ef2zVsFt/
4GJj4CiC54t+7vz4Jx4eLz9HfPJWuq/2+Iu//tf/zP+PaMvR21myFz3L8wXi
/dx/3TKM2awO+F/+lf/f0kp+PyhhjyToWLq5+Vd/FZAgQqIJU3pzoEgQZMt0
gx7D3OL6S4a/843Dn7//8tV/0c+XD7+NNYWolxED6EGl+QAQ0CxLqLnbTxj+
774IOv/ugLPT5yJYCUWlZKtA8xOG/w+OObt93+mmg51tRnFRUK0Bf8G8MHMX
iSsY/z84dB71lTlQVEjZkuz6E4f/Ze/VF5H/liJwKlv9m1H9xxWqX3HJd6OK
RHw3yv/fCXY+qVH9caItK6X+If2Nqu2/N+z8xYHzjaX6AgxH69kc+OdlPC4w
n9lc6zsO/8tijr+69Tv7bd+25aFSf3P07ozh+C8oKzSkUZGUbyXd64tAKUu6
8yZ/4sFubfZd93fKFVheiMG8CpZfTeyGZQi0t0Ds9H52DGxKPvgicp35+7/+
T/+KTl/4a/2nLfLO1+wnw9cLhxXqiQQjvUwXFEInNpZf63pu7fTrLfZ+tuF/
2ev5ywNnF4+MbBC+Ij0ZQx9EHwpMCR+bE/vS4X9lsaNNeT3/kO+hgpk7d2Wr
/lqngs2dyShO1iuCnJHefrlbyn7Qfffxw9YjuGJhXT/uwFZvkdKP3DNHrb6a
3j31XvIvgx3aPfZCVZ1rjVdg+MujKojI2Lh7kn4Mg6YJXatd3f9/d5EfO9p7
x7j3Lxr/173Jgotse9+LnieLsGkEnXZSNdbfPtazPenKFQymaaPol82yG226
vRd9NUkve1vRIl1kyXdrd7cPrn1WGzXeb3SCmLzK1/ENFymhWVYB58EKCD9Y
/ao/AGpVE8o5AvRVw6/6efCTMLp65J8qC3iwassPml7/FA2OsKOG2fAnhriB
9n52GSzVvq7tSiK5/W2XuvH1Wxb/4JbF3wKj20AX/lShVoPig5Wv33E5ba9f
3/b6dePrDUf9IHitvovKCJ+igzNEAGqrlzZs5VN0+upkT71kcNWra/hkUeU5
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
3/8HIqeAjG57AQA=

-->

</rfc>
