RFC 4509

Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs)

πŸ“… published May 2006, from ietf

RFC 4509 at a Glance πŸ’–

Okay bestie, RFC 4509 is a DNSSEC glow-up πŸ¦‹ Wes Hardaker from Sparta wrote it. It's a Standards Track doc dated May 2006, and it's called Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs). The title block doesn't list anything it obsoletes or updates, so it stands on its own πŸ’…

Status of This Memo

This is an Internet standards track protocol doc for the Internet community, and it's asking for discussion and suggestions for improvements 🌸 For the standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ✨

Copyright (C) The Internet Society (2006) πŸŽ€

Abstract

This doc explains how to use the SHA-256 digest type in DNS Delegation Signer (DS) Resource Records (RRs) πŸ’œ DS records live in a parent zone and point to DNSKEYs in a child zone. So it's basically the parent-child handshake, but make it SHA-256 πŸ”₯

Table of Contents

1. Introduction ....................................................2
2. Implementing the SHA-256 Algorithm for DS Record Support ........2
   2.1. DS Record Field Values .....................................2
   2.2. DS Record with SHA-256 Wire Format .........................3
   2.3. Example DS Record Using SHA-256 ............................3
3. Implementation Requirements .....................................3
4. Deployment Considerations .......................................4
5. IANA Considerations .............................................4
6. Security Considerations .........................................4
   6.1. Potential Digest Type Downgrade Attacks ....................4
   6.2. SHA-1 vs SHA-256 Considerations for DS Records .............5
7. Acknowledgements ................................................5
8. References ......................................................6
   8.1. Normative References .......................................6
   8.2. Informative References .....................................6

1. Introduction ✨

Okay so the DNSSEC DS RR (see [RFC4033] [RFC4034] [RFC4035]) gets published in parent zones to hold a cryptographic digest of one key from a child's DNSKEY RRset 🧚 The DS RRset is signed by at least one of the parent zone's private zone data signing keys for each algorithm the parent uses. Each signature gets its own RRSIG resource record, owned by the same domain as the DS RRset, with a type covered of DS πŸ’–

Keyword alert 🚨 In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC2119] 🫢

2. Implementing the SHA-256 Algorithm for DS Record Support πŸ”₯

Here's the big one πŸ‘‘ Digest type code 2 has been assigned to SHA-256 [SHA256] [SHA256CODE] for use within DS records. The digest result MUST NOT be truncated. The entire 32 byte digest result is to be published in the DS record, no shortcuts πŸ’…

2.1. DS Record Field Values

When you use SHA-256 in a DS record, these are the DS-record fields you'll be working with:

  • Digest type: 2
  • Digest: a SHA-256 digest value calculated with the formula below ("|" means concatenation). The result is not truncated, and the entire 32 byte result gets used in the DS record and related calculations 🌈
digest = SHA_256(DNSKEY owner name | DNSKEY RDATA)

where DNSKEY RDATA is defined by [RFC4034] as:

DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key

The Key Tag and Algorithm fields stay exactly the same under this doc. They're specified in [RFC4034] ✨

2.2. DS Record with SHA-256 Wire Format

Here's how the DS record looks on the wire πŸ¦‹ Bestie, this diagram is everything:

                          1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Key Tag             |  Algorithm    | DigestType=2  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     /                                                               /
     /            Digest  (length for SHA-256 is 32 bytes)           /
     /                                                               /
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|

2.3. Example DS Record Using SHA-256

Let's look at a real example πŸ“ This DNSKEY comes from the example DNSKEY/DS records in section 5.4 of [RFC4034].

The DNSKEY record:

dskey.example.com. 86400 IN DNSKEY 256 3 5 ( AQOeiiR0GOMYkDshWoSKz9Xz
                                             fwJr1AYtsmx3TGkJaNXVbfi/
                                             2pHm822aJ5iI9BMzNXxeYCmZ
                                             DRD99WYwYqUSdjMmmAphXdvx
                                             egXd/M5+X7OrzKBaMbCVdFLU
                                             Uh6DhweJBjEVv5f2wwjM9Xzc
                                             nOf+EPbtG9DMBmADjFDc2w/r
                                             ljwvFw==
                                             ) ;  key id = 60485

And the resulting DS record covering that DNSKEY with a SHA-256 digest:

dskey.example.com. 86400 IN DS 60485 5 2   ( D4B7D520E7BB5F0F67674A0C
                                             CEB1E3E0614B93C4F9E99B83
                                             83F6A1E4469DA50A )

3. Implementation Requirements πŸ’œ

Implementations MUST support the use of the SHA-256 algorithm in DS RRs. Validator implementations SHOULD ignore DS RRs containing SHA-1 digests if DS RRs with SHA-256 digests are present in the DS RRset πŸ‘‘

4. Deployment Considerations 🌸

If a validator doesn't support the SHA-256 digest type, and there's no other DS RR in a zone's DS RRset with a supported digest type, then that validator has no supported authentication path leading from the parent to the child. In that case, the resolver should treat it the same way it would treat an authenticated NSEC RRset proving that no DS RRset exists, as described in [RFC4035], Section 5.2 πŸ™ˆ

Heads up: zone administrators can't control how fast validators adopt SHA-256, since validators might be referencing any of their zones. So zone operators should consider deploying both SHA-1 and SHA-256 based DS records. This should be done for every DNSKEY that DS records are being generated for. Whether to use both digest types, and for how long, is a policy decision that's beyond the scope of this document ✨

Part 2 picks up with Section 5 (IANA Considerations) πŸ¦‹ Keep scrolling, we're just getting to the good stuff πŸ’–

Intellectual Property πŸ’…

okay so the IETF is staying totally neutral here 🫢 It takes no position on whether any Intellectual Property Rights or other rights someone might claim over the technology in this document are valid, or how far they reach. It also doesn't say whether any license under those rights would or wouldn't be available, and it hasn't made any independent effort to find such rights, ngl. If you want the rules on rights in RFC documents, check out BCP 78 and BCP 79 πŸ“œ

Copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission for implementers or users to use those proprietary rights can all be found in the IETF's online IPR repository at http://www.ietf.org/ipr ✨

The IETF also invites any interested party to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info to ietf-ipr@ietf.org πŸ’Œ

Acknowledgement πŸŽ€

Funding for the RFC Editor function comes from the IETF Administrative Support Activity (IASA) 🌸

πŸ“¦ where this page comes from