| draft-josefsson-dns-url-09.txt | draft-josefsson-dns-url-10.txt | |||
|---|---|---|---|---|
| Network Working Group S. Josefsson | Network Working Group S. Josefsson | |||
| Expires: April 25, 2004 | Expires: March 3, 2005 | |||
| Domain Name System Uniform Resource Identifiers | Domain Name System Uniform Resource Identifiers | |||
| draft-josefsson-dns-url-09 | draft-josefsson-dns-url-10 | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is subject to all provisions | |||
| all provisions of Section 10 of RFC2026. | of section 3 of RFC 3667. By submitting this Internet-Draft, each | |||
| author represents that any applicable patent or other IPR claims of | ||||
| which he or she is aware have been or will be disclosed, and any of | ||||
| which he or she become aware will be disclosed, in accordance with | ||||
| RFC 3668. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that | |||
| groups may also distribute working documents as Internet-Drafts. | other groups may also distribute working documents as | |||
| Internet-Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at http:// | The list of current Internet-Drafts can be accessed at | |||
| www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on April 25, 2004. | This Internet-Draft will expire on March 3, 2005. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2004). | |||
| Abstract | Abstract | |||
| This document define Uniform Resource Identifiers for Domain Name | This document define Uniform Resource Identifiers for Domain Name | |||
| System resources. | System resources. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction and Background . . . . . . . . . . . . . . . . . 3 | 1. Introduction and Background . . . . . . . . . . . . . . . . . 3 | |||
| 2. DNS URI Registration . . . . . . . . . . . . . . . . . . . . . 4 | 2. DNS URI Registration . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| Normative References . . . . . . . . . . . . . . . . . . . . . 9 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Informative References . . . . . . . . . . . . . . . . . . . . 9 | 6.1 Normative References . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6.2 Informative References . . . . . . . . . . . . . . . . . . . 9 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . 10 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| A. Revision Changes . . . . . . . . . . . . . . . . . . . . . . . 10 | A. Revision Changes . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| A.1 Changes since -06 . . . . . . . . . . . . . . . . . . . . . . 10 | A.1 Changes since -06 . . . . . . . . . . . . . . . . . . . . 10 | |||
| A.2 Changes since -07 . . . . . . . . . . . . . . . . . . . . . . 10 | A.2 Changes since -07 . . . . . . . . . . . . . . . . . . . . 10 | |||
| A.3 Changes since -08 . . . . . . . . . . . . . . . . . . . . . . 10 | A.3 Changes since -08 . . . . . . . . . . . . . . . . . . . . 11 | |||
| A.4 Changes since -09 . . . . . . . . . . . . . . . . . . . . 11 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . 12 | Intellectual Property and Copyright Statements . . . . . . . . 12 | |||
| 1. Introduction and Background | 1. Introduction and Background | |||
| The Domain Name System (DNS) [1][2] is a widely deployed system used | The Domain Name System (DNS) [1][2] is a widely deployed system used | |||
| to, among other things, translate host names into IP addresses. | to, among other things, translate host names into IP addresses. | |||
| Recent work has added support for storing certificates and | Recent work has added support for storing certificates and | |||
| certificate revocation lists in the DNS [10]. | certificate revocation lists (CRLs) in the DNS [9]. Several | |||
| protocols use Uniform Resource Locators (URLs) to point at | ||||
| The primary motivation behind defining a Uniform Resource Identifier | certificates and CRLs. By defining a Uniform Resource Identifier | |||
| (URI) for DNS resources, instead of using another non-URI syntax that | (URI) scheme for DNS resources, such protocols can reference | |||
| embed the domain, type value and class value, is that applications | certificates and CRLs stored in the DNS. | |||
| that stores or retrieve certificates today uses URIs for this | ||||
| purpose. Thus, defining a URI scheme for DNS resources allows these | ||||
| existing protocols to be used with certificates in the DNS without | ||||
| having to add DNS specific modifications to said protocols. In order | ||||
| to not introduce interoperability or security considerations, | ||||
| protocols that uses these URIs naturally must have been written to | ||||
| allow for future, as of writing yet undefined, URIs to be used. | ||||
| A few examples of protocols that may utilize DNS URIs: | A few examples of protocols that may utilize DNS URIs: | |||
| o The OpenPGP Message Format [8], where an end-user may indicate the | o The OpenPGP Message Format [7], where an end-user may indicate the | |||
| location of a copy of any updates to her key, using the "preferred | location of a copy of any updates to her key, using the "preferred | |||
| key server" field. | key server" field. | |||
| o The X.509 Online Certificate Status Protocol [11], where the OCSP | o The X.509 Online Certificate Status Protocol [10], where the OCSP | |||
| responder can indicate where a CRL is found, using the | responder can indicate where a CRL is found, using the | |||
| id-pkix-ocsp-crl extension. | id-pkix-ocsp-crl extension. | |||
| The DNS URI scheme defined here can, of course, be used to reference | The DNS URI scheme defined here can be used to reference any data | |||
| any DNS data, and is not limited to only certificates. The purpose | stored in the DNS, and is not limited to certificates or CRLs. The | |||
| of this specification is to define a generic DNS URI, not a specific | purpose of this specification is to define a generic DNS URI, not to | |||
| DNS solution for certificates stored in the DNS. Browsers may | specify a solution only for certificates stored in the DNS. | |||
| implement support for DNS URIs by forming DNS queries and render DNS | ||||
| responses using HTML [14], similar to what is done for the FTP [5]. | ||||
| The core part of this document is the URI Registration Template | Data browsers may support DNS URIs by forming DNS queries and render | |||
| according to [13]. | DNS responses using HTML [13], similar to what is commonly done for | |||
| FTP [5] resources. | ||||
| The core part of this document is the URI Registration Template in | ||||
| accordance with [12]. | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [6]. | document are to be interpreted as described in RFC 2119 [6]. | |||
| 2. DNS URI Registration | 2. DNS URI Registration | |||
| URL scheme name: "dns". | URL scheme name: "dns". | |||
| URL scheme syntax: A DNS URI designates a DNS resource record set | URL scheme syntax: A DNS URI designate a DNS resource record set, | |||
| that can be referenced by domain name, type, class and optionally the | referenced by domain name, class, type and optionally the authority. | |||
| authority. The DNS URI follows the generic syntax from RFC 2396 [4], | The DNS URI follows the generic syntax from RFC 2396 [4], and is | |||
| and is described using ABNF [3]. Strings are not case sensitive and | described using ABNF [3]. Strings are not case sensitive and free | |||
| free insertion of linear-white-space is not permitted. | insertion of linear-white-space is not permitted. | |||
| dnsurl = "dns:" [ "//" dnsauthority "/" ] dnsname ["?" dnsquery] | dnsurl = "dns:" [ "//" dnsauthority "/" ] dnsname ["?" dnsquery] | |||
| dnsauthority = hostport | dnsauthority = hostport | |||
| ; See RFC 2396 for "hostport" definition. | ; See RFC 2396 for "hostport" definition. | |||
| dnsname = *pchar | dnsname = *pchar | |||
| ; See RFC 2396 for "pchar" definition. | ; See RFC 2396 for "pchar" definition. | |||
| ; NB! Can be empty. | ||||
| ; The "dnsname" field may be a "relative" | ||||
| ; or "absolute" name, as per RFC 1034 | ||||
| ; section 3.1. | ||||
| ; Note further that an empty "dnsname" | ||||
| ; value is to be interpreted as the | ||||
| ; root itself. See below on relative | ||||
| ; dnsname's. | ||||
| dnsquery = dnsqueryelement [";" dnsquery] | dnsquery = dnsqueryelement [";" dnsquery] | |||
| ; First matching element MUST be used. | ||||
| ; E.g., dns:host.example.org?TYPE=A;TYPE=TXT | ||||
| ; means type A. | ||||
| dnsqueryelement = ( "CLASS=" dnsclassval ) / ( "TYPE=" dnstypeval ) / | dnsqueryelement = ( "CLASS=" dnsclassval ) / ( "TYPE=" dnstypeval ) | |||
| ( 1*alphanum "=" 1*alphanum ) | ; Each clause MUST NOT be used more than | |||
| ; once. | ||||
| dnsclassval = 1*digit / "IN" / "CH" / ... | dnsclassval = 1*digit / "IN" / "CH" / ... | |||
| ; Any IANA registered DNS class expressed as | ; Any IANA registered DNS class expressed | |||
| ; mnemonic or as decimal integer. | ; as mnemonic or as decimal integer. | |||
| dnstypeval = 1*digit / "A" / "NS" / "MD" / ... | dnstypeval = 1*digit / "A" / "NS" / "MD" / ... | |||
| ; Any IANA registered DNS type expressed as | ; Any IANA registered DNS type expressed | |||
| ; mnemonic or as decimal integer. | ; as mnemonic or as decimal integer. | |||
| Unless specified in the URI, the authority ("dnsauthority") is | ||||
| assumed to be locally known, the class ("dnsclassval") to be the | ||||
| Internet class ("IN"), and the type ("dnstypeval") to be the Address | ||||
| type ("A"). These default values match the typical use of DNS; to | ||||
| look up addresses for host names. | ||||
| A dnsquery element MUST NOT contain more than one occurance of the | ||||
| "CLASS" and "TYPE" fields. For example, both | ||||
| "dns:example?TYPE=A;TYPE=TXT" and "dns:example?TYPE=A;TYPE=A" are | ||||
| invalid. However, the fields may occur in any order, so that both | ||||
| "dns:example?TYPE=A;CLASS=IN" and "dns:example?CLASS=IN;TYPE=A" are | ||||
| valid. | ||||
| The digit representation of types and classes MAY be used when a | The digit representation of types and classes MAY be used when a | |||
| mnemonic for the corresponding value is not well known (e.g., for | mnemonic for the corresponding value is not well known (e.g., for | |||
| newly introduced types or classes), but SHOULD NOT be used for the | newly introduced types or classes), but SHOULD NOT be used for the | |||
| types or classes defined in the DNS specification [2]. All | types or classes defined in the DNS specification [2]. All | |||
| implementations MUST recognize the mnemonics defined in [2]. | implementations MUST recognize the mnemonics defined in [2]. | |||
| Unless specified in the URI, the authority ("dnsauthority") is | To avoid ambiguity, relative "dnsname" values (i.e., those not ending | |||
| assumed to be locally known, "dnsclassval" to be the Internet class | with ".") are assumed to be relative to the root. For example, | |||
| ("IN"), and "dnstypeval" to be the Address type ("A"). | "dns:host.example" and "dns:host.example." both refer to the same | |||
| owner name, namely "host.example.". Further, an empty "dnsname" | ||||
| value is considered to be a degenerative form of a relative name, | ||||
| which refer to the root ("."). | ||||
| To resolve a DNS URI using the DNS protocol [2] a query is formed by | To resolve a DNS URI using the DNS protocol [2] a query is created, | |||
| using the dnsname, dnsclassval and dnstypeval from the URI string (or | using as input the dnsname, dnsclassval and dnstypeval from the URI | |||
| the previously mentioned default values if some value missing from | string (or the appropriate default values). If an authority | |||
| the string). If authority ("dnsauthority") is given in the URI | ("dnsauthority") is given in the URI string, this indicate the server | |||
| string, this indicate the server that should receive the DNS query, | that should receive the DNS query, otherwise the default DNS server | |||
| otherwise the default DNS server should receive it. (Note that DNS | should receive it. | |||
| URIs could be resolved by other protocols than the DNS protocol. DNS | ||||
| URIs does not require the use of the DNS protocol, although it is | Note that DNS URIs could be resolved by other protocols than the DNS | |||
| expected to be the typical usage. This paragraph only illustrate how | protocol, or by using the DNS protocol in some other way than as | |||
| DNS URIs are resolved using the DNS protocol.) | described above (e.g., multicast DNS). DNS URIs do not require the | |||
| use of the DNS protocol, although it is expected to be the typical | ||||
| usage. The previous paragraph only illustrate how DNS URIs are | ||||
| resolved using the DNS protocol. | ||||
| A client MAY want to check that it understands the dnsclassval and | A client MAY want to check that it understands the dnsclassval and | |||
| dnstypeval before sending a query, so that it is able to correctly | dnstypeval before sending a query, so that it will be able to | |||
| parse the answer. A typical example of a client that would not need | understand the response. However, a typical example of a client that | |||
| to check dnsclassval and dnstypeval would be a proxy that just treat | would not need to check dnsclassval and dnstypeval would be a proxy, | |||
| the answer as opaque data. | that would just treat the received answer as opaque data. | |||
| Character encoding considerations: The characters are encoded as per | Character encoding considerations: The characters are encoded as per | |||
| the "URI Generic Syntax" RFC [4]. The DNS protocol do not consider | the "URI Generic Syntax" RFC [4]. The DNS protocol do not consider | |||
| character sets, it simply transports opaque data. In particular, the | character sets, it simply transports opaque data. In particular, the | |||
| "dnsname" field of the DNS URI is to be considered an | "dnsname" field of the DNS URI is to be considered an | |||
| internationalized domain name (IDN) unaware domain name slot, in the | internationalized domain name (IDN) unaware domain name slot, in the | |||
| terminology of [16]. (The reason for this is that making these fields | terminology of [15]. The considerations for "hostport" are discussed | |||
| be IDN aware by, e.g., specifying that they are UTF-8 [7] strings, | in [4] | |||
| would require further encoding mechanisms to be able to express all | ||||
| valid DNS domain names. This is because the DNS allows all octet | ||||
| sequences to be used as domain labels, so UTF-8 strings do not cover | ||||
| all possibilities. Instead of defining further encoding mechanisms, | ||||
| we point applications with internationalization needs at the ASCII | ||||
| encoding described in [16] which should be satisfactory.) The | ||||
| considerations for "hostport" are discussed in [4] | ||||
| To encode a "." that is part of a DNS label the "escaped" encoding | Because "." is used as the DNS label separator, an escaping mechanism | |||
| MUST be used, and a label delimiter MUST be encoded as ".". That is, | is required to encode a "." that is part of a DNS label. The | |||
| the only way to encode a label delimiter is ".", and the only way to | escaping mechanism is described in section 5.1 of RFC 1035. For | |||
| encode a "." as part of label is "%2e". This approach was chosen to | example, a DNS label of "exa.mple" can be escaped as "exa\.mple" or | |||
| minimize the modifications users will have to do when manually | "exa\046mple". However, the URI specification disallow the "\" | |||
| translating a domain name string into the URI form. | character from occuring directly in URIs, so it must be escaped as | |||
| "%5c". The single DNS label "exa.mple" is thus encoded as | ||||
| "exa%5c.mple". The same mechanism can be used to encode other | ||||
| characters, for example "?" and ";". Note that "." and "%2e" are | ||||
| equivalent within dnsname, and are interchangable. | ||||
| This URI specification allows all possible domain names to be encoded | This URI specification allows all possible domain names to be encoded | |||
| (of course following the encoding rules of [4]), however certain | (of course following the encoding rules of [4]), however certain | |||
| applications may restrict the set of valid characters and care should | applications may restrict the set of valid characters and care should | |||
| be taken so that invalid characters in these contexts does not cause | be taken so that invalid characters in these contexts does not cause | |||
| harm. In particular, host names in the DNS have certain | harm. In particular, host names in the DNS have certain | |||
| restrictions. It is up to these application to limit this subset, | restrictions. It is up to these application to limit this subset, | |||
| this URI scheme places no restrictions. | this URI scheme places no restrictions. | |||
| Intended usage: Whenever DNS resources are useful to reference by | Intended usage: Whenever DNS resources are useful to reference by | |||
| protocol independent identifiers, often when the data is more | protocol independent identifiers, often when the data is more | |||
| important than the access method. Since software in general has | important than the access method. Since software in general has | |||
| coped without this so far, it is not anticipated to be implemented | coped without this so far, it is not anticipated to be implemented | |||
| widely, nor migrated to by existing systems, but specific solutions | widely, nor migrated to by existing systems, but specific solutions | |||
| (especially security related) may find this appropriate. | (especially security related) may find this appropriate. | |||
| Applications and/or protocols which use this scheme: Security related | Applications and/or protocols which use this scheme: Security related | |||
| software. It may be of interest to auxilliary DNS related software | software. DNS administration tools. Network programming packages. | |||
| too. | ||||
| Interoperability considerations: The data referenced by this URI | Interoperability considerations: The data referenced by this URI | |||
| scheme might be transferred by protocols that are not URI aware (such | scheme might be transferred by protocols that are not URI aware (such | |||
| as the DNS protocol). This is not anticipated to have any serious | as the DNS protocol). This is not anticipated to have any serious | |||
| interoperability impact though. | interoperability impact though. | |||
| Interoperability problems may occur if one entity understands a new | Interoperability problems may occur if one entity understands a new | |||
| DNS type or class mnemonic but another entity do not understand it. | DNS class/type mnemonic and another entity do not understand it. | |||
| This is an interoperability problem for DNS software in general, | This is an interoperability problem for DNS software in general, | |||
| although it is not a major practical problem as the DNS types and | although it is not a major practical problem as the DNS types and | |||
| classes are fairly static. To guarantee interoperability | classes are fairly static. To guarantee interoperability | |||
| implementations could use integers for all mnemonics not defined in | implementations can use integers for all mnemonics not defined in | |||
| [2]. | [2]. | |||
| Interaction with Binary Labels [12], or other extended label types, | Interaction with Binary Labels [11], or other extended label types, | |||
| has not been analyzed. However, they appear to be infrequently used | has not been analyzed. However, they appear to be infrequently used | |||
| in practice. | in practice. | |||
| Security considerations: See below. | ||||
| Contact: simon@josefsson.org | Contact: simon@josefsson.org | |||
| Author/Change Controller: simon@josefsson.org | Author/Change Controller: simon@josefsson.org | |||
| 3. Examples | 3. Examples | |||
| A DNS URI is of the following general form. This is intended to | A DNS URI is of the following general form. This is intended to | |||
| illustrate, not define, the scheme. | illustrate, not define, the scheme. | |||
| dns:[//authority/]domain[?type=TYPE;class=CLASS] | dns:[//authority/]domain[?CLASS=class;TYPE=type] | |||
| The following illustrate a URI for a resource with the name | The following illustrate a URI for a resource with the absolute name | |||
| "www.example.org", the Internet (IN) class and the Address (A) type: | "www.example.org.", the Internet (IN) class and the Address (A) type: | |||
| dns:www.example.org?class=IN;type=A | dns:www.example.org.?clAsS=IN;tYpE=A | |||
| Since the default class is IN, and the default type is A, the same | Since the default class is IN, and the default type is A, the same | |||
| resource can be identified by a shorter URI: | resource can be identified by a shorter URI, using a relative name: | |||
| dns:www.example.org | dns:www.example.org | |||
| The following illustrate a URI for a resource with the name | The following illustrate a URI for a resource with the name | |||
| "simon.example.org", for the CERT type, in the Internet (IN) class: | "simon.example.org", for the CERT type, in the Internet (IN) class: | |||
| dns:simon.example.org?type=CERT | dns:simon.example.org?type=CERT | |||
| The following illustrate a URI for a resource with the name | The following illustrate a URI for a resource with the name | |||
| "ftp.example.org", in the Internet (IN) class and the address (A) | "ftp.example.org", in the Internet (IN) class and the address (A) | |||
| type, but from the DNS authority 192.168.1.1 instead of the default | type, but from the DNS authority 192.168.1.1 instead of the default | |||
| authority (i.e., when DNS is used, the query is sent to that server): | authority: | |||
| dns://192.168.1.1/ftp.example.org?type=A | dns://192.168.1.1/ftp.example.org?type=A | |||
| The following illustrate a strange, albeit valid, DNS resource. Note | The following illustrate various escaping techniques. The owner name | |||
| the encoding of "." and 0x00, and the use of a named dnsauthority: | would be "world wide web.example\.domain.org" where "\." denote the | |||
| character "." as part of a label, and "." denote the label separator: | ||||
| dns://internal-dns.example.org/*.%3f%20%00%2e%25+?type=TXT | dns:world%20wide%20web.example%5c.domain.example?TYPE=TXT | |||
| The following illustrate a strange, but valid, DNS resource: | ||||
| dns://fw.example.org/*.%20%00.example?type=TXT | ||||
| 4. Security Considerations | 4. Security Considerations | |||
| If a DNS URI references domains in the Internet DNS environment, both | If a DNS URI references domains in the Internet DNS environment, both | |||
| the URI itself and the information referenced by the URI is public | the URI itself and the information referenced by the URI is public | |||
| information. If a DNS URI is used within an "internal" DNS | information. If a DNS URI is used within an "internal" DNS | |||
| environment, both the DNS URI and the data is referenced should be | environment, both the DNS URI and the data is referenced should be | |||
| handled using the same considerations that apply to DNS data in the | handled using the same considerations that apply to DNS data in the | |||
| environment. | environment. | |||
| If information referenced by DNS URIs are used to make security | If information referenced by DNS URIs are used to make security | |||
| decisions (examples of such data include, but is not limited to, | decisions (examples of such data include, but is not limited to, | |||
| certificates stored in the DNS), implementations may need to employ | certificates stored in the DNS), implementations may need to employ | |||
| security techniques such as Secure DNS [9], or even CMS [15] or | security techniques such as Secure DNS [8], or even CMS [14] or | |||
| OpenPGP [8], to protect the data during transport. How to implement | OpenPGP [7], to protect the data during transport. How to implement | |||
| this will depend on the usage scenario, and it is not up to this URI | this will depend on the usage scenario, and it is not up to this URI | |||
| scheme to define how the data referenced by DNS URIs should be | scheme to define how the data referenced by DNS URIs should be | |||
| protected. | protected. | |||
| If applications accept unknown dnsqueryelement values (e.g., accepts | If applications accept unknown dnsqueryelement values (e.g., accepts | |||
| the URI "dns:www.example.org?secret=value" without knowing what the | the URI "dns:www.example.org?secret=value" without knowing what the | |||
| "secret=value" dnsqueryelement means), a covert channel used to | "secret=value" dnsqueryelement means), a covert channel used to | |||
| "leak" information may be enabled. The implications of covert | "leak" information may be enabled. The implications of covert | |||
| channels should be understood by applications that accepts unknown | channels should be understood by applications that accepts unknown | |||
| dnsqueryelement values. | dnsqueryelement values. | |||
| This draft does not modify the security considerations related to the | Slight variations, such as difference between upper and lower case in | |||
| DNS or URIs in general. | the dnsname field, can be used as a covert channel to leak | |||
| information. | ||||
| 5. IANA Considerations | 5. IANA Considerations | |||
| The IANA is asked to register the DNS URI scheme, using the template | The IANA is asked to register the DNS URI scheme, using the template | |||
| in section 2, in accordance with RFC 2717 [13]. | in section 2, in accordance with RFC 2717 [12]. | |||
| Acknowledgments | Acknowledgments | |||
| Thanks to Stuart Cheshire, Donald Eastlake, Pasi Eronen, Ted Hardie, | Thanks to Stuart Cheshire, Donald Eastlake, Pasi Eronen, Ted Hardie, | |||
| Peter Koch, Andrew Main, Larry Masinter, Michael Mealling, Steve | Peter Koch, Andrew Main, Larry Masinter, Michael Mealling, Steve | |||
| Mattson, and Paul Vixie for comments and suggestions. The author | Mattson, and Paul Vixie for comments and suggestions. The author | |||
| acknowledges the RSA Laboratories for supporting the work that led to | acknowledges the RSA Laboratories for supporting the work that led to | |||
| this document. | this document. | |||
| Normative References | 6. References | |||
| 6.1 Normative References | ||||
| [1] Mockapetris, P., "Domain names - concepts and facilities", STD | [1] Mockapetris, P., "Domain names - concepts and facilities", STD | |||
| 13, RFC 1034, November 1987. | 13, RFC 1034, November 1987. | |||
| [2] Mockapetris, P., "Domain names - implementation and | [2] Mockapetris, P., "Domain names - implementation and | |||
| specification", STD 13, RFC 1035, November 1987. | specification", STD 13, RFC 1035, November 1987. | |||
| [3] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [3] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", RFC 2234, November 1997. | Specifications: ABNF", RFC 2234, November 1997. | |||
| [4] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource | [4] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource | |||
| Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | |||
| Informative References | 6.2 Informative References | |||
| [5] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, | [5] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, | |||
| RFC 959, October 1985. | RFC 959, October 1985. | |||
| [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement | |||
| Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
| [7] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC | [7] Callas, J., Donnerhacke, L., Finney, H. and R. Thayer, "OpenPGP | |||
| 2279, January 1998. | ||||
| [8] Callas, J., Donnerhacke, L., Finney, H. and R. Thayer, "OpenPGP | ||||
| Message Format", RFC 2440, November 1998. | Message Format", RFC 2440, November 1998. | |||
| [9] Eastlake, D., "Domain Name System Security Extensions", RFC | [8] Eastlake, D., "Domain Name System Security Extensions", RFC | |||
| 2535, March 1999. | 2535, March 1999. | |||
| [10] Eastlake, D. and O. Gudmundsson, "Storing Certificates in the | [9] Eastlake, D. and O. Gudmundsson, "Storing Certificates in the | |||
| Domain Name System (DNS)", RFC 2538, March 1999. | Domain Name System (DNS)", RFC 2538, March 1999. | |||
| [11] Myers, M., Ankney, R., Malpani, A., Galperin, S. and C. Adams, | [10] Myers, M., Ankney, R., Malpani, A., Galperin, S. and C. Adams, | |||
| "X.509 Internet Public Key Infrastructure Online Certificate | "X.509 Internet Public Key Infrastructure Online Certificate | |||
| Status Protocol - OCSP", RFC 2560, June 1999. | Status Protocol - OCSP", RFC 2560, June 1999. | |||
| [12] Crawford, M., "Binary Labels in the Domain Name System", RFC | [11] Crawford, M., "Binary Labels in the Domain Name System", RFC | |||
| 2673, August 1999. | 2673, August 1999. | |||
| [13] Petke, R. and I. King, "Registration Procedures for URL Scheme | [12] Petke, R. and I. King, "Registration Procedures for URL Scheme | |||
| Names", BCP 35, RFC 2717, November 1999. | Names", BCP 35, RFC 2717, November 1999. | |||
| [14] Connolly, D. and L. Masinter, "The 'text/html' Media Type", RFC | [13] Connolly, D. and L. Masinter, "The 'text/html' Media Type", RFC | |||
| 2854, June 2000. | 2854, June 2000. | |||
| [15] Housley, R., "Cryptographic Message Syntax (CMS)", RFC 3369, | [14] Housley, R., "Cryptographic Message Syntax (CMS)", RFC 3369, | |||
| August 2002. | August 2002. | |||
| [16] Faltstrom, P., Hoffman, P. and A. Costello, "Internationalizing | [15] Faltstrom, P., Hoffman, P. and A. Costello, "Internationalizing | |||
| Domain Names in Applications (IDNA)", RFC 3490, March 2003. | Domain Names in Applications (IDNA)", RFC 3490, March 2003. | |||
| [16] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD | ||||
| 63, RFC 3629, November 2003. | ||||
| Author's Address | Author's Address | |||
| Simon Josefsson | Simon Josefsson | |||
| EMail: simon@josefsson.org | EMail: simon@josefsson.org | |||
| Appendix A. Revision Changes | Appendix A. Revision Changes | |||
| Note to RFC editor: This appendix is to be removed on publication. | Note to RFC editor: Remove this appendix before publication. | |||
| A.1 Changes since -06 | A.1 Changes since -06 | |||
| The MIME registration templates for text/dns and application/dns was | The MIME registration templates for text/dns and application/dns was | |||
| removed, and will be defined in separate documents. | removed, and will be defined in separate documents. | |||
| Improved discussion related to which mnemonics that must be | Improved discussion related to which mnemonics that must be | |||
| supported. The interoperability problem that provoked the | supported. The interoperability problem that provoked the | |||
| clarification is also mentioned. | clarification is also mentioned. | |||
| skipping to change at page 11, line 8 | skipping to change at page 11, line 14 | |||
| A.3 Changes since -08 | A.3 Changes since -08 | |||
| Modifications derived from Last-Call comments: Made more clear that | Modifications derived from Last-Call comments: Made more clear that | |||
| DNS URIs does not imply use of the DNS protocol, but the issue is not | DNS URIs does not imply use of the DNS protocol, but the issue is not | |||
| stressed because of the apparent inflamatory state of affairs. Added | stressed because of the apparent inflamatory state of affairs. Added | |||
| informative references to HTML and FTP. Clarified that dnsname can | informative references to HTML and FTP. Clarified that dnsname can | |||
| be empty. Clarified that first dnsqueryelement "win" in case of | be empty. Clarified that first dnsqueryelement "win" in case of | |||
| ambiguity. Clarified security consideration with respect to unknown | ambiguity. Clarified security consideration with respect to unknown | |||
| dnsqueryelements. Use "authority" instead of "server". Say "IANA | dnsqueryelements. Use "authority" instead of "server". Say "IANA | |||
| registered" instead of "standard". Interoperability note about binary | registered" instead of "standard". Interoperability note about | |||
| DNS labels. Typos. | binary DNS labels. Typos. | |||
| A.4 Changes since -09 | ||||
| Use legal texts from RFC 3667. Update UTF-8 reference to RFC 3629. | ||||
| Simplified introduction. Discuss relative and absolute dnsname's. | ||||
| Clarify that empty dnsname correspond to the root. Change so that | ||||
| dns:foo?TYPE=A;TYPE=TXT is invalid, instead of meaning TYPE=A. The | ||||
| underspecified extension mechanism was dropped; now only TYPE= and | ||||
| CLASS= are permitted. Remove background discussion of why the | ||||
| dnsname field is made a IDN unaware domain name slot. Use standard | ||||
| DNS escaping (i.e, "\." for ".") instead of broken approach that | ||||
| violated the URI specification. Improve examples. Add security | ||||
| considerations. | ||||
| Intellectual Property Statement | Intellectual Property Statement | |||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| intellectual property or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
| pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
| this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
| might or might not be available; neither does it represent that it | might or might not be available; nor does it represent that it has | |||
| has made any effort to identify any such rights. Information on the | made any independent effort to identify any such rights. Information | |||
| IETF's procedures with respect to rights in standards-track and | on the procedures with respect to rights in RFC documents can be | |||
| standards-related documentation can be found in BCP-11. Copies of | found in BCP 78 and BCP 79. | |||
| claims of rights made available for publication and any assurances of | ||||
| licenses to be made available, or the result of an attempt made to | Copies of IPR disclosures made to the IETF Secretariat and any | |||
| obtain a general license or permission for the use of such | assurances of licenses to be made available, or the result of an | |||
| proprietary rights by implementors or users of this specification can | attempt made to obtain a general license or permission for the use of | |||
| be obtained from the IETF Secretariat. | 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 | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights which may cover technology that may be required to practice | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF Executive | this standard. Please address the information to the IETF at | |||
| Director. | ietf-ipr@ietf.org. | |||
| Full Copyright Statement | ||||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | Disclaimer of Validity | |||
| This document and translations of it may be copied and furnished to | This document and the information contained herein are provided on an | |||
| others, and derivative works that comment on or otherwise explain it | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| or assist in its implementation may be prepared, copied, published | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
| and distributed, in whole or in part, without restriction of any | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
| kind, provided that the above copyright notice and this paragraph are | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
| included on all such copies and derivative works. However, this | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| document itself may not be modified in any way, such as by removing | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| the copyright notice or references to the Internet Society or other | ||||
| Internet organizations, except as needed for the purpose of | ||||
| developing Internet standards in which case the procedures for | ||||
| copyrights defined in the Internet Standards process must be | ||||
| followed, or as required to translate it into languages other than | ||||
| English. | ||||
| The limited permissions granted above are perpetual and will not be | Copyright Statement | |||
| revoked by the Internet Society or its successors or assignees. | ||||
| This document and the information contained herein is provided on an | Copyright (C) The Internet Society (2004). This document is subject | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | to the rights, licenses and restrictions contained in BCP 78, and | |||
| TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | except as set forth therein, the authors retain all their rights. | |||
| 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. | ||||
| Acknowledgment | Acknowledgment | |||
| Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
| Internet Society. | Internet Society. | |||
| End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ | ||||