<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="independent" docName="draft-cuiling-dnsop-sm2-alg-15" number="9563" category="info" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2024-12-04T16:36:04" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-cuiling-dnsop-sm2-alg-15" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9563" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="SM2 Digital Signature Algorithm for DNSSEC">SM2 Digital Signature Algorithm for DNSSEC</title>
    <seriesInfo name="RFC" value="9563" stream="independent"/>
    <author initials="C." surname="Zhang" fullname="Cuiling Zhang">
      <organization showOnFrontPage="true">CNNIC</organization>
      <address>
        <postal>
          <street>No.4 South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>China</country>
        </postal>
        <email>zhangcuiling@cnnic.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Liu" fullname="Yukun Liu">
      <organization showOnFrontPage="true">CNNIC</organization>
      <address>
        <postal>
          <street>No.4 South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>China</country>
        </postal>
        <email>liuyukun@cnnic.cn</email>
      </address>
    </author>
    <author initials="F." surname="Leng" fullname="Feng Leng">
      <organization showOnFrontPage="true">CNNIC</organization>
      <address>
        <postal>
          <street>No.4 South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>China</country>
        </postal>
        <email>lengfeng@cnnic.cn</email>
      </address>
    </author>
    <author initials="Q." surname="Zhao" fullname="Qi Zhao">
      <organization showOnFrontPage="true">CNNIC</organization>
      <address>
        <postal>
          <street>No.4 South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>China</country>
        </postal>
        <email>zhaoqi@cnnic.cn</email>
      </address>
    </author>
    <author initials="Z." surname="He" fullname="Zheng He">
      <organization showOnFrontPage="true">CNNIC</organization>
      <address>
        <postal>
          <street>No.4 South 4th Street, Zhongguancun</street>
          <city>Beijing</city>
          <code>100190</code>
          <country>China</country>
        </postal>
        <email>hezh@cnnic.cn</email>
      </address>
    </author>
    <date month="12" year="2024"/>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
   This document specifies the use of the SM2 digital signature algorithm
   and SM3 hash algorithm for DNS Security (DNSSEC).</t>
      <t indent="0" pn="section-abstract-2">
   This document is an Independent Submission to the RFC series and does
   not have consensus of the IETF community.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9563" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sm3-ds-records">SM3 DS Records</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sm2-parameters">SM2 Parameters</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dnskey-and-rrsig-resource-r">DNSKEY and RRSIG Resource Records for SM2</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dnskey-resource-records">DNSKEY Resource Records</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rrsig-resource-records">RRSIG Resource Records</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-support-for-nsec3-denial-of">Support for NSEC3 Denial of Existence</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
   DNSSEC is broadly defined in <xref target="RFC4033" format="default" sectionFormat="of" derivedContent="RFC4033"/>, <xref target="RFC4034" format="default" sectionFormat="of" derivedContent="RFC4034"/>, and <xref target="RFC4035" format="default" sectionFormat="of" derivedContent="RFC4035"/>.
   It uses cryptographic keys and digital signatures to provide
   authentication of DNS data. DNSSEC signature algorithms are
   registered in the DNSSEC algorithm numbers registry <xref target="IANA" format="default" sectionFormat="of" derivedContent="IANA"/>.</t>
      <t indent="0" pn="section-1-2">
   This document defines the DNSKEY and RRSIG resource records (RRs)
   of new signing algorithms: SM2 uses elliptic curves over 256-bit
   prime fields with SM3 hash algorithm. (A description of SM2 can be found in GM/T 0003.2-2012 <xref target="GMT-0003.2" format="default" sectionFormat="of" derivedContent="GMT-0003.2"/> or ISO/IEC14888-3:2018 
   <xref target="ISO-IEC14888-3_2018" format="default" sectionFormat="of" derivedContent="ISO-IEC14888-3_2018"/>, and a description of SM3
   can be found in GM/T 0004-2012 <xref target="GMT-0004" format="default" sectionFormat="of" derivedContent="GMT-0004"/> or
   ISO/IEC10118-3:2018 <xref target="ISO-IEC10118-3_2018" format="default" sectionFormat="of" derivedContent="ISO-IEC10118-3_2018"/>.) This document also
   defines the DS RR for the SM3 one-way hash algorithm. In the signing
   algorithm defined in this document, the size of the key for the
   elliptic curve is matched with the size of the output of the hash
   algorithm. Both are 256 bits.</t>
      <t indent="0" pn="section-1-3">
