RFC 8624
Algorithm Implementation Requirements and Usage Guidance for DNSSEC
RFC 8624: Algorithm Implementation Requirements and Usage Guidance for DNSSEC ๐
Internet Engineering Task Force (IETF) ๐ธ Request for Comments: 8624 Obsoletes: RFC 6944 Category: Standards Track ๐ ISSN: 2070-1721 Date: June 2019
Okay bestie, this one is by P. Wouters (Red Hat) and O. Sury (Internet Systems Consortium) ๐. It's on the Standards Track, it came out in June 2019, and it obsoletes RFC 6944 ๐ฆ. Let's get into it โจ
Abstract ๐ฆ
So DNSSEC uses a bunch of cryptographic algorithms to prove that DNS data is legit and to prove that a name doesn't exist ๐. For resolvers and authoritative servers to actually work together, there has to be a set of algorithm requirements and usage guidelines, so that there's at least one algorithm every implementation supports ๐ซถ. This document is where the current algorithm requirements and usage guidance for DNSSEC live. It obsoletes RFC 6944 ๐.
Status of This Memo ๐ธ
This is an Internet Standards Track document ๐ .
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841 ๐.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8624 ๐.
Copyright Notice ๐
Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) 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. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License ๐.
Table of Contents ๐
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Updating Algorithm Implementation Requirements and Usage
Guidance . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Updating Algorithm Requirement Levels . . . . . . . . . . 3
1.3. Document Audience . . . . . . . . . . . . . . . . . . . . 4
2. Conventions Used in This Document . . . . . . . . . . . . . . 4
3. Algorithm Selection . . . . . . . . . . . . . . . . . . . . . 5
3.1. DNSKEY Algorithms . . . . . . . . . . . . . . . . . . . . 5
3.2. DNSKEY Algorithm Recommendation . . . . . . . . . . . . . 6
3.3. DS and CDS Algorithms . . . . . . . . . . . . . . . . . . 7
3.4. DS and CDS Algorithm Recommendation . . . . . . . . . . . 7
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8
5. Operational Considerations . . . . . . . . . . . . . . . . . 8
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
7.1. Normative References . . . . . . . . . . . . . . . . . . 9
7.2. Informative References . . . . . . . . . . . . . . . . . 10
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction โจ
The DNSSEC signing algorithms are defined across a bunch of RFCs, including [RFC4034], [RFC5155], [RFC5702], [RFC5933], [RFC6605], and [RFC8080] ๐. DNSSEC is how we authenticate data ๐. To keep everything interoperable, there's a set of "mandatory-to-implement" DNSKEY algorithms ๐ซถ. This document obsoletes [RFC6944] ๐ฆ.
1.1. Updating Algorithm Implementation Requirements and Usage Guidance
Cryptography is always changing, no cap ๐. New, stronger algorithms show up, and algorithms we already trust turn out to be less secure than everyone thought ๐ญ. Attacks that used to be computationally infeasible get more accessible as computing power goes up ๐ป. So the algorithm requirements and usage guidance need updating every so often to match the new reality โจ. The algorithm choices must be conservative to minimize the risk of algorithm compromise ๐ก๏ธ.
1.2. Updating Algorithm Requirement Levels
The mandatory-to-implement algorithm of tomorrow should already be in most DNSSEC implementations by the time it becomes mandatory ๐ฎ. This document tries to find those algorithms and introduce them for future mandatory-to-implement status ๐ . There's no guarantee that today's algorithms become mandatory later, lowkey ๐. Published algorithms keep getting hit with cryptographic attacks, and they may become too weak or even completely broken before this document gets updated ๐.
This document only gives recommendations about mandatory-to-implement algorithms, or about algorithms so weak that they can't be recommended ๐ซ. Any algorithm listed in the [DNSKEY-IANA] and [DS-IANA] registries that this document doesn't mention MAY be implemented ๐ธ. For clarity and consistency, an algorithm only gets specified as MAY in this document when it has been downgraded from a MUST or a RECOMMENDED to a MAY ๐.
Even though the main goal here is to update algorithm recommendations so DNSSEC authentication stays secure over time, the document also aims to keep DNSSEC implementations interoperable ๐ซถ. DNSSEC interoperability is handled by introducing or deprecating algorithms gradually ๐ฆ.
[RFC2119] considers the term SHOULD equivalent to RECOMMENDED, and SHOULD NOT equivalent to NOT RECOMMENDED. The authors chose to use the terms RECOMMENDED and NOT RECOMMENDED, since that more clearly shows the intent to implementers ๐ก.
Deprecating an algorithm is expected to happen gradually, over a series of updates to this document โณ. That gives various implementations time to update their algorithms while staying interoperable ๐ง. Unless there are strong security reasons, an algorithm is expected to be downgraded from MUST to NOT RECOMMENDED or MAY, instead of straight to MUST NOT ๐ซง. In the same way, an algorithm that was never listed as mandatory-to-implement is expected to be introduced with a RECOMMENDED instead of a MUST ๐ฑ.
Using an unknown DNSKEY algorithm makes the zone get treated as insecure, so it is recommended that algorithms downgraded to NOT RECOMMENDED or lower not be used by authoritative nameservers and DNSSEC signers to create new DNSKEYs ๐ โโ๏ธ. This lets deprecated algorithms become less and less common over time ๐. Once an algorithm reaches a low enough level of deployment, it can be marked as MUST NOT, so recursive resolvers can drop support for validating it ๐งน.
Recursive nameservers are encouraged to keep supporting every algorithm that isn't marked as MUST NOT ๐ซถ.
1.3. Document Audience
The recommendations here mostly target DNSSEC implementers ๐งโ๐ป, because implementations need to hit both high security expectations and high interoperability between vendors and different versions ๐ช. Interoperability needs a smooth move to more secure algorithms ๐. This view might be different from a user who just wants to deploy and configure DNSSEC with only the safest algorithm ๐. But the comments and recommendations in this document are also meant to be useful for those users ๐.
2. Conventions Used in This Document ๐
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here ๐. Lowercase versions are just regular words, periodt ๐ .
3. Algorithm Selection ๐ง
Part 2 picks up right here with the rest of Section 3 ๐ฆ๐
3.1. DNSKEY Algorithms ๐
okay bestie, let's talk DNSKEY algorithms ๐ here's the implementation recommendations table from [DNSKEY-IANA], the one that tells you what to sign with and what to validate:
+--------+--------------------+-----------------+-------------------+
| Number | Mnemonics | DNSSEC Signing | DNSSEC Validation |
+--------+--------------------+-----------------+-------------------+
| 1 | RSAMD5 | MUST NOT | MUST NOT |
| 3 | DSA | MUST NOT | MUST NOT |
| 5 | RSASHA1 | NOT RECOMMENDED | MUST |
| 6 | DSA-NSEC3-SHA1 | MUST NOT | MUST NOT |
| 7 | RSASHA1-NSEC3-SHA1 | NOT RECOMMENDED | MUST |
| 8 | RSASHA256 | MUST | MUST |
| 10 | RSASHA512 | NOT RECOMMENDED | MUST |
| 12 | ECC-GOST | MUST NOT | MAY |
| 13 | ECDSAP256SHA256 | MUST | MUST |
| 14 | ECDSAP384SHA384 | MAY | RECOMMENDED |
| 15 | ED25519 | RECOMMENDED | RECOMMENDED |
| 16 | ED448 | MAY | RECOMMENDED |
+--------+--------------------+-----------------+-------------------+
RSAMD5 is not widely deployed ๐ and the industry is trying to move away from MD5 usage, so it's giving retired vibes.
RSASHA1 and RSASHA1-NSEC3-SHA1 are widely deployed ๐ซถ but zones using them are recommended to switch to ECDSAP256SHA256, because everyone is moving toward elliptic curve cryptography. RSASHA1 does not support NSEC3. RSASHA1-NSEC3-SHA1 can be used with or without NSEC3.
DSA and DSA-NSEC3-SHA1 are not widely deployed ๐ฌ and they are vulnerable to private key compromise when signatures are generated with a weak or compromised random number generator. Yikes.
RSASHA256 is widely used and considered strong ๐ช It has been the default algorithm for years, and it's now slowly being replaced by ECDSAP256SHA256 because its keys and signatures are shorter, which means smaller DNS packets โจ
RSASHA512 is NOT RECOMMENDED for DNSSEC signing ๐ because it hasn't seen wide deployment. There are some deployments out there though, so DNSSEC validation MUST implement RSASHA512 to make sure everything interoperates. There's no significant difference in cryptographic strength between RSASHA512 and RSASHA256, so using RSASHA512 is discouraged. It would only make deprecating the older algorithms harder. If you want a cryptographically stronger algorithm, switch to elliptic curve cryptography algorithms ๐
ECC-GOST (GOST R 34.10-2001) has been superseded by GOST R 34.10-2012 in [RFC7091] ๐ธ GOST R 34.10-2012 hasn't been standardized for use in DNSSEC, so no.
ECDSAP256SHA256 gives you more cryptographic strength with a shorter signature than either RSASHA256 or RSASHA512 ๐ It's been widely deployed, so it is now at MUST level for both validation and signing. It is RECOMMENDED to use the deterministic digital signature generation procedure of the Elliptic Curve Digital Signature Algorithm (ECDSA), specified in [RFC6979], when implementing ECDSAP256SHA256 (and ECDSAP384SHA384).
ECDSAP384SHA384 has the same properties as ECDSAP256SHA256 but offers a modest security advantage, 192 bits of strength versus 128 bits ๐ฆ For most DNSSEC applications, ECDSAP256SHA256 should be satisfactory and robust for the foreseeable future, so it is therefore recommended for signing. It's unlikely a DNSSEC use case will need 192-bit security strength, but ECDSA384SHA384 is provided for those applications, and it MAY be used for signing in these cases.
ED25519 and ED448 use the Edwards-curve Digital Security Algorithm (EdDSA) ๐ง There are three main advantages of EdDSA. It does not require a unique random number for each signature, it has no padding or truncation issues like ECDSA does, and it is more resilient to side-channel attacks. EdDSA cryptography is also less prone to implementation errors ([RFC8032], [RFC8080]) ๐ It is expected that ED25519 will become the future RECOMMENDED default algorithm once enough deployed DNSSEC validators support it.
3.2. DNSKEY Algorithm Recommendation ๐
Because of the industry-wide move toward elliptic curve cryptography, ECDSAP256SHA256 is the RECOMMENDED DNSKEY algorithm for new DNSSEC deployments ๐ and users of RSA-based algorithms SHOULD upgrade to ECDSAP256SHA256.
3.3. DS and CDS Algorithms ๐
The following table lists the recommendations for Delegation Signer Digest Algorithms [DS-IANA] ๐ These recommendations also apply to the Child Delegation Signer (CDS) RRTYPE, as specified in [RFC7344].
+--------+-----------------+-------------------+-------------------+
| Number | Mnemonics | DNSSEC Delegation | DNSSEC Validation |
+--------+-----------------+-------------------+-------------------+
| 0 | NULL (CDS only) | MUST NOT [*] | MUST NOT [*] |
| 1 | SHA-1 | MUST NOT | MUST |
| 2 | SHA-256 | MUST | MUST |
| 3 | GOST R 34.11-94 | MUST NOT | MAY |
| 4 | SHA-384 | MAY | RECOMMENDED |
+--------+-----------------+-------------------+-------------------+
[*] - This is a special type of CDS record signaling removal of DS at
the parent in [RFC8078].
NULL is a special case, so check out [RFC8078] for the details ๐
SHA-1 is still widely used for Delegation Signer (DS) records ๐ฐ๏ธ so validators MUST implement validation, but it MUST NOT be used to generate new DS and CDS records. (See "Operational Considerations" for caveats when upgrading from the SHA-1 to SHA-256 DS algorithm.)
SHA-256 is widely used and considered strong ๐
GOST R 34.11-94 has been superseded by GOST R 34.11-2012 in [RFC6986] ๐ซ GOST R 34.11-2012 has not been standardized for use in DNSSEC.
SHA-384 has the same properties as SHA-256 but offers a modest security advantage, 384 bits of strength versus 256 bits โจ For most applications of DNSSEC, SHA-256 should be satisfactory and robust for the foreseeable future, so it is therefore recommended for DS and CDS records. It's unlikely a DNSSEC use case will need 384-bit security strength, but SHA-384 is provided for those applications, and it MAY be used for generating DS and CDS records in these cases.
3.4. DS and CDS Algorithm Recommendation ๐
An operational recommendation for new and existing deployments: SHA-256 is the RECOMMENDED DS and CDS algorithm. Main character energy ๐
4. Security Considerations ๐
The security of cryptographic systems depends on both the strength of the algorithms you pick and the strength of the keys you use with them ๐ It also depends on the engineering of the protocol, which has to make sure there are no non-cryptographic ways to get around the security of the whole system. Don't skip this part, bestie ๐ญ
This document is about picking cryptographic algorithms for DNSSEC, specifically the "mandatory-to-implement" ones. The algorithms marked here as MUST or RECOMMENDED to implement are not known to be broken (in the cryptographic sense) right now, and cryptographic research so far suggests they're likely to stay secure for the foreseeable future. But that isn't forever ๐ฅบ so new revisions of this document will be issued from time to time to reflect current best practices.
Retiring an algorithm too soon would downgrade a zone signed with that retired algorithm to the equivalent of an unsigned zone ๐ So algorithm deprecation must be done very slowly, and only after careful consideration and measurement of its use. Slow and steady ๐ข
5. Operational Considerations ๐ ๏ธ
DNSKEY algorithm rollover in a live zone is a complex process ๐ตโ๐ซ See [RFC6781] and [RFC7583] for guidelines on how to do algorithm rollovers.
DS algorithm rollover in a live zone is also complex ๐ฅด Upgrading an algorithm at the same time as rolling a new Key Signing Key (KSK) will cause DNSSEC validation failures. Administrators MUST complete the DS algorithm upgrade before starting a rollover process for a new KSK. Do not combine these, besties โ ๏ธ
Upgrading the DS algorithm and rolling a new KSK in the same window is a recipe for validation failures. Finish the DS upgrade first, then roll the KSK ๐ซถ
6. IANA Considerations ๐ญ
This document has no IANA actions โจ
7. References ๐
7.1. Normative References ๐
[RFC2119]Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI10.17487/RFC2119, March 1997,<https://www.rfc-editor.org/info/rfc2119>.[RFC4034]Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "Resource Records for the DNS Security Extensions", RFC 4034, DOI10.17487/RFC4034, March 2005,<https://www.rfc-editor.org/info/rfc4034>.[RFC5155]Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNS Security (DNSSEC) Hashed Authenticated Denial of Existence", RFC 5155, DOI10.17487/RFC5155, March 2008,<https://www.rfc-editor.org/info/rfc5155>.[RFC5702]Jansen, J., "Use of SHA-2 Algorithms with RSA in DNSKEY and RRSIG Resource Records for DNSSEC", RFC 5702, DOI10.17487/RFC5702, October 2009,<https://www.rfc-editor.org/info/rfc5702>.[RFC6605]Hoffman, P. and W. Wijngaards, "Elliptic Curve Digital Signature Algorithm (DSA) for DNSSEC", RFC 6605, DOI10.17487/RFC6605, April 2012,<https://www.rfc-editor.org/info/rfc6605>.[RFC6979]Pornin, T., "Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)", RFC 6979, DOI10.17487/RFC6979, August 2013,<https://www.rfc-editor.org/info/rfc6979>.[RFC6986]Dolmatov, V., Ed. and A. Degtyarev, "GOST R 34.11-2012: Hash Function", RFC 6986, DOI10.17487/RFC6986, August 2013,<https://www.rfc-editor.org/info/rfc6986>.[RFC7344]Kumari, W., Gudmundsson, O., and G. Barwood, "Automating DNSSEC Delegation Trust Maintenance", RFC 7344, DOI10.17487/RFC7344, September 2014,<https://www.rfc-editor.org/info/rfc7344>.[RFC8032]Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI10.17487/RFC8032, January 2017,<https://www.rfc-editor.org/info/rfc8032>.[RFC8078]Gudmundsson, O. and P. Wouters, "Managing DS Records from the Parent via CDS/CDNSKEY", RFC 8078, DOI10.17487/RFC8078, March 2017,<https://www.rfc-editor.org/info/rfc8078>.[RFC8080]Sury, O. and R. Edmonds, "Edwards-Curve Digital Security Algorithm (EdDSA) for DNSSEC", RFC 8080, DOI10.17487/RFC8080, February 2017,<https://www.rfc-editor.org/info/rfc8080>.[RFC8174]Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI10.17487/RFC8174, May 2017,<https://www.rfc-editor.org/info/rfc8174>.
7.2. Informative References
Okay, bestie, now we're in the "further reading" zone ๐โจ These are the references the spec points to for background, not the stuff you must follow.
[RFC5933]Dolmatov, V., Ed., Chuprina, A., and I. Ustinov, "Use of GOST Signature Algorithms in DNSKEY and RRSIG Resource Records for DNSSEC", RFC 5933, DOI 10.17487/RFC5933, July 2010,<https://www.rfc-editor.org/info/rfc5933>. ๐ท๐บ๐[RFC6781]Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC Operational Practices, Version 2", RFC 6781, DOI 10.17487/RFC6781, December 2012,<https://www.rfc-editor.org/info/rfc6781>. ๐ ๏ธ[RFC6944]Rose, S., "Applicability Statement: DNS Security (DNSSEC) DNSKEY Algorithm Implementation Status", RFC 6944, DOI 10.17487/RFC6944, April 2013,<https://www.rfc-editor.org/info/rfc6944>. ๐[RFC7091]Dolmatov, V., Ed. and A. Degtyarev, "GOST R 34.10-2012: Digital Signature Algorithm", RFC 7091, DOI 10.17487/RFC7091, December 2013,<https://www.rfc-editor.org/info/rfc7091>. โ๏ธ[RFC7583]Morris, S., Ihren, J., Dickinson, J., and W. Mekking, "DNSSEC Key Rollover Timing Considerations", RFC 7583, DOI 10.17487/RFC7583, October 2015,<https://www.rfc-editor.org/info/rfc7583>. โฐ๐[DNSKEY-IANA]IANA, "Domain Name System Security (DNSSEC) Algorithm Numbers",<http://www.iana.org/assignments/dns-sec-alg-numbers>. ๐๏ธ[DS-IANA]IANA, "Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms",<http://www.iana.org/assignments/ds-rr-types>. ๐๏ธ
Acknowledgements โจ๐ซถ
Okay, the credit list is giving "we stand on the shoulders of giants" ๐ This document borrows text from RFC 4307 by Jeffrey I. Schiller of the Massachusetts Institute of Technology (MIT) and from RFC 8247 by Yoav Nir, Tero Kivinen, Paul Wouters, and Daniel Migault. Honestly, a lot of the original text was copied verbatim, and that's totally fine because it's already perfect ๐
We also want to thank Michael Sinatra, Roland van Rijswijk-Deij, Olafur Gudmundsson, Paul Hoffman, Evan Hunt, and Peter Yee for their feedback. You all are iconic ๐
And a huge kudos to Roy Arends for bringing the DS rollover issue to light. Main character energy ๐๐ฅ
Authors' Addresses ๐ฆ
Paul Wouters Red Hat Canada
Email: pwouters@redhat.com
Ondrej Sury Internet Systems Consortium Czech Republic
Email: ondrej@isc.org
๐ฆ where this page comes from
- ietf: rfc8624 2019-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms