home *** CD-ROM | disk | FTP | other *** search
/ Hackers Toolkit 2.0 / Hackers_Toolkit_v2.0.iso / HTML / archive / Texts / Rfc / RFC2065.TXT < prev    next >
Encoding:
Text File  |  1999-11-04  |  95.4 KB  |  2,338 lines

  1. Network Working Group                                   D. Eastlake, 3rd
  2. Request for Comments: 2065                                     CyberCash
  3. Updates: 1034, 1035                                           C. Kaufman
  4. Category: Standards Track                                           Iris
  5.                                                             January 1997
  6.  
  7.  
  8.                  Domain Name System Security Extensions
  9.  
  10. Status of this Memo
  11.  
  12.    This document specifies an Internet standards track protocol for the
  13.    Internet community, and requests discussion and suggestions for
  14.    improvements.  Please refer to the current edition of the "Internet
  15.    Official Protocol Standards" (STD 1) for the standardization state
  16.    and status of this protocol.  Distribution of this memo is unlimited.
  17.  
  18. Abstract
  19.  
  20.    The Domain Name System (DNS) has become a critical operational part
  21.    of the Internet infrastructure yet it has no strong security
  22.    mechanisms to assure data integrity or authentication.  Extensions to
  23.    the DNS are described that provide these services to security aware
  24.    resolvers or applications through the use of cryptographic digital
  25.    signatures.  These digital signatures are included in secured zones
  26.    as resource records.  Security can still be provided even through
  27.    non-security aware DNS servers in many cases.
  28.  
  29.    The extensions also provide for the storage of authenticated public
  30.    keys in the DNS.  This storage of keys can support general public key
  31.    distribution service as well as DNS security.  The stored keys enable
  32.    security aware resolvers to learn the authenticating key of zones in
  33.    addition to those for which they are initially configured.  Keys
  34.    associated with DNS names can be retrieved to support other
  35.    protocols.  Provision is made for a variety of key types and
  36.    algorithms.
  37.  
  38.    In addition, the security extensions provide for the optional
  39.    authentication of DNS protocol transactions.
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. Eastlake & Kaufman          Standards Track                     [Page 1]
  53.  
  54.  
  55. RFC 2065                DNS Security Extensions             January 1997
  56.  
  57.  
  58. Acknowledgments
  59.  
  60.    The significant contributions of the following persons (in alphabetic
  61.    order) to this document are gratefully acknowledged:
  62.  
  63.            Harald T. Alvestrand
  64.            Madelyn Badger
  65.            Scott Bradner
  66.            Matt Crawford
  67.            James M. Galvin
  68.            Olafur Gudmundsson
  69.            Edie Gunter
  70.            Sandy Murphy
  71.            Masataka Ohta
  72.            Michael A. Patton
  73.            Jeffrey I. Schiller
  74.  
  75. Table of Contents
  76.  
  77.    1. Overview of Contents....................................3
  78.    2.  Overview of the DNS Extensions.........................4
  79.    2.1 Services Not Provided..................................4
  80.    2.2 Key Distribution.......................................5
  81.    2.3 Data Origin Authentication and Integrity...............5
  82.    2.3.1 The SIG Resource Record..............................6
  83.    2.3.2 Authenticating Name and Type Non-existence...........7
  84.    2.3.3 Special Considerations With Time-to-Live.............7
  85.    2.3.4 Special Considerations at Delegation Points..........7
  86.    2.3.5 Special Considerations with CNAME RRs................8
  87.    2.3.6 Signers Other Than The Zone..........................8
  88.    2.4 DNS Transaction and Request Authentication.............8
  89.    3. The KEY Resource Record.................................9
  90.    3.1 KEY RDATA format......................................10
  91.    3.2 Object Types, DNS Names, and Keys.....................10
  92.    3.3 The KEY RR Flag Field.................................11
  93.    3.4 The Protocol Octet....................................13
  94.    3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....13
  95.    3.6 Interaction of Flags, Algorithm, and Protocol Bytes...14
  96.    3.7 KEY RRs in the Construction of Responses..............15
  97.    3.8 File Representation of KEY RRs........................16
  98.    4. The SIG Resource Record................................16
  99.    4.1 SIG RDATA Format......................................17
  100.    4.1.1 Signature Data......................................19
  101.    4.1.2 MD5/RSA Algorithm Signature Calculation.............20
  102.    4.1.3 Zone Transfer (AXFR) SIG............................21
  103.    4.1.4 Transaction and Request SIGs........................22
  104.    4.2 SIG RRs in the Construction of Responses..............23
  105.    4.3 Processing Responses and SIG RRs......................24
  106.  
  107.  
  108.  
  109. Eastlake & Kaufman          Standards Track                     [Page 2]
  110.  
  111.  
  112. RFC 2065                DNS Security Extensions             January 1997
  113.  
  114.  
  115.    4.4 Signature Expiration, TTLs, and Validity..............24
  116.    4.5 File Representation of SIG RRs........................25
  117.    5. Non-existent Names and Types...........................26
  118.    5.1 The NXT Resource Record...............................26
  119.    5.2 NXT RDATA Format......................................27
  120.    5.3 Example...............................................28
  121.    5.4 Interaction of NXT RRs and Wildcard RRs...............28
  122.    5.5 Blocking NXT Pseudo-Zone Transfers....................29
  123.    5.6 Special Considerations at Delegation Points...........29
  124.    6. The AD and CD Bits and How to Resolve Securely.........30
  125.    6.1 The AD and CD Header Bits.............................30
  126.    6.2 Boot File Format......................................32
  127.    6.3 Chaining Through Zones................................32
  128.    6.4 Secure Time...........................................33
  129.    7. Operational Considerations.............................33
  130.    7.1 Key Size Considerations...............................34
  131.    7.2 Key Storage...........................................34
  132.    7.3 Key Generation........................................35
  133.    7.4 Key Lifetimes.........................................35
  134.    7.5 Signature Lifetime....................................36
  135.    7.6 Root..................................................36
  136.    8. Conformance............................................36
  137.    8.1 Server Conformance....................................36
  138.    8.2 Resolver Conformance..................................37
  139.    9. Security Considerations................................37
  140.    References................................................38
  141.    Authors' Addresses........................................39
  142.    Appendix: Base 64 Encoding................................40
  143.  
  144. 1. Overview of Contents
  145.  
  146.    This document describes extensions of the Domain Name System (DNS)
  147.    protocol to support DNS security and public key distribution.  It
  148.    assumes that the reader is familiar with the Domain Name System,
  149.    particularly as described in RFCs 1033, 1034, and 1035.
  150.  
  151.    Section 2 provides an overview of the extensions and the key
  152.    distribution, data origin authentication, and transaction and request
  153.    security they provide.
  154.  
  155.    Section 3 discusses the KEY resource record, its structure, use in
  156.    DNS responses, and file representation.  These resource records
  157.    represent the public keys of entities named in the DNS and are used
  158.    for key distribution.
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. Eastlake & Kaufman          Standards Track                     [Page 3]
  167.  
  168.  
  169. RFC 2065                DNS Security Extensions             January 1997
  170.  
  171.  
  172.    Section 4 discusses the SIG digital signature resource record, its
  173.    structure, use in DNS responses, and file representation.  These
  174.    resource records are used to authenticate other resource records in
  175.    the DNS and optionally to authenticate DNS transactions and requests.
  176.  
  177.    Section 5 discusses the NXT resource record and its use in DNS
  178.    responses.  The NXT RR permits authenticated denial in the DNS of the
  179.    existence of a name or of a particular type for an existing name.
  180.  
  181.    Section 6 discusses how a resolver can be configured with a starting
  182.    key or keys and proceed to securely resolve DNS requests.
  183.    Interactions between resolvers and servers are discussed for all
  184.    combinations of security aware and security non-aware.  Two
  185.    additional query header bits are defined for signaling between
  186.    resolvers and servers.
  187.  
  188.    Section 7 reviews a variety of operational considerations including
  189.    key generation, lifetime, and storage.
  190.  
  191.    Section 8 defines levels of conformance for resolvers and servers.
  192.  
  193.    Section 9 provides a few paragraphs on overall security
  194.    considerations.
  195.  
  196.    An Appendix is provided that gives details of base 64 encoding which
  197.    is used in the file representation of some RR's defined in this
  198.    document.
  199.  
  200. 2.  Overview of the DNS Extensions
  201.  
  202.    The Domain Name System (DNS) protocol security extensions provide
  203.    three distinct services: key distribution as described in Section 2.2
  204.    below, data origin authentication as described in Section 2.3 below,
  205.    and transaction and request authentication, described in Section 2.4
  206.    below.
  207.  
  208.    Special considerations related to "time to live", CNAMEs, and
  209.    delegation points are also discussed in Section 2.3.
  210.  
  211. 2.1 Services Not Provided
  212.  
  213.    It is part of the design philosophy of the DNS that the data in it is
  214.    public and that the DNS gives the same answers to all inquirers.
  215.  
  216.    Following this philosophy, no attempt has been made to include any
  217.    sort of access control lists or other means to differentiate
  218.    inquirers.
  219.  
  220.  
  221.  
  222.  
  223. Eastlake & Kaufman          Standards Track                     [Page 4]
  224.  
  225.  
  226. RFC 2065                DNS Security Extensions             January 1997
  227.  
  228.  
  229.    In addition, no effort has been made to provide for any
  230.    confidentiality for queries or responses.  (This service may be
  231.    available via IPSEC [RFC 1825].)
  232.  
  233. 2.2 Key Distribution
  234.  
  235.    Resource records (RRs) are defined to associate keys with DNS names.
  236.    This permits the DNS to be used as a public key distribution
  237.    mechanism in support of the DNS data origin authentication and other
  238.    security services.
  239.  
  240.    The syntax of a KEY resource record (RR) is described in Section 3.
  241.    It includes an algorithm identifier, the actual public key
  242.    parameters, and a variety of flags including those indicating the
  243.    type of entity the key is associated with and/or asserting that there
  244.    is no key associated with that entity.
  245.  
  246.    Under conditions described in Section 3.7, security aware DNS servers
  247.    will automatically attempt to return KEY resources as additional
  248.    information, along with those resource records actually requested, to
  249.    minimize the number of queries needed.
  250.  
  251. 2.3 Data Origin Authentication and Integrity
  252.  
  253.    Authentication is provided by associating with resource records in
  254.    the DNS cryptographically generated digital signatures.  Commonly,
  255.    there will be a single private key that signs for an entire zone. If
  256.    a security aware resolver reliably learns the public key of the zone,
  257.    it can verify, for signed data read from that zone, that it was
  258.    properly authorized and is reasonably current.  The expected
  259.    implementation is for the zone private key to be kept off-line and
  260.    used to re-sign all of the records in the zone periodically.
  261.  
  262.    This data origin authentication key belongs to the zone and not to
  263.    the servers that store copies of the data.  That means compromise of
  264.    a server or even all servers for a zone will not necessarily affect
  265.    the degree of assurance that a resolver has that it can determine
  266.    whether data is genuine.
  267.  
  268.    A resolver can learn the public key of a zone either by reading it
  269.    from DNS or by having it staticly configured.  To reliably learn the
  270.    public key by reading it from DNS, the key itself must be signed.
  271.    Thus, to provide a reasonable degree of security, the resolver must
  272.    be configured with at least the public key of one zone that it can
  273.    use to authenticate signatures.  From there, it can securely read the
  274.    public keys of other zones, if the intervening zones in the DNS tree
  275.    are secure and their signed keys accessible.  (It is in principle
  276.    more secure to have the resolver manually configured with the public
  277.  
  278.  
  279.  
  280. Eastlake & Kaufman          Standards Track                     [Page 5]
  281.  
  282.  
  283. RFC 2065                DNS Security Extensions             January 1997
  284.  
  285.  
  286.    keys of multiple zones, since then the compromise of a single zone
  287.    would not permit the faking of information from other zones.  It is
  288.    also more administratively cumbersome, however, particularly when
  289.    public keys change.)
  290.  
  291.    Adding data origin authentication and integrity requires no change to
  292.    the "on-the-wire" DNS protocol beyond the addition of the signature
  293.    resource type and, as a practical matter, the key resource type
  294.    needed for key distribution. This service can be supported by
  295.    existing resolver and server implementations so long as they can
  296.    support the additional resource types (see Section 8). The one
  297.    exception is that CNAME referrals from a secure zone can not be
  298.    authenticated if they are from non-security aware servers (see
  299.    Section 2.3.5).
  300.  
  301.    If signatures are always separately retrieved and verified when
  302.    retrieving the information they authenticate, there will be more
  303.    trips to the server and performance will suffer.  To avoid this,
  304.    security aware servers mitigate that degradation by always attempting
  305.    to send the signature(s) needed.
  306.  
  307. 2.3.1 The SIG Resource Record
  308.  
  309.    The syntax of a SIG resource record (signature) is described in
  310.    Section 4.  It includes the type of the RR(s) being signed, the name
  311.    of the signer, the time at which the signature was created, the time
  312.    it expires (when it is no longer to be believed), its original time
  313.    to live (which may be longer than its current time to live but cannot
  314.    be shorter), the cryptographic algorithm in use, and the actual
  315.    signature.
  316.  
  317.    Every name in a secured zone will have associated with it at least
  318.    one SIG resource record for each resource type under that name except
  319.    for glue RRs and delgation point NS RRs.  A security aware server
  320.    supporting the performance enhanced version of the DNS protocol
  321.    security extensions will attempt to return, with RRs retrieved, the
  322.    corresponding SIGs.  If a server does not support the protocol, the
  323.    resolver must retrieve all the SIG records for a name and select the
  324.    one or ones that sign the resource record(s) that resolver is
  325.    interested in.
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. Eastlake & Kaufman          Standards Track                     [Page 6]
  338.  
  339.  
  340. RFC 2065                DNS Security Extensions             January 1997
  341.  
  342.  
  343. 2.3.2 Authenticating Name and Type Non-existence
  344.  
  345.    The above security mechanism provides only a way to sign existing RRs
  346.    in a zone.  "Data origin" authentication is not obviously provided
  347.    for the non-existence of a domain name in a zone or the non-existence
  348.    of a type for an existing name.  This gap is filled by the NXT RR
  349.    which authenticatably asserts a range of non-existent names in a zone
  350.    and the non-existence of types for the name just before that range.
  351.  
  352.    Section 5 below covers the NXT RR.
  353.  
  354. 2.3.3 Special Considerations With Time-to-Live
  355.  
  356.    A digital signature will fail to verify if any change has occurred to
  357.    the data between the time it was originally signed and the time the
  358.    signature is verified.  This conflicts with our desire to have the
  359.    time-to-live field tick down when resource records are cached.
  360.  
  361.    This could be avoided by leaving the time-to-live out of the digital
  362.    signature, but that would allow unscrupulous servers to set
  363.    arbitrarily long time to live values undetected.  Instead, we include
  364.    the "original" time-to-live in the signature and communicate that
  365.    data in addition to the current time-to-live. Unscrupulous servers
  366.    under this scheme can manipulate the time to live but a security
  367.    aware resolver will bound the TTL value it uses at the original
  368.    signed value.  Separately, signatures include a time signed and an
  369.    expiration time.  A resolver that knows the absolute time can
  370.    determine securely whether a signature has expired.  It is not
  371.    possible to rely solely on the signature expiration as a substitute
  372.    for the TTL, however, since the TTL is primarily a database
  373.    consistency mechanism and, in any case, non-security aware servers
  374.    that depend on TTL must still be supported.
  375.  
  376. 2.3.4 Special Considerations at Delegation Points
  377.  
  378.    DNS security would like to view each zone as a unit of data
  379.    completely under the control of the zone owner and signed by the
  380.    zone's key.  But the operational DNS views the leaf nodes in a zone,
  381.    which are also the apex nodes of a subzone (i.e., delegation points),
  382.    as "really" belonging to the subzone.  These nodes occur in two
  383.    master files and may have RRs signed by both the upper and lower
  384.    zone's keys.  A retrieval could get a mixture of these RRs and SIGs,
  385.    especially since one server could be serving both the zone above and
  386.    below a delegation point.
  387.  
  388.    In general, there must be a zone KEY RR for the subzone in the
  389.    superzone and the copy signed in the superzone is controlling.  For
  390.    all but one other RR type that should appearing in both the superzone
  391.  
  392.  
  393.  
  394. Eastlake & Kaufman          Standards Track                     [Page 7]
  395.  
  396.  
  397. RFC 2065                DNS Security Extensions             January 1997
  398.  
  399.  
  400.    and subzone, the data from the subzone is more authoritative.  To
  401.    avoid conflicts, only the KEY RR in the superzone should be signed
  402.    and the NS and any A (glue) RRs should only be signed in the subzone.
  403.    The SOA and any other RRs that have the zone name as owner should
  404.    appear only in the subzone and thus are signed there. The NXT RR type
  405.    is an exceptional case that will always appear differently and
  406.    authoritatively in both the superzone and subzone, if both are
  407.    secure, as described in Section 5.
  408.  
  409. 2.3.5 Special Considerations with CNAME RRs
  410.  
  411.    There is a significant problem when security related RRs with the
  412.    same owner name as a CNAME RR are retrieved from a non-security-aware
  413.    server.  In particular, an initial retrieval for the CNAME or any
  414.    other type will not retrieve any associated signature, key, or NXT
  415.    RR. For types other than CNAME, it will retrieve that type at the
  416.    target name of the CNAME (or chain of CNAMEs) and will return the
  417.    CNAME as additional information.  In particular, a specific retrieval
  418.    for type SIG will not get the SIG, if any, at the original CNAME
  419.    domain name but rather a SIG at the target name.
  420.  
  421.    In general, security aware servers MUST be used to securely CNAME in
  422.    DNS.  Security aware servers must (1) allow KEY, SIG, and NXT RRs
  423.    along with CNAME RRs, (2) suppress CNAME processing on retrieval of
  424.    these types as well as on retrieval of the type CNAME, and (3)
  425.    automatically return SIG RRs authenticating the CNAME or CNAMEs
  426.    encountered in resolving a query.  This is a change from the previous
  427.    DNS standard which prohibited any other RR type at a node where a
  428.    CNAME RR was present.
  429.  
  430. 2.3.6 Signers Other Than The Zone
  431.  
  432.    There are two cases where a SIG resource record is signed by other
  433.    than the zone private key.  One is for support of dynamic update
  434.    where an entity is permitted to authenticate/update its own records.
  435.    The public key of the entity must be present in the DNS and be
  436.    appropriately signed but the other RR(s) may be signed with the
  437.    entity's key.  The other is for support of transaction and request
  438.    authentication as described in Section 2.4 immediately below.
  439.  
  440. 2.4 DNS Transaction and Request Authentication
  441.  
  442.    The data origin authentication service described above protects
  443.    retrieved resource records but provides no protection for DNS
  444.    requests or for message headers.
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451. Eastlake & Kaufman          Standards Track                     [Page 8]
  452.  
  453.  
  454. RFC 2065                DNS Security Extensions             January 1997
  455.  
  456.  
  457.    If header bits are falsely set by a server, there is little that can
  458.    be done.  However, it is possible to add transaction authentication.
  459.    Such authentication means that a resolver can be sure it is at least
  460.    getting messages from the server it thinks it queried, that the
  461.    response is from the query it sent, and that these messages have not
  462.    been diddled in transit.  This is accomplished by optionally adding a
  463.    special SIG resource record at the end of the reply which digitally
  464.    signs the concatenation of the server's response and the resolver's
  465.    query.
  466.  
  467.    Requests can also be authenticated by including a special SIG RR at
  468.    the end of the request.  Authenticating requests serves no function
  469.    in the current DNS and requests with a non-empty additional
  470.    information section are ignored by almost all current DNS servers.
  471.    However, this syntax for signing requests is defined in connection
  472.    with authenticating future secure dynamic update requests or the
  473.    like.
  474.  
  475.    The private keys used in transaction and request security belongs to
  476.    the host composing the request or reply message, not to the zone
  477.    involved.  The corresponding public key is normally stored in and
  478.    retrieved from the DNS.
  479.  
  480.    Because requests and replies are highly variable, message
  481.    authentication SIGs can not be pre-calculated.  Thus it will be
  482.    necessary to keep the private key on-line, for example in software or
  483.    in a directly connected piece of hardware.
  484.  
  485. 3. The KEY Resource Record
  486.  
  487.    The KEY resource record (RR) is used to document a key that is
  488.    associated with a Domain Name System (DNS) name.  It will be a public
  489.    key as only public keys are stored in the DNS.  This can be the
  490.    public key of a zone, a host or other end entity, or a user.  A KEY
  491.    RR is, like any other RR, authenticated by a SIG RR. Security aware
  492.    DNS implementations MUST be designed to handle at least two
  493.    simultaneously valid keys of the same type associated with a name.
  494.  
  495.    The type number for the KEY RR is 25.
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508. Eastlake & Kaufman          Standards Track                     [Page 9]
  509.  
  510.  
  511. RFC 2065                DNS Security Extensions             January 1997
  512.  
  513.  
  514. 3.1 KEY RDATA format
  515.  
  516.    The RDATA for a KEY RR consists of flags, a protocol octet, the
  517.    algorithm number, and the public key itself.  The format is as
  518.    follows:
  519.  
  520.                         1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  521.     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
  522.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  523.    |             flags             |    protocol   |   algorithm   |
  524.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  525.    |                                                               /
  526.    /                          public key                           /
  527.    /                                                               /
  528.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
  529.  
  530.    The meaning of the KEY RR owner name, flags, and protocol octet are
  531.    described in Sections 3.2, 3.3 and 3.4 below respectively.  The flags
  532.    and algorithm must be examined before any data following the
  533.    algorithm octet as they control the format and even whether there is
  534.    any following data.  The algorithm and public key fields are
  535.    described in Section 3.5.  The format of the public key is algorithm
  536.    dependent.
  537.  
  538. 3.2 Object Types, DNS Names, and Keys
  539.  
  540.    The public key in a KEY RR belongs to the object named in the owner
  541.    name.
  542.  
  543.    This DNS name may refer to up to three different categories of
  544.    things.  For example, dee.cybercash.com could be (1) a zone, (2) a
  545.    host or other end entity , and (3) the mapping into a DNS name of the
  546.    user or account dee@cybercash.com.  Thus, there are flags, as
  547.    described below, in the KEY RR to indicate with which of these roles
  548.    the owner name and public key are associated.  Note that an
  549.    appropriate zone KEY RR MUST occur at the apex node of a secure zone
  550.    and at every leaf node which is a delegation point (and thus the same
  551.    owner name as the apex of a subzone) within a secure zone.
  552.  
  553.    Although the same name can be used for up to all three of these
  554.    categories, such overloading of a name is discouraged.  It is also
  555.    possible to use the same key for different things with the same name
  556.    or even different names, but this is strongly discouraged.  In
  557.    particular, the use of a zone key as a non-zone key will usually
  558.    require that the corresponding private key be kept on line and
  559.    thereby become more vulnerable.
  560.  
  561.  
  562.  
  563.  
  564.  
  565. Eastlake & Kaufman          Standards Track                    [Page 10]
  566.  
  567.  
  568. RFC 2065                DNS Security Extensions             January 1997
  569.  
  570.  
  571.    In addition to the name type bits, there are additional flag bits
  572.    including the "type" field, "experimental" bit, "signatory" field,
  573.    etc., as described below.
  574.  
  575. 3.3 The KEY RR Flag Field
  576.  
  577.    In the "flags" field:
  578.  
  579.         Bit 0 and 1 are the key "type" field.  Bit 0 a one indicates
  580.    that use of the key is prohibited for authentication.  Bit 1 a one
  581.    indicates that use of the key is prohibited for confidentiality. If
  582.    this field is zero, then use of the key for authentication and/or
  583.    confidentiality is permitted. Note that DNS security makes use of
  584.    keys for authentication only. Confidentiality use flagging is
  585.    provided for use of keys in other protocols.  Implementations not
  586.    intended to support key distribution for confidentiality MAY require
  587.    that the confidentiality use prohibited bit be on for keys they
  588.    serve.  If both bits of this field are one, the "no key" value, there
  589.    is no key information and the RR stops after the algorithm octet.  By
  590.    the use of this "no key" value, a signed KEY RR can authenticatably
  591.    assert that, for example, a zone is not secured.
  592.  
  593.         Bit 2 is the "experimental" bit.  It is ignored if the type
  594.    field indicates "no key" and the following description assumes that
  595.    type field to be non-zero.  Keys may be associated with zones,
  596.    entities, or users for experimental, trial, or optional use, in which
  597.    case this bit will be one.  If this bit is a zero, it means that the
  598.    use or availability of security based on the key is "mandatory".
  599.    Thus, if this bit is off for a zone key, the zone should be assumed
  600.    secured by SIG RRs and any responses indicating the zone is not
  601.    secured should be considered bogus.  If this bit is a one for a host
  602.    or end entity, it might sometimes operate in a secure mode and at
  603.    other times operate without security.  The experimental bit, like all
  604.    other aspects of the KEY RR, is only effective if the KEY RR is
  605.    appropriately signed by a SIG RR.  The experimental bit must be zero
  606.    for safe secure operation and should only be a one for a minimal
  607.    transition period.
  608.  
  609.         Bits 3-4 are reserved and must be zero.
  610.  
  611.         Bit 5 on indicates that this is a key associated with a "user"
  612.    or "account" at an end entity, usually a host.  The coding of the
  613.    owner name is that used for the responsible individual mailbox in the
  614.    SOA and RP RRs: The owner name is the user name as the name of a node
  615.    under the entity name.  For example, "j.random_user" on
  616.    host.subdomain.domain could have a public key associated through a
  617.    KEY RR with name j\.random_user.host.subdomain.domain and the user
  618.    bit a one.  It could be used in an security protocol where
  619.  
  620.  
  621.  
  622. Eastlake & Kaufman          Standards Track                    [Page 11]
  623.  
  624.  
  625. RFC 2065                DNS Security Extensions             January 1997
  626.  
  627.  
  628.    authentication of a user was desired.  This key might be useful in IP
  629.    or other security for a user level service such a telnet, ftp,
  630.    rlogin, etc.
  631.  
  632.         Bit 6 on indicates that this is a key associated with the non-
  633.    zone "entity" whose name is the RR owner name.  This will commonly be
  634.    a host but could, in some parts of the DNS tree, be some other type
  635.    of entity such as a telephone number [RFC 1530].  This is the public
  636.    key used in connection with the optional DNS transaction
  637.    authentication service if the owner name is a DNS server host.  It
  638.    could also be used in an IP-security protocol where authentication of
  639.    at the host, rather than user, level was desired, such as routing,
  640.    NTP, etc.
  641.  
  642.         Bit 7 is the "zone" bit and indicates that this is a zone key
  643.    for the zone whose name is the KEY RR owner name.  This is the public
  644.    key used for DNS data origin authentication.
  645.  
  646.         Bit 8 is reserved to be the IPSEC [RFC 1825] bit and indicates
  647.    that this key is valid for use in conjunction with that security
  648.    standard.  This key could be used in connection with secured
  649.    communication on behalf of an end entity or user whose name is the
  650.    owner name of the KEY RR if the entity or user bits are on.  The
  651.    presence of a KEY resource with the IPSEC and entity bits on and
  652.    experimental and no-key bits off is an assertion that the host speaks
  653.    IPSEC.
  654.  
  655.         Bit 9 is reserved to be the "email" bit and indicate that this
  656.    key is valid for use in conjunction with MIME security multiparts.
  657.    This key could be used in connection with secured communication on
  658.    behalf of an end entity or user whose name is the owner name of the
  659.    KEY RR if the entity or user bits are on.
  660.  
  661.         Bits 10-11 are reserved and must be zero.
  662.  
  663.         Bits 12-15 are the "signatory" field.  If non-zero, they
  664.    indicate that the key can validly sign RRs or updates of the same
  665.    name.  If the owner name is a wildcard, then RRs or updates with any
  666.    name which is in the wildcard's scope can be signed.  Fifteen
  667.    different non-zero values are possible for this field and any
  668.    differences in their meaning are reserved for definition in
  669.    connection with DNS dynamic update or other new DNS commands.  Zone
  670.    keys always have authority to sign any RRs in the zone regardless of
  671.    the value of this field.  The signatory field, like all other aspects
  672.    of the KEY RR, is only effective if the KEY RR is appropriately
  673.    signed by a SIG RR.
  674.  
  675.  
  676.  
  677.  
  678.  
  679. Eastlake & Kaufman          Standards Track                    [Page 12]
  680.  
  681.  
  682. RFC 2065                DNS Security Extensions             January 1997
  683.  
  684.  
  685. 3.4 The Protocol Octet
  686.  
  687.    It is anticipated that some keys stored in DNS will be used in
  688.    conjunction with Internet protocols other than DNS (keys with zone
  689.    bit or signatory field non-zero) and IPSEC/email (keys with IPSEC
  690.    and/or email bit set).  The protocol octet is provided to indicate
  691.    that a key is valid for such use and, for end entity keys or the host
  692.    part of user keys, that the secure version of that protocol is
  693.    implemented on that entity or host.
  694.  
  695.    Values between 1 and 191 decimal inclusive are available for
  696.    assignment by IANA for such protocols.  The 63 values between 192 and
  697.    254 inclusive will not be assigned to a specific protocol and are
  698.    available for experimental use under bilateral agreement. Value 0
  699.    indicates, for a particular key, that it is not valid for any
  700.    particular additional protocol beyond those indicated in the flag
  701.    field. And value 255 indicates that the key is valid for all assigned
  702.    protocols (those in the 1 to 191 range).
  703.  
  704.    It is intended that new uses of DNS stored keys would initially be
  705.    implemented, and operational experience gained, using the
  706.    experimental range of the protocol octet.  If demand for widespread
  707.    deployment for the indefinite future warrants, a value in the
  708.    assigned range would then be designated for the protocol.  Finally,
  709.    (1) should the protocol become so widespread in conjunction with
  710.    other protocols and with which it shares key values that duplicate
  711.    RRs are a serious burden and (2) should the protocol provide
  712.    substantial facilities not available in any protocol for which a
  713.    flags field bit has been allocated, then one of the remaining flag
  714.    field bits may be allocated to the protocol. When such a bit has been
  715.    allocated, a key can be simultaneously indicated as valid for that
  716.    protocol and the entity or host can be simultaneously flagged as
  717.    implementing the secure version of that protocol, along with other
  718.    protocols for which flag field bits have been assigned.
  719.  
  720. 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm
  721.  
  722.    This octet is the key algorithm parallel to the same field for the
  723.    SIG resource.  The MD5/RSA algorithm described in this document is
  724.    number 1. Numbers 2 through 252 are available for assignment should
  725.    sufficient reason arise.  However, the designation of a new algorithm
  726.    could have a major impact on interoperability and requires an IETF
  727.    standards action.  Number 254 is reserved for private use and will
  728.    never be assigned a specific algorithm.  For number 254, the public
  729.    key area shown in the packet diagram above will actually begin with a
  730.    length byte followed by an Object Identifier (OID) of that length.
  731.    The OID indicates the private algorithm in use and the remainder of
  732.    the area is whatever is required by that algorithm. Number 253 is
  733.  
  734.  
  735.  
  736. Eastlake & Kaufman          Standards Track                    [Page 13]
  737.  
  738.  
  739. RFC 2065                DNS Security Extensions             January 1997
  740.  
  741.  
  742.    reserved as the "expiration date algorithm" for use where the
  743.    expiration date or other labeling fields of SIGs are desired without
  744.    any actual security. It is anticipated that this algorithm will only
  745.    be used in connection with some modes of DNS dynamic update.  For
  746.    number 253, the public key area is null. Values 0 and 255 are
  747.    reserved.
  748.  
  749.    If the type field does not have the "no key" value and the algorithm
  750.    field is 1, indicating the MD5/RSA algorithm, the public key field is
  751.    structured as follows:
  752.  
  753.                         1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  754.     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
  755.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  756.    | pub exp length|        public key exponent                    /
  757.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  758.    |                                                               /
  759.    +-                           modulus                            /
  760.    |                                                               /
  761.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/
  762.  
  763.    To promote interoperability, the exponent and modulus are each
  764.    limited to 2552 bits in length.  The public key exponent is a
  765.    variable length unsigned integer.  Its length in octets is
  766.    represented as one octet if it is in the range of 1 to 255 and by a
  767.    zero octet followed by a two octet unsigned length if it is longer
  768.    than 255 bytes.  The public key modulus field is a multiprecision
  769.    unsigned integer.  The length of the modulus can be determined from
  770.    the RDLENGTH and the preceding RDATA fields including the exponent.
  771.    Leading zero bytes are prohibited in the exponent and modulus.
  772.  
  773. 3.6 Interaction of Flags, Algorithm, and Protocol Bytes
  774.  
  775.    Various combinations of the no-key type value, algorithm byte,
  776.    protocol byte, and any protocol indicating flags (such as the
  777.    reserved IPSEC flag) are possible.  (Note that the zone flag bit
  778.    being on or the signatory field being non-zero is effectively a DNS
  779.    protocol flag on.)  The meaning of these combinations is indicated
  780.    below:
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793. Eastlake & Kaufman          Standards Track                    [Page 14]
  794.  
  795.  
  796. RFC 2065                DNS Security Extensions             January 1997
  797.  
  798.  
  799.       NK = no key type value
  800.       AL = algorithm byte
  801.       PR = protocols indicated by protocol byte or protocol flags
  802.  
  803.       x represents any valid non-zero value(s).
  804.  
  805.        AL  PR   NK  Meaning
  806.         0   0   0   Illegal, claims key but has bad algorithm field.
  807.         0   0   1   Specifies total lack of security for owner.
  808.         0   x   0   Illegal, claims key but has bad algorithm field.
  809.         0   x   1   Specified protocols insecure, others may be secure.
  810.         x   0   0   Useless.  Gives key but no protocols to use it.
  811.         x   0   1   Useless.  Denies key but for no protocols.
  812.         x   x   0   Specifies key for protocols and asserts that
  813.                       those protocols are implemented with security.
  814.         x   x   1   Algorithm not understood for protocol.
  815.  
  816.       (remember, in reference to the above table, that a protocol
  817.        byte of 255 means all protocols with protocol byte values
  818.        assigned)
  819.  
  820. 3.7 KEY RRs in the Construction of Responses
  821.  
  822.    An explicit request for KEY RRs does not cause any special additional
  823.    information processing except, of course, for the corresponding SIG
  824.    RR from a security aware server.
  825.  
  826.    Security aware DNS servers MUST include KEY RRs as additional
  827.    information in responses where appropriate including the following:
  828.  
  829.    (1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone
  830.    served by these name servers MUST be included as additional
  831.    information if space is avilable.  There will always be at least one
  832.    such KEY RR in a secure zone, even if it has the no-key type value to
  833.    indicate that the subzone is insecure.  If not all additional
  834.    information will fit, the KEY RR(s) have higher priority than type A
  835.    or AAAA glue RRs.  If such a KEY RR does not fit on a retrieval, the
  836.    retrieval must be considered truncated.
  837.  
  838.    (2) On retrieval of type A or AAAA RRs, the end entity KEY RR(s) MUST
  839.    be included if space is available.  On inclusion of A or AAAA RRs as
  840.    additional information, their KEY RRs will also be included but with
  841.    lower priority than the relevant A or AAAA RRs.
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850. Eastlake & Kaufman          Standards Track                    [Page 15]
  851.  
  852.  
  853. RFC 2065                DNS Security Extensions             January 1997
  854.  
  855.  
  856. 3.8 File Representation of KEY RRs
  857.  
  858.    KEY RRs may appear as lines in a zone data master file.
  859.  
  860.    The flag field, protocol, and algorithm number octets are then
  861.    represented as unsigned integers.  Note that if the type field has
  862.    the "no key" value or the algorithm specified is 253, nothing appears
  863.    after the algorithm octet.
  864.  
  865.    The remaining public key portion is represented in base 64 (see
  866.    Appendix) and may be divided up into any number of white space
  867.    separated substrings, down to single base 64 digits, which are
  868.    concatenated to obtain the full signature.  These substrings can span
  869.    lines using the standard parenthesis.
  870.  
  871.    Note that the public key may have internal sub-fields but these do
  872.    not appear in the master file representation.  For example, with
  873.    algorithm 1 there is a public exponent size, then a public exponent,
  874.    and then a modulus.  With algorithm 254, there will be an OID size,
  875.    an OID, and algorithm dependent information. But in both cases only a
  876.    single logical base 64 string will appear in the master file.
  877.  
  878. 4. The SIG Resource Record
  879.  
  880.    The SIG or "signature" resource record (RR) is the fundamental way
  881.    that data is authenticated in the secure Domain Name System (DNS). As
  882.    such it is the heart of the security provided.
  883.  
  884.    The SIG RR unforgably authenticates other RRs of a particular type,
  885.    class, and name and binds them to a time interval and the signer's
  886.    domain name.  This is done using cryptographic techniques and the
  887.    signer's private key.  The signer is frequently the owner of the zone
  888.    from which the RR originated.
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907. Eastlake & Kaufman          Standards Track                    [Page 16]
  908.  
  909.  
  910. RFC 2065                DNS Security Extensions             January 1997
  911.  
  912.  
  913. 4.1 SIG RDATA Format
  914.  
  915.    The RDATA portion of a SIG RR is as shown below.  The integrity of
  916.    the RDATA information is protected by the signature field.
  917.  
  918.                         1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  919.     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
  920.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  921.    |        type covered           |  algorithm    |     labels    |
  922.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  923.    |                         original TTL                          |
  924.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  925.    |                      signature expiration                     |
  926.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  927.    |                         time signed                           |
  928.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  929.    |         key footprint         |                               /
  930.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         signer's name         /
  931.    /                                                               /
  932.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  933.    |                                                               /
  934.    +-                          signature                           /
  935.    /                                                               /
  936.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  937.  
  938.    The value of the SIG RR type is 24.
  939.  
  940.    The "type covered" is the type of the other RRs covered by this SIG.
  941.  
  942.    The algorithm number is an octet specifying the digital signature
  943.    algorithm used parallel to the algorithm octet for the KEY RR.  The
  944.    MD5/RSA algorithm described in this document is number 1.  Numbers 2
  945.    through 252 are available for assignment should sufficient reason
  946.    arise to allocate them.  However, the designation of a new algorithm
  947.    could have a major impact on the interoperability of the global DNS
  948.    system and requires an IETF standards action.  Number 254 is reserved
  949.    for private use and will not be assigned a specific algorithm.  For
  950.    number 254, the "signature" area shown above will actually begin with
  951.    a length byte followed by an Object Identifier (OID) of that length.
  952.    The OID indicates the private algorithm in use and the remainder of
  953.    the area is whatever is required by that algorithm.  Number 253,
  954.    known as the "expiration date algorithm", is used when the expiration
  955.    date or other non-signature fields of the SIG are desired without any
  956.    actual security.  It is anticipated that this algorithm will only be
  957.    used in connection with some modes of DNS dynamic update.  For number
  958.    253, the signature field will be null.  Values 0 and 255 are
  959.    reserved.
  960.  
  961.  
  962.  
  963.  
  964. Eastlake & Kaufman          Standards Track                    [Page 17]
  965.  
  966.  
  967. RFC 2065                DNS Security Extensions             January 1997
  968.  
  969.  
  970.    The "labels" octet is an unsigned count of how many labels there are
  971.    in the original SIG RR owner name not counting the null label for
  972.    root and not counting any initial "*" for a wildcard.  If a secured
  973.    retrieval is the result of wild card substitution, it is necessary
  974.    for the resolver to use the original form of the name in verifying
  975.    the digital signature.  This field helps optimize the determination
  976.    of the original form thus reducing the effort in authenticating
  977.    signed data.
  978.  
  979.    If, on retrieval, the RR appears to have a longer name than indicated
  980.    by "labels", the resolver can tell it is the result of wildcard
  981.    substitution.  If the RR owner name appears to be shorter than the
  982.    labels count, the SIG RR must be considered corrupt and ignored.  The
  983.    maximum number of labels allowed in the current DNS is 127 but the
  984.    entire octet is reserved and would be required should DNS names ever
  985.    be expanded to 255 labels.  The following table gives some examples.
  986.    The value of "labels" is at the top, the retrieved owner name on the
  987.    left, and the table entry is the name to use in signature
  988.    verification except that "bad" means the RR is corrupt.
  989.  
  990.         labels= |  0  |   1  |    2   |      3   |      4   |
  991.         --------+-----+------+--------+----------+----------+
  992.                .|   . | bad  |  bad   |    bad   |    bad   |
  993.               d.|  *. |   d. |  bad   |    bad   |    bad   |
  994.             c.d.|  *. | *.d. |   c.d. |    bad   |    bad   |
  995.           b.c.d.|  *. | *.d. | *.c.d. |   b.c.d. |    bad   |
  996.         a.b.c.d.|  *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. |
  997.  
  998.    The "original TTL" field is included in the RDATA portion to avoid
  999.    (1) authentication problems that caching servers would otherwise
  1000.    cause by decrementing the real TTL field and (2) security problems
  1001.    that unscrupulous servers could otherwise cause by manipulating the
  1002.    real TTL field.  This original TTL is protected by the signature
  1003.    while the current TTL field is not.
  1004.  
  1005.    NOTE:  The "original TTL" must be restored into the covered RRs when
  1006.    the signature is verified.  This implies that all RRs for a
  1007.    particular type, name, and class must have the same TTL to start
  1008.    with.
  1009.  
  1010.    The SIG is valid until the "signature expiration" time which is an
  1011.    unsigned number of seconds since the start of 1 January 1970, GMT,
  1012.    ignoring leap seconds.  (See also Section 4.4.)  SIG RRs should not
  1013.    have a date signed significantly in the future.  To prevent
  1014.    misordering of network requests to update a zone dynamically,
  1015.    monotonically increasing "time signed" dates may be necessary.
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021. Eastlake & Kaufman          Standards Track                    [Page 18]
  1022.  
  1023.  
  1024. RFC 2065                DNS Security Extensions             January 1997
  1025.  
  1026.  
  1027.    The "time signed" field is an unsigned number of seconds since the
  1028.    start of 1 January 1970, GMT, ignoring leap seconds.
  1029.  
  1030.    A SIG RR with an expiration date before the time signed must be
  1031.    considered corrupt and ignored.
  1032.  
  1033.    The "key footprint" is a 16 bit quantity that is used to help
  1034.    efficiently select between multiple keys which may be applicable and
  1035.    as a quick check that a public key about to be used for the
  1036.    computationally expensive effort to check the signature is possibly
  1037.    valid.  Its exact meaning is algorithm dependent.  For the MD5/RSA
  1038.    algorithm, it is the next to the bottom two octets of the public key
  1039.    modulus needed to decode the signature field.  That is to say, the
  1040.    most significant 16 of the lest significant 24 bits of the modulus in
  1041.    network order.
  1042.  
  1043.    The "signer's name" field is the domain name of the signer generating
  1044.    the SIG RR.  This is the owner of the public KEY RR that can be used
  1045.    to verify the signature.  It is frequently the zone which contained
  1046.    the RR(s) being authenticated.  The signer's name may be compressed
  1047.    with standard DNS name compression when being transmitted over the
  1048.    network.
  1049.  
  1050.    The structure of the "signature" field is described below.
  1051.  
  1052. 4.1.1 Signature Data
  1053.  
  1054.    Except for algorithm number 253 where it is null, the actual
  1055.    signature portion of the SIG RR binds the other RDATA fields to all
  1056.    of the "type covered" RRs with that owner name and class.  These
  1057.    covered RRs are thereby authenticated.  To accomplish this, a data
  1058.    sequence is constructed as follows:
  1059.  
  1060.            data = RDATA | RR(s)...
  1061.  
  1062.    where "|" is concatenation, RDATA is all the RDATA fields in the SIG
  1063.    RR itself before and not including the signature, and RR(s) are all
  1064.    the RR(s) of the type covered with the same owner name and class as
  1065.    the SIG RR in canonical form and order.  How this data sequence is
  1066.    processed into the signature is algorithm dependent.
  1067.  
  1068.    For purposes of DNS security, the canonical form for an RR is the RR
  1069.    with domain names (1) fully expanded (no name compression via
  1070.    pointers), (2) all domain name letters set to lower case, and (3) the
  1071.    original TTL substituted for the current TTL.
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078. Eastlake & Kaufman          Standards Track                    [Page 19]
  1079.  
  1080.  
  1081. RFC 2065                DNS Security Extensions             January 1997
  1082.  
  1083.  
  1084.    For purposes of DNS security, the canonical order for RRs is to sort
  1085.    them in ascending order by name, considering labels as a left
  1086.    justified unsigned octet sequence in network (transmission) order
  1087.    where a missing octet sorts before a zero octet.  (See also ordering
  1088.    discussion in Section 5.1.)  Within any particular name they are
  1089.    similarly sorted by type and then RDATA as a left justified unsigned
  1090.    octet sequence. EXCEPT that the type SIG RR(s) covering any
  1091.    particular type appear immediately after the other RRs of that type.
  1092.    (This special consideration for SIG RR(s) in ordering really only
  1093.    applies to calculating the AXFR SIG RR as explained in section 4.1.3
  1094.    below.)  Thus if at name a.b there are two A RRs and one KEY RR,
  1095.    their order with SIGs for concatenating the "data" to be signed would
  1096.    be as follows:
  1097.  
  1098.            a.b.  A ....
  1099.            a.b.  A ....
  1100.            a.b.  SIG A ...
  1101.            a.b.  KEY ...
  1102.            a.b.  SIG KEY ...
  1103.  
  1104.    SIGs covering type ANY should not be included in a zone.
  1105.  
  1106. 4.1.2 MD5/RSA Algorithm Signature Calculation
  1107.  
  1108.    For the MD5/RSA algorithm, the signature is as follows
  1109.  
  1110.       hash = MD5 ( data )
  1111.  
  1112.       signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n)
  1113.  
  1114.    where MD5 is the message digest algorithm documented in RFC 1321, "|"
  1115.    is concatenation, "e" is the private key exponent of the signer, and
  1116.    "n" is the modulus of the signer's public key.  01, FF, and 00 are
  1117.    fixed octets of the corresponding hexadecimal value. "prefix" is the
  1118.    ASN.1 BER MD5 algorithm designator prefix specified in PKCS1, that
  1119.    is,
  1120.            hex 3020300c06082a864886f70d020505000410 [NETSEC].
  1121.    This prefix is included to make it easier to use RSAREF or similar
  1122.    packages.  The FF octet is repeated the maximum number of times such
  1123.    that the value of the quantity being exponentiated is one octet
  1124.    shorter than the value of n.
  1125.  
  1126.    (The above specifications are identical to the corresponding part of
  1127.    Public Key Cryptographic Standard #1 [PKCS1].)
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135. Eastlake & Kaufman          Standards Track                    [Page 20]
  1136.  
  1137.  
  1138. RFC 2065                DNS Security Extensions             January 1997
  1139.  
  1140.  
  1141.    The size of n, including most and least significant bits (which will
  1142.    be 1) SHALL be not less than 512 bits and not more than 2552 bits.  n
  1143.    and e SHOULD be chosen such that the public exponent is small.
  1144.  
  1145.    Leading zeros bytes are not permitted in the MD5/RSA algorithm
  1146.    signature.
  1147.  
  1148.    A public exponent of 3 minimizes the effort needed to decode a
  1149.    signature.  Use of 3 as the public exponent may be weak for
  1150.    confidentiality uses since, if the same data can be collected
  1151.    encrypted under three different keys with an exponent of 3 then,
  1152.    using the Chinese Remainder Theorem, the original plain text can be
  1153.    easily recovered.  This weakness is not significant for DNS because
  1154.    we seek only authentication, not confidentiality.
  1155.  
  1156. 4.1.3 Zone Transfer (AXFR) SIG
  1157.  
  1158.    The above SIG mechanisms assure the authentication of all zone signed
  1159.    RRs of a particular name, class and type.  However, to efficiently
  1160.    assure the completeness and security of zone transfers, a SIG RR
  1161.    owned by the zone name must be created with a type covered of AXFR
  1162.    that covers all zone signed RRs in the zone and their zone SIGs but
  1163.    not the SIG AXFR itself.  The RRs are ordered and concatenated for
  1164.    hashing as described in Section 4.1.1.  (See also ordering discussion
  1165.    in Section 5.1.)
  1166.  
  1167.    The AXFR SIG must be calculated last of all zone key signed SIGs in
  1168.    the zone.  In effect, when signing the zone, you order, as described
  1169.    above, all RRs to be signed by the zone, and all associated glue RRs
  1170.    and delegation point NS RRs.  You can then make one pass inserting
  1171.    all the zone SIGs.  As you proceed you hash RRs to be signed into
  1172.    both an RRset hash and the zone hash.  When the name or type changes
  1173.    you calculate and insert the RRset zone SIG, clear the RRset hash,
  1174.    and hash that SIG into the zone hash (note that glue RRs and
  1175.    delegation point NSs are not zone signed but zone apex NSs are).
  1176.    When you have finished processing all the starting RRs as described
  1177.    above, you can then use the cumulative zone hash RR to calculate and
  1178.    insert an AXFR SIG covering the zone.  Of course any computational
  1179.    technique producing the same results as above is permitted.
  1180.  
  1181.    The AXFR SIG really belongs to the zone as a whole, not to the zone
  1182.    name.  Although it should be correct for the zone name, the labels
  1183.    field of an AXFR SIG is otherwise meaningless. The AXFR SIG is only
  1184.    retrieved as part of a zone transfer.  After validation of the AXFR
  1185.    SIG, the zone MAY be considered valid without verification of the
  1186.    internal zone signed SIGs in the zone; however, any RRs authenticated
  1187.    by SIGs signed by entity keys or the like MUST still be validated.
  1188.    The AXFR SIG SHOULD be transmitted first in a zone transfer so the
  1189.  
  1190.  
  1191.  
  1192. Eastlake & Kaufman          Standards Track                    [Page 21]
  1193.  
  1194.  
  1195. RFC 2065                DNS Security Extensions             January 1997
  1196.  
  1197.  
  1198.    receiver can tell immediately that they may be able to avoid
  1199.    verifying other zone signed SIGs.
  1200.  
  1201.    RRs which are authenticated by a dynamic update key and not by the
  1202.    zone key (see Section 3.2) are not included in the AXFR SIG. They may
  1203.    originate in the network and might not, in general, be migrated to
  1204.    the recommended off line zone signing procedure (see Section 7.2).
  1205.    Thus, such RRs are not directly signed by the zone, are not included
  1206.    in the AXFR SIG, and are protected against omission from zone
  1207.    transfers only to the extent that the server and communication can be
  1208.    trusted.
  1209.  
  1210. 4.1.4 Transaction and Request SIGs
  1211.  
  1212.    A response message from a security aware server may optionally
  1213.    contain a special SIG as the last item in the additional information
  1214.    section to authenticate the transaction.
  1215.  
  1216.    This SIG has a "type covered" field of zero, which is not a valid RR
  1217.    type.  It is calculated by using a "data" (see Section 4.1.2) of the
  1218.    entire preceding DNS reply message, including DNS header but not the
  1219.    IP header, concatenated with the entire DNS query message that
  1220.    produced this response, including the query's DNS header but not its
  1221.    IP header.  That is
  1222.  
  1223.         data = full response (less final transaction SIG) | full query
  1224.  
  1225.    Verification of the transaction SIG (which is signed by the server
  1226.    host key, not the zone key) by the requesting resolver shows that the
  1227.    query and response were not tampered with in transit, that the
  1228.    response corresponds to the intended query, and that the response
  1229.    comes from the queried server.
  1230.  
  1231.    A DNS request may be optionally signed by including one or more SIGs
  1232.    at the end of the query. Such SIGs are identified by having a "type
  1233.    covered" field of zero. They sign the preceding DNS request message
  1234.    including DNS header but not including the IP header or at the
  1235.    begining or any preceding request SIGs at the end. Such request SIGs
  1236.    are included in the "data" used to form any optional response
  1237.    transaction SIG.
  1238.  
  1239.    WARNING: Request SIGs are unnecessary for currently defined queries
  1240.    and will cause almost all existing DNS servers to completely ignore a
  1241.    query.  However, such SIGs may be needed to authenticate future DNS
  1242.    secure dynamic update or other requests.
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249. Eastlake & Kaufman          Standards Track                    [Page 22]
  1250.  
  1251.  
  1252. RFC 2065                DNS Security Extensions             January 1997
  1253.  
  1254.  
  1255. 4.2 SIG RRs in the Construction of Responses
  1256.  
  1257.    Security aware DNS servers MUST, for every authoritative RR the query
  1258.    will return, attempt to send the available SIG RRs which authenticate
  1259.    the requested RR.  The following rules apply to the inclusion of SIG
  1260.    RRs in responses:
  1261.  
  1262.    1. when an RR set is placed in a response, its SIG RR has a higher
  1263.       priority for inclusion than other additional RRs that may need to
  1264.       be included.  If space does not permit its inclusion, the response
  1265.       MUST be considered truncated except as provided in 2 below.
  1266.  
  1267.    2. when a SIG RR is present in the zone for an additional information
  1268.       section RR, the response MUST NOT be considered truncated merely
  1269.       because space does not permit the inclusion of its SIG RR.
  1270.  
  1271.    3. SIGs to authenticate non-authoritative data (glue records and NS
  1272.       RRs for subzones) are unnecessary and MUST NOT be sent.  (Note
  1273.       that KEYs for subzones are controlling in a superzone so the
  1274.       superzone's signature on the KEY MUST be included (unless the KEY
  1275.       was additional information and the SIG did not fit).)
  1276.  
  1277.    4. If a SIG covers any RR that would be in the answer section of the
  1278.       response, its automatic inclusion MUST be the answer section.  If
  1279.       it covers an RR that would appear in the authority section, its
  1280.       automatic inclusion MUST be in the authority section.  If it
  1281.       covers an RR that would appear in the additional information
  1282.       section it MUST appear in the additional information section.
  1283.       This is a change in the existing standard which contemplates only
  1284.       NS and SOA RRs in the authority section.
  1285.  
  1286.    5. Optionally, DNS transactions may be authenticated by a SIG RR at
  1287.       the end of the response in the additional information section
  1288.       (Section 4.1.4).  Such SIG RRs are signed by the DNS server
  1289.       originating the response.  Although the signer field MUST be the
  1290.       name of the originating server host, the owner name, class, TTL,
  1291.       and original TTL, are meaningless.  The class and TTL fields
  1292.       SHOULD be zero.  To conserve space, the owner name SHOULD be root
  1293.       (a single zero octet).  If transaction authentication is desired,
  1294.       that SIG RR must be considered higher priority for inclusion than
  1295.       any other RR in the response.
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306. Eastlake & Kaufman          Standards Track                    [Page 23]
  1307.  
  1308.  
  1309. RFC 2065                DNS Security Extensions             January 1997
  1310.  
  1311.  
  1312. 4.3 Processing Responses and SIG RRs
  1313.  
  1314.    The following rules apply to the processing of SIG RRs included in a
  1315.    response:
  1316.  
  1317.    1. a security aware resolver that receives a response from what it
  1318.       believes to be a security aware server via a secure communication
  1319.       with the AD bit (see Section 6.1) set, MAY choose to accept the
  1320.       RRs as received without verifying the zone SIG RRs.
  1321.  
  1322.    2. in other cases, a security aware resolver SHOULD verify the SIG
  1323.       RRs for the RRs of interest.  This may involve initiating
  1324.       additional queries for SIG or KEY RRs, especially in the case of
  1325.       getting a response from an insecure server.  (As explained in 4.2
  1326.       above, it will not be possible to secure CNAMEs being served up by
  1327.       non-secure resolvers.)
  1328.  
  1329.       NOTE: Implementers might expect the above SHOULD to be a MUST.
  1330.       However, local policy or the calling application may not require
  1331.       the security services.
  1332.  
  1333.    3. If SIG RRs are received in response to a user query explicitly
  1334.       specifying the SIG type, no special processing is required.
  1335.  
  1336.    If the message does not pass reasonable checks or the SIG does not
  1337.    check against the signed RRs, the SIG RR is invalid and should be
  1338.    ignored.  If all of the SIG RR(s) purporting to authenticate a set of
  1339.    RRs are invalid, then the set of RR(s) is not authenticated.
  1340.  
  1341.    If the SIG RR is the last RR in a response in the additional
  1342.    information section and has a type covered of zero, it is a
  1343.    transaction signature of the response and the query that produced the
  1344.    response.  It MAY be optionally checked and the message rejected if
  1345.    the checks fail.  But even if the checks succeed, such a transaction
  1346.    authentication SIG does NOT authenticate any RRs in the message.
  1347.    Only a proper SIG RR signed by the zone or a key tracing its
  1348.    authority to the zone or to static resolver configuration can
  1349.    authenticate RRs.  If a resolver does not implement transaction
  1350.    and/or request SIGs, it MUST ignore them without error.
  1351.  
  1352.    If all reasonable checks indicate that the SIG RR is valid then RRs
  1353.    verified by it should be considered authenticated.
  1354.  
  1355. 4.4 Signature Expiration, TTLs, and Validity
  1356.  
  1357.    Security aware servers must not consider SIG RRs to authenticate
  1358.    anything after their expiration time and not consider any RR to be
  1359.    authenticated after its signatures have expired.  Within that
  1360.  
  1361.  
  1362.  
  1363. Eastlake & Kaufman          Standards Track                    [Page 24]
  1364.  
  1365.  
  1366. RFC 2065                DNS Security Extensions             January 1997
  1367.  
  1368.  
  1369.    constraint, servers should continue to follow DNS TTL aging.  Thus
  1370.    authoritative servers should continue to follow the zone refresh and
  1371.    expire parameters and a non-authoritative server should count down
  1372.    the TTL and discard RRs when the TTL is zero.  In addition, when RRs
  1373.    are transmitted in a query response, the TTL should be trimmed so
  1374.    that current time plus the TTL does not extend beyond the signature
  1375.    expiration time.  Thus, in general, the TTL on an transmitted RR
  1376.    would be
  1377.  
  1378.          min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
  1379.  
  1380. 4.5 File Representation of SIG RRs
  1381.  
  1382.    A SIG RR can be represented as a single logical line in a zone data
  1383.    file [RFC1033] but there are some special considerations as described
  1384.    below.  (It does not make sense to include a transaction or request
  1385.    authenticating SIG RR in a file as they are a transient
  1386.    authentication that covers data including an ephemeral transaction
  1387.    number and so must be calculated in real time.)
  1388.  
  1389.    There is no particular problem with the signer, covered type, and
  1390.    times.  The time fields appears in the form YYYYMMDDHHMMSS where YYYY
  1391.    is the year, the first MM is the month number (01-12), DD is the day
  1392.    of the month (01-31), HH is the hour in 24 hours notation (00-23),
  1393.    the second MM is the minute (00-59), and SS is the second (00-59).
  1394.  
  1395.    The original TTL and algorithm fields appear as unsigned integers.
  1396.  
  1397.    If the original TTL, which applies to the type signed, is the same as
  1398.    the TTL of the SIG RR itself, it may be omitted.  The date field
  1399.    which follows it is larger than the maximum possible TTL so there is
  1400.    no ambiguity.
  1401.  
  1402.    The "labels" field does not appear in the file representation as it
  1403.    can be calculated from the owner name.
  1404.  
  1405.    The key footprint appears as an unsigned decimal number.
  1406.  
  1407.    However, the signature itself can be very long.  It is the last data
  1408.    field and is represented in base 64 (see Appendix) and may be divided
  1409.    up into any number of white space separated substrings, down to
  1410.    single base 64 digits, which are concatenated to obtain the full
  1411.    signature.  These substrings can be split between lines using the
  1412.    standard parenthesis.
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420. Eastlake & Kaufman          Standards Track                    [Page 25]
  1421.  
  1422.  
  1423. RFC 2065                DNS Security Extensions             January 1997
  1424.  
  1425.  
  1426. 5. Non-existent Names and Types
  1427.  
  1428.    The SIG RR mechanism described in Section 4 above provides strong
  1429.    authentication of RRs that exist in a zone.  But is it not clear
  1430.    above how to authenticatably deny the existence of a name in a zone
  1431.    or a type for an existent name.
  1432.  
  1433.    The nonexistence of a name in a zone is indicated by the NXT ("next")
  1434.    RR for a name interval containing the nonexistent name. A NXT RR and
  1435.    its SIG are returned in the authority section, along with the error,
  1436.    if the server is security aware.  The same is true for a non-existent
  1437.    type under an existing name.  This is a change in the existing
  1438.    standard which contemplates only NS and SOA RRs in the authority
  1439.    section. NXT RRs will also be returned if an explicit query is made
  1440.    for the NXT type.
  1441.  
  1442.    The existence of a complete set of NXT records in a zone means that
  1443.    any query for any name and any type to a security aware server
  1444.    serving the zone will always result in an reply containing at least
  1445.    one signed RR.
  1446.  
  1447.    NXT RRs do not appear in zone master files since they can be derived
  1448.    from the rest of the zone.
  1449.  
  1450. 5.1 The NXT Resource Record
  1451.  
  1452.    The NXT resource record is used to securely indicate that RRs with an
  1453.    owner name in a certain name interval do not exist in a zone and to
  1454.    indicate what zone signed RR types are present for an existing name.
  1455.  
  1456.    The owner name of the NXT RR is an existing name in the zone.  It's
  1457.    RDATA is a "next" name and a type bit map. The presence of the NXT RR
  1458.    means that generally no name between its owner name and the name in
  1459.    its RDATA area exists and that no other zone signed types exist under
  1460.    its owner name.  This implies a canonical ordering of all domain
  1461.    names in a zone.
  1462.  
  1463.    The ordering is to sort labels as unsigned left justified octet
  1464.    strings where the absence of a octet sorts before a zero value octet
  1465.    and upper case letters are treated as lower case letters.  Names are
  1466.    then sorted by sorting on the highest level label and then, within
  1467.    those names with the same highest level label by the next lower
  1468.    label, etc. down to leaf node labels.  Since we are talking about a
  1469.    zone, the zone name itself always exists and all other names are the
  1470.    zone name with some prefix of lower level labels.  Thus the zone name
  1471.    itself always sorts first.
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477. Eastlake & Kaufman          Standards Track                    [Page 26]
  1478.  
  1479.  
  1480. RFC 2065                DNS Security Extensions             January 1997
  1481.  
  1482.  
  1483.    There is a potential problem with the last NXT in a zone as it wants
  1484.    to have an owner name which is the last existing name in canonical
  1485.    order, which is easy, but it is not obvious what name to put in its
  1486.    RDATA to indicate the entire remainder of the name space.  This is
  1487.    handled by treating the name space as circular and putting the zone
  1488.    name in the RDATA of the last NXT in a zone.
  1489.  
  1490.    There are special considerations due to interaction with wildcards as
  1491.    explained below.
  1492.  
  1493.    The NXT RRs for a zone SHOULD be automatically calculated and added
  1494.    to the zone by the same recommended off-line process that signs the
  1495.    zone (see Section 7.2).  The NXT RR's TTL SHOULD not exceed the zone
  1496.    minimum TTL.
  1497.  
  1498. 5.2 NXT RDATA Format
  1499.  
  1500.    The RDATA for an NXT RR consists simply of a domain name followed by
  1501.    a bit map.
  1502.  
  1503.    The type number for the NXT RR is 30.
  1504.  
  1505.                            1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  1506.        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
  1507.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1508.       |         next domain name                                      /
  1509.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1510.       |                    type bit map                               /
  1511.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1512.  
  1513.    The NXT RR type bit map is one bit per RR type present for the owner
  1514.    name similar to the WKS socket bit map.  The first bit represents RR
  1515.    type zero (an illegal type which should not be present.) A one bit
  1516.    indicates that at least one RR of that type is present for the owner
  1517.    name.  A zero indicates that no such RR is present.  All bits not
  1518.    specified because they are beyond the end of the bit map are assumed
  1519.    to be zero.  Note that bit 30, for NXT, will always be on so the
  1520.    minimum bit map length is actually four octets.  The NXT bit map
  1521.    should be printed as a list of RR type mnemonics or decimal numbers
  1522.    similar to the WKS RR.
  1523.  
  1524.    The domain name may be compressed with standard DNS name compression
  1525.    when being transmitted over the network.  The size of the bit map can
  1526.    be inferred from the RDLENGTH and the length of the next domain name.
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534. Eastlake & Kaufman          Standards Track                    [Page 27]
  1535.  
  1536.  
  1537. RFC 2065                DNS Security Extensions             January 1997
  1538.  
  1539.  
  1540. 5.3 Example
  1541.  
  1542.    Assume zone foo.tld has entries for
  1543.  
  1544.                big.foo.tld,
  1545.                medium.foo.tld.
  1546.                small.foo.tld.
  1547.                tiny.foo.tld.
  1548.  
  1549.    Then a query to a security aware server for huge.foo.tld would
  1550.    produce an error reply with the authority section data including
  1551.    something like the following:
  1552.  
  1553.    big.foo.tld. NXT medium.foo.tld. A MX SIG NXT
  1554.    big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3
  1555.                     19960102030405 ;signature expiration
  1556.                     19951211100908 ;time signed
  1557.                     21435          ;key footprint
  1558.                     foo.tld.       ;signer
  1559.     MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU
  1560.     1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits)
  1561.                           )
  1562.  
  1563.    Note that this response implies that big.foo.tld is an existing name
  1564.    in the zone and thus has other RR types associated with it than NXT.
  1565.    However, only the NXT (and its SIG) RR appear in the response to this
  1566.    query for huge.foo.tld, which is a non-existent name.
  1567.  
  1568. 5.4 Interaction of NXT RRs and Wildcard RRs
  1569.  
  1570.    Since, in some sense, a wildcard RR causes all possible names in an
  1571.    interval to exist, there should not be an NXT RR that would cover any
  1572.    part of this interval.  Thus if *.X.ZONE exists you would expect an
  1573.    NXT RR that ends at X.ZONE and one that starts with the last name
  1574.    covered by *.X.ZONE.  However, this "last name covered" is something
  1575.    very ugly and long like \255\255\255....X.zone.  So the NXT for the
  1576.    interval following is simply given the owner name *.X.ZONE and an
  1577.    RDATA of the next name after the wildcard.  This "*" type owner name
  1578.    is not expanded when the NXT is returned as authority information in
  1579.    connection with a query for a non-existent name.
  1580.  
  1581.    If there could be any wildcard RRs in a zone and thus wildcard NXTs,
  1582.    care must be taken in interpreting the results of explicit NXT
  1583.    retrievals as the owner name may be a wildcard expansion.
  1584.  
  1585.    The existence of one or more wildcard RRs covering a name interval
  1586.    makes it possible for a malicious server to hide any more
  1587.    specifically named RRs in the internal.  The server can just falsely
  1588.  
  1589.  
  1590.  
  1591. Eastlake & Kaufman          Standards Track                    [Page 28]
  1592.  
  1593.  
  1594. RFC 2065                DNS Security Extensions             January 1997
  1595.  
  1596.  
  1597.    return the wildcard match NXT instead of the more specifically named
  1598.    RRs.  If there is a zone wide wildcard, there will be an NXT RR whose
  1599.    owner name is the wild card and whose RDATA is the zone name. In this
  1600.    case a server could conceal the existence of any more specific RRs in
  1601.    the zone.  It would be possible to design a more strict NXT feature
  1602.    which would eliminate this possibility.  But it would be more complex
  1603.    and might be so constraining as to make any dynamic update feature
  1604.    very difficult.
  1605.  
  1606. 5.5 Blocking NXT Pseudo-Zone Transfers
  1607.  
  1608.    In a secure zone, a resolver can query for the initial NXT associated
  1609.    with the zone name.  Using the next domain name RDATA field from that
  1610.    RR, it can query for the next NXT RR.  By repeating this, it can walk
  1611.    through all the NXTs in the zone.  If there are no wildcards, it can
  1612.    use this technique to find all names in a zone. If it does type ANY
  1613.    queries, it can incrementally get all information in the zone and
  1614.    thus defeat attempts to administratively block zone transfers.
  1615.  
  1616.    If there are any wildcards, this NXT walking technique will not find
  1617.    any more specific RR names in the part of the name space the wildcard
  1618.    covers.  By doing explicit retrievals for wildcard names, a resolver
  1619.    could determine what intervals are covered by wildcards but still
  1620.    could not, with these techniques, find any names inside such
  1621.    intervals except by trying every name.
  1622.  
  1623.    If it is desired to block NXT walking, the recommended method is to
  1624.    add a zone wide wildcard of the KEY type with the no-key type value
  1625.    and with no type (zone, entity, or user) bit on.  This will cause
  1626.    there to be one zone covering NXT RR and leak no information about
  1627.    what real names exist in the zone.  This protection from pseudo-zone
  1628.    transfers is bought at the expense of eliminating the data origin
  1629.    authentication of the non-existence of names that NXT RRs can
  1630.    provide.  If an entire zone is covered by a wildcard, a malicious
  1631.    server can return an RR produced by matching the resulting wildcard
  1632.    NXT and can thus hide all the real data and delegations in the zone
  1633.    that have more specific names.
  1634.  
  1635. 5.6 Special Considerations at Delegation Points
  1636.  
  1637.    A name (other than root) which is the head of a zone also appears as
  1638.    the leaf in a superzone.  If both are secure, there will always be
  1639.    two different NXT RRs with the same name.  They can be distinguished
  1640.    by their signers and next domain name fields.  Security aware servers
  1641.    should return the correct NXT automatically when required to
  1642.    authenticate the non-existence of a name and both NXTs, if available,
  1643.    on explicit query for type NXT.
  1644.  
  1645.  
  1646.  
  1647.  
  1648. Eastlake & Kaufman          Standards Track                    [Page 29]
  1649.  
  1650.  
  1651. RFC 2065                DNS Security Extensions             January 1997
  1652.  
  1653.  
  1654.    Insecure servers will never automatically return an NXT and some
  1655.    implementations may only return the NXT from the subzone on explicit
  1656.    queries.
  1657.  
  1658. 6. The AD and CD Bits and How to Resolve Securely
  1659.  
  1660.    Retrieving or resolving authentic data from the Domain Name System
  1661.    (DNS) involves starting with one or more trusted public keys for one
  1662.    or more zones. With trusted keys, a resolver willing to perform
  1663.    cryptography can progress securely through the secure DNS zone
  1664.    structure to the zone of interest as described in Section 6.3. Such
  1665.    trusted public keys would normally be configured in a manner similar
  1666.    to that described in Section 6.2.  However, as a practical matter, a
  1667.    security aware resolver would still gain some confidence in the
  1668.    results it returns even if it was not configured with any keys but
  1669.    trusted what it got from a local well known server as a starting
  1670.    point.
  1671.  
  1672.    Data stored at a security aware server needs to be internally
  1673.    categorized as Authenticated, Pending, or Insecure. There is also a
  1674.    fourth transient state of Bad which indicates that all SIG checks
  1675.    have explicitly failed on the data. Such Bad data is not retained at
  1676.    a security aware server. Authenticated means that the data has a
  1677.    valid SIG under a KEY traceable via a chain of zero or more SIG and
  1678.    KEY RRs to a KEY configured at the resolver via its boot file.
  1679.    Pending data has no authenticated SIGs and at least one additional
  1680.    SIG the resolver is still trying to authenticate.  Insecure data is
  1681.    data which it is known can never be either Authenticated or found Bad
  1682.    because it is in or has been reached via a non-secured zone. Behavior
  1683.    in terms of control of and flagging based on such data labels is
  1684.    described in Section 6.1.
  1685.  
  1686.    The proper validation of signatures requires a reasonably secure
  1687.    shared opinion of the absolute time between resolvers and servers as
  1688.    described in Section 6.4.
  1689.  
  1690. 6.1 The AD and CD Header Bits
  1691.  
  1692.    Two previously unused bits are allocated out of the DNS
  1693.    query/response format header. The AD (authentic data) bit indicates
  1694.    in a response that the data included has been verified by the server
  1695.    providing it.  The CD (checking disabled) bit indicates in a query
  1696.    that non-verified data is acceptable to the resolver sending the
  1697.    query.
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705. Eastlake & Kaufman          Standards Track                    [Page 30]
  1706.  
  1707.  
  1708. RFC 2065                DNS Security Extensions             January 1997
  1709.  
  1710.  
  1711.    These bits are allocated from the must-be-zero Z field as follows:
  1712.  
  1713.                                           1  1  1  1  1  1
  1714.             0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  1715.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1716.           |                      ID                       |
  1717.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1718.           |QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |
  1719.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1720.           |                    QDCOUNT                    |
  1721.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1722.           |                    ANCOUNT                    |
  1723.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1724.           |                    NSCOUNT                    |
  1725.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1726.           |                    ARCOUNT                    |
  1727.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1728.  
  1729.    These bits are zero in old servers and resolvers.  Thus the responses
  1730.    of old servers are not flagged as authenticated to security aware
  1731.    resolvers and queries from non-security aware resolvers do not assert
  1732.    the checking disabled bit and thus will be answered by security aware
  1733.    servers only with authenticated data. Aware resolvers MUST not trust
  1734.    the AD bit unless they trust the server they are talking to and
  1735.    either have a secure path to it or use DNS transaction security.
  1736.  
  1737.    Any security aware resolver willing to do cryptography SHOULD assert
  1738.    the CD bit on all queries to reduce DNS latency time by allowing
  1739.    security aware servers to answer before they have resolved the
  1740.    validity of data.
  1741.  
  1742.    Security aware servers NEVER return Bad data.  For non-security aware
  1743.    resolvers or security aware resolvers requesting service by having
  1744.    the CD bit clear, security aware servers MUST return only
  1745.    Authenticated or Insecure data with the AD bit set in the response.
  1746.    Security aware resolvers will know that if data is Insecure versus
  1747.    Authentic by the absence of SIG RRs.  Security aware servers MAY
  1748.    return Pending data to security aware resolvers requesting the
  1749.    service by clearing the AD bit in the response.  The AD bit MUST NOT
  1750.    be set on a response unless all of the RRs in the response are either
  1751.    Authenticated or Insecure.
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762. Eastlake & Kaufman          Standards Track                    [Page 31]
  1763.  
  1764.  
  1765. RFC 2065                DNS Security Extensions             January 1997
  1766.  
  1767.  
  1768. 6.2 Boot File Format
  1769.  
  1770.    Two boot file directives are added as described in this section.
  1771.  
  1772.    The format for a boot file directive to configure a starting zone key
  1773.    is as follows:
  1774.  
  1775.         pubkey name flags protocol algorithm key-data
  1776.  
  1777.    for a public key.  "name" is the owner name (if the line is
  1778.    translated into a KEY RR).  Flags indicates the type of key and is
  1779.    the same as the flag octet in the KEY RR.  Protocol and algorithm
  1780.    also have the same meaning as they do in the KEY RR.  The material
  1781.    after the algorithm is algorithm dependent and, for private
  1782.    algorithms (algorithm 254), starts with the algorithm's identifying
  1783.    OID and its length.  If the "no key" type value is set in flags or
  1784.    the algorithm is specified as 253, then the key-data after algorithm
  1785.    is null.  When present the key-data is treated as an octet stream and
  1786.    encoded in base 64 (see Appendix).
  1787.  
  1788.    A file of keys for cross certification or other purposes can be
  1789.    configured though the keyfile directive as follows:
  1790.  
  1791.         keyfile filename
  1792.  
  1793.    The file looks like a master file except that it can only contain KEY
  1794.    and SIG RRs with the SIGs signed under a key configured with the
  1795.    pubkey directive.
  1796.  
  1797.    While it might seem logical for everyone to start with the key for
  1798.    the root zone, this has problems.  The logistics of updating every
  1799.    DNS resolver in the world when the root key changes would be
  1800.    excessive.  It may be some time before there even is a root key.
  1801.    Furthermore, many organizations will explicitly wish their "interior"
  1802.    DNS implementations to completely trust only their own zone.  Such
  1803.    interior resolvers can then go through the organization's zone
  1804.    servers to access data outsize the organization's domain and should
  1805.    only be configured with the key forthe organization's DNS apex.
  1806.  
  1807. 6.3 Chaining Through Zones
  1808.  
  1809.    Starting with one or more trusted keys for a zone, it should be
  1810.    possible to retrieve signed keys for its subzones which have a key
  1811.    and, if the zone is not root, for its superzone. Every authoritative
  1812.    secure zone server MUST also include the KEY RR for a super-zone
  1813.    signed by the secure zone via a keyfile directive. This makes it
  1814.    possible to climb the tree of zones if one starts below root.  A
  1815.    secure sub-zone is indicated by a KEY RR with non-null key
  1816.  
  1817.  
  1818.  
  1819. Eastlake & Kaufman          Standards Track                    [Page 32]
  1820.  
  1821.  
  1822. RFC 2065                DNS Security Extensions             January 1997
  1823.  
  1824.  
  1825.    information appearing with the NS RRs for the sub-zone.  These make
  1826.    it possible to descend within the tree of zones.
  1827.  
  1828.    A resolver should keep track of the number of successive secure zones
  1829.    traversed from a starting point to any secure zone it can reach.  In
  1830.    general, the lower such a distance number is, the greater the
  1831.    confidence in the data.  Data configured via a boot file directive
  1832.    should be given a distance number of zero.  If a query encounters
  1833.    different data for the same query with different distance values,
  1834.    that with a larger value should be ignored.
  1835.  
  1836.    A security conscious resolver should completely refuse to step from a
  1837.    secure zone into a non-secure zone unless the non-secure zone is
  1838.    certified to be non-secure, or only experimentally secure, by the
  1839.    presence of an authenticated KEY RR for the non-secure zone with the
  1840.    no-key type value or the presence of a KEY RR with the experimental
  1841.    bit set.  Otherwise the resolver is getting bogus or spoofed data.
  1842.  
  1843.    If legitimate non-secure zones are encountered in traversing the DNS
  1844.    tree, then no zone can be trusted as secure that can be reached only
  1845.    via information from such non-secure zones. Since the non-secure zone
  1846.    data could have been spoofed, the "secure" zone reach via it could be
  1847.    counterfeit.  The "distance" to data in such zones or zones reached
  1848.    via such zones could be set to 512 or more as this exceeds the
  1849.    largest possible distance through secure zones in the DNS.
  1850.    Nevertheless, continuing to apply secure checks within "secure" zones
  1851.    reached via non-secure zones is a good practice and will, as a
  1852.    practical matter, provide some small increase in security.
  1853.  
  1854. 6.4 Secure Time
  1855.  
  1856.    Coordinated interpretation of the time fields in SIG RRs requires
  1857.    that reasonably consistent time be available to the hosts
  1858.    implementing the DNS security extensions.
  1859.  
  1860.    A variety of time synchronization protocols exist including the
  1861.    Network Time Protocol (NTP, RFC1305).  If such protocols are used,
  1862.    they MUST be used securely so that time can not be spoofed.
  1863.    Otherwise, for example, a host could get its clock turned back and
  1864.    might then believe old SIG and KEY RRs which were valid but no longer
  1865.    are.
  1866.  
  1867. 7. Operational Considerations
  1868.  
  1869.    This section discusses a variety of considerations in secure
  1870.    operation of the Domain Name System (DNS) using these protocol
  1871.    extensions.
  1872.  
  1873.  
  1874.  
  1875.  
  1876. Eastlake & Kaufman          Standards Track                    [Page 33]
  1877.  
  1878.  
  1879. RFC 2065                DNS Security Extensions             January 1997
  1880.  
  1881.  
  1882. 7.1 Key Size Considerations
  1883.  
  1884.    There are a number of factors that effect public key size choice for
  1885.    use in the DNS security extension.  Unfortunately, these factors
  1886.    usually do not all point in the same direction.  Choice of zone key
  1887.    size should generally be made by the zone administrator depending on
  1888.    their local conditions.
  1889.  
  1890.    For most schemes, larger keys are more secure but slower.  Given a
  1891.    small public exponent, verification (the most common operation) for
  1892.    the MD5/RSA algorithm will vary roughly with the square of the
  1893.    modulus length, signing will vary with the cube of the modulus
  1894.    length, and key generation (the least common operation) will vary
  1895.    with the fourth power of the modulus length.  The current best
  1896.    algorithms for factoring a modulus and breaking RSA security vary
  1897.    roughly with the 1.6 power of the modulus itself.  Thus going from a
  1898.    640 bit modulus to a 1280 bit modulus only increases the verification
  1899.    time by a factor of 4 but increases the work factor of breaking the
  1900.    key by over 2^900.  An upper bound of 2552 bits has been established
  1901.    for the MD5/RSA DNS security algorithm for interoperability purposes.
  1902.  
  1903.    However, larger keys increase the size of the KEY and SIG RRs.  This
  1904.    increases the chance of DNS UDP packet overflow and the possible
  1905.    necessity for using higher overhead TCP in responses.
  1906.  
  1907.    The recommended minimum RSA algorithm modulus size, 640 bits, is
  1908.    believed by the authors to be secure at this time but high level
  1909.    zones in the DNS tree may wish to set a higher minimum, perhaps 1000
  1910.    bits, for security reasons.  (Since the United States National
  1911.    Security Agency generally permits export of encryption systems using
  1912.    an RSA modulus of up to 512 bits, use of that small a modulus, i.e.
  1913.    n, must be considered weak.)
  1914.  
  1915.    For a key used only to secure data and not to secure other keys, 640
  1916.    bits should be adequate at this time.
  1917.  
  1918. 7.2 Key Storage
  1919.  
  1920.    It is recommended that zone private keys and the zone file master
  1921.    copy be kept and used in off-line non-network connected physically
  1922.    secure machines only.  Periodically an application can be run to add
  1923.    authentication to a zone by adding SIG and NXT RRs and adding no-key
  1924.    type KEY RRs for subzones where a real KEY RR is not provided. Then
  1925.    the augmented file can be transferred, perhaps by sneaker-net, to the
  1926.    networked zone primary server machine.
  1927.  
  1928.    The idea is to have a one way information flow to the network to
  1929.    avoid the possibility of tampering from the network.  Keeping the
  1930.  
  1931.  
  1932.  
  1933. Eastlake & Kaufman          Standards Track                    [Page 34]
  1934.  
  1935.  
  1936. RFC 2065                DNS Security Extensions             January 1997
  1937.  
  1938.  
  1939.    zone master file on-line on the network and simply cycling it through
  1940.    an off-line signer does not do this.  The on-line version could still
  1941.    be tampered with if the host it resides on is compromised.  For
  1942.    maximum security, the master copy of the zone file should be off net
  1943.    and should not be updated based on an unsecured network mediated
  1944.    communication.
  1945.  
  1946.    Note, however, that secure resolvers must be configured with some
  1947.    trusted on-line public key information (or a secure path to such a
  1948.    resolver) or they will be unable to authenticate.
  1949.  
  1950.    Non-zone private keys, such as host or user keys, generally have to
  1951.    be kept on line to be used for real-time purposes such as DNS
  1952.    transaction security, IPSEC session set-up, or secure mail.
  1953.  
  1954. 7.3 Key Generation
  1955.  
  1956.    Careful key generation is a sometimes overlooked but absolutely
  1957.    essential element in any cryptographically secure system.  The
  1958.    strongest algorithms used with the longest keys are still of no use
  1959.    if an adversary can guess enough to lower the size of the likely key
  1960.    space so that it can be exhaustively searched.  Suggestions will be
  1961.    found in RFC 1750.
  1962.  
  1963.    It is strongly recommended that key generation also occur off-line,
  1964.    perhaps on the machine used to sign zones (see Section 7.2).
  1965.  
  1966. 7.4 Key Lifetimes
  1967.  
  1968.    No key should be used forever.  The longer a key is in use, the
  1969.    greater the probability that it will have been compromised through
  1970.    carelessness, accident, espionage, or cryptanalysis.  Furthermore, if
  1971.    key rollover is a rare event, there is an increased risk that, when
  1972.    the time does come up change the key, no one at the site will
  1973.    remember how to do it or other problems will have developed in the
  1974.    procedures.
  1975.  
  1976.    While key lifetime is a matter of local policy, these considerations
  1977.    suggest that no zone key should have a lifetime significantly over
  1978.    four years.  A reasonable maximum lifetime for zone keys that are
  1979.    kept off-line and carefully guarded is 13 months with the intent that
  1980.    they be replaced every year.  A reasonable maximum lifetime for end
  1981.    entity and useer keys that are used for IP-security or the like and
  1982.    are kept on line is 36 days with the intent that they be replaced
  1983.    monthly or more often.  In some cases, an entity key lifetime of
  1984.    somewhat over a day may be reasonable.
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990. Eastlake & Kaufman          Standards Track                    [Page 35]
  1991.  
  1992.  
  1993. RFC 2065                DNS Security Extensions             January 1997
  1994.  
  1995.  
  1996. 7.5 Signature Lifetime
  1997.  
  1998.    Signature expiration times must be set far enough in the future that
  1999.    it is quite certain that new signatures can be generated before the
  2000.    old ones expire.  However, setting expiration too far into the future
  2001.    could, if bad data or signatures were ever generated, mean a long
  2002.    time to flush such badness.
  2003.  
  2004.    It is recommended that signature lifetime be a small multiple of the
  2005.    TTL but not less than a reasonable re-signing interval.
  2006.  
  2007. 7.6 Root
  2008.  
  2009.    It should be noted that in DNS the root is a zone unto itself.  Thus
  2010.    the root zone key should only be seen signing itself or signing RRs
  2011.    with names one level below root, such as .aq, .edu, or .arpa.
  2012.    Implementations MAY reject as bogus any purported root signature of
  2013.    records with a name more than one level below root.  The root zone
  2014.    contains the root KEY RR signed by a SIG RR under the root key
  2015.    itself.
  2016.  
  2017. 8. Conformance
  2018.  
  2019.    Levels of server and resolver conformance are defined.
  2020.  
  2021. 8.1 Server Conformance
  2022.  
  2023.    Two levels of server conformance are defined as follows:
  2024.  
  2025.       Minimal server compliance is the ability to store and retrieve
  2026.       (including zone transfer) SIG, KEY, and NXT RRs.  Any secondary,
  2027.       caching, or other server for a secure zone MUST be at least
  2028.       minimally compliant and even then some things, such as secure
  2029.       CNAMEs, will not work without full compliance.
  2030.  
  2031.    Full server compliance adds the following to basic compliance:
  2032.  
  2033.       (1) ability to read SIG, KEY, and NXT RRs in zone files and (2)
  2034.       ability, given a zone file and private key, to add appropriate SIG
  2035.       and NXT RRs, possibly via a separate application, (3) proper
  2036.       automatic inclusion of SIG, KEY, and NXT RRs in responses, (4)
  2037.       suppression of CNAME following on retrieval of the security type
  2038.       RRs, (5) recognize the CD query header bit and set the AD query
  2039.       header bit, as appropriate, and (6) proper handling of the two NXT
  2040.       RRs at delegation points.  Primary servers for secure zones MUST
  2041.       be fully compliant and for completely successful secure operation,
  2042.       all secondary, caching, and other servers handling the zone SHOULD
  2043.       be fully compliant as well.
  2044.  
  2045.  
  2046.  
  2047. Eastlake & Kaufman          Standards Track                    [Page 36]
  2048.  
  2049.  
  2050. RFC 2065                DNS Security Extensions             January 1997
  2051.  
  2052.  
  2053. 8.2 Resolver Conformance
  2054.  
  2055.    Two levels of resolver compliance are defined:
  2056.  
  2057.       A basic compliance resolver can handle SIG, KEY, and NXT RRs when
  2058.       they are explicitly requested.
  2059.  
  2060.       A fully compliant resolver (1) understands KEY, SIG, and NXT RRs,
  2061.       (2) maintains appropriate information in its local caches and
  2062.       database to indicate which RRs have been authenticated and to what
  2063.       extent they have been authenticated, (3) performs additional
  2064.       queries as necessary to attempt to obtain KEY, SIG, or NXT RRs
  2065.       from non-security aware servers, (4) normally sets the CD query
  2066.       header bit on its queries.
  2067.  
  2068. 9. Security Considerations
  2069.  
  2070.    This document describes technical details of extensions to the Domain
  2071.    Name System (DNS) protocol to provide data integrity and origin
  2072.    authentication, public key distribution, and optional transaction and
  2073.    request security.
  2074.  
  2075.    It should be noted that, at most, these extensions guarantee the
  2076.    validity of resource records, including KEY resource records,
  2077.    retrieved from the DNS.  They do not magically solve other security
  2078.    problems.  For example, using secure DNS you can have high confidence
  2079.    in the IP address you retrieve for a host name; however, this does
  2080.    not stop someone for substituting an unauthorized host at that
  2081.    address or capturing packets sent to that address and falsely
  2082.    responding with packets apparently from that address.  Any reasonably
  2083.    complete security system will require the protection of many
  2084.    additional facets of the Internet.
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104. Eastlake & Kaufman          Standards Track                    [Page 37]
  2105.  
  2106.  
  2107. RFC 2065                DNS Security Extensions             January 1997
  2108.  
  2109.  
  2110. References
  2111.  
  2112.    [NETSEC] -  Network Security: PRIVATE Communications in a PUBLIC
  2113.                World, Charlie Kaufman, Radia Perlman, & Mike Speciner,
  2114.                Prentice Hall Series in Computer Networking and
  2115.                Distributed Communications 1995.
  2116.  
  2117.    [PKCS1] -   PKCS #1: RSA Encryption Standard, RSA Data Security,
  2118.                Inc., 3 June 1991, Version 1.4.
  2119.  
  2120.    [RFC1032] - Stahl, M., "Domain Administrators Guide", RFC 1032,
  2121.                November 1987.
  2122.  
  2123.    [RFC1033] - Lottor, M., "Domain Administrators Operations Guide",
  2124.                RRFC 1033, November 1987.
  2125.  
  2126.    [RFC1034] - Mockapetris, P., "Domain Names - Concepts and
  2127.                Facilities", STD 13, RFC 1034, November 1987.
  2128.  
  2129.    [RFC1035] - Mockapetris, P., "Domain Names - Implementation and
  2130.                Specifications", STD 13, RFC 1035, November 1987.
  2131.  
  2132.    [RFC1305] - Mills, D., "Network Time Protocol (v3)", RFC 1305, March
  2133.                1992.
  2134.  
  2135.    [RFC1321] - Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
  2136.                April 1992.
  2137.  
  2138.    [RFC1530] - Malamud, C., and M. Rose, "Principles of Operation for
  2139.                the TPC.INT Subdomain: General Principles and Policy",
  2140.                RFC 1530, October 1993.
  2141.  
  2142.    [RFC1750] - Eastlake, D., Crocker, S., and J, Schiller, "Randomness
  2143.                Requirements for Security", RFC 1750, December 1994.
  2144.  
  2145.    [RFC1825] - Atkinson, R., "Security Architecture for the Internet
  2146.                Protocol", RFC 1825, August 1995.
  2147.  
  2148.    [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161. Eastlake & Kaufman          Standards Track                    [Page 38]
  2162.  
  2163.  
  2164. RFC 2065                DNS Security Extensions             January 1997
  2165.  
  2166.  
  2167. Authors' Addresses
  2168.  
  2169.    Donald E. Eastlake 3rd
  2170.    CyberCash, Inc.
  2171.    318 Acton Street
  2172.    Carlisle, MA 01741 USA
  2173.  
  2174.    Telephone:   +1 508-287-4877
  2175.                 +1 508-371-7148(fax)
  2176.                 +1 703-620-4200(main office, Reston, Virginia, USA)
  2177.    EMail:       dee@cybercash.com
  2178.  
  2179.  
  2180.    Charles W. Kaufman
  2181.    Iris Associates
  2182.    1 Technology Park Drive
  2183.    Westford, MA 01886 USA
  2184.  
  2185.    Telephone:   +1 508-392-5276
  2186.    EMail:       charlie_kaufman@iris.com
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218. Eastlake & Kaufman          Standards Track                    [Page 39]
  2219.  
  2220.  
  2221. RFC 2065                DNS Security Extensions             January 1997
  2222.  
  2223.  
  2224. Appendix: Base 64 Encoding
  2225.  
  2226.    The following encoding technique is taken from RFC 1521 by N.
  2227.    Borenstein and N. Freed.  It is reproduced here in an edited form for
  2228.    convenience.
  2229.  
  2230.    A 65-character subset of US-ASCII is used, enabling 6 bits to be
  2231.    represented per printable character. (The extra 65th character, "=",
  2232.    is used to signify a special processing function.)
  2233.  
  2234.    The encoding process represents 24-bit groups of input bits as output
  2235.    strings of 4 encoded characters. Proceeding from left to right, a
  2236.    24-bit input group is formed by concatenating 3 8-bit input groups.
  2237.    These 24 bits are then treated as 4 concatenated 6-bit groups, each
  2238.    of which is translated into a single digit in the base 64 alphabet.
  2239.  
  2240.    Each 6-bit group is used as an index into an array of 64 printable
  2241.    characters. The character referenced by the index is placed in the
  2242.    output string.
  2243.  
  2244.                        Table 1: The Base 64 Alphabet
  2245.  
  2246.       Value Encoding  Value Encoding  Value Encoding  Value Encoding
  2247.           0 A            17 R            34 i            51 z
  2248.           1 B            18 S            35 j            52 0
  2249.           2 C            19 T            36 k            53 1
  2250.           3 D            20 U            37 l            54 2
  2251.           4 E            21 V            38 m            55 3
  2252.           5 F            22 W            39 n            56 4
  2253.           6 G            23 X            40 o            57 5
  2254.           7 H            24 Y            41 p            58 6
  2255.           8 I            25 Z            42 q            59 7
  2256.           9 J            26 a            43 r            60 8
  2257.          10 K            27 b            44 s            61 9
  2258.          11 L            28 c            45 t            62 +
  2259.          12 M            29 d            46 u            63 /
  2260.          13 N            30 e            47 v
  2261.          14 O            31 f            48 w         (pad) =
  2262.          15 P            32 g            49 x
  2263.          16 Q            33 h            50 y
  2264.  
  2265.    Special processing is performed if fewer than 24 bits are available
  2266.    at the end of the data being encoded.  A full encoding quantum is
  2267.    always completed at the end of a quantity.  When fewer than 24 input
  2268.    bits are available in an input group, zero bits are added (on the
  2269.    right) to form an integral number of 6-bit groups.  Padding at the
  2270.    end of the data is performed using the '=' character.  Since all base
  2271.    64 input is an integral number of octets, only the following cases
  2272.  
  2273.  
  2274.  
  2275. Eastlake & Kaufman          Standards Track                    [Page 40]
  2276.  
  2277.  
  2278. RFC 2065                DNS Security Extensions             January 1997
  2279.  
  2280.  
  2281.    can arise: (1) the final quantum of encoding input is an integral
  2282.    multiple of 24 bits; here, the final unit of encoded output will be
  2283.    an integral multiple of 4 characters with no "=" padding, (2) the
  2284.    final quantum of encoding input is exactly 8 bits; here, the final
  2285.    unit of encoded output will be two characters followed by two "="
  2286.    padding characters, or (3) the final quantum of encoding input is
  2287.    exactly 16 bits; here, the final unit of encoded output will be three
  2288.    characters followed by one "=" padding character.
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332. Eastlake & Kaufman          Standards Track                    [Page 41]
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.