Many implementations may not support SM2 signatures and SM3 digests.  <xref target="RFC6840" sectionFormat="of" section="5.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6840#section-5.2" derivedContent="RFC6840"/> specifies handling of answers in such cases.</t>
      <t indent="0" pn="section-1-4">
Caution: This specification is not a standard and does not have IETF community consensus. It makes use of cryptographic algorithms that are national standards for China, as well as ISO/IEC standards (ISO/IEC 14888:3-2018 <xref target="ISO-IEC14888-3_2018" format="default" sectionFormat="of" derivedContent="ISO-IEC14888-3_2018"/> and ISO/IEC 10118:3-2018 <xref target="ISO-IEC10118-3_2018" format="default" sectionFormat="of" derivedContent="ISO-IEC10118-3_2018"/>). Neither the IETF nor the IRTF has analyzed that algorithm for suitability for any given application, and it may contain either intended or unintended weaknesses.
</t>
      <t indent="0" pn="section-1-5">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.</t>
    </section>
    <section anchor="sect-2" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-sm3-ds-records">SM3 DS Records</name>
      <t indent="0" pn="section-2-1">
   The implementation of SM3 in DNSSEC follows the implementation of
   SHA-256 as specified in <xref target="RFC4509" format="default" sectionFormat="of" derivedContent="RFC4509"/> except that the underlying
   algorithm is SM3 with digest type code 6.</t>
      <t indent="0" pn="section-2-2">
   The generation of an SM3 hash value is described in Section 5 of
   <xref target="GMT-0004" format="default" sectionFormat="of" derivedContent="GMT-0004"/> and generates a 256-bit hash value.</t>
    </section>
    <section anchor="sect-3" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-sm2-parameters">SM2 Parameters</name>
      <t indent="0" pn="section-3-1">
   Verifying SM2 signatures requires agreement between the signer and
   the verifier on the parameters used. The SM2 digital signature algorithm
   has been added to <xref target="ISO-IEC14888-3_2018" format="default" sectionFormat="of" derivedContent="ISO-IEC14888-3_2018"/>. The parameters of the
   curve used in this profile are as follows:</t>
      <artwork name="" type="" align="left" alt="" pn="section-3-2">
p  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 
     FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
     FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b  = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7
     F39789F5 15AB8F92 DDBCBD41 4D940E93
xG = 32C4AE2C 1F198119 5F990446 6A39C994
     8FE30BBF F2660BE1 715A4589 334C74C7
yG = BC3736A2 F4F6779C 59BDCEE3 6B692153
     D0A9877C C62A4740 02DF32E5 2139F0A0
n  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
     7203DF6B 21C6052B 53BBF409 39D54123
</artwork>
    </section>
    <section anchor="sect-4" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-dnskey-and-rrsig-resource-r">DNSKEY and RRSIG Resource Records for SM2</name>
      <section anchor="sect-4.1" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-dnskey-resource-records">DNSKEY Resource Records</name>
        <t indent="0" pn="section-4.1-1">
   SM2 public keys consist of a single value, called "P".  In DNSSEC
   keys, P is a string of 64 octets that represents the uncompressed
   form of a curve point, "x | y".  (Conversion of a point to an octet
   string is described in Section 4.2.8 of <xref target="GMT-0003.1" format="default" sectionFormat="of" derivedContent="GMT-0003.1"/>.)</t>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-rrsig-resource-records">RRSIG Resource Records</name>
        <t indent="0" pn="section-4.2-1">
   The SM2 signature is the combination of two non-negative integers,
   called "r" and "s". The two integers, each of which is formatted as
   a simple octet string, are combined into a single longer octet string
   for DNSSEC as the concatenation "r | s". (Conversion of the integers
   to bit strings is described in Section 4.2.1 of <xref target="GMT-0003.1" format="default" sectionFormat="of" derivedContent="GMT-0003.1"/>.)
   Each integer <bcp14>MUST</bcp14> be encoded as 32 octets.</t>
        <t indent="0" pn="section-4.2-2">
   Process details are described in Section 6 of <xref target="GMT-0003.2" format="default" sectionFormat="of" derivedContent="GMT-0003.2"/>.</t>
        <t indent="0" pn="section-4.2-3">
   The algorithm number associated with the DNSKEY and RRSIG resource records
   is 17, which is described in
   the IANA Considerations section.</t>
        <t indent="0" pn="section-4.2-4">
   Conformant implementations that create records to be put into the DNS <bcp14>MAY</bcp14>
   implement signing and verification for the SM2 digital signature algorithm. Conformant
   DNSSEC verifiers <bcp14>MAY</bcp14> implement verification for the above algorithm.</t>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-support-for-nsec3-denial-of">Support for NSEC3 Denial of Existence</name>
      <t indent="0" pn="section-5-1">
   This document does not define algorithm aliases mentioned in <xref target="RFC5155" format="default" sectionFormat="of" derivedContent="RFC5155"/>.</t>
      <t indent="0" pn="section-5-2">
   A DNSSEC validator that implements the signing algorithms defined in this
   document <bcp14>MUST</bcp14> be able to validate negative answers in the form of both NSEC
   and NSEC3 with hash algorithm SHA-1, as defined in <xref target="RFC5155" format="default" sectionFormat="of" derivedContent="RFC5155"/>. An authoritative
   server that does not implement NSEC3 <bcp14>MAY</bcp14> still serve zones that use the
   signing algorithms defined in this document with NSEC denial of existence.</t>
      <t indent="0" pn="section-5-3">
   If using NSEC3, the iterations <bcp14>MUST</bcp14> be 0 and salt <bcp14>MUST</bcp14> be an empty string
   as recommended in <xref target="RFC9276" sectionFormat="of" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9276#section-3.1" derivedContent="RFC9276"/>.</t>
    </section>
    <section anchor="sect-6" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-example">Example</name>
      <t indent="0" pn="section-6-1">
   The following is an example of SM2 keys and signatures in DNS zone file format,
   including DNSKEY RR, NSEC3PARAM RR, NSEC3 RR with RRSIG RRs, and DS RR.</t>
      <sourcecode type="dns-rr" markers="false" pn="section-6-2">
Private-key-format: v1.3
Algorithm: 17 (SM2SM3)
PrivateKey: V24tjJgXxp2ykscKRZdT+iuR5J1xRQN+FKoQACmo9fA=

example. 3600 IN DS 27215 17 6 (
   86671f82dd872e4ee73647a95dff7fd0af599ff8a43f fa26c9a2593091653c0e
   )

example. 3600  IN   DNSKEY  256 3 17 (
    7EQ32PTAp+1ac6R9Ze2nfB8pPc2OJqkHSjug
    ALr4SuD9awuQxhfw7wMpiXv7JK4/VwwTrCxJ
    wu+qUuDsgoBK4w==
    ) ; ZSK; alg = SM2SM3 ; key id = 65042
example. 3600  IN   RRSIG   DNSKEY 17 1 3600 (
    20230901000000 20220901000000 65042 example.
    lF2eq49e62Nn4aT5x8ZI6PdRSTPHPDixZdyl
    lM6GWu4lkRWkpTgWLE4lQK/+qHdNS4DdTd36
    Jsuu0FSO5k48Qg== )

example. 0  IN   NSEC3PARAM 1 0 10 AABBCCDD
example. 0  IN   RRSIG    NSEC3PARAM 17 1 0 (
       20230901000000 20220901000000 65042 example.
       aqntwEYEJzkVb8SNuJLwdx7f+vivv5IUIeAj )

62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN NSEC3  1 1 10
    AABBCCDD (
    GTGVQIILTSSJ8FFO9J6DC8PRTFAEA8G2 NS SOA RRSIG DNSKEY NSEC3PARAM )

62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN RRSIG  NSEC3 17 2
    3600 (
    20230901000000 20220901000000 65042 example.
    FOWLegTgFkFY9vCOo4kHwjEvZ+IL1NMl4s9V
    hVyPOwokd5uOLKeXTP19HIeEtW73WcJ9XNe/ ie/knp7Edo/hxw== )
</sourcecode>
      <t indent="0" pn="section-6-3">
<xref target="Example_Program" format="default" sectionFormat="of" derivedContent="Example_Program"/> is an example program based on dnspython and gmssl,
   which supplies key generating, zone signing, zone validating, and DS RR
   generating functions for convenience.</t>
    </section>
    <section anchor="sect-7" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">
IANA has registered the following in the "Digest Algorithms" registry within the "DNSSEC Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms" registry group. </t>
      <table anchor="tab1" align="center" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Value</th>
            <th align="left" colspan="1" rowspan="1">Digest Type</th>
            <th align="left" colspan="1" rowspan="1">Status</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">6</td>
            <td align="left" colspan="1" rowspan="1">SM3</td>
            <td align="left" colspan="1" rowspan="1">OPTIONAL</td>
            <td align="left" colspan="1" rowspan="1">This document</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-7-3">
