1 Internet Engineering Task Force (IETF)                    O. Gudmundsson   
    2 Request for Comments: 8078                                    CloudFlare   
    3 Updates: 7344                                                 P. Wouters   
    4 Category: Standards Track                                        Red Hat   
    5 ISSN: 2070-1721                                               March 2017   
    6                                                                            
    7                                                                            
    8           Managing DS Records from the Parent via CDS/CDNSKEY              
    9                                                                            
   10 Abstract                                                                   
   11                                                                            
   12    RFC 7344 specifies how DNS trust can be maintained across key           
   13    rollovers in-band between parent and child.  This document elevates     
   14    RFC 7344 from Informational to Standards Track.  It also adds a         
   15    method for initial trust setup and removal of a secure entry point.     
   16                                                                            
   17    Changing a domain's DNSSEC status can be a complicated matter           
   18    involving multiple unrelated parties.  Some of these parties, such as   
   19    the DNS operator, might not even be known by all the organizations      
   20    involved.  The inability to disable DNSSEC via in-band signaling is     
   21    seen as a problem or liability that prevents some DNSSEC adoption at    
   22    a large scale.  This document adds a method for in-band signaling of    
   23    these DNSSEC status changes.                                            
   24                                                                            
   25    This document describes reasonable policies to ease deployment of the   
   26    initial acceptance of new secure entry points (DS records).             
   27                                                                            
   28    It is preferable that operators collaborate on the transfer or move     
   29    of a domain.  The best method is to perform a Key Signing Key (KSK)     
   30    plus Zone Signing Key (ZSK) rollover.  If that is not possible, the     
   31    method using an unsigned intermediate state described in this           
   32    document can be used to move the domain between two parties.  This      
   33    leaves the domain temporarily unsigned and vulnerable to DNS            
   34    spoofing, but that is preferred over the alternative of validation      
   35    failures due to a mismatched DS and DNSKEY record.                      
   36                                                                            
   37                                                                            
   38                                                                            
   39                                                                            
   40                                                                            
   41                                                                            
   42                                                                            
   43                                                                            
   44                                                                            
   45                                                                            
   46                                                                            
   47                                                                            
   48                                                                            
   49                                                                            
   50                                                                            
   51                                                                            
   52 Gudmundsson & Wouters        Standards Track                    [Page 1]   

   53 RFC 8078                   Managing DS Records                March 2017   
   54                                                                            
   55                                                                            
   56 Status of This Memo                                                        
   57                                                                            
   58    This is an Internet Standards Track document.                           
   59                                                                            
   60    This document is a product of the Internet Engineering Task Force       
   61    (IETF).  It represents the consensus of the IETF community.  It has     
   62    received public review and has been approved for publication by the     
   63    Internet Engineering Steering Group (IESG).  Further information on     
   64    Internet Standards is available in Section 2 of RFC 7841.               
   65                                                                            
   66    Information about the current status of this document, any errata,      
   67    and how to provide feedback on it may be obtained at                    
   68    http://www.rfc-editor.org/info/rfc8078.                                 
   69                                                                            
   70 Copyright Notice                                                           
   71                                                                            
   72    Copyright (c) 2017 IETF Trust and the persons identified as the         
   73    document authors.  All rights reserved.                                 
   74                                                                            
   75    This document is subject to BCP 78 and the IETF Trust's Legal           
   76    Provisions Relating to IETF Documents                                   
   77    (http://trustee.ietf.org/license-info) in effect on the date of         
   78    publication of this document.  Please review these documents            
   79    carefully, as they describe your rights and restrictions with respect   
   80    to this document.  Code Components extracted from this document must    
   81    include Simplified BSD License text as described in Section 4.e of      
   82    the Trust Legal Provisions and are provided without warranty as         
   83    described in the Simplified BSD License.                                
   84                                                                            
   85                                                                            
   86                                                                            
   87                                                                            
   88                                                                            
   89                                                                            
   90                                                                            
   91                                                                            
   92                                                                            
   93                                                                            
   94                                                                            
   95                                                                            
   96                                                                            
   97                                                                            
   98                                                                            
   99                                                                            
  100                                                                            
  101                                                                            
  102                                                                            
  103                                                                            
  104                                                                            
  105                                                                            
  106                                                                            
  107 Gudmundsson & Wouters        Standards Track                    [Page 2]   

  108 RFC 8078                   Managing DS Records                March 2017   
  109                                                                            
  110                                                                            
  111 Table of Contents                                                          
  112                                                                            
  113    1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3   
  114      1.1.  Introducing a DS Record . . . . . . . . . . . . . . . . .   3   
  115      1.2.  Removing a DS Record  . . . . . . . . . . . . . . . . . .   4   
  116      1.3.  Notation  . . . . . . . . . . . . . . . . . . . . . . . .   4   
  117      1.4.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   5   
  118    2.  The Three Uses of CDS . . . . . . . . . . . . . . . . . . . .   5   
  119      2.1.  The Meaning of the CDS RRset  . . . . . . . . . . . . . .   5   
  120    3.  Enabling DNSSEC via CDS/CDNSKEY . . . . . . . . . . . . . . .   6   
  121      3.1.  Accept Policy via Authenticated Channel . . . . . . . . .   6   
  122      3.2.  Accept with Extra Checks  . . . . . . . . . . . . . . . .   6   
  123      3.3.  Accept after Delay  . . . . . . . . . . . . . . . . . . .   7   
  124      3.4.  Accept with Challenge . . . . . . . . . . . . . . . . . .   7   
  125      3.5.  Accept from Inception . . . . . . . . . . . . . . . . . .   7   
  126    4.  DNSSEC Delete Algorithm . . . . . . . . . . . . . . . . . . .   7   
  127    5.  Security Considerations . . . . . . . . . . . . . . . . . . .   8   
  128    6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9   
  129      6.1.  Promoting RFC 7344 to Standards Track . . . . . . . . . .   9   
  130    7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9   
  131      7.1.  Normative References  . . . . . . . . . . . . . . . . . .   9   
  132      7.2.  Informative References  . . . . . . . . . . . . . . . . .  10   
  133    Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  10   
  134    Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10   
  135                                                                            
  136 1.  Introduction                                                           
  137                                                                            
  138    CDS (Child DS) and CDNSKEY (Child DNSKEY) [RFC7344] records are used    
  139    to signal changes in secure entry points.  This is one method to        
  140    maintain delegations that can be used when the DNS operator has no      
  141    other way to inform the parent that changes are needed.  This           
  142    document elevates [RFC7344] from Informational to Standards Track.      
  143                                                                            
  144    In addition, [RFC7344] lacks two different options for full automated   
  145    operation to be possible.  It does not define a method for the          
  146    initial trust establishment, leaving it open to each parent to come     
  147    up with an acceptance policy.  Additionally, [RFC7344] does not         
  148    provide a "delete" signal for the child to inform the parent that the   
  149    DNSSEC security for its domain must be removed.                         
  150                                                                            
  151 1.1.  Introducing a DS Record                                              
  152                                                                            
  153    Automated insertion of DS records has been limited for many zones by    
  154    the requirement that all changes pass through a "Registry" of the       
  155    child zone's parent.  This has significantly hindered deployment of     
  156    DNSSEC at a large scale for DNS hosters, as the child zone owner is     
  157    often not aware or able to update DNS records such as the DS record.    
  158                                                                            
  159                                                                            
  160                                                                            
  161                                                                            
  162 Gudmundsson & Wouters        Standards Track                    [Page 3]   

  163 RFC 8078                   Managing DS Records                March 2017   
  164                                                                            
  165                                                                            
  166    This document describes a few possible methods for the parent to        
  167    accept a request by the child to add a DS record to its zone.  These    
  168    methods have different security properties that address different       
  169    deployment scenarios, all resulting in an automated method of trust     
  170    introduction.                                                           
  171                                                                            
  172 1.2.  Removing a DS Record                                                 
  173                                                                            
  174    This document introduces the delete option for both CDS and CDNSKEY,    
  175    allowing a child to signal to the parent to turn off DNSSEC.  When a    
  176    domain is moved from one DNS operator to another, sometimes it is       
  177    necessary to turn off DNSSEC to facilitate the change of DNS            
  178    operator.  Common scenarios include:                                    
  179                                                                            
  180    1.  Alternative to doing a proper DNSSEC algorithm rollover due to      
  181        operational limitations such as software limitations.               
  182                                                                            
  183    2.  Moving from a DNSSEC operator to a non-DNSSEC-capable operator.     
  184                                                                            
  185    3.  Moving to an operator that cannot or does not want to do a proper   
  186        DNSSEC rollover.                                                    
  187                                                                            
  188    4.  When moving between two DNS operators that use disjoint sets of     
  189        algorithms to sign the zone, an algorithm rollover cannot be        
  190        performed.                                                          
  191                                                                            
  192    5.  The domain holder no longer wants DNSSEC enabled.                   
  193                                                                            
  194    The lack of a "remove my DNSSEC" option is cited as a reason why some   
  195    operators cannot deploy DNSSEC, as this is seen as an operational       
  196    risk.                                                                   
  197                                                                            
  198    Turning off DNSSEC reduces the security of the domain and thus should   
  199    only be done carefully, and that decision should be fully under the     
  200    child domain's control.                                                 
  201                                                                            
  202 1.3.  Notation                                                             
  203                                                                            
  204    Signaling can happen via CDS or CDNSKEY records.  The only              
  205    differences between the two records are how information is              
  206    represented and who calculates the DS digest.  For clarity, this        
  207    document uses the term "CDS" to mean "either CDS or CDNSKEY".           
  208                                                                            
  209    When this document uses the word "parent", it implies an entity that    
  210    is authorized to insert DS records into the parent zone on behalf of    
  211    the child domain.  Which entity this exactly is does not matter.  It    
  212                                                                            
  213                                                                            
  214                                                                            
  215                                                                            
  216                                                                            
  217 Gudmundsson & Wouters        Standards Track                    [Page 4]   

  218 RFC 8078                   Managing DS Records                March 2017   
  219                                                                            
  220                                                                            
  221    could be the Registrar or Reseller that the child domain was            
  222    purchased from.  It could be the Registry that the domain is            
  223    registered in when allowed.  Or it could be some other entity.          
  224                                                                            
  225 1.4.  Terminology                                                          
  226                                                                            
  227    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",     
  228    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this    
  229    document are to be interpreted as described in [RFC2119].               
  230                                                                            
  231 2.  The Three Uses of CDS                                                  
  232                                                                            
  233    In general, there are three operations that a domain wants to           
  234    instruct its parent to perform:                                         
  235                                                                            
  236    1.  Enable DNSSEC validation, i.e., place an initial DS Resource        
  237        Record Set (RRset) in the parent.                                   
  238                                                                            
  239    2.  Roll over the KSK.  This means updating the DS records in the       
  240        parent to reflect the new set of KSKs at the child.  This could     
  241        be an ADD operation, a DELETE operation on one or more records      
  242        while keeping at least one DS RR, or a full REPLACE operation.      
  243                                                                            
  244    3.  Turn off DNSSEC validation, i.e., delete all the DS records.        
  245                                                                            
  246    KSK rollover is covered in [RFC7344].  It is considered the safest      
  247    use case of a CDS/CDNSKEY record as it makes no change to the trust     
  248    relationship between parent and child.  Introduction and removal of     
  249    DS records are defined in this document.  As these CDS/CDNSKEY use      
  250    cases create or end the trust relationship between the parent and       
  251    child, these use cases should be carefully implemented and monitored.   
  252                                                                            
  253 2.1.  The Meaning of the CDS RRset                                         
  254                                                                            
  255    The semantic meaning of publishing a CDS RRset is interpreted to        
  256    mean:                                                                   
  257                                                                            
  258       Publishing a CDS or CDNSKEY record signals to the parent that the    
  259       child desires that the corresponding DS records be synchronized.     
  260       Every parent or parental agent should have an acceptance policy of   
  261       these records for the three different use cases involved: Initial    
  262       DS publication, Key rollover, and Returning to Insecure.             
  263                                                                            
  264    In short, the CDS RRset is an instruction to the parent to modify the   
  265    DS RRset if the CDS and DS Resets differ.                               
  266                                                                            
  267                                                                            
  268                                                                            
  269                                                                            
  270                                                                            
  271                                                                            
  272 Gudmundsson & Wouters        Standards Track                    [Page 5]   

  273 RFC 8078                   Managing DS Records                March 2017   
  274                                                                            
  275                                                                            
  276    The acceptance policy for CDS in the rollover case is "seeing"          
  277    according to [RFC7344].  The acceptance policy in the Delete case is    
  278    seeing a (validly signed) CDS RRset with the delete operation           
  279    specified in this document.                                             
  280                                                                            
  281 3.  Enabling DNSSEC via CDS/CDNSKEY                                        
  282                                                                            
  283    There are number of different models for managing initial trust, but    
  284    in the general case, the child wants to enable global validation.  As   
  285    long as the child is insecure, DNS answers can be forged.  The goal     
  286    is to promote the child from insecure to secure as soon as reasonably   
  287    possible by the parent.  This means that the period from the child's    
  288    publication of CDS/CDNSKEY RRset to the parent publishing the           
  289    synchronized DS RRset should be as short as possible.                   
  290                                                                            
  291    One important use case is how a third-party DNS operator can upload     
  292    its DNSSEC information to the parent, so the parent can publish a DS    
  293    record for the child.  In this case, there is a possibility of          
  294    setting up some kind of authentication mechanism and submission         
  295    mechanism that is outside the scope of this document.                   
  296                                                                            
  297    Below are some policies that parents can use.  These policies assume    
  298    that the notifications can be verified or authenticated.                
  299                                                                            
  300 3.1.  Accept Policy via Authenticated Channel                              
  301                                                                            
  302    In this case, the parent is notified via authenticated channel UI/API   
  303    that a CDS/CDNSKEY RRset exists.  In the case of a CDS RRset, the       
  304    parent retrieves the CDS RRset and inserts the corresponding DS RRset   
  305    as requested.  In the case of CDNSKEY, the parent retrieves the         
  306    CDNSKEY RRset and calculates the DS record(s).  Parents may limit the   
  307    DS record type based on local policy.  Parents SHOULD NOT refuse CDS/   
  308    CDNSKEY updates that do not (yet) have a matching DNSKEY in the child   
  309    zone.  This will allow the child to pre-publish a spare (and            
  310    potentially offline) DNSKEY.                                            
  311                                                                            
  312 3.2.  Accept with Extra Checks                                             
  313                                                                            
  314    In this case, the parent checks that the source of the notification     
  315    is allowed to request the DS insertion.  The checks could include       
  316    whether this is a trusted entity, whether the nameservers correspond    
  317    to the requester, whether there have been any changes in registration   
  318    in the last few days, etc.  The parent can also send a notification     
  319    requesting a confirmation, for example, by sending email to the         
  320    registrant requesting a confirmation.  The end result is that the CDS   
  321    RRset is accepted at the end of the checks or when the out-of-band      
  322    confirmation is received.  Any extra checks should have proper rate     
  323    limiting in place to prevent abuse.                                     
  324                                                                            
  325                                                                            
  326                                                                            
  327 Gudmundsson & Wouters        Standards Track                    [Page 6]   

  328 RFC 8078                   Managing DS Records                March 2017   
  329                                                                            
  330                                                                            
  331 3.3.  Accept after Delay                                                   
  332                                                                            
  333    In this case, if the parent deems the request valid, it starts          
  334    monitoring the CDS RRset at the child nameservers over a period of      
  335    time to make sure nothing changes.  After some time or after a number   
  336    of checks, preferably from different vantage points in the network,     
  337    the parent accepts the CDS RRset as a valid signal to update its DS     
  338    RRset for this child.                                                   
  339                                                                            
  340 3.4.  Accept with Challenge                                                
  341                                                                            
  342    In this case, the parent instructs the requester to insert some         
  343    record into the child domain to prove it has the ability to do so       
  344    (i.e., it is the operator of the zone).  This method imposes a new      
  345    task on the parent to monitor the child zone to see if the challenge    
  346    has been added to the zone.  The parent should verify that the          
  347    challenge is published by all the child's nameservers and should test   
  348    for this challenge from various diverse network locations to increase   
  349    the security of this method as much as possible.                        
  350                                                                            
  351 3.5.  Accept from Inception                                                
  352                                                                            
  353    If a parent is adding a new child domain that is not currently          
  354    delegated at all, it could use the child CDS/CDNSKEY RRset to           
  355    immediately publish a DS RRset along with the new NS RRset.  This       
  356    would ensure that the new child domain is never active in an insecure   
  357    state.                                                                  
  358                                                                            
  359 4.  DNSSEC Delete Algorithm                                                
  360                                                                            
  361    This document defines the previously reserved DNS Security Algorithm    
  362    Number of value 0 in the context of CDS and CDNSKEY records to mean     
  363    that the entire DS RRset at the parent must be removed.  The value 0    
  364    remains reserved for the DS and DNSKEY records.                         
  365                                                                            
  366    No DNSSEC validator can treat algorithm 0 as a valid signature          
  367    algorithm.  If a validator sees a DNSKEY or DS record with this         
  368    algorithm value, it must treat it as unknown.  Accordingly, the zone    
  369    is treated as unsigned unless there are other algorithms present.  In   
  370    general, the value 0 should never be used in the context of DNSKEY      
  371    and DS records.                                                         
  372                                                                            
  373    The CERT record [RFC4398] defines the value 0 similarly to mean the     
  374    algorithm in the CERT record is not defined in DNSSEC.                  
  375                                                                            
  376                                                                            
  377                                                                            
  378                                                                            
  379                                                                            
  380                                                                            
  381                                                                            
  382 Gudmundsson & Wouters        Standards Track                    [Page 7]   

  383 RFC 8078                   Managing DS Records                March 2017   
  384                                                                            
  385                                                                            

The IETF is responsible for the creation and maintenance of the DNS RFCs. The ICANN DNS RFC annotation project provides a forum for collecting community annotations on these RFCs as an aid to understanding for implementers and any interested parties. The annotations displayed here are not the result of the IETF consensus process.

This RFC is included in the DNS RFCs annotation project whose home page is here.

GLOBAL V. Risk, ISC.orgBIND 9 implementation note2022-08-15

This RFC is implemented in BIND 9.18 (all versions). Updating of parent zones is not yet implemented.

  386    The contents of the CDS or CDNSKEY RRset MUST contain one RR and only   
  387    contain the exact fields as shown below.                                
  388                                                                            
  389       CDS 0 0 0 0                                                          
  390                                                                            
  391       CDNSKEY 0 3 0 0                                                      
  392                                                                            
  393    The keying material payload is represented by a single 0.  This         
  394    record is signed in the same way as regular CDS/CDNSKEY RRsets are      
  395    signed.                                                                 
  396                                                                            
  397    Strictly speaking, the CDS record could be "CDS X 0 X 0" as only the    
  398    DNSKEY algorithm is what signals the DELETE operation, but for          
  399    clarity, the "0 0 0 0" notation is mandated -- this is not a            
  400    definition of DS digest algorithm 0.  The same argument applies to      
  401    "CDNSKEY 0 3 0 0"; the value 3 in the second field is mandated by       
  402    [RFC4034], Section 2.1.2.                                               
  403                                                                            
  404    Once the parent has verified the CDS/CDNSKEY RRset and it has passed    
  405    other acceptance tests, the parent MUST remove the DS RRset.  After     
  406    waiting a sufficient amount of time -- depending on the parental TTLs   
  407    -- the child can start the process of turning off DNSSEC.               
  408                                                                            
  409 5.  Security Considerations                                                
  410                                                                            
  411    Turning off DNSSEC reduces the security of the domain and thus should   
  412    only be done as a last resort in preventing DNSSEC validation errors    
  413    due to mismatched DS and DNSKEY records.                                
  414                                                                            
  415    Users should keep in mind that re-establishing trust in delegation      
  416    can be hard and takes time.  Before deciding to complete the rollover   
  417    via an unsigned state, all other options should be considered first.    
  418                                                                            
  419    A parent SHOULD ensure that when it is allowing a child to become       
  420    securely delegated, it has a reasonable assurance that the CDS/         
  421    CDNSKEY RRset used to bootstrap the security is visible from a          
  422    geographically and topologically diverse view.  It SHOULD also ensure   
  423    that the zone validates correctly if the parent publishes the DS        
  424    record.  A parent zone might also consider sending an email to its      
  425    contact addresses to give the child zone a warning that security will   
  426    be enabled after a certain amount of wait time -- thus allowing a       
  427    child administrator to cancel the request.                              
  428                                                                            
  429    This document describes a few possible acceptance criteria for the      
  430    initial trust establishment.  Due to a large variety of legal           
  431    frameworks surrounding parent domains (Top-Level Domain (TLDs) in       
  432    particular), this document cannot give a definitive list of valid       
  433    acceptance criteria.  Parental zones should look at the listed          
  434                                                                            
  435                                                                            
  436                                                                            
  437 Gudmundsson & Wouters        Standards Track                    [Page 8]   

  438 RFC 8078                   Managing DS Records                March 2017   
  439                                                                            
  440                                                                            
  441    methods and pick the most secure method possible within their legal     
  442    and technical scenario, possibly further securing the acceptance        
  443    criteria, as long as the deployed method still enables a fully          
  444    automated method for non-direct parties such as third-party DNS         
  445    hosters.                                                                
  446                                                                            
  447 6.  IANA Considerations                                                    
  448                                                                            
  449    IANA has assigned entry number 0 in the "DNS Security Algorithm         
  450    Numbers" registry as follows:                                           
  451                                                                            
  452    +--------+--------------+----------+----------+---------+-----------+   
  453    | Number | Description  | Mnemonic | Zone     | Trans.  | Reference |   
  454    |        |              |          | Signing  | Sec.    |           |   
  455    +--------+--------------+----------+----------+---------+-----------+   
  456    | 0      | Delete DS    | DELETE   | N        | N       | [RFC4034] |   
  457    |        |              |          |          |         | [RFC4398] |   
  458    |        |              |          |          |         | [RFC8078] |   
  459    +--------+--------------+----------+----------+---------+-----------+   
  460                                                                            
  461 6.1.  Promoting RFC 7344 to Standards Track                                
  462                                                                            
  463    Experience has shown that CDS and CDNSKEY are useful in the             
  464    deployment of DNSSEC.  [RFC7344] was published as Informational; this   
  465    document elevates RFC 7344 to Standards Track.                          
  466                                                                            
  467 7.  References                                                             
  468                                                                            
  469 7.1.  Normative References                                                 
  470                                                                            
  471    [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate          
  472               Requirement Levels", BCP 14, RFC 2119,                       
  473               DOI 10.17487/RFC2119, March 1997,                            
  474               <http://www.rfc-editor.org/info/rfc2119>.                    
  475                                                                            
  476    [RFC4034]  Arends, R., Austein, R., Larson, M., Massey, D., and S.      
  477               Rose, "Resource Records for the DNS Security Extensions",    
  478               RFC 4034, DOI 10.17487/RFC4034, March 2005,                  
  479               <http://www.rfc-editor.org/info/rfc4034>.                    
  480                                                                            
  481    [RFC7344]  Kumari, W., Gudmundsson, O., and G. Barwood, "Automating     
  482               DNSSEC Delegation Trust Maintenance", RFC 7344,              
  483               DOI 10.17487/RFC7344, September 2014,                        
  484               <http://www.rfc-editor.org/info/rfc7344>.                    
  485                                                                            
  486                                                                            
  487                                                                            
  488                                                                            
  489                                                                            
  490                                                                            
  491                                                                            
  492 Gudmundsson & Wouters        Standards Track                    [Page 9]   

  493 RFC 8078                   Managing DS Records                March 2017   
  494                                                                            
  495                                                                            
  496 7.2.  Informative References                                               
  497                                                                            
  498    [RFC4398]  Josefsson, S., "Storing Certificates in the Domain Name      
  499               System (DNS)", RFC 4398, DOI 10.17487/RFC4398, March 2006,   
  500               <http://www.rfc-editor.org/info/rfc4398>.                    
  501                                                                            
  502 Acknowledgments                                                            
  503                                                                            
  504    We thank a number of people that have provided feedback and useful      
  505    comments including Bob Harold, John Levine, Dan York, Shane Kerr,       
  506    Jacques Latour, and especially Matthijs Mekking.                        
  507                                                                            
  508 Authors' Addresses                                                         
  509                                                                            
  510    Olafur Gudmundsson                                                      
  511    CloudFlare                                                              
  512                                                                            
  513    Email: olafur+ietf@cloudflare.com                                       
  514                                                                            
  515                                                                            
  516    Paul Wouters                                                            
  517    Red Hat                                                                 
  518                                                                            
  519    Email: pwouters@redhat.com                                              
  520                                                                            
  521                                                                            
  522                                                                            
  523                                                                            
  524                                                                            
  525                                                                            
  526                                                                            
  527                                                                            
  528                                                                            
  529                                                                            
  530                                                                            
  531                                                                            
  532                                                                            
  533                                                                            
  534                                                                            
  535                                                                            
  536                                                                            
  537                                                                            
  538                                                                            
  539                                                                            
  540                                                                            
  541                                                                            
  542                                                                            
  543                                                                            
  544                                                                            
  545                                                                            
  546                                                                            
  547 Gudmundsson & Wouters        Standards Track                   [Page 10]   
  548                                                                            
line-386 Ondřej Caletka(Technical Erratum #5049) [Verified]
based on outdated version
   The contents of the CDS or CDNSKEY RRset MUST contain one RR and only
   contain the exact fields as shown below.

      CDS 0 0 0 0

      CDNSKEY 0 3 0 0

   The keying material payload is represented by a single 0.  This
   record is signed in the same way as regular CDS/CDNSKEY RRsets are
   signed.

   Strictly speaking, the CDS record could be "CDS X 0 X 0" as only the
   DNSKEY algorithm is what signals the DELETE operation, but for
   clarity, the "0 0 0 0" notation is mandated -- this is not a
   definition of DS digest algorithm 0.  The same argument applies to
   "CDNSKEY 0 3 0 0"; the value 3 in the second field is mandated by
   [RFC4034], Section 2.1.2.
It should say:
   The contents of the CDS or CDNSKEY RRset MUST contain one RR and only
   contain the exact fields as shown below.

      CDS 0 0 0 00

      CDNSKEY 0 3 0 0AA==

   The keying material payload is represented by a single octet with
   the value 00. This record is signed in the same way as regular
   CDS/CDNSKEY RRsets are signed.

   Strictly speaking, the CDS record could be "CDS X 0 X X" as only the
   DNSKEY algorithm is what signals the DELETE operation, but for
   clarity, the "0 0 0 00" notation is mandated -- this is not a
   definition of DS digest algorithm 0.  The same argument applies to
   "CDNSKEY 0 3 0 0AA=="; the value 3 in the second field is mandated by
   [RFC4034], Section 2.1.2.

RFC 7344 defines both CDS and CDNSKEY record wire and presentation format to be identical to DS and DNSKEY wire and presentation format defined in RFC 4034.

In case of CDNSKEY record, RFC 4034 section 2.2 requires that:
> The Public Key field MUST be represented as a Base64 encoding of the Public Key.

As Base64 encoding encodes 6 bits into one character, one character alone can never be a valid Base64 sequence. The proper encoding of one-byte long sequence with binary value of 00 is AA==.

In case of CDS record, RFC 4034 section 5.3 requires that: > The Digest MUST be represented as a sequence of case-insensitive hexadecimal digits

Although the value of a single 0 fulfils this requirement per se, it's not properly parsable by many implementations since it is expected to be even number of hex digits to align with octet boundaries in the wire format. So proper form of CDS record should contain two zeroes in place of the digest.

[ AD Note: Discussion on the DNSOP list: - https://www.ietf.org/mail-archive/web/dnsop/current/msg20267.html ]