begining or any preceding request SIGs at the end. Such request SIGs
are included in the "data" used to form any optional response
transaction SIG.
WARNING: Request SIGs are unnecessary for currently defined queries
and will cause almost all existing DNS servers to completely ignore a
query. However, such SIGs may be needed to authenticate future DNS
secure dynamic update or other requests.
4.2 SIG RRs in the Construction of Responses
Security aware DNS servers MUST, for every authoritative RR the query
will return, attempt to send the available SIG RRs which authenticate
the requested RR. The following rules apply to the inclusion of SIG
RRs in responses:
1. when an RR set is placed in a response, its SIG RR has a higher
priority for inclusion than other additional RRs that may need to
be included. If space does not permit its inclusion, the response
MUST be considered truncated except as provided in 2 below.
2. when a SIG RR is present in the zone for an additional information
section RR, the response MUST NOT be considered truncated merely
because space does not permit the inclusion of its SIG RR.
3. SIGs to authenticate non-authoritative data (glue records and NS
RRs for subzones) are unnecessary and MUST NOT be sent. (Note
that KEYs for subzones are controlling in a superzone so the
superzone's signature on the KEY MUST be included (unless the KEY
was additional information and the SIG did not fit).)
4. If a SIG covers any RR that would be in the answer section of the
response, its automatic inclusion MUST be the answer section. If
it covers an RR that would appear in the authority section, its
automatic inclusion MUST be in the authority section. If it
covers an RR that would appear in the additional information
section it MUST appear in the additional information section.
This is a change in the existing standard which contemplates only
NS and SOA RRs in the authority section.
5. Optionally, DNS transactions may be authenticated by a SIG RR at
the end of the response in the additional information section
(Section 4.1.4). Such SIG RRs are signed by the DNS server
originating the response. Although the signer field MUST be the
name of the originating server host, the owner name, class, TTL,
and original TTL, are meaningless. The class and TTL fields
SHOULD be zero. To conserve space, the owner name SHOULD be root
(a single zero octet). If transaction authentication is desired,
that SIG RR must be considered higher priority for inclusion than
any other RR in the response.
4.3 Processing Responses and SIG RRs
The following rules apply to the processing of SIG RRs included in a
response:
1. a security aware resolver that receives a response from what it
believes to be a security aware server via a secure communication
with the AD bit (see Section 6.1) set, MAY choose to accept the
RRs as received without verifying the zone SIG RRs.
2. in other cases, a security aware resolver SHOULD verify the SIG
RRs for the RRs of interest. This may involve initiating
additional queries for SIG or KEY RRs, especially in the case of
getting a response from an insecure server. (As explained in 4.2
above, it will not be possible to secure CNAMEs being served up by
non-secure resolvers.)
NOTE: Implementers might expect the above SHOULD to be a MUST.
However, local policy or the calling application may not require
the security services.
3. If SIG RRs are received in response to a user query explicitly
specifying the SIG type, no special processing is required.
If the message does not pass reasonable checks or the SIG does not
check against the signed RRs, the SIG RR is invalid and should be
ignored. If all of the SIG RR(s) purporting to authenticate a set of
RRs are invalid, then the set of RR(s) is not authenticated.
If the SIG RR is the last RR in a response in the additional
information section and has a type covered of zero, it is a
transaction signature of the response and the query that produced the
response. It MAY be optionally checked and the message rejected if
the checks fail. But even if the checks succeed, such a transaction
authentication SIG does NOT authenticate any RRs in the message.
Only a proper SIG RR signed by the zone or a key tracing its
authority to the zone or to static resolver configuration can
authenticate RRs. If a resolver does not implement transaction
and/or request SIGs, it MUST ignore them without error.
If all reasonable checks indicate that the SIG RR is valid then RRs
verified by it should be considered authenticated.
4.4 Signature Expiration, TTLs, and Validity
Security aware servers must not consider SIG RRs to authenticate
anything after their expiration time and not consider any RR to be
authenticated after its signatures have expired. Within that
constraint, servers should continue to follow DNS TTL aging. Thus
authoritative servers should continue to follow the zone refresh and
expire parameters and a non-authoritative server should count down
the TTL and discard RRs when the TTL is zero. In addition, when RRs
are transmitted in a query response, the TTL should be trimmed so
that current time plus the TTL does not extend beyond the signature
expiration time. Thus, in general, the TTL on an transmitted RR
would be
min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL)))
4.5 File Representation of SIG RRs
A SIG RR can be represented as a single logical line in a zone data
file [RFC1033] but there are some special considerations as described
below. (It does not make sense to include a transaction or request
authenticating SIG RR in a file as they are a transient
authentication that covers data including an ephemeral transaction
number and so must be calculated in real time.)
There is no particular problem with the signer, covered type, and
times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY
is the year, the first MM is the month number (01-12), DD is the day
of the month (01-31), HH is the hour in 24 hours notation (00-23),
the second MM is the minute (00-59), and SS is the second (00-59).
The original TTL and algorithm fields appear as unsigned integers.
If the original TTL, which applies to the type signed, is the same as
the TTL of the SIG RR itself, it may be omitted. The date field
which follows it is larger than the maximum possible TTL so there is
no ambiguity.
The "labels" field does not appear in the file representation as it
can be calculated from the owner name.
The key footprint appears as an unsigned decimal number.
However, the signature itself can be very long. It is the last data
field and is represented in base 64 (see Appendix) and may be divided
up into any number of white space separated substrings, down to
single base 64 digits, which are concatenated to obtain the full
signature. These substrings can be split between lines using the
standard parenthesis.
5. Non-existent Names and Types
The SIG RR mechanism described in Section 4 above provides strong
authentication of RRs that exist in a zone. But is it not clear
above how to authenticatably deny the existence of a name in a zone
or a type for an existent name.
The nonexistence of a name in a zone is indicated by the NXT ("next")
RR for a name interval containing the nonexistent name. A NXT RR and
its SIG are returned in the authority section, along with the error,
if the server is security aware. The same is true for a non-existent
type under an existing name. This is a change in the existing
standard which contemplates only NS and SOA RRs in the authority
section. NXT RRs will also be returned if an explicit query is made
for the NXT type.
The existence of a complete set of NXT records in a zone means that
any query for any name and any type to a security aware server
serving the zone will always result in an reply containing at least
one signed RR.
NXT RRs do not appear in zone master files since they can be derived
from the rest of the zone.
5.1 The NXT Resource Record
The NXT resource record is used to securely indicate that RRs with an
owner name in a certain name interval do not exist in a zone and to
indicate what zone signed RR types are present for an existing name.
The owner name of the NXT RR is an existing name in the zone. It's
RDATA is a "next" name and a type bit map. The presence of the NXT RR
means that generally no name between its owner name and the name in
its RDATA area exists and that no other zone signed types exist under
its owner name. This implies a canonical ordering of all domain
names in a zone.
The ordering is to sort labels as unsigned left justified octet
strings where the absence of a octet sorts before a zero value octet
and upper case letters are treated as lower case letters. Names are
then sorted by sorting on the highest level label and then, within
those names with the same highest level label by the next lower
label, etc. down to leaf node labels. Since we are talking about a
zone, the zone name itself always exists and all other names are the
zone name with some prefix of lower level labels. Thus the zone name
itself always sorts first.
There is a potential problem with the last NXT in a zone as it wants
to have an owner name which is the last existing name in canonical
order, which is easy, but it is not obvious what name to put in its
RDATA to indicate the entire remainder of the name space. This is
handled by treating the name space as circular and putting the zone
name in the RDATA of the last NXT in a zone.
There are special considerations due to interaction with wildcards as
explained below.
The NXT RRs for a zone SHOULD be automatically calculated and added
to the zone by the same recommended off-line process that signs the
zone (see Section 7.2). The NXT RR's TTL SHOULD not exceed the zone
minimum TTL.
5.2 NXT RDATA Format
The RDATA for an NXT RR consists simply of a domain name followed by
a bit map.
The type number for the NXT RR is 30.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| next domain name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type bit map /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The NXT RR type bit map is one bit per RR type present for the owner
name similar to the WKS socket bit map. The first bit represents RR
type zero (an illegal type which should not be present.) A one bit
indicates that at least one RR of that type is present for the owner
name. A zero indicates that no such RR is present. All bits not
specified because they are beyond the end of the bit map are assumed
to be zero. Note that bit 30, for NXT, will always be on so the
minimum bit map length is actually four octets. The NXT bit map
should be printed as a list of RR type mnemonics or decimal numbers
similar to the WKS RR.
The domain name may be compressed with standard DNS name compression
when being transmitted over the network. The size of the bit map can
be inferred from the RDLENGTH and the length of the next domain name.
5.3 Example
Assume zone foo.tld has entries for
big.foo.tld,
medium.foo.tld.
small.foo.tld.
tiny.foo.tld.
Then a query to a security aware server for huge.foo.tld would
produce an error reply with the authority section data including
something like the following:
big.foo.tld. NXT medium.foo.tld. A MX SIG NXT
big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3
19960102030405 ;signature expiration
19951211100908 ;time signed
21435 ;key footprint
foo.tld. ;signer
MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU
1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits)
)
Note that this response implies that big.foo.tld is an existing name
in the zone and thus has other RR types associated with it than NXT.
However, only the NXT (and its SIG) RR appear in the response to this
query for huge.foo.tld, which is a non-existent name.
5.4 Interaction of NXT RRs and Wildcard RRs
Since, in some sense, a wildcard RR causes all possible names in an
interval to exist, there should not be an NXT RR that would cover any
part of this interval. Thus if *.X.ZONE exists you would expect an
NXT RR that ends at X.ZONE and one that starts with the last name
covered by *.X.ZONE. However, this "last name covered" is something
very ugly and long like \255\255\255....X.zone. So the NXT for the
interval following is simply given the owner name *.X.ZONE and an
RDATA of the next name after the wildcard. This "*" type owner name
is not expanded when the NXT is returned as authority information in
connection with a query for a non-existent name.
If there could be any wildcard RRs in a zone and thus wildcard NXTs,
care must be taken in interpreting the results of explicit NXT
retrievals as the owner name may be a wildcard expansion.
The existence of one or more wildcard RRs covering a name interval
makes it possible for a malicious server to hide any more
specifically named RRs in the internal. The server can just falsely
return the wildcard match NXT instead of the more specifically named
RRs. If there is a zone wide wildcard, there will be an NXT RR whose
owner name is the wild card and whose RDATA is the zone name. In this
case a server could conceal the existence of any more specific RRs in
the zone. It would be possible to design a more strict NXT feature
which would eliminate this possibility. But it would be more complex
and might be so constraining as to make any dynamic update feature
very difficult.
5.5 Blocking NXT Pseudo-Zone Transfers
In a secure zone, a resolver can query for the initial NXT associated
with the zone name. Using the next domain name RDATA field from that
RR, it can query for the next NXT RR. By repeating this, it can walk
through all the NXTs in the zone. If there are no wildcards, it can
use this technique to find all names in a zone. If it does type ANY
queries, it can incrementally get all information in the zone and
thus defeat attempts to administratively block zone transfers.
If there are any wildcards, this NXT walking technique will not find
any more specific RR names in the part of the name space the wildcard
covers. By doing explicit retrievals for wildcard names, a resolver
could determine what intervals are covered by wildcards but still
could not, with these techniques, find any names inside such
intervals except by trying every name.
If it is desired to block NXT walking, the recommended method is to
add a zone wide wildcard of the KEY type with the no-key type value
and with no type (zone, entity, or user) bit on. This will cause
there to be one zone covering NXT RR and leak no information about
what real names exist in the zone. This protection from pseudo-zone
transfers is bought at the expense of eliminating the data origin
authentication of the non-existence of names that NXT RRs can
provide. If an entire zone is covered by a wildcard, a malicious
server can return an RR produced by matching the resulting wildcard
NXT and can thus hide all the real data and delegations in the zone
that have more specific names.
5.6 Special Considerations at Delegation Points
A name (other than root) which is the head of a zone also appears as
the leaf in a superzone. If both are secure, there will always be
two different NXT RRs with the same name. They can be distinguished
by their signers and next domain name fields. Security aware servers
should return the correct NXT automatically when required to
authenticate the non-existence of a name and both NXTs, if available,
on explicit query for type NXT.
Insecure servers will never automatically return an NXT and some
implementations may only return the NXT from the subzone on explicit
queries.
6. The AD and CD Bits and How to Resolve Securely
Retrieving or resolving authentic data from the Domain Name System
(DNS) involves starting with one or more trusted public keys for one
or more zones. With trusted keys, a resolver willing to perform
cryptography can progress securely through the secure DNS zone
structure to the zone of interest as described in Section 6.3. Such
trusted public keys would normally be configured in a manner similar
to that described in Section 6.2. However, as a practical matter, a
security aware resolver would still gain some confidence in the
results it returns even if it was not configured with any keys but
trusted what it got from a local well known server as a starting
point.
Data stored at a security aware server needs to be internally
categorized as Authenticated, Pending, or Insecure. There is also a
fourth transient state of Bad which indicates that all SIG checks
have explicitly failed on the data. Such Bad data is not retained at
a security aware server. Authenticated means that the data has a
valid SIG under a KEY traceable via a chain of zero or more SIG and
KEY RRs to a KEY configured at the resolver via its boot file.
Pending data has no authenticated SIGs and at least one additional
SIG the resolver is still trying to authenticate. Insecure data is
data which it is known can never be either Authenticated or found Bad
because it is in or has been reached via a non-secured zone. Behavior
in terms of control of and flagging based on such data labels is
described in Section 6.1.
The proper validation of signatures requires a reasonably secure
shared opinion of the absolute time between resolvers and servers as
described in Section 6.4.
6.1 The AD and CD Header Bits
Two previously unused bits are allocated out of the DNS
query/response format header. The AD (authentic data) bit indicates
in a response that the data included has been verified by the server
providing it. The CD (checking disabled) bit indicates in a query
that non-verified data is acceptable to the resolver sending the
query.
These bits are allocated from the must-be-zero Z field as follows:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
These bits are zero in old servers and resolvers. Thus the responses
of old servers are not flagged as authenticated to security aware
resolvers and queries from non-security aware resolvers do not assert
the checking disabled bit and thus will be answered by security aware
servers only with authenticated data. Aware resolvers MUST not trust
the AD bit unless they trust the server they are talking to and
either have a secure path to it or use DNS transaction security.
Any security aware resolver willing to do cryptography SHOULD assert
the CD bit on all queries to reduce DNS latency time by allowing
security aware servers to answer before they have resolved the
validity of data.
Security aware servers NEVER return Bad data. For non-security aware
resolvers or security aware resolvers requesting service by having
the CD bit clear, security aware servers MUST return only
Authenticated or Insecure data with the AD bit set in the response.
Security aware resolvers will know that if data is Insecure versus
Authentic by the absence of SIG RRs. Security aware servers MAY
return Pending data to security aware resolvers requesting the
service by clearing the AD bit in the response. The AD bit MUST NOT
be set on a response unless all of the RRs in the response are either
Authenticated or Insecure.
6.2 Boot File Format
Two boot file directives are added as described in this section.
The format for a boot file directive to configure a starting zone key
is as follows:
pubkey name flags protocol algorithm key-data
for a public key. "name" is the owner name (if the line is
translated into a KEY RR). Flags indicates the type of key and is
the same as the flag octet in the KEY RR. Protocol and algorithm
also have the same meaning as they do in the KEY RR. The material
after the algorithm is algorithm dependent and, for private
algorithms (algorithm 254), starts with the algorithm's identifying
OID and its length. If the "no key" type value is set in flags or
the algorithm is specified as 253, then the key-data after algorithm
is null. When present the key-data is treated as an octet stream and
encoded in base 64 (see Appendix).
A file of keys for cross certification or other purposes can be
configured though the keyfile directive as follows:
keyfile filename
The file looks like a master file except that it can only contain KEY
and SIG RRs with the SIGs signed under a key configured with the
pubkey directive.
While it might seem logical for everyone to start with the key for
the root zone, this has problems. The logistics of updating every
DNS resolver in the world when the root key changes would be
excessive. It may be some time before there even is a root key.
Furthermore, many organizations will explicitly wish their "interior"
DNS implementations to completely trust only their own zone. Such
interior resolvers can then go through the organization's zone
servers to access data outsize the organization's domain and should
only be configured with the key forthe organization's DNS apex.
6.3 Chaining Through Zones
Starting with one or more trusted keys for a zone, it should be
possible to retrieve signed keys for its subzones which have a key
and, if the zone is not root, for its superzone. Every authoritative
secure zone server MUST also include the KEY RR for a super-zone
signed by the secure zone via a keyfile directive. This makes it
possible to climb the tree of zones if one starts below root. A
secure sub-zone is indicated by a KEY RR with non-null key
information appearing with the NS RRs for the sub-zone. These make
it possible to descend within the tree of zones.
A resolver should keep track of the number of successive secure zones
traversed from a starting point to any secure zone it can reach. In
general, the lower such a distance number is, the greater the
confidence in the data. Data configured via a boot file directive
should be given a distance number of zero. If a query encounters
different data for the same query with different distance values,
that with a larger value should be ignored.
A security conscious resolver should completely refuse to step from a
secure zone into a non-secure zone unless the non-secure zone is
certified to be non-secure, or only experimentally secure, by the
presence of an authenticated KEY RR for the non-secure zone with the
no-key type value or the presence of a KEY RR with the experimental
bit set. Otherwise the resolver is getting bogus or spoofed data.
If legitimate non-secure zones are encountered in traversing the DNS
tree, then no zone can be trusted as secure that can be reached only
via information from such non-secure zones. Since the non-secure zone
data could have been spoofed, the "secure" zone reach via it could be
counterfeit. The "distance" to data in such zones or zones reached
via such zones could be set to 512 or more as this exceeds the
largest possible distance through secure zones in the DNS.
Nevertheless, continuing to apply secure checks within "secure" zones
reached via non-secure zones is a good practice and will, as a
practical matter, provide some small increase in security.
6.4 Secure Time
Coordinated interpretation of the time fields in SIG RRs requires
that reasonably consistent time be available to the hosts
implementing the DNS security extensions.
A variety of time synchronization protocols exist including the
Network Time Protocol (NTP, RFC1305). If such protocols are used,
they MUST be used securely so that time can not be spoofed.
Otherwise, for example, a host could get its clock turned back and
might then believe old SIG and KEY RRs which were valid but no longer
are.
7. Operational Considerations
This section discusses a variety of considerations in secure
operation of the Domain Name System (DNS) using these protocol
extensions.
7.1 Key Size Considerations
There are a number of factors that effect public key size choice for
use in the DNS security extension. Unfortunately, these factors
usually do not all point in the same direction. Choice of zone key
size should generally be made by the zone administrator depending on
their local conditions.
For most schemes, larger keys are more secure but slower. Given a
small public exponent, verification (the most common operation) for
the MD5/RSA algorithm will vary roughly with the square of the
modulus length, signing will vary with the cube of the modulus
length, and key generation (the least common operation) will vary
with the fourth power of the modulus length. The current best
algorithms for factoring a modulus and breaking RSA security vary
roughly with the 1.6 power of the modulus itself. Thus going from a
640 bit modulus to a 1280 bit modulus only increases the verification
time by a factor of 4 but increases the work factor of breaking the
key by over 2^900. An upper bound of 2552 bits has been established
for the MD5/RSA DNS security algorithm for interoperability purposes.
However, larger keys increase the size of the KEY and SIG RRs. This
increases the chance of DNS UDP packet overflow and the possible
necessity for using higher overhead TCP in responses.
The recommended minimum RSA algorithm modulus size, 640 bits, is
believed by the authors to be secure at this time but high level
zones in the DNS tree may wish to set a higher minimum, perhaps 1000
bits, for security reasons. (Since the United States National
Security Agency generally permits export of encryption systems using
an RSA modulus of up to 512 bits, use of that small a modulus, i.e.
n, must be considered weak.)
For a key used only to secure data and not to secure other keys, 640
bits should be adequate at this time.
7.2 Key Storage
It is recommended that zone private keys and the zone file master
copy be kept and used in off-line non-network connected physically
secure machines only. Periodically an application can be run to add
authentication to a zone by adding SIG and NXT RRs and adding no-key
type KEY RRs for subzones where a real KEY RR is not provided. Then
the augmented file can be transferred, perhaps by sneaker-net, to the
networked zone primary server machine.
The idea is to have a one way information flow to the network to
avoid the possibility of tampering from the network. Keeping the
zone master file on-line on the network and simply cycling it through
an off-line signer does not do this. The on-line version could still
be tampered with if the host it resides on is compromised. For
maximum security, the master copy of the zone file should be off net
and should not be updated based on an unsecured network mediated
communication.
Note, however, that secure resolvers must be configured with some
trusted on-line public key information (or a secure path to such a
resolver) or they will be unable to authenticate.
Non-zone private keys, such as host or user keys, generally have to
be kept on line to be used for real-time purposes such as DNS
transaction security, IPSEC session set-up, or secure mail.
7.3 Key Generation
Careful key generation is a sometimes overlooked but absolutely
essential element in any cryptographically secure system. The
strongest algorithms used with the longest keys are still of no use
if an adversary can guess enough to lower the size of the likely key
space so that it can be exhaustively searched. Suggestions will be
found in RFC1750.
It is strongly recommended that key generation also occur off-line,
perhaps on the machine used to sign zones (see Section 7.2).
7.4 Key Lifetimes
No key should be used forever. The longer a key is in use, the
greater the probability that it will have been compromised through
carelessness, accident, espionage, or cryptanalysis. Furthermore, if
key rollover is a rare event, there is an increased risk that, when
the time does come up change the key, no one at the site will
remember how to do it or other problems will have developed in the
procedures.
While key lifetime is a matter of local policy, these considerations
suggest that no zone key should have a lifetime significantly over
four years. A reasonable maximum lifetime for zone keys that are
kept off-line and carefully guarded is 13 months with the intent that
they be replaced every year. A reasonable maximum lifetime for end
entity and useer keys that are used for IP-security or the like and
are kept on line is 36 days with the intent that they be replaced
monthly or more often. In some cases, an entity key lifetime of
somewhat over a day may be reasonable.
7.5 Signature Lifetime
Signature expiration times must be set far enough in the future that
it is quite certain that new signatures can be generated before the
old ones expire. However, setting expiration too far into the future
could, if bad data or signatures were ever generated, mean a long
time to flush such badness.
It is recommended that signature lifetime be a small multiple of the
TTL but not less than a reasonable re-signing interval.
7.6 Root
It should be noted that in DNS the root is a zone unto itself. Thus
the root zone key should only be seen signing itself or signing RRs
with names one level below root, such as .aq, .edu, or .arpa.
Implementations MAY reject as bogus any purported root signature of
records with a name more than one level below root. The root zone
contains the root KEY RR signed by a SIG RR under the root key
itself.
8. Conformance
Levels of server and resolver conformance are defined.
8.1 Server Conformance
Two levels of server conformance are defined as follows:
Minimal server compliance is the ability to store and retrieve
(including zone transfer) SIG, KEY, and NXT RRs. Any secondary,
caching, or other server for a secure zone MUST be at least
minimally compliant and even then some things, such as secure
CNAMEs, will not work without full compliance.
Full server compliance adds the following to basic compliance:
(1) ability to read SIG, KEY, and NXT RRs in zone files and (2)
ability, given a zone file and private key, to add appropriate SIG
and NXT RRs, possibly via a separate application, (3) proper
automatic inclusion of SIG, KEY, and NXT RRs in responses, (4)
suppression of CNAME following on retrieval of the security type
RRs, (5) recognize the CD query header bit and set the AD query
header bit, as appropriate, and (6) proper handling of the two NXT
RRs at delegation points. Primary servers for secure zones MUST
be fully compliant and for completely successful secure operation,
all secondary, caching, and other servers handling the zone SHOULD
be fully compliant as well.
8.2 Resolver Conformance
Two levels of resolver compliance are defined:
A basic compliance resolver can handle SIG, KEY, and NXT RRs when
they are explicitly requested.
A fully compliant resolver (1) understands KEY, SIG, and NXT RRs,
(2) maintains appropriate information in its local caches and
database to indicate which RRs have been authenticated and to what
extent they have been authenticated, (3) performs additional
queries as necessary to attempt to obtain KEY, SIG, or NXT RRs
from non-security aware servers, (4) normally sets the CD query
header bit on its queries.
9. Security Considerations
This document describes technical details of extensions to the Domain
Name System (DNS) protocol to provide data integrity and origin
authentication, public key distribution, and optional transaction and
request security.
It should be noted that, at most, these extensions guarantee the
validity of resource records, including KEY resource records,
retrieved from the DNS. They do not magically solve other security
problems. For example, using secure DNS you can have high confidence
in the IP address you retrieve for a host name; however, this does
not stop someone for substituting an unauthorized host at that
address or capturing packets sent to that address and falsely
responding with packets apparently from that address. Any reasonably
complete security system will require the protection of many
additional facets of the Internet.
References
[NETSEC] - Network Security: PRIVATE Communications in a PUBLIC
World, Charlie Kaufman, Radia Perlman, & Mike Speciner,
Prentice Hall Series in Computer Networking and
Distributed Communications 1995.
[PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security,
Inc., 3 June 1991, Version 1.4.
[RFC1032] - Stahl, M., "Domain Administrators Guide", RFC1032,
November 1987.
[RFC1033] - Lottor, M., "Domain Administrators Operations Guide",
RRFC1033, November 1987.
[RFC1034] - Mockapetris, P., "Domain Names - Concepts and
Facilities", STD 13, RFC1034, November 1987.
[RFC1035] - Mockapetris, P., "Domain Names - Implementation and
Specifications", STD 13, RFC1035, November 1987.
[RFC1305] - Mills, D., "Network Time Protocol (v3)", RFC1305, March
1992.
[RFC1321] - Rivest, R., "The MD5 Message-Digest Algorithm", RFC1321,
April 1992.
[RFC1530] - Malamud, C., and M. Rose, "Principles of Operation for
the TPC.INT Subdomain: General Principles and Policy",
RFC1530, October 1993.
[RFC1750] - Eastlake, D., Crocker, S., and J, Schiller, "Randomness
Requirements for Security", RFC1750, December 1994.
[RFC1825] - Atkinson, R., "Security Architecture for the Internet
Protocol", RFC1825, August 1995.
[RSA FAQ] - RSADSI Frequently Asked Questions periodic posting.
Authors' Addresses
Donald E. Eastlake 3rd
CyberCash, Inc.
318 Acton Street
Carlisle, MA 01741 USA
Telephone: +1 508-287-4877
+1 508-371-7148(fax)
+1 703-620-4200(main office, Reston, Virginia, USA)
EMail: dee@cybercash.com
Charles W. Kaufman
Iris Associates
1 Technology Park Drive
Westford, MA 01886 USA
Telephone: +1 508-392-5276
EMail: charlie_kaufman@iris.com
Appendix: Base 64 Encoding
The following encoding technique is taken from RFC1521 by N.
Borenstein and N. Freed. It is reproduced here in an edited form for
convenience.
A 65-character subset of US-ASCII is used, enabling 6 bits to be
represented per printable character. (The extra 65th character, "=",
is used to signify a special processing function.)
The encoding process represents 24-bit groups of input bits as output
strings of 4 encoded characters. Proceeding from left to right, a
24-bit input group is formed by concatenating 3 8-bit input groups.
These 24 bits are then treated as 4 concatenated 6-bit groups, each
of which is translated into a single digit in the base 64 alphabet.
Each 6-bit group is used as an index into an array of 64 printable
characters. The character referenced by the index is placed in the
output string.
Table 1: The Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
Special processing is performed if fewer than 24 bits are available
at the end of the data being encoded. A full encoding quantum is
always completed at the end of a quantity. When fewer than 24 input
bits are available in an input group, zero bits are added (on the
right) to form an integral number of 6-bit groups. Padding at the
end of the data is performed using the '=' character. Since all base
64 input is an integral number of octets, only the following cases
can arise: (1) the final quantum of encoding input is an integral
multiple of 24 bits; here, the final unit of encoded output will be
an integral multiple of 4 characters with no "=" padding, (2) the
final quantum of encoding input is exactly 8 bits; here, the final
unit of encoded output will be two characters followed by two "="
padding characters, or (3) the final quantum of encoding input is
exactly 16 bits; here, the final unit of encoded output will be three
characters followed by one "=" padding character.