IANA has registered the following in the "DNS Security Algorithm Numbers" registry within the "Domain Name System Security (DNSSEC) Algorithm Numbers" registry group.    </t>
      <table anchor="tab2" align="center" pn="table-2">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Number</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
            <th align="left" colspan="1" rowspan="1">Mnemonic</th>
            <th align="left" colspan="1" rowspan="1">Zone Signing</th>
            <th align="left" colspan="1" rowspan="1">Trans. Sec.</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">17</td>
            <td align="left" colspan="1" rowspan="1">SM2 signing algorithm with SM3 hashing algorithm</td>
            <td align="left" colspan="1" rowspan="1">SM2SM3</td>
            <td align="left" colspan="1" rowspan="1">Y</td>
            <td align="left" colspan="1" rowspan="1">*</td>
            <td align="left" colspan="1" rowspan="1">This document</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-7-5">
   * There has been no determination of standardization of the use of this
   algorithm with Transaction Security.</t>
    </section>
    <section anchor="sect-8" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">
   The security strength of SM2 depends on the size of the key. A longer
   key provides stronger security strength. The security of ECC-based
   algorithms is influenced by the curve it uses, too.</t>
      <t indent="0" pn="section-8-2">
   Like any cryptographic algorithm, it may come to pass that a weakness
   is found in either SM2 or SM3. In this case, the proper remediation is
   crypto-agility. In the case of DNSSEC, the appropriate approach would
   be to regenerate appropriate DS, DNSKEY, RRSIG, and NSEC3 records.
   Care <bcp14>MUST</bcp14> be taken in this situation to permit appropriate rollovers,
   taking into account record caching. See <xref target="RFC7583" format="default" sectionFormat="of" derivedContent="RFC7583"/> for details. A suitable replacement algorithm should be both widely
   implemented and not known to have weaknesses.</t>
      <t indent="0" pn="section-8-3">
   The security considerations listed in <xref target="RFC4509" format="default" sectionFormat="of" derivedContent="RFC4509"/> apply here as well.</t>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="GMT-0003.1" quoteTitle="true" derivedAnchor="GMT-0003.1">
          <front>
            <title>SM2 Public Key Cryptographic Algorithms Based on Elliptic Curves Part 1: General</title>
            <author>
              <organization showOnFrontPage="true">Cryptography Standardization Technical Committee of China</organization>
            </author>
            <date month="March" year="2012"/>
          </front>
          <seriesInfo name="GM/T" value="0003.1-2012"/>
          <refcontent>[In Chinese]</refcontent>
          <annotation>English translation available at: <eref target="http://www.gmbz.org.cn/upload/2024-11-18/1731899501687024253.pdf"/></annotation>
        </reference>
        <reference anchor="GMT-0003.2" quoteTitle="true" derivedAnchor="GMT-0003.2">
          <front>
            <title>SM2 Public Key Cryptographic Algorithms Based on Elliptic Curves Part 2: Digital Signature Algorithm</title>
            <author>
              <organization showOnFrontPage="true">Cryptography Standardization Technical Committee of China</organization>
            </author>
            <date month="March" year="2012"/>
          </front>
          <seriesInfo name="GM/T" value="0003.2-2012"/>
          <refcontent>[In Chinese]</refcontent>
          <annotation> English translation available at: <eref target="http://www.gmbz.org.cn/upload/2024-11-18/1731899583359013934.pdf"/></annotation>
        </reference>
        <reference anchor="GMT-0004" quoteTitle="true" derivedAnchor="GMT-0004">
          <front>
            <title>SM3 Cryptographic Hash Algorithm</title>
            <author>
              <organization showOnFrontPage="true">Cryptography Standardization Technical Committee of China</organization>
            </author>
            <date month="March" year="2012"/>
          </front>
          <seriesInfo name="GM/T" value="0004-2012"/>
          <refcontent>[In Chinese]</refcontent>
          <annotation>English translation available at: <eref target="http://www.gmbz.org.cn/upload/2024-11-18/1731899426565012428.pdf"/>. </annotation>
        </reference>
        <reference anchor="IANA" target="https://www.iana.org/assignments/dns-sec-alg-numbers" quoteTitle="true" derivedAnchor="IANA">
          <front>
            <title>DNS Security Algorithm Numbers</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ISO-IEC10118-3_2018" quoteTitle="true" derivedAnchor="ISO-IEC10118-3_2018">
          <front>
            <title>IT Security techniques -- Hash-functions -- Part 3: Dedicated hash-functions</title>
            <author>
              <organization showOnFrontPage="true">ISO/IEC</organization>
            </author>
            <date month="October" year="2018"/>
          </front>
          <seriesInfo name="ISO/IEC" value="10118-3:2018"/>
        </reference>
        <reference anchor="ISO-IEC14888-3_2018" quoteTitle="true" derivedAnchor="ISO-IEC14888-3_2018">
          <front>
            <title>IT Security techniques -- Digital signatures with appendix -- Part 3: Discrete logarithm based mechanisms</title>
            <author>
              <organization showOnFrontPage="true">ISO/IEC</organization>
            </author>
            <date month="November" year="2018"/>
          </front>
          <seriesInfo name="ISO/IEC" value="14888-3:2018"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">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="RFC4033" target="https://www.rfc-editor.org/info/rfc4033" quoteTitle="true" derivedAnchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC4034" target="https://www.rfc-editor.org/info/rfc4034" quoteTitle="true" derivedAnchor="RFC4034">
          <front>
            <title>Resource Records for the DNS Security Extensions</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of resource records and protocol modifications that provide source authentication for the DNS. This document defines the public key (DNSKEY), delegation signer (DS), resource record digital signature (RRSIG), and authenticated denial of existence (NSEC) resource records. The purpose and format of each resource record is described in detail, and an example of each resource record is given.</t>
              <t indent="0">This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4034"/>
          <seriesInfo name="DOI" value="10.17487/RFC4034"/>
        </reference>
        <reference anchor="RFC4035" target="https://www.rfc-editor.org/info/rfc4035" quoteTitle="true" derivedAnchor="RFC4035">
          <front>
            <title>Protocol Modifications for the DNS Security Extensions</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">This document is part of a family of documents that describe the DNS Security Extensions (DNSSEC). The DNS Security Extensions are a collection of new resource records and protocol modifications that add data origin authentication and data integrity to the DNS. This document describes the DNSSEC protocol modifications. This document defines the concept of a signed zone, along with the requirements for serving and resolving by using DNSSEC. These techniques allow a security-aware resolver to authenticate both DNS resource records and authoritative DNS error indications.</t>
              <t indent="0">This document obsoletes RFC 2535 and incorporates changes from all updates to RFC 2535. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4035"/>
          <seriesInfo name="DOI" value="10.17487/RFC4035"/>
        </reference>
        <reference anchor="RFC4509" target="https://www.rfc-editor.org/info/rfc4509" quoteTitle="true" derivedAnchor="RFC4509">
          <front>
            <title>Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs)</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="May" year="2006"/>
            <abstract>
              <t indent="0">This document specifies how to use the SHA-256 digest type in DNS Delegation Signer (DS) Resource Records (RRs). DS records, when stored in a parent zone, point to DNSKEYs in a child zone. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4509"/>
          <seriesInfo name="DOI" value="10.17487/RFC4509"/>
        </reference>
        <reference anchor="RFC5155" target="https://www.rfc-editor.org/info/rfc5155" quoteTitle="true" derivedAnchor="RFC5155">
          <front>
            <title>DNS Security (DNSSEC) Hashed Authenticated Denial of Existence</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="G. Sisson" initials="G." surname="Sisson"/>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="D. Blacka" initials="D." surname="Blacka"/>
            <date month="March" year="2008"/>
            <abstract>
              <t indent="0">The Domain Name System Security (DNSSEC) Extensions introduced the NSEC resource record (RR) for authenticated denial of existence. This document introduces an alternative resource record, NSEC3, which similarly provides authenticated denial of existence. However, it also provides measures against zone enumeration and permits gradual expansion of delegation-centric zones. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5155"/>
          <seriesInfo name="DOI" value="10.17487/RFC5155"/>
        </reference>
        <reference anchor="RFC6840" target="https://www.rfc-editor.org/info/rfc6840" quoteTitle="true" derivedAnchor="RFC6840">
          <front>
            <title>Clarifications and Implementation Notes for DNS Security (DNSSEC)</title>
            <author fullname="S. Weiler" initials="S." role="editor" surname="Weiler"/>
            <author fullname="D. Blacka" initials="D." role="editor" surname="Blacka"/>
            <date month="February" year="2013"/>
            <abstract>
              <t indent="0">This document is a collection of technical clarifications to the DNS Security (DNSSEC) document set. It is meant to serve as a resource to implementors as well as a collection of DNSSEC errata that existed at the time of writing.</t>
              <t indent="0">This document updates the core DNSSEC documents (RFC 4033, RFC 4034, and RFC 4035) as well as the NSEC3 specification (RFC 5155). It also defines NSEC3 and SHA-2 (RFC 4509 and RFC 5702) as core parts of the DNSSEC specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6840"/>
          <seriesInfo name="DOI" value="10.17487/RFC6840"/>
        </reference>
        <reference anchor="RFC7583" target="https://www.rfc-editor.org/info/rfc7583" quoteTitle="true" derivedAnchor="RFC7583">
          <front>
            <title>DNSSEC Key Rollover Timing Considerations</title>
            <author fullname="S. Morris" initials="S." surname="Morris"/>
            <author fullname="J. Ihren" initials="J." surname="Ihren"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="W. Mekking" initials="W." surname="Mekking"/>
            <date month="October" year="2015"/>
            <abstract>
              <t indent="0">This document describes the issues surrounding the timing of events in the rolling of a key in a DNSSEC-secured zone. It presents timelines for the key rollover and explicitly identifies the relationships between the various parameters affecting the process.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7583"/>
          <seriesInfo name="DOI" value="10.17487/RFC7583"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">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="RFC9276" target="https://www.rfc-editor.org/info/rfc9276" quoteTitle="true" derivedAnchor="RFC9276">
          <front>
            <title>Guidance for NSEC3 Parameter Settings</title>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
            <date month="August" year="2022"/>
            <abstract>
              <t indent="0">NSEC3 is a DNSSEC mechanism providing proof of nonexistence by asserting that there are no names that exist between two domain names within a zone. Unlike its counterpart NSEC, NSEC3 avoids directly disclosing the bounding domain name pairs. This document provides guidance on setting NSEC3 parameters based on recent operational deployment experience. This document updates RFC 5155 with guidance about selecting NSEC3 iteration and salt parameters.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="236"/>
          <seriesInfo name="RFC" value="9276"/>
          <seriesInfo name="DOI" value="10.17487/RFC9276"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="Example_Program" target="https://github.com/scooct/dnssec_sm2sm3" quoteTitle="true" derivedAnchor="Example_Program">
          <front>
            <title>sign and validate dnssec signature with sm2sm3 algorithm</title>
            <author/>
            <date month="April" year="2023"/>
          </front>
          <refcontent>commit 6f98c17 </refcontent>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="C." surname="Zhang" fullname="Cuiling Zhang">
        <organization showOnFrontPage="true">CNNIC</organization>
        <address>
          <postal>
            <street>No.4 South 4th Street, Zhongguancun</street>
            <city>Beijing</city>
            <code>100190</code>
            <country>China</country>
          </postal>
          <email>zhangcuiling@cnnic.cn</email>
        </address>
      </author>
      <author initials="Y." surname="Liu" fullname="Yukun Liu">
        <organization showOnFrontPage="true">CNNIC</organization>
        <address>
          <postal>
            <street>No.4 South 4th Street, Zhongguancun</street>
            <city>Beijing</city>
            <code>100190</code>
            <country>China</country>
          </postal>
          <email>liuyukun@cnnic.cn</email>
        </address>
      </author>
      <author initials="F." surname="Leng" fullname="Feng Leng">
        <organization showOnFrontPage="true">CNNIC</organization>
        <address>
          <postal>
            <street>No.4 South 4th Street, Zhongguancun</street>
            <city>Beijing</city>
            <code>100190</code>
            <country>China</country>
          </postal>
          <email>lengfeng@cnnic.cn</email>
        </address>
      </author>
      <author initials="Q." surname="Zhao" fullname="Qi Zhao">
        <organization showOnFrontPage="true">CNNIC</organization>
        <address>
          <postal>
            <street>No.4 South 4th Street, Zhongguancun</street>
            <city>Beijing</city>
            <code>100190</code>
            <country>China</country>
          </postal>
          <email>zhaoqi@cnnic.cn</email>
        </address>
      </author>
      <author initials="Z." surname="He" fullname="Zheng He">
        <organization showOnFrontPage="true">CNNIC</organization>
        <address>
          <postal>
            <street>No.4 South 4th Street, Zhongguancun</street>
            <city>Beijing</city>
            <code>100190</code>
            <country>China</country>
          </postal>
          <email>hezh@cnnic.cn</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
