rfc9563v1.txt   rfc9563.txt 
skipping to change at line 14 skipping to change at line 14
Independent Submission C. Zhang Independent Submission C. Zhang
Request for Comments: 9563 Y. Liu Request for Comments: 9563 Y. Liu
Category: Informational F. Leng Category: Informational F. Leng
ISSN: 2070-1721 Q. Zhao ISSN: 2070-1721 Q. Zhao
Z. He Z. He
CNNIC CNNIC
April 2024 April 2024
SM2 Digital Signature Algorithm for NSSEC SM2 Digital Signature Algorithm for DNSSEC
Abstract Abstract
This document specifies the use of the SM2 digital signature This document specifies the use of the SM2 digital signature
algorithm and SM3 hash algorithm for DNS Security (DNSSEC). algorithm and SM3 hash algorithm for DNS Security (DNSSEC).
This document is an Independent Submission to the RFC series and does This document is an Independent Submission to the RFC series and does
not have consensus of the IETF community. not have consensus of the IETF community.
Status of This Memo Status of This Memo
skipping to change at line 109 skipping to change at line 109
The generation of an SM3 hash value is described in Section 5 of The generation of an SM3 hash value is described in Section 5 of
[GBT-32905-2016] and generates a 256-bit hash value. [GBT-32905-2016] and generates a 256-bit hash value.
3. SM2 Parameters 3. SM2 Parameters
Verifying SM2 signatures requires agreement between the signer and Verifying SM2 signatures requires agreement between the signer and
the verifier on the parameters used. The SM2 digital signature the verifier on the parameters used. The SM2 digital signature
algorithm has been added to [ISO-IEC14888-3_2018]. The parameters of algorithm has been added to [ISO-IEC14888-3_2018]. The parameters of
the curve used in this profile are as follows: the curve used in this profile are as follows:
p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
a = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93 a = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
xG = 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
yG = BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0 b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7
n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 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
4. DNSKEY and RRSIG Resource Records for SM2 4. DNSKEY and RRSIG Resource Records for SM2
4.1. DNSKEY Resource Records 4.1. DNSKEY Resource Records
SM2 public keys consist of a single value, called "P". In DNSSEC SM2 public keys consist of a single value, called "P". In DNSSEC
keys, P is a string of 32 octets that represents the uncompressed keys, P is a string of 32 octets that represents the uncompressed
form of a curve point, "x | y". (Conversion of a point to an octet form of a curve point, "x | y". (Conversion of a point to an octet
string is described in Section 4.2.8 of [GBT-32918.1-2016].) string is described in Section 4.2.8 of [GBT-32918.1-2016].)
skipping to change at line 140 skipping to change at line 146
for DNSSEC as the concatenation "r | s". (Conversion of the integers for DNSSEC as the concatenation "r | s". (Conversion of the integers
to bit strings is described in Section 4.2.1 of [GBT-32918.1-2016].) to bit strings is described in Section 4.2.1 of [GBT-32918.1-2016].)
Each integer MUST be encoded as 32 octets. Each integer MUST be encoded as 32 octets.
Process details are described in Section 6 of [GBT-32918.2-2016]. Process details are described in Section 6 of [GBT-32918.2-2016].
The algorithm number associated with the DNSKEY and RRSIG resource The algorithm number associated with the DNSKEY and RRSIG resource
records is 17, which is described in the IANA Considerations section. records is 17, which is described in the IANA Considerations section.
Conformant implementations that create records to be put into the DNS Conformant implementations that create records to be put into the DNS
MAY implement signing and verification for the above algorithm. MAY implement signing and verification for the SM2 digital signature
Conformant DNSSEC verifiers MAY implement verification for the above algorithm. Conformant DNSSEC verifiers MAY implement verification
algorithm. for the above algorithm.
5. Support for NSEC3 Denial of Existence 5. Support for NSEC3 Denial of Existence
This document does not define algorithm aliases mentioned in This document does not define algorithm aliases mentioned in
[RFC5155]. [RFC5155].
A DNSSEC validator that implements the signing algorithms defined in A DNSSEC validator that implements the signing algorithms defined in
this document MUST be able to validate negative answers in the form this document MUST be able to validate negative answers in the form
of both NSEC and NSEC3 with hash algorithm SHA-1, as defined in of both NSEC and NSEC3 with hash algorithm SHA-1, as defined in
[RFC5155]. An authoritative server that does not implement NSEC3 MAY [RFC5155]. An authoritative server that does not implement NSEC3 MAY
skipping to change at line 186 skipping to change at line 192
wu+qUuDsgoBK4w== wu+qUuDsgoBK4w==
) ; ZSK; alg = SM2SM3 ; key id = 65042 ) ; ZSK; alg = SM2SM3 ; key id = 65042
example. 3600 IN RRSIG DNSKEY 17 1 3600 ( example. 3600 IN RRSIG DNSKEY 17 1 3600 (
20230901000000 20220901000000 65042 example. 20230901000000 20220901000000 65042 example.
lF2eq49e62Nn4aT5x8ZI6PdRSTPHPDixZdyl lF2eq49e62Nn4aT5x8ZI6PdRSTPHPDixZdyl
lM6GWu4lkRWkpTgWLE4lQK/+qHdNS4DdTd36 lM6GWu4lkRWkpTgWLE4lQK/+qHdNS4DdTd36
Jsuu0FSO5k48Qg== ) Jsuu0FSO5k48Qg== )
example. 0 IN NSEC3PARAM 1 0 10 AABBCCDD example. 0 IN NSEC3PARAM 1 0 10 AABBCCDD
example. 0 IN RRSIG NSEC3PARAM 17 1 0 ( example. 0 IN RRSIG NSEC3PARAM 17 1 0 (
20230901000000 20220901000000 65042 example. 20230901000000 20220901000000 65042 example.
aqntwEYEJzkVb8SNuJLwdx7f+vivv5IUIeAj aqntwEYEJzkVb8SNuJLwdx7f+vivv5IUIeAj )
62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN NSEC3 1 1 10 62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN NSEC3 1 1 10
AABBCCDD ( AABBCCDD (
GTGVQIILTSSJ8FFO9J6DC8PRTFAEA8G2 NS SOA RRSIG DNSKEY NSEC3PARAM ) GTGVQIILTSSJ8FFO9J6DC8PRTFAEA8G2 NS SOA RRSIG DNSKEY NSEC3PARAM )
62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN RRSIG NSEC3 17 2 62KP1QB93KRGR6LM7SEVPJVNG90BLUE8.example. 3600 IN RRSIG NSEC3 17 2
3600 ( 3600 (
20230901000000 20220901000000 65042 example. 20230901000000 20220901000000 65042 example.
FOWLegTgFkFY9vCOo4kHwjEvZ+IL1NMl4s9V FOWLegTgFkFY9vCOo4kHwjEvZ+IL1NMl4s9V
hVyPOwokd5uOLKeXTP19HIeEtW73WcJ9XNe/ ie/knp7Edo/hxw== ) hVyPOwokd5uOLKeXTP19HIeEtW73WcJ9XNe/ ie/knp7Edo/hxw== )
[Example_Program] is an example program based on dnspython and gmssl, [Example_Program] is an example program based on dnspython and gmssl,
which supplies key generating, zone signing, zone validating, and DS which supplies key generating, zone signing, zone validating, and DS
RR generating functions for convenience. RR generating functions for convenience.
7. IANA Considerations 7. IANA Considerations
skipping to change at line 260 skipping to change at line 264
rollovers, taking into account record caching. See [RFC7583] for rollovers, taking into account record caching. See [RFC7583] for
details. A suitable replacement algorithm should be both widely details. A suitable replacement algorithm should be both widely
implemented and not known to have weaknesses. implemented and not known to have weaknesses.
The security considerations listed in [RFC4509] apply here as well. The security considerations listed in [RFC4509] apply here as well.
9. References 9. References
9.1. Normative References 9.1. Normative References
[GBT-32905-2016]
Standardization Administration of China, "Information
security technology -- SM3 Cryptographic Hash Algorithm",
GB/T 32905-2016, March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401392982079739.pdf>.
[GBT-32918.1-2016]
Standardization Administration of China, "Information
security technology -- Public key cryptographic algorithm
SM2 based on elliptic curves -- Part 1: General", GB/
T 32918.2-2016, March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401673134070738.pdf>.
[GBT-32918.2-2016]
Standardization Administration of China, "Information
security technology -- Public key cryptographic algorithm
SM2 based on elliptic curves -- Part 2: Digital signature
algorithm", GB/T 32918.2-2016, March 2017,
<http://www.gmbz.org.cn/
upload/2018-07-24/1532401673138056311.pdf>.
[IANA] IANA, "DNS Security Algorithm Numbers",
<https://www.iana.org/assignments/dns-sec-alg-numbers>.
[ISO-IEC10118-3_2018]
ISO/IEC, "IT Security techniques -- Hash-functions -- Part
3: Dedicated hash-functions", ISO/IEC 10118-3:2018,
October 2018.
[ISO-IEC14888-3_2018]
ISO/IEC, "IT Security techniques -- Digital signatures
with appendix -- Part 3: Discrete logarithm based
mechanisms", ISO/IEC 14888-3:2018, November 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements", Rose, "DNS Security Introduction and Requirements",
RFC 4033, DOI 10.17487/RFC4033, March 2005, RFC 4033, DOI 10.17487/RFC4033, March 2005,
<https://www.rfc-editor.org/info/rfc4033>. <https://www.rfc-editor.org/info/rfc4033>.
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Resource Records for the DNS Security Extensions", Rose, "Resource Records for the DNS Security Extensions",
RFC 4034, DOI 10.17487/RFC4034, March 2005, RFC 4034, DOI 10.17487/RFC4034, March 2005,
<https://www.rfc-editor.org/info/rfc4034>. <https://www.rfc-editor.org/info/rfc4034>.
[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Protocol Modifications for the DNS Security Rose, "Protocol Modifications for the DNS Security
Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005, Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005,
<https://www.rfc-editor.org/info/rfc4035>. <https://www.rfc-editor.org/info/rfc4035>.
[IANA] IANA, "DNS Security Algorithm Numbers",
<https://www.iana.org/assignments/dns-sec-alg-numbers>.
[RFC4509] Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer [RFC4509] Hardaker, W., "Use of SHA-256 in DNSSEC Delegation Signer
(DS) Resource Records (RRs)", RFC 4509, (DS) Resource Records (RRs)", RFC 4509,
DOI 10.17487/RFC4509, May 2006, DOI 10.17487/RFC4509, May 2006,
<https://www.rfc-editor.org/info/rfc4509>. <https://www.rfc-editor.org/info/rfc4509>.
[RFC5155] Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNS [RFC5155] Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNS
Security (DNSSEC) Hashed Authenticated Denial of Security (DNSSEC) Hashed Authenticated Denial of
Existence", RFC 5155, DOI 10.17487/RFC5155, March 2008, Existence", RFC 5155, DOI 10.17487/RFC5155, March 2008,
<https://www.rfc-editor.org/info/rfc5155>. <https://www.rfc-editor.org/info/rfc5155>.
[RFC9276] Hardaker, W. and V. Dukhovni, "Guidance for NSEC3
Parameter Settings", BCP 236, RFC 9276,
DOI 10.17487/RFC9276, August 2022,
<https://www.rfc-editor.org/info/rfc9276>.
[RFC7583] Morris, S., Ihren, J., Dickinson, J., and W. Mekking, [RFC7583] Morris, S., Ihren, J., Dickinson, J., and W. Mekking,
"DNSSEC Key Rollover Timing Considerations", RFC 7583, "DNSSEC Key Rollover Timing Considerations", RFC 7583,
DOI 10.17487/RFC7583, October 2015, DOI 10.17487/RFC7583, October 2015,
<https://www.rfc-editor.org/info/rfc7583>. <https://www.rfc-editor.org/info/rfc7583>.
[GBT-32918.1-2016] [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
Standardization Administration of China, "Information 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
security technology --- Public key cryptographic algorithm May 2017, <https://www.rfc-editor.org/info/rfc8174>.
SM2 based on elliptic curves --- Part 1: General", GB/
T 32918.2-2016, March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401673134070738.pdf>.
[GBT-32918.2-2016]
Standardization Administration of China, "Information
security technology --- Public key cryptographic algorithm
SM2 based on elliptic curves --- Part 2: Digital signature
algorithm", GB/T 32918.2-2016, March 2017,
<http://www.gmbz.org.cn/
upload/2018-07-24/1532401673138056311.pdf>.
[ISO-IEC14888-3_2018]
ISO/IEC, "IT Security techniques -- Digital signatures
with appendix -- Part 3: Discrete logarithm based
mechanisms", ISO/IEC 14888-3:2018, November 2018.
[GBT-32905-2016]
Standardization Administration of China, "Information
security technology --- SM3 cryptographic hash algorithm",
GB/T 32905-2016, March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401392982079739.pdf>.
[ISO-IEC10118-3_2018] [RFC9276] Hardaker, W. and V. Dukhovni, "Guidance for NSEC3
ISO/IEC, "IT Security techniques -- Hash-functions -- Part Parameter Settings", BCP 236, RFC 9276,
3: Dedicated hash-functions", ISO/IEC 10118-3:2018, DOI 10.17487/RFC9276, August 2022,
October 2018. <https://www.rfc-editor.org/info/rfc9276>.
9.2. Informative References 9.2. Informative References
[Example_Program] [Example_Program]
"sign and validate dnssec signature with sm2sm3 "sign and validate dnssec signature with sm2sm3
algorithm", commit 6f98c17, April 2023, algorithm", commit 6f98c17, April 2023,
<https://github.com/scooct/dnssec_sm2sm3>. <https://github.com/scooct/dnssec_sm2sm3>.
Authors' Addresses Authors' Addresses
 End of changes. 12 change blocks. 
55 lines changed or deleted 59 lines changed or added

This html diff was produced by rfcdiff 1.48.