mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
4367: What's in a Name: False Assumptions about DNS Names
This commit is contained in:
parent
1ea735360f
commit
85f5fe1a72
@ -104,3 +104,4 @@
|
||||
4193: Unique Local IPv6 Unicast Addresses
|
||||
4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
|
||||
4343: Domain Name System (DNS) Case Insensitivity Clarification
|
||||
4367: What's in a Name: False Assumptions about DNS Names
|
||||
|
955
doc/rfc/rfc4367.txt
Normal file
955
doc/rfc/rfc4367.txt
Normal file
@ -0,0 +1,955 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group J. Rosenberg, Ed.
|
||||
Request for Comments: 4367 IAB
|
||||
Category: Informational February 2006
|
||||
|
||||
|
||||
What's in a Name: False Assumptions about DNS Names
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This memo provides information for the Internet community. It does
|
||||
not specify an Internet standard of any kind. Distribution of this
|
||||
memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2006).
|
||||
|
||||
Abstract
|
||||
|
||||
The Domain Name System (DNS) provides an essential service on the
|
||||
Internet, mapping structured names to a variety of data, usually IP
|
||||
addresses. These names appear in email addresses, Uniform Resource
|
||||
Identifiers (URIs), and other application-layer identifiers that are
|
||||
often rendered to human users. Because of this, there has been a
|
||||
strong demand to acquire names that have significance to people,
|
||||
through equivalence to registered trademarks, company names, types of
|
||||
services, and so on. There is a danger in this trend; the humans and
|
||||
automata that consume and use such names will associate specific
|
||||
semantics with some names and thereby make assumptions about the
|
||||
services that are, or should be, provided by the hosts associated
|
||||
with the names. Those assumptions can often be false, resulting in a
|
||||
variety of failure conditions. This document discusses this problem
|
||||
in more detail and makes recommendations on how it can be avoided.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 1]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction ....................................................2
|
||||
2. Target Audience .................................................4
|
||||
3. Modeling Usage of the DNS .......................................4
|
||||
4. Possible Assumptions ............................................5
|
||||
4.1. By the User ................................................5
|
||||
4.2. By the Client ..............................................6
|
||||
4.3. By the Server ..............................................7
|
||||
5. Consequences of False Assumptions ...............................8
|
||||
6. Reasons Why the Assumptions Can Be False ........................9
|
||||
6.1. Evolution ..................................................9
|
||||
6.2. Leakage ...................................................10
|
||||
6.3. Sub-Delegation ............................................10
|
||||
6.4. Mobility ..................................................12
|
||||
6.5. Human Error ...............................................12
|
||||
7. Recommendations ................................................12
|
||||
8. A Note on RFC 2219 and RFC 2782 ................................13
|
||||
9. Security Considerations ........................................14
|
||||
10. Acknowledgements ..............................................14
|
||||
11. IAB Members ...................................................14
|
||||
12. Informative References ........................................15
|
||||
|
||||
1. Introduction
|
||||
|
||||
The Domain Name System (DNS) [1] provides an essential service on the
|
||||
Internet, mapping structured names to a variety of different types of
|
||||
data. Most often it is used to obtain the IP address of a host
|
||||
associated with that name [2] [1] [3]. However, it can be used to
|
||||
obtain other information, and proposals have been made for nearly
|
||||
everything, including geographic information [4].
|
||||
|
||||
Domain names are most often used in identifiers used by application
|
||||
protocols. The most well known include email addresses and URIs,
|
||||
such as the HTTP URL [5], Real Time Streaming Protocol (RTSP) URL
|
||||
[6], and SIP URI [7]. These identifiers are ubiquitous, appearing on
|
||||
business cards, web pages, street signs, and so on. Because of this,
|
||||
there has been a strong demand to acquire domain names that have
|
||||
significance to people through equivalence to registered trademarks,
|
||||
company names, types of services, and so on. Such identifiers serve
|
||||
many business purposes, including extension of brand, advertising,
|
||||
and so on.
|
||||
|
||||
People often make assumptions about the type of service that is or
|
||||
should be provided by a host associated with that name, based on
|
||||
their expectations and understanding of what the name implies. This,
|
||||
in turn, triggers attempts by organizations to register domain names
|
||||
based on that presumed user expectation. Examples of this are the
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 2]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
various proposals for a Top-Level Domain (TLD) that could be
|
||||
associated with adult content [8], the requests for creation of TLDs
|
||||
associated with mobile devices and services, and even phishing
|
||||
attacks.
|
||||
|
||||
When these assumptions are codified into the behavior of an
|
||||
automaton, such as an application client or server, as a result of
|
||||
implementor choice, management directive, or domain owner policy, the
|
||||
overall system can fail in various ways. This document describes a
|
||||
number of typical ways in which these assumptions can be codified,
|
||||
how they can be wrong, the consequences of those mistakes, and the
|
||||
recommended ways in which they can be avoided.
|
||||
|
||||
Section 4 describes some of the possible assumptions that clients,
|
||||
servers, and people can make about a domain name. In this context,
|
||||
an "assumption" is defined as any behavior that is expected when
|
||||
accessing a service at a domain name, even though the behavior is not
|
||||
explicitly codified in protocol specifications. Frequently, these
|
||||
assumptions involve ignoring parts of a specification based on an
|
||||
assumption that the client or server is deployed in an environment
|
||||
that is more rigid than the specification allows. Section 5
|
||||
overviews some of the consequences of these false assumptions.
|
||||
Generally speaking, these consequences can include a variety of
|
||||
different interoperability failures, user experience failures, and
|
||||
system failures. Section 6 discusses why these assumptions can be
|
||||
false from the very beginning or become false at some point in the
|
||||
future. Most commonly, they become false because the environment
|
||||
changes in unexpected ways over time, and what was a valid assumption
|
||||
before, no longer is. Other times, the assumptions prove wrong
|
||||
because they were based on the belief that a specific community of
|
||||
clients and servers was participating, and an element outside of that
|
||||
community began participating.
|
||||
|
||||
Section 7 then provides some recommendations. These recommendations
|
||||
encapsulate some of the engineering mantras that have been at the
|
||||
root of Internet protocol design for decades. These include:
|
||||
|
||||
Follow the specifications.
|
||||
|
||||
Use the capability negotiation techniques provided in the
|
||||
protocols.
|
||||
|
||||
Be liberal in what you accept, and conservative in what you send.
|
||||
[18]
|
||||
|
||||
Overall, automata should not change their behavior within a protocol
|
||||
based on the domain name, or some component of the domain name, of
|
||||
the host they are communicating with.
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 3]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
2. Target Audience
|
||||
|
||||
This document has several audiences. Firstly, it is aimed at
|
||||
implementors who ultimately develop the software that make the false
|
||||
assumptions that are the subject of this document. The
|
||||
recommendations described here are meant to reinforce the engineering
|
||||
guidelines that are often understood by implementors, but frequently
|
||||
forgotten as deadlines near and pressures mount.
|
||||
|
||||
The document is also aimed at technology managers, who often develop
|
||||
the requirements that lead to these false assumptions. For them,
|
||||
this document serves as a vehicle for emphasizing the importance of
|
||||
not taking shortcuts in the scope of applicability of a project.
|
||||
|
||||
Finally, this document is aimed at domain name policy makers and
|
||||
administrators. For them, it points out the perils in establishing
|
||||
domain policies that get codified into the operation of applications
|
||||
running within that domain.
|
||||
|
||||
3. Modeling Usage of the DNS
|
||||
|
||||
|
||||
+--------+
|
||||
| |
|
||||
| |
|
||||
| DNS |
|
||||
|Service |
|
||||
| |
|
||||
+--------+
|
||||
^ |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
/--\ | |
|
||||
| | | V
|
||||
| | +--------+ +--------+
|
||||
\--/ | | | |
|
||||
| | | | |
|
||||
---+--- | Client |-------------------->| Server |
|
||||
| | | | |
|
||||
| | | | |
|
||||
/\ +--------+ +--------+
|
||||
/ \
|
||||
/ \
|
||||
|
||||
User
|
||||
Figure 1
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 4]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Figure 1 shows a simple conceptual model of how the DNS is used by
|
||||
applications. A user of the application obtains an identifier for
|
||||
particular content or service it wishes to obtain. This identifier
|
||||
is often a URL or URI that contains a domain name. The user enters
|
||||
this identifier into its client application (for example, by typing
|
||||
in the URL in a web browser window). The client is the automaton (a
|
||||
software and/or hardware system) that contacts a server for that
|
||||
application in order to provide service to the user. To do that, it
|
||||
contacts a DNS server to resolve the domain name in the identifier to
|
||||
an IP address. It then contacts the server at that IP address. This
|
||||
simple model applies to application protocols such as HTTP [5], SIP
|
||||
[7], RTSP [6], and SMTP [9].
|
||||
|
||||
>From this model, it is clear that three entities in the system can
|
||||
potentially make false assumptions about the service provided by the
|
||||
server. The human user may form expectations relating to the content
|
||||
of the service based on a parsing of the host name from which the
|
||||
content originated. The server might assume that the client
|
||||
connecting to it supports protocols that it does not, can process
|
||||
content that it cannot, or has capabilities that it does not.
|
||||
Similarly, the client might assume that the server supports
|
||||
protocols, content, or capabilities that it does not. Furthermore,
|
||||
applications can potentially contain a multiplicity of humans,
|
||||
clients, and servers, all of which can independently make these false
|
||||
assumptions.
|
||||
|
||||
4. Possible Assumptions
|
||||
|
||||
For each of the three elements, there are many types of false
|
||||
assumptions that can be made.
|
||||
|
||||
4.1. By the User
|
||||
|
||||
The set of possible assumptions here is nearly boundless. Users
|
||||
might assume that an HTTP URL that looks like a company name maps to
|
||||
a server run by that company. They might assume that an email from a
|
||||
email address in the .gov TLD is actually from a government employee.
|
||||
They might assume that the content obtained from a web server within
|
||||
a TLD labeled as containing adult materials (for example, .sex)
|
||||
actually contains adult content [8]. These assumptions are
|
||||
unavoidable, may all be false, and are not the focus of this
|
||||
document.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 5]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
4.2. By the Client
|
||||
|
||||
Even though the client is an automaton, it can make some of the same
|
||||
assumptions that a human user might make. For example, many clients
|
||||
assume that any host with a hostname that begins with "www" is a web
|
||||
server, even though this assumption may be false.
|
||||
|
||||
In addition, the client concerns itself with the protocols needed to
|
||||
communicate with the server. As a result, it might make assumptions
|
||||
about the operation of the protocols for communicating with the
|
||||
server. These assumptions manifest themselves in an implementation
|
||||
when a standardized protocol negotiation technique defined by the
|
||||
protocol is ignored, and instead, some kind of rule is coded into the
|
||||
software that comes to its own conclusion about what the negotiation
|
||||
would have determined. The result is often a loss of
|
||||
interoperability, degradation in reliability, and worsening of user
|
||||
experience.
|
||||
|
||||
Authentication Algorithm: Though a protocol might support a
|
||||
multiplicity of authentication techniques, a client might assume
|
||||
that a server always supports one that is only optional according
|
||||
to the protocol. For example, a SIP client contacting a SIP
|
||||
server in a domain that is apparently used to identify mobile
|
||||
devices (for example, www.example.cellular) might assume that the
|
||||
server supports the optional Authentication and Key Agreement
|
||||
(AKA) digest technique [10], just because of the domain name that
|
||||
was used to access the server. As another example, a web client
|
||||
might assume that a server with the name https.example.com
|
||||
supports HTTP over Transport Layer Security (TLS) [16].
|
||||
|
||||
Data Formats: Though a protocol might allow a multiplicity of data
|
||||
formats to be sent from the server to the client, the client might
|
||||
assume a specific one, rather than using the content labeling and
|
||||
negotiation capabilities of the underlying protocol. For example,
|
||||
an RTSP client might assume that all audio content delivered to it
|
||||
from media.example.cellular uses a low-bandwidth codec. As
|
||||
another example, a mail client might assume that the contents of
|
||||
messages it retrieves from a mail server at mail.example.cellular
|
||||
are always text, instead of checking the MIME headers [11] in the
|
||||
message in order to determine the actual content type.
|
||||
|
||||
Protocol Extensions: A client may attempt an operation on the server
|
||||
that requires the server to support an optional protocol
|
||||
extension. However, rather than implementing the necessary
|
||||
fallback logic, the client may falsely assume that the extension
|
||||
is supported. As an example, a SIP client that requires reliable
|
||||
provisional responses to its request (RFC 3262 [17]) might assume
|
||||
that this extension is supported on servers in the domain
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 6]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
sip.example.telecom. Furthermore, the client would not implement
|
||||
the fallback behavior defined in RFC 3262, since it would assume
|
||||
that all servers it will communicate with are in this domain and
|
||||
that all therefore support this extension. However, if the
|
||||
assumptions prove wrong, the client is unable to make any phone
|
||||
calls.
|
||||
|
||||
Languages: A client may support facilities for processing text
|
||||
content differently depending on the language of the text. Rather
|
||||
than determining the language from markers in the message from the
|
||||
server, the client might assume a language based on the domain
|
||||
name. This assumption can easily be wrong. For example, a client
|
||||
might assume that any text in a web page retrieved from a server
|
||||
within the .de country code TLD (ccTLD) is in German, and attempt
|
||||
a translation to Finnish. This would fail dramatically if the
|
||||
text was actually in French. Unfortunately, this client behavior
|
||||
is sometimes exhibited because the server has not properly labeled
|
||||
the language of the content in the first place, often because the
|
||||
server assumed such a labeling was not needed. This is an example
|
||||
of how these false assumptions can create vicious cycles.
|
||||
|
||||
4.3. By the Server
|
||||
|
||||
The server, like the client, is an automaton. Let us consider one
|
||||
servicing a particular domain -- www.company.cellular, for example.
|
||||
It might assume that all clients connecting to this domain support
|
||||
particular capabilities, rather than using the underlying protocol to
|
||||
make this determination. Some examples include:
|
||||
|
||||
Authentication Algorithm: The server can assume that a client
|
||||
supports a particular, optional, authentication technique, and it
|
||||
therefore does not support the mandatory one.
|
||||
|
||||
Language: The server can serve content in a particular language,
|
||||
based on an assumption that clients accessing the domain speak a
|
||||
particular language, or based on an assumption that clients coming
|
||||
from a particular IP address speak a certain language.
|
||||
|
||||
Data Formats: The server can assume that the client supports a
|
||||
particular set of MIME types and is only capable of sending ones
|
||||
within that set. When it generates content in a protocol
|
||||
response, it ignores any content negotiation headers that were
|
||||
present in the request. For example, a web server might ignore
|
||||
the Accept HTTP header field and send a specific image format.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 7]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Protocol Extensions: The server might assume that the client supports
|
||||
a particular optional protocol extension, and so it does not
|
||||
support the fallback behavior necessary in the case where the
|
||||
client does not.
|
||||
|
||||
Client Characteristics: The server might assume certain things about
|
||||
the physical characteristics of its clients, such as memory
|
||||
footprint, processing power, screen sizes, screen colors, pointing
|
||||
devices, and so on. Based on these assumptions, it might choose
|
||||
specific behaviors when processing a request. For example, a web
|
||||
server might always assume that clients connect through cell
|
||||
phones, and therefore return content that lacks images and is
|
||||
tuned for such devices.
|
||||
|
||||
5. Consequences of False Assumptions
|
||||
|
||||
There are numerous negative outcomes that can arise from the various
|
||||
false assumptions that users, servers, and clients can make. These
|
||||
include:
|
||||
|
||||
Interoperability Failure: In these cases, the client or server
|
||||
assumed some kind of protocol operation, and this assumption was
|
||||
wrong. The result is that the two are unable to communicate, and
|
||||
the user receives some kind of an error. This represents a total
|
||||
interoperability failure, manifesting itself as a lack of service
|
||||
to users of the system. Unfortunately, this kind of failure
|
||||
persists. Repeated attempts over time by the client to access the
|
||||
service will fail. Only a change in the server or client software
|
||||
can fix this problem.
|
||||
|
||||
System Failure: In these cases, the client or server misinterpreted a
|
||||
protocol operation, and this misinterpretation was serious enough
|
||||
to uncover a bug in the implementation. The bug causes a system
|
||||
crash or some kind of outage, either transient or permanent (until
|
||||
user reset). If this failure occurs in a server, not only will
|
||||
the connecting client lose service, but other clients attempting
|
||||
to connect will not get service. As an example, if a web server
|
||||
assumes that content passed to it from a client (created, for
|
||||
example, by a digital camera) is of a particular content type, and
|
||||
it always passes image content to a codec for decompression prior
|
||||
to storage, the codec might crash when it unexpectedly receives an
|
||||
image compressed in a different format. Of course, it might crash
|
||||
even if the Content-Type was correct, but the compressed bitstream
|
||||
was invalid. False assumptions merely introduce additional
|
||||
failure cases.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 8]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Poor User Experience: In these cases, the client and server
|
||||
communicate, but the user receives a diminished user experience.
|
||||
For example, if a client on a PC connects to a web site that
|
||||
provides content for mobile devices, the content may be
|
||||
underwhelming when viewed on the PC. Or, a client accessing a
|
||||
streaming media service may receive content of very low bitrate,
|
||||
even though the client supported better codecs. Indeed, if a user
|
||||
wishes to access content from both a cellular device and a PC
|
||||
using a shared address book (that is, an address book shared
|
||||
across multiple devices), the user would need two entries in that
|
||||
address book, and would need to use the right one from the right
|
||||
device. This is a poor user experience.
|
||||
|
||||
Degraded Security: In these cases, a weaker security mechanism is
|
||||
used than the one that ought to have been used. As an example, a
|
||||
server in a domain might assume that it is only contacted by
|
||||
clients with a limited set of authentication algorithms, even
|
||||
though the clients have been recently upgraded to support a
|
||||
stronger set.
|
||||
|
||||
6. Reasons Why the Assumptions Can Be False
|
||||
|
||||
Assumptions made by clients and servers about the operation of
|
||||
protocols when contacting a particular domain are brittle, and can be
|
||||
wrong for many reasons. On the server side, many of the assumptions
|
||||
are based on the notion that a domain name will only be given to, or
|
||||
used by, a restricted set of clients. If the holder of the domain
|
||||
name assumes something about those clients, and can assume that only
|
||||
those clients use the domain name, then it can configure or program
|
||||
the server to operate specifically for those clients. Both parts of
|
||||
this assumption can be wrong, as discussed in more detail below.
|
||||
|
||||
On the client side, the notion is similar, being based on the
|
||||
assumption that a server within a particular domain will provide a
|
||||
specific type of service. Sub-delegation and evolution, both
|
||||
discussed below, can make these assumptions wrong.
|
||||
|
||||
6.1. Evolution
|
||||
|
||||
The Internet and the devices that access it are constantly evolving,
|
||||
often at a rapid pace. Unfortunately, there is a tendency to build
|
||||
for the here and now, and then worry about the future at a later
|
||||
time. Many of the assumptions above are predicated on
|
||||
characteristics of today's clients and servers. Support for specific
|
||||
protocols, authentication techniques, or content are based on today's
|
||||
standards and today's devices. Even though they may, for the most
|
||||
part, be true, they won't always be. An excellent example is mobile
|
||||
devices. A server servicing a domain accessed by mobile devices
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 9]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
might try to make assumptions about the protocols, protocol
|
||||
extensions, security mechanisms, screen sizes, or processor power of
|
||||
such devices. However, all of these characteristics can and will
|
||||
change over time.
|
||||
|
||||
When they do change, the change is usually evolutionary. The result
|
||||
is that the assumptions remain valid in some cases, but not in
|
||||
others. It is difficult to fix such systems, since it requires the
|
||||
server to detect what type of client is connecting, and what its
|
||||
capabilities are. Unless the system is built and deployed with these
|
||||
capability negotiation techniques built in to begin with, such
|
||||
detection can be extremely difficult. In fact, fixing it will often
|
||||
require the addition of such capability negotiation features that, if
|
||||
they had been in place and used to begin with, would have avoided the
|
||||
problem altogether.
|
||||
|
||||
6.2. Leakage
|
||||
|
||||
Servers also make assumptions because of the belief that they will
|
||||
only be accessed by specific clients, and in particular, those that
|
||||
are configured or provisioned to use the domain name. In essence,
|
||||
there is an assumption of community -- that a specific community
|
||||
knows and uses the domain name, while others outside of the community
|
||||
do not.
|
||||
|
||||
The problem is that this notion of community is a false one. The
|
||||
Internet is global. The DNS is global. There is no technical
|
||||
barrier that separates those inside of the community from those
|
||||
outside. The ease with which information propagates across the
|
||||
Internet makes it extremely likely that such domain names will
|
||||
eventually find their way into clients outside of the presumed
|
||||
community. The ubiquitous presence of domain names in various URI
|
||||
formats, coupled with the ease of conveyance of URIs, makes such
|
||||
leakage merely a matter of time. Furthermore, since the DNS is
|
||||
global, and since it can only have one root [12], it becomes possible
|
||||
for clients outside of the community to search and find and use such
|
||||
"special" domain names.
|
||||
|
||||
Indeed, this leakage is a strength of the Internet architecture, not
|
||||
a weakness. It enables global access to services from any client
|
||||
with a connection to the Internet. That, in turn, allows for rapid
|
||||
growth in the number of customers for any particular service.
|
||||
|
||||
6.3. Sub-Delegation
|
||||
|
||||
Clients and users make assumptions about domains because of the
|
||||
notion that there is some kind of centralized control that can
|
||||
enforce those assumptions. However, the DNS is not centralized; it
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 10]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
is distributed. If a domain doesn't delegate its sub-domains and has
|
||||
its records within a single zone, it is possible to maintain a
|
||||
centralized policy about operation of its domain. However, once a
|
||||
domain gets sufficiently large that the domain administrators begin
|
||||
to delegate sub-domains to other authorities, it becomes increasingly
|
||||
difficult to maintain any kind of central control on the nature of
|
||||
the service provided in each sub-domain.
|
||||
|
||||
Similarly, the usage of domain names with human semantic connotation
|
||||
tends to lead to a registration of multiple domains in which a
|
||||
particular service is to run. As an example, a service provider with
|
||||
the name "example" might register and set up its services in
|
||||
"example.com", "example.net", and generally example.foo for each foo
|
||||
that is a valid TLD. This, like sub-delegation, results in a growth
|
||||
in the number of domains over which it is difficult to maintain
|
||||
centralized control.
|
||||
|
||||
Not that it is not possible, since there are many examples of
|
||||
successful administration of policies across sub-domains many levels
|
||||
deep. However, it takes an increasing amount of effort to ensure
|
||||
this result, as it requires human intervention and the creation of
|
||||
process and procedure. Automated validation of adherence to policies
|
||||
is very difficult to do, as there is no way to automatically verify
|
||||
many policies that might be put into place.
|
||||
|
||||
A less costly process for providing centralized management of
|
||||
policies is to just hope that any centralized policies are being
|
||||
followed, and then wait for complaints or perform random audits.
|
||||
Those approaches have many problems.
|
||||
|
||||
The invalidation of assumptions due to sub-delegation is discussed in
|
||||
further detail in Section 4.1.3 of [8] and in Section 3.3 of [20].
|
||||
|
||||
As a result of the fragility of policy continuity across sub-
|
||||
delegations, if a client or user assumes some kind of property
|
||||
associated with a TLD (such as ".wifi"), it becomes increasingly more
|
||||
likely with the number of sub-domains that this property will not
|
||||
exist in a server identified by a particular name. For example, in
|
||||
"store.chain.company.provider.wifi", there may be four levels of
|
||||
delegation from ".wifi", making it quite likely that, unless the
|
||||
holder of ".wifi" is working diligently, the properties that the
|
||||
holder of ".wifi" wishes to enforce are not present. These
|
||||
properties may not be present due to human error or due to a willful
|
||||
decision not to adhere to them.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 11]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
6.4. Mobility
|
||||
|
||||
One of the primary value propositions of a hostname as an identifier
|
||||
is its persistence. A client can change IP addresses, yet still
|
||||
retain a persistent identifier used by other hosts to reach it.
|
||||
Because their value derives from their persistence, hostnames tend to
|
||||
move with a host not just as it changes IP addresses, but as it
|
||||
changes access network providers and technologies. For this reason,
|
||||
assumptions made about a host based on the presumed access network
|
||||
corresponding to that hostname tend to be wrong over time. As an
|
||||
example, a PC might normally be connected to its broadband provider,
|
||||
and through dynamic DNS have a hostname within the domain of that
|
||||
provider. However, one cannot assume that any host within that
|
||||
network has access over a broadband link; the user could connect
|
||||
their PC over a low-bandwidth wireless access network and still
|
||||
retain its domain name.
|
||||
|
||||
6.5. Human Error
|
||||
|
||||
Of course, human error can be the source of errors in any system, and
|
||||
the same is true here. There are many examples relevant to the
|
||||
problem under discussion.
|
||||
|
||||
A client implementation may make the assumption that, just because a
|
||||
DNS SRV record exists for a particular protocol in a particular
|
||||
domain, indicating that the service is available on some port, that
|
||||
the service is, in fact, running there. This assumption could be
|
||||
wrong because the SRV records haven't been updated by the system
|
||||
administrators to reflect the services currently running. As another
|
||||
example, a client might assume that a particular domain policy
|
||||
applies to all sub-domains. However, a system administrator might
|
||||
have omitted to apply the policy to servers running in one of those
|
||||
sub-domains.
|
||||
|
||||
7. Recommendations
|
||||
|
||||
Based on these problems, the clear conclusion is that clients,
|
||||
servers, and users should not make assumptions on the nature of the
|
||||
service provided to, or by, a domain. More specifically, however,
|
||||
the following can be said:
|
||||
|
||||
Follow the specifications: When specifications define mandatory
|
||||
baseline procedures and formats, those should be implemented and
|
||||
supported, even if the expectation is that optional procedures
|
||||
will most often be used. For example, if a specification mandates
|
||||
a particular baseline authentication technique, but allows others
|
||||
to be negotiated and used, implementations need to implement the
|
||||
baseline authentication algorithm even if the other ones are used
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 12]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
most of the time. Put more simply, the behavior of the protocol
|
||||
machinery should never change based on the domain name of the
|
||||
host.
|
||||
|
||||
Use capability negotiation: Many protocols are engineered with
|
||||
capability negotiation mechanisms. For example, a content
|
||||
negotiation framework has been defined for protocols using MIME
|
||||
content [13] [14] [15]. SIP allows for clients to negotiate the
|
||||
media types used in the multimedia session, as well as protocol
|
||||
parameters. HTTP allows for clients to negotiate the media types
|
||||
returned in requests for content. When such features are
|
||||
available in a protocol, client and servers should make use of
|
||||
them rather than making assumptions about supported capabilities.
|
||||
A corollary is that protocol designers should include such
|
||||
mechanisms when evolution is expected in the usage of the
|
||||
protocol.
|
||||
|
||||
"Be liberal in what you accept, and conservative in what you send"
|
||||
[18]: This axiom of Internet protocol design is applicable here
|
||||
as well. Implementations should be prepared for the full breadth
|
||||
of what a protocol allows another entity to send, rather than be
|
||||
limiting in what it is willing to receive.
|
||||
|
||||
To summarize -- there is never a need to make assumptions. Rather
|
||||
than doing so, utilize the specifications and the negotiation
|
||||
capabilities they provide, and the overall system will be robust and
|
||||
interoperable.
|
||||
|
||||
8. A Note on RFC 2219 and RFC 2782
|
||||
|
||||
Based on the definition of an assumption given here, the behavior
|
||||
hinted at by records in the DNS also represents an assumption. RFC
|
||||
2219 [19] defines well-known aliases that can be used to construct
|
||||
domain names for reaching various well-known services in a domain.
|
||||
This approach was later followed by the definition of a new resource
|
||||
record, the SRV record [2], which specifies that a particular service
|
||||
is running on a server in a domain. Although both of these
|
||||
mechanisms are useful as a hint that a particular service is running
|
||||
in a domain, both of them represent assumptions that may be false.
|
||||
However, they differ in the set of reasons why those assumptions
|
||||
might be false.
|
||||
|
||||
A client that assumes that "ftp.example.com" is an FTP server may be
|
||||
wrong because the presumed naming convention in RFC 2219 was not
|
||||
known by, or not followed by, the owner of domain.com. With RFC
|
||||
2782, an SRV record for a particular service would be present only by
|
||||
explicit choice of the domain administrator, and thus a client that
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 13]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
assumes that the corresponding host provides this service would be
|
||||
wrong only because of human error in configuration. In this case,
|
||||
the assumption is less likely to be wrong, but it certainly can be.
|
||||
|
||||
The only way to determine with certainty that a service is running on
|
||||
a host is to initiate a connection to the port for that service, and
|
||||
check. Implementations need to be careful not to codify any
|
||||
behaviors that cause failures should the information provided in the
|
||||
record actually be false. This borders on common sense for robust
|
||||
implementations, but it is valuable to raise this point explicitly.
|
||||
|
||||
9. Security Considerations
|
||||
|
||||
One of the assumptions that can be made by clients or servers is the
|
||||
availability and usage (or lack thereof) of certain security
|
||||
protocols and algorithms. For example, a client accessing a service
|
||||
in a particular domain might assume a specific authentication
|
||||
algorithm or hash function in the application protocol. It is
|
||||
possible that, over time, weaknesses are found in such a technique,
|
||||
requiring usage of a different mechanism. Similarly, a system might
|
||||
start with an insecure mechanism, and then decide later on to use a
|
||||
secure one. In either case, assumptions made on security properties
|
||||
can result in interoperability failures, or worse yet, providing
|
||||
service in an insecure way, even though the client asked for, and
|
||||
thought it would get, secure service. These kinds of assumptions are
|
||||
fundamentally unsound even if the records themselves are secured with
|
||||
DNSSEC.
|
||||
|
||||
10. Acknowledgements
|
||||
|
||||
The IAB would like to thank John Klensin, Keith Moore and Peter Koch
|
||||
for their comments.
|
||||
|
||||
11. IAB Members
|
||||
|
||||
Internet Architecture Board members at the time of writing of this
|
||||
document are:
|
||||
|
||||
Bernard Aboba
|
||||
|
||||
Loa Andersson
|
||||
|
||||
Brian Carpenter
|
||||
|
||||
Leslie Daigle
|
||||
|
||||
Patrik Faltstrom
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 14]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Bob Hinden
|
||||
|
||||
Kurtis Lindqvist
|
||||
|
||||
David Meyer
|
||||
|
||||
Pekka Nikander
|
||||
|
||||
Eric Rescorla
|
||||
|
||||
Pete Resnick
|
||||
|
||||
Jonathan Rosenberg
|
||||
|
||||
12. Informative References
|
||||
|
||||
[1] Mockapetris, P., "Domain names - concepts and facilities",
|
||||
STD 13, RFC 1034, November 1987.
|
||||
|
||||
[2] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
|
||||
specifying the location of services (DNS SRV)", RFC 2782,
|
||||
February 2000.
|
||||
|
||||
[3] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part
|
||||
Three: The Domain Name System (DNS) Database", RFC 3403,
|
||||
October 2002.
|
||||
|
||||
[4] Davis, C., Vixie, P., Goodwin, T., and I. Dickinson, "A Means
|
||||
for Expressing Location Information in the Domain Name System",
|
||||
RFC 1876, January 1996.
|
||||
|
||||
[5] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
|
||||
Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol --
|
||||
HTTP/1.1", RFC 2616, June 1999.
|
||||
|
||||
[6] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming
|
||||
Protocol (RTSP)", RFC 2326, April 1998.
|
||||
|
||||
[7] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
|
||||
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
|
||||
Session Initiation Protocol", RFC 3261, June 2002.
|
||||
|
||||
[8] Eastlake, D., ".sex Considered Dangerous", RFC 3675,
|
||||
February 2004.
|
||||
|
||||
[9] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
|
||||
April 2001.
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 15]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
[10] Niemi, A., Arkko, J., and V. Torvinen, "Hypertext Transfer
|
||||
Protocol (HTTP) Digest Authentication Using Authentication and
|
||||
Key Agreement (AKA)", RFC 3310, September 2002.
|
||||
|
||||
[11] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
|
||||
Extensions (MIME) Part One: Format of Internet Message Bodies",
|
||||
RFC 2045, November 1996.
|
||||
|
||||
[12] Internet Architecture Board, "IAB Technical Comment on the
|
||||
Unique DNS Root", RFC 2826, May 2000.
|
||||
|
||||
[13] Klyne, G., "Indicating Media Features for MIME Content",
|
||||
RFC 2912, September 2000.
|
||||
|
||||
[14] Klyne, G., "A Syntax for Describing Media Feature Sets",
|
||||
RFC 2533, March 1999.
|
||||
|
||||
[15] Klyne, G., "Protocol-independent Content Negotiation
|
||||
Framework", RFC 2703, September 1999.
|
||||
|
||||
[16] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
|
||||
|
||||
[17] Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional
|
||||
Responses in Session Initiation Protocol (SIP)", RFC 3262,
|
||||
June 2002.
|
||||
|
||||
[18] Braden, R., "Requirements for Internet Hosts - Communication
|
||||
Layers", STD 3, RFC 1122, October 1989.
|
||||
|
||||
[19] Hamilton, M. and R. Wright, "Use of DNS Aliases for Network
|
||||
Services", BCP 17, RFC 2219, October 1997.
|
||||
|
||||
[20] Faltstrom, P., "Design Choices When Expanding DNS", Work in
|
||||
Progress, June 2005.
|
||||
|
||||
Author's Address
|
||||
|
||||
Jonathan Rosenberg, Editor
|
||||
IAB
|
||||
600 Lanidex Plaza
|
||||
Parsippany, NJ 07054
|
||||
US
|
||||
|
||||
Phone: +1 973 952-5000
|
||||
EMail: jdrosen@cisco.com
|
||||
URI: http://www.jdrosen.net
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 16]
|
||||
|
||||
RFC 4367 Name Assumptions February 2006
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2006).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is provided by the IETF
|
||||
Administrative Support Activity (IASA).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rosenberg Informational [Page 17]
|
||||
|
Loading…
x
Reference in New Issue
Block a user