draft-ietf-xmpp-dna-05.txt   draft-ietf-xmpp-dna-06.txt 
Network Working Group P. Saint-Andre Network Working Group P. Saint-Andre
Internet-Draft &yet Internet-Draft &yet
Intended status: Standards Track M. Miller Intended status: Standards Track M. Miller
Expires: August 8, 2014 Cisco Systems, Inc. Expires: December 23, 2014 Cisco Systems, Inc.
February 4, 2014 June 21, 2014
Domain Name Associations (DNA) in the Extensible Messaging and Presence Domain Name Associations (DNA) in the Extensible Messaging and Presence
Protocol (XMPP) Protocol (XMPP)
draft-ietf-xmpp-dna-05 draft-ietf-xmpp-dna-06
Abstract Abstract
This document improves the security of the Extensible Messaging and This document improves the security of the Extensible Messaging and
Presence Protocol (XMPP) in two ways. First, it specifies how Presence Protocol (XMPP) in two ways. First, it specifies how
"prooftypes" can establish a strong association between a domain name "prooftypes" can establish a strong association between a domain name
and an XML stream. Second, it describes how to securely delegate a and an XML stream. Second, it describes how to securely delegate a
source domain to a derived domain, which is especially important in source domain to a derived domain, which is especially important in
virtual hosting environments. multi-tenanted environments.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on August 8, 2014. This Internet-Draft will expire on December 23, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Flow Chart . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Client-to-Server (C2S) DNA . . . . . . . . . . . . . . . . . 3
4. A Simple Scenario . . . . . . . . . . . . . . . . . . . . . . 6 3.1. C2S Flow . . . . . . . . . . . . . . . . . . . . . . . . 3
5. One-Way Authentication . . . . . . . . . . . . . . . . . . . 7 3.2. C2S Description . . . . . . . . . . . . . . . . . . . . . 4
6. Piggybacking . . . . . . . . . . . . . . . . . . . . . . . . 8 4. Server-to-Server (S2S) DNA . . . . . . . . . . . . . . . . . 5
6.1. Assertion . . . . . . . . . . . . . . . . . . . . . . . . 8 4.1. S2S Flow Chart . . . . . . . . . . . . . . . . . . . . . 5
6.2. Supposition . . . . . . . . . . . . . . . . . . . . . . . 9 4.2. A Simple S2S Scenario . . . . . . . . . . . . . . . . . . 7
7. Alternative Prooftypes . . . . . . . . . . . . . . . . . . . 10 4.3. One-Way Authentication . . . . . . . . . . . . . . . . . 8
7.1. DANE . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.4. Piggybacking . . . . . . . . . . . . . . . . . . . . . . 9
7.2. POSH . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.4.1. Assertion . . . . . . . . . . . . . . . . . . . . . . 9
8. Secure Delegation and Multi-Tenancy . . . . . . . . . . . . . 12 4.4.2. Supposition . . . . . . . . . . . . . . . . . . . . . 10
9. Prooftype Model . . . . . . . . . . . . . . . . . . . . . . . 13 5. Alternative Prooftypes . . . . . . . . . . . . . . . . . . . 12
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 5.1. DANE . . . . . . . . . . . . . . . . . . . . . . . . . . 12
10.1. Well-Known URI for xmpp-client Service . . . . . . . . . 13 5.2. POSH . . . . . . . . . . . . . . . . . . . . . . . . . . 12
10.2. Well-Known URI for xmpp-server Service . . . . . . . . . 13 6. Secure Delegation and Multi-Tenancy . . . . . . . . . . . . . 13
11. Security Considerations . . . . . . . . . . . . . . . . . . . 14 7. Prooftype Model . . . . . . . . . . . . . . . . . . . . . . . 14
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
12.1. Normative References . . . . . . . . . . . . . . . . . . 14 8.1. Well-Known URI for xmpp-client Service . . . . . . . . . 14
12.2. Informative References . . . . . . . . . . . . . . . . . 15 8.2. Well-Known URI for xmpp-server Service . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 9. Security Considerations . . . . . . . . . . . . . . . . . . . 15
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
10.1. Normative References . . . . . . . . . . . . . . . . . . 15
10.2. Informative References . . . . . . . . . . . . . . . . . 16
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction 1. Introduction
The need to establish a strong association between a domain name and The need to establish a strong association between a domain name and
an XML stream arises in both client-to-server and server-to-server an XML stream arises in both client-to-server and server-to-server
communication using the Extensible Messaging and Presence Protocol communication using the Extensible Messaging and Presence Protocol
(XMPP) [RFC6120]. Because XMPP servers are typically identified by (XMPP) [RFC6120]. Because XMPP servers are typically identified by
DNS domain names, a client or peer server needs to verify the DNS domain names, a client or peer server needs to verify the
identity of a server to which it connects. identity of a server to which it connects.
skipping to change at page 3, line 11 skipping to change at page 3, line 18
2. Provides a basis for modernizing some prooftypes to reflect 2. Provides a basis for modernizing some prooftypes to reflect
progress in underlying technologies such as DNS Security progress in underlying technologies such as DNS Security
[RFC4033] [RFC4033]
3. Describes the flow of operations for establishing a domain name 3. Describes the flow of operations for establishing a domain name
association (DNA) association (DNA)
This document also provides guidelines for secure delegation. The This document also provides guidelines for secure delegation. The
need for secure delegation arises because the process for resolving need for secure delegation arises because the process for resolving
the domain name of an XMPP service into the IP address at which an the domain name of an XMPP service into the IP address at which an
XML stream will be negotiated (defined in [RFC6120]) can involve XML stream will be negotiated (see [RFC6120]) can involve delegation
delegation of a source domain (say, example.com) to a derived domain of a source domain (say, example.com) to a derived domain (say,
(say, hosting.example.net) using technologies such as DNS SRV records hosting.example.net) using technologies such as DNS SRV records
[RFC2782]. If such delegation is not done in a secure manner, then [RFC2782]. If such delegation is not done in a secure manner, then
the domain name association cannot be authenticated. the domain name association cannot be authenticated.
2. Terminology 2. Terminology
This document inherits XMPP terminology from [RFC6120] and This document inherits XMPP terminology from [RFC6120] and
[XEP-0220], DNS terminology from [RFC1034], [RFC1035], [RFC2782] and [XEP-0220], DNS terminology from [RFC1034], [RFC1035], [RFC2782] and
[RFC4033], and security terminology from [RFC4949] and [RFC5280]. [RFC4033], and security terminology from [RFC4949] and [RFC5280].
The terms "source domain", "derived domain", "reference identity", The terms "source domain", "derived domain", "reference identity",
and "presented identity" are used as defined in the "CertID" and "presented identity" are used as defined in the "CertID"
specification [RFC6125]. The terms "permissive federation", specification [RFC6125].
"verified federation", and "encrypted federation" are derived from
[XEP-0238], although we substitute the term "authenticated
federation" for the term "trusted federation" from that document.
3. Flow Chart 3. Client-to-Server (C2S) DNA
The client-to-server case is much simpler than the server-to-server
case (the client does not assert a domain name, only the server's
domain name needs to be verified, etc.). Therefore we describe it
first to help the reader understand domain name associations in XMPP.
3.1. C2S Flow
The following flow chart illustrates the protocol flow for
establishing a domain name association for an XML stream from a
client to a server.
|
DNS RESOLUTION ETC.
|
+-----------------STREAM HEADERS---------------------+
| |
| A: <stream from='user@a.example' to='a.example'> |
| |
| B: <stream from='a.example' to='user@a.example'> |
| |
+----------------------------------------------------+
|
+-----------------TLS NEGOTIATION--------------------+
| |
| B: Server Certificate |
| |
+----------------------------------------------------+
|
(client establishes DNA for a.example)
|
3.2. C2S Description
The simplified order of events (see [RFC6120] for details) in
establishing an XML stream from a client (user@a.exmaple) to a server
(a.example) is as follows:
1. The client resolves the DNS domain name a.example.
2. The client opens a TCP connection to the resolved IP address.
3. The client sends an initial stream header to the server.
<stream:stream from='user@a.example' to='a.example'>
4. The server sends a response stream header to the client,
asserting that it is a.example:
<stream:stream from='a.example' to='user@a.example'>
5. The parties attempt TLS negotiation, during which the XMPP server
(acting as a TLS server) presents a PKIX certificate proving that
it is a.example.
6. The client checks the PKIX certificate that the server provided;
if the proof is consistent with the XMPP profile of the matching
rules from [RFC6125], the client accepts that there is a strong
domain name association between its stream to the server and the
DNS domain name of the server.
4. Server-to-Server (S2S) DNA
The server-to-server case is much more complex than the client-to-
server case, and involves checking of domain name associations in
both directions along with other "wrinkles" described in the
following sections.
4.1. S2S Flow Chart
The following flow chart illustrates the protocol flow for The following flow chart illustrates the protocol flow for
establishing domain name associations between Server 1 and Server 2, establishing domain name associations between Server 1 and Server 2,
as described in the remaining sections of this document. as described in the remaining sections of this document.
| |
| (Section 4.2: A Simple Scenario)
(Section 4: A Simple Scenario)
|
| |
DNS RESOLUTION ETC. DNS RESOLUTION ETC.
| |
+-------------STREAM HEADERS--------------------+ +-------------STREAM HEADERS--------------------+
| | | |
| A: <stream from='a.example' to='b.example'> | | A: <stream from='a.example' to='b.example'> |
| | | |
| B: <stream from='b.example' to='a.example'> | | B: <stream from='b.example' to='a.example'> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
+-------------TLS NEGOTIATION-------------------+ +-------------TLS NEGOTIATION-------------------+
| | | |
| B: Server Certificate | | B: Server Certificate |
| [B: Certificate Request] | | [B: Certificate Request] |
| [A: Client Certificate] | | [A: Client Certificate] |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
(A establishes DNA for b.example!) (A establishes DNA for b.example)
| |
+-------------AUTHENTICATION--------------------+ +-------------AUTHENTICATION--------------------+
| | | | | |
| {client certificate?} ----+ | | {client certificate?} ----+ |
| | | | | | | |
| | yes no | | | | yes no | |
| v | | | v | |
| SASL EXTERNAL | | | SASL EXTERNAL | |
| (mutual auth!) | | | (mutual auth!) | |
+------------------------------------|----------+ +------------------------------------|----------+
| |
+----------------+ +----------------+
| B needs to auth A | B needs to auth A
| |
(Section 5: One-Way Authentication)
| |
(Section 4.3: One-Way Authentication)
| |
DNS RESOLUTION ETC. DNS RESOLUTION ETC.
| |
+-------------STREAM HEADERS--------------------+ +-------------STREAM HEADERS--------------------+
| | | |
| B: <stream from='b.example' to='a.example'> | | B: <stream from='b.example' to='a.example'> |
| | | |
| A: <stream from='a.example' to='b.example'> | | A: <stream from='a.example' to='b.example'> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
+-------------TLS NEGOTIATION-------------------+ +-------------TLS NEGOTIATION-------------------+
| | | |
| A: Server Certificate | | A: Server Certificate |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
(B establishes DNA for a.example!) (B establishes DNA for a.example)
|
| |
(Section 6.1: Piggybacking Assertion)
| |
(Section 4.4.1: Piggybacking Assertion)
| |
+----------DIALBACK IDENTITY ASSERTION----------+ +----------DIALBACK IDENTITY ASSERTION----------+
| | | |
| B: <db:result from='c.example' | | B: <db:result from='c.example' |
| to='a.example'/> | | to='a.example'/> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
+-----------DNA DANCE AS ABOVE------------------+ +-----------DNA DANCE AS ABOVE------------------+
| | | |
skipping to change at page 5, line 24 skipping to change at page 7, line 4
| |
+----------DIALBACK IDENTITY VERIFICATION-------+ +----------DIALBACK IDENTITY VERIFICATION-------+
| | | |
| A: <db:result from='a.example' | | A: <db:result from='a.example' |
| to='c.example' | | to='c.example' |
| type='valid'/> | | type='valid'/> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
| |
| |
(Section 6.2: Piggybacking Supposition)
| (Section 4.4.2: Piggybacking Supposition)
| |
+-----------SUBSEQUENT CONNECTION---------------+ +-----------SUBSEQUENT CONNECTION---------------+
| | | |
| B: <stream from='c.example' | | B: <stream from='c.example' |
| to='rooms.a.example'> | | to='rooms.a.example'> |
| | | |
| A: <stream from='rooms.a.example' | | A: <stream from='rooms.a.example' |
| to='c.example'> | | to='c.example'> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
skipping to change at page 6, line 6 skipping to change at page 7, line 34
+-----------DIALBACK OPTIMIZATION---------------+ +-----------DIALBACK OPTIMIZATION---------------+
| | | |
| B: <db:result from='c.example' | | B: <db:result from='c.example' |
| to='rooms.a.example'/> | | to='rooms.a.example'/> |
| | | |
| B: <db:result from='rooms.a.example' | | B: <db:result from='rooms.a.example' |
| to='c.example' | | to='c.example' |
| type='valid'/> | | type='valid'/> |
| | | |
+-----------------------------------------------+ +-----------------------------------------------+
|
4. A Simple Scenario 4.2. A Simple S2S Scenario
To illustrate the problem, consider the simplified order of events To illustrate the problem, consider the simplified order of events
(see [RFC6120] for details) in establishing an XML stream between (see [RFC6120] for details) in establishing an XML stream between
Server 1 (a.example) and Server 2 (b.example): Server 1 (a.example) and Server 2 (b.example):
1. Server 1 resolves the DNS domain name b.example. 1. Server 1 resolves the DNS domain name b.example.
2. Server 1 opens a TCP connection to the resolved IP address. 2. Server 1 opens a TCP connection to the resolved IP address.
3. Server 1 sends an initial stream header to Server 2, asserting 3. Server 1 sends an initial stream header to Server 2, asserting
skipping to change at page 7, line 17 skipping to change at page 8, line 37
domain c.example on Server 2). domain c.example on Server 2).
o The server administrators are able to obtain PKIX certificates in o The server administrators are able to obtain PKIX certificates in
the first place. the first place.
o The server administrators are running their own XMPP servers, o The server administrators are running their own XMPP servers,
rather than using hosting services. rather than using hosting services.
Let's consider each of these "wrinkles" in turn. Let's consider each of these "wrinkles" in turn.
5. One-Way Authentication 4.3. One-Way Authentication
If Server 1 does not present its PKIX certificate during TLS If Server 1 does not present its PKIX certificate during TLS
negotiation (perhaps because it wishes to verify the identity of negotiation (perhaps because it wishes to verify the identity of
Server 2 before presenting its own credentials), Server 2 is unable Server 2 before presenting its own credentials), Server 2 is unable
to mutually authenticate Server 1. Therefore, Server 2 needs to to mutually authenticate Server 1. Therefore, Server 2 needs to
negotiate and authenticate a stream to Server 1, just as Server 1 has negotiate and authenticate a stream to Server 1, just as Server 1 has
done: done:
1. Server 2 resolves the DNS domain name a.example. 1. Server 2 resolves the DNS domain name a.example.
skipping to change at page 8, line 13 skipping to change at page 9, line 27
it is consistent with the XMPP profile [RFC6120] of the matching it is consistent with the XMPP profile [RFC6120] of the matching
rules from [RFC6125], Server 2 accepts that there is a strong rules from [RFC6125], Server 2 accepts that there is a strong
domain name association between its stream to Server 1 and the domain name association between its stream to Server 1 and the
DNS domain name a.example. DNS domain name a.example.
At this point the servers are using two TCP connections instead of At this point the servers are using two TCP connections instead of
one, which is somewhat wasteful. However, there are ways to tie the one, which is somewhat wasteful. However, there are ways to tie the
authentication achieved on the second TCP connection to the first TCP authentication achieved on the second TCP connection to the first TCP
connection; see [XEP-0288] for further discussion. connection; see [XEP-0288] for further discussion.
6. Piggybacking 4.4. Piggybacking
6.1. Assertion 4.4.1. Assertion
Consider the common scenario in which Server 2 hosts not only Consider the common scenario in which Server 2 hosts not only
b.example but also a second domain c.example (a "multi-tenanted" b.example but also a second domain c.example (a "multi-tenanted"
environment). If a user of Server 2 associated with c.example wishes environment). If a user of Server 2 associated with c.example wishes
to communicate with a friend at a.example, Server 2 needs to send to communicate with a friend at a.example, Server 2 needs to send
XMPP stanzas from the domain c.example rather than b.example. XMPP stanzas from the domain c.example rather than b.example.
Although Server 2 could open an new TCP connection and negotiate new Although Server 2 could open an new TCP connection and negotiate new
XML streams for the domain pair of c.example and a.example, that too XML streams for the domain pair of c.example and a.example, that too
is wasteful. Server 2 already has a connection to a.example, so how is wasteful. Server 2 already has a connection to a.example, so how
can it assert that it would like to add a new domain pair to the can it assert that it would like to add a new domain pair to the
skipping to change at page 9, line 35 skipping to change at page 10, line 48
Now that Server 1 accepts the domain name association, it informs Now that Server 1 accepts the domain name association, it informs
Server 2 of that fact: Server 2 of that fact:
<db:result from='a.example' to='c.example' type='valid'/> <db:result from='a.example' to='c.example' type='valid'/>
The parties can then terminate the second connection, since it was The parties can then terminate the second connection, since it was
used only for Server 1 to associate a stream over the same IP:port used only for Server 1 to associate a stream over the same IP:port
combination with the domain name c.example (the dialback key links combination with the domain name c.example (the dialback key links
the original stream to the new association). the original stream to the new association).
6.2. Supposition 4.4.2. Supposition
Piggybacking can also occur in the other direction. Consider the Piggybacking can also occur in the other direction. Consider the
common scenario in which Server 1 provides XMPP services not only for common scenario in which Server 1 provides XMPP services not only for
a.example but also for a subdomain such as a groupchat service at a.example but also for a subdomain such as a groupchat service at
rooms.a.example (see [XEP-0045]). If a user from c.example at Server rooms.a.example (see [XEP-0045]). If a user from c.example at Server
2 wishes to join a room on the groupchat sevice, Server 2 needs to 2 wishes to join a room on the groupchat sevice, Server 2 needs to
send XMPP stanzas from the domain c.example to the domain send XMPP stanzas from the domain c.example to the domain
rooms.a.example rather than a.example. Therefore, Server 2 needs to rooms.a.example rather than a.example. Therefore, Server 2 needs to
negotiate and authenticate a stream to rooms.a.example: negotiate and authenticate a stream to rooms.a.example:
skipping to change at page 10, line 43 skipping to change at page 12, line 5
</db:result> </db:result>
Server 1 then informs Server 2 that it accepts the domain name Server 1 then informs Server 2 that it accepts the domain name
association: association:
<db:result from='rooms.a.example' to='c.example' type='valid'/> <db:result from='rooms.a.example' to='c.example' type='valid'/>
Server 2 can now close the connection over which it tested the domain Server 2 can now close the connection over which it tested the domain
name association for rooms.a.example. name association for rooms.a.example.
7. Alternative Prooftypes 5. Alternative Prooftypes
The foregoing protocol flows assumed that domain name associations The foregoing protocol flows assumed that domain name associations
were proved using the standard PKI prooftype specified in [RFC6120]: were proved using the standard PKI prooftype specified in [RFC6120]:
that is, the server's proof consists of a PKIX certificate that is that is, the server's proof consists of a PKIX certificate that is
checked according to the XMPP profile [RFC6120] of the matching rules checked according to the XMPP profile [RFC6120] of the matching rules
from [RFC6125], the client's verification material is obtained out of from [RFC6125], the client's verification material is obtained out of
band in the form of a trusted root, and secure DNS is not necessary. band in the form of a trusted root, and secure DNS is not necessary.
However, sometimes XMPP server administrators are unable or unwilling However, sometimes XMPP server administrators are unable or unwilling
to obtain valid PKIX certificates for their servers. As one example, to obtain valid PKIX certificates for their servers. As one example,
a certificate authority (CA) might try to send email messages to a certificate authority (CA) might try to send email messages to
authoritative mailbox names [RFC2142], but the administrator of a authoritative mailbox names [RFC2142], but the administrator of a
subsidiary service such as im.cs.podunk.example can't receive email subsidiary service such as im.cs.podunk.example can't receive email
skipping to change at page 11, line 25 skipping to change at page 12, line 29
sent to mailto:hostmaster@podunk.example. As another example, a sent to mailto:hostmaster@podunk.example. As another example, a
hosting provider such as hosting.example.net might not want to take hosting provider such as hosting.example.net might not want to take
on the liability of holding the certificate and private key for a on the liability of holding the certificate and private key for a
tenant such as example.com (or the tenant might not want the hosting tenant such as example.com (or the tenant might not want the hosting
provider to hold its certificate and private key). In these provider to hold its certificate and private key). In these
circumstances, prooftypes other than PKIX are desirable. As circumstances, prooftypes other than PKIX are desirable. As
described below, two alternatives have been defined so far: DNS-Based described below, two alternatives have been defined so far: DNS-Based
Authentication of Named Entities (DANE) and and PKIX Over Secure HTTP Authentication of Named Entities (DANE) and and PKIX Over Secure HTTP
(POSH). (POSH).
7.1. DANE 5.1. DANE
In the DANE prooftype, the server's proof consists of a PKIX In the DANE prooftype, the server's proof consists of a PKIX
certificate that is compared as an exact match or a hash of either certificate that is compared as an exact match or a hash of either
the SubjectPublicKeyInfo or the full certificate, and the client's the SubjectPublicKeyInfo or the full certificate, and the client's
verification material is obtained via secure DNS. verification material is obtained via secure DNS.
The DANE prooftype makes use of the DNS-Based Authentication of Named The DANE prooftype makes use of the DNS-Based Authentication of Named
Entities [RFC6698], specifically the use of DANE with DNS SRV records Entities [RFC6698], specifically the use of DANE with DNS SRV records
[I-D.ietf-dane-srv]. For XMPP purposes, the following rules apply: [I-D.ietf-dane-srv]. For XMPP purposes, the following rules apply:
o If there is no SRV resource record, pursue the fallback methods o If there is no SRV resource record, pursue the fallback methods
described in [RFC6120]. described in [RFC6120].
o Use the 'to' address of the initial stream header to determine the o Use the 'to' address of the initial stream header to determine the
domain name of the TLS client's reference identifier (since use of domain name of the TLS client's reference identifier (since use of
the TLS Server Name Indication is purely discretionary in XMPP, as the TLS Server Name Indication is purely discretionary in XMPP, as
mentioned in [RFC6120]). mentioned in [RFC6120]).
7.2. POSH 5.2. POSH
In the POSH prooftype, the server's proof consists of a PKIX In the POSH prooftype, the server's proof consists of a PKIX
certificate that is checked according to the rules from [RFC6120] and certificate that is checked according to the rules from [RFC6120] and
[RFC6125], the client's verification material is obtained by [RFC6125], the client's verification material is obtained by
retrieving the PKIK certificate over HTTPS at a well-known URI retrieving the PKIK certificate over HTTPS at a well-known URI
[RFC5785], and secure DNS is not necessary since the HTTPS retrieval [RFC5785], and secure DNS is not necessary since the HTTPS retrieval
mechanism relies on the chain of trust from the public key mechanism relies on the chain of trust from the public key
infrastructure. infrastructure.
POSH is defined in [I-D.ietf-xmpp-posh]. For XMPP purposes, the POSH is defined in [I-D.ietf-xmpp-posh]. For XMPP purposes, the
well-known URIs [RFC5785] to be used are: well-known URIs [RFC5785] to be used are:
o "/.well-known/posh._xmpp-client._tcp.json" for client-to-server o "/.well-known/posh._xmpp-client._tcp.json" for client-to-server
connections connections
o "/.well-known/posh._xmpp-server._tcp.json" for server-to-server o "/.well-known/posh._xmpp-server._tcp.json" for server-to-server
connections connections
8. Secure Delegation and Multi-Tenancy 6. Secure Delegation and Multi-Tenancy
One common method for deploying XMPP services is multi-tenancy or One common method for deploying XMPP services is multi-tenancy: e.g.,
virtual hosting: e.g., the XMPP service for example.com is actually the XMPP service for example.com is actually hosted at
hosted at hosting.example.net. Such an arrangement is relatively hosting.example.net. Such an arrangement is relatively convenient in
convenient in XMPP given the use of DNS SRV records [RFC2782], such XMPP given the use of DNS SRV records [RFC2782], such as the
as the following pointer from example.com to hosting.example.net: following pointer from example.com to hosting.example.net:
_xmpp-server._tcp.example.com. 0 IN SRV 0 0 5269 hosting.example.net _xmpp-server._tcp.example.com. 0 IN SRV 0 0 5269 hosting.example.net
Secure connections with multi-tenancy can work using the PKIX Secure connections with multi-tenancy can work using the PKIX
prooftype on a small scale if the provider itself wishes to host prooftype on a small scale if the provider itself wishes to host
several domains (e.g., several related domains such as jabber- several domains (e.g., several related domains such as jabber-
de.example and jabber-ch.example). However, in practice the security de.example and jabber-ch.example). However, in practice the security
of multi-tenancy has been found to be unwieldy when the provider of multi-tenancy has been found to be unwieldy when the provider
hosts large numbers of XMPP services on behalf of multiple tenants. hosts large numbers of XMPP services on behalf of multiple tenants.
Typically there are two main reasons for this state of affairs: the Typically there are two main reasons for this state of affairs: the
skipping to change at page 13, line 5 skipping to change at page 14, line 8
hosting.example.net instead of example.com. The fundamental problem hosting.example.net instead of example.com. The fundamental problem
here is that if DNSSEC is not used then the act of delegation via DNS here is that if DNSSEC is not used then the act of delegation via DNS
SRV records is inherently insecure. SRV records is inherently insecure.
The specification for use of SRV and MX records with DANE The specification for use of SRV and MX records with DANE
[I-D.ietf-dane-srv] explains how to use DNSSEC for secure delegation [I-D.ietf-dane-srv] explains how to use DNSSEC for secure delegation
with the DANE prooftype, and the POSH specification with the DANE prooftype, and the POSH specification
[I-D.ietf-xmpp-posh] explains how to use HTTPS redirects for secure [I-D.ietf-xmpp-posh] explains how to use HTTPS redirects for secure
delegation with the POSH prooftype. delegation with the POSH prooftype.
9. Prooftype Model 7. Prooftype Model
In general, a domain name association (DNA) prooftype conforms to the In general, a domain name association (DNA) prooftype conforms to the
following definition: following definition:
prooftype: A mechanism for proving an association between a domain prooftype: A mechanism for proving an association between a domain
name and an XML stream, where the mechanism defines (1) the nature name and an XML stream, where the mechanism defines (1) the nature
of the server's proof, (2) the matching rules for comparing the of the server's proof, (2) the matching rules for comparing the
client's verification material against the server's proof, (3) how client's verification material against the server's proof, (3) how
the client obtains its verification material, and (4) whether the the client obtains its verification material, and (4) whether the
mechanism depends on secure DNS. mechanism depends on secure DNS.
The PKI, DANE, and POSH prooftypes adhere to this model. In The PKI, DANE, and POSH prooftypes adhere to this model. In
addition, other prooftypes are possible (examples might include PGP addition, other prooftypes are possible (examples might include PGP
keys rather than PKIX certificates, or a token mechanism such as keys rather than PKIX certificates, or a token mechanism such as
Kerberos or OAuth). Kerberos or OAuth).
Some prooftypes depend on (or are enhanced by) secure DNS and thus Some prooftypes depend on (or are enhanced by) secure DNS and thus
also need to describe how they ensure secure delegation. also need to describe how they ensure secure delegation.
10. IANA Considerations 8. IANA Considerations
The POSH specification [I-D.ietf-xmpp-posh] provides guidelines for The POSH specification [I-D.ietf-xmpp-posh] provides guidelines for
registering the well-known URIs [RFC5785] of protocols that make use registering the well-known URIs [RFC5785] of protocols that make use
of POSH. This specification registers two such URIs, for which the of POSH. This specification registers two such URIs, for which the
completed registration templates follow. completed registration templates follow.
10.1. Well-Known URI for xmpp-client Service 8.1. Well-Known URI for xmpp-client Service
This specification registers the well-known URI "posh._xmpp- This specification registers the well-known URI "posh._xmpp-
client._tcp.json" in the Well-Known URI Registry as defined by client._tcp.json" in the Well-Known URI Registry as defined by
[RFC5785]. [RFC5785].
URI suffix: posh._xmpp-client._tcp.json URI suffix: posh._xmpp-client._tcp.json
Change controller: IETF Change controller: IETF
Specification document(s): [[ this document ]] Specification document(s): [[ this document ]]
10.2. Well-Known URI for xmpp-server Service 8.2. Well-Known URI for xmpp-server Service
This specification registers the well-known URI "posh._xmpp- This specification registers the well-known URI "posh._xmpp-
server._tcp.json" in the Well-Known URI Registry as defined by server._tcp.json" in the Well-Known URI Registry as defined by
[RFC5785]. [RFC5785].
URI suffix: posh._xmpp-server._tcp.json URI suffix: posh._xmpp-server._tcp.json
Change controller: IETF Change controller: IETF
Specification document(s): [[ this document ]] Specification document(s): [[ this document ]]
11. Security Considerations 9. Security Considerations
This document supplements but does not supersede the security This document supplements but does not supersede the security
considerations of [RFC6120] and [RFC6125]. Relevant security considerations of [RFC6120] and [RFC6125]. Relevant security
considerations can also be found in [I-D.ietf-dane-srv] and considerations can also be found in [I-D.ietf-dane-srv] and
[I-D.ietf-xmpp-posh]. [I-D.ietf-xmpp-posh].
12. References 10. References
12.1. Normative References 10.1. Normative References
[I-D.ietf-dane-srv] [I-D.ietf-dane-srv]
Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- Finch, T., Miller, M., and P. Saint-Andre, "Using DNS-
Based Authentication of Named Entities (DANE) TLSA records Based Authentication of Named Entities (DANE) TLSA records
with SRV and MX records.", draft-ietf-dane-srv-03 (work in with SRV and MX records.", draft-ietf-dane-srv-06 (work in
progress), December 2013. progress), June 2014.
[I-D.ietf-xmpp-posh] [I-D.ietf-xmpp-posh]
Miller, M. and P. Saint-Andre, "PKIX over Secure HTTP Miller, M. and P. Saint-Andre, "PKIX over Secure HTTP
(POSH)", draft-ietf-xmpp-posh-00 (work in progress), (POSH)", draft-ietf-xmpp-posh-01 (work in progress), June
February 2014. 2014.
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, November 1987. STD 13, RFC 1034, November 1987.
[RFC1035] Mockapetris, P., "Domain names - implementation and [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987. specification", STD 13, RFC 1035, November 1987.
[RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
specifying the location of services (DNS SRV)", RFC 2782, specifying the location of services (DNS SRV)", RFC 2782,
February 2000. February 2000.
skipping to change at page 15, line 26 skipping to change at page 16, line 31
Security (TLS)", RFC 6125, March 2011. Security (TLS)", RFC 6125, March 2011.
[RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication
of Named Entities (DANE) Transport Layer Security (TLS) of Named Entities (DANE) Transport Layer Security (TLS)
Protocol: TLSA", RFC 6698, August 2012. Protocol: TLSA", RFC 6698, August 2012.
[XEP-0220] [XEP-0220]
Miller, J., Saint-Andre, P., and P. Hancke, "Server Miller, J., Saint-Andre, P., and P. Hancke, "Server
Dialback", XSF XEP 0220, September 2013. Dialback", XSF XEP 0220, September 2013.
12.2. Informative References 10.2. Informative References
[RFC2142] Crocker, D., "MAILBOX NAMES FOR COMMON SERVICES, ROLES AND [RFC2142] Crocker, D., "MAILBOX NAMES FOR COMMON SERVICES, ROLES AND
FUNCTIONS", RFC 2142, May 1997. FUNCTIONS", RFC 2142, May 1997.
[RFC3920] Saint-Andre, P., Ed., "Extensible Messaging and Presence [RFC3920] Saint-Andre, P., Ed., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 3920, October 2004. Protocol (XMPP): Core", RFC 3920, October 2004.
[XEP-0045] [XEP-0045]
Saint-Andre, P., "Multi-User Chat", XSF XEP 0045, February Saint-Andre, P., "Multi-User Chat", XSF XEP 0045, February
2012. 2012.
[XEP-0238]
Saint-Andre, P., "XMPP Protocol Flows for Inter-Domain
Federation", XSF XEP 0238, March 2008.
[XEP-0288] [XEP-0288]
Hancke, P. and D. Cridland, "Bidirectional Server-to- Hancke, P. and D. Cridland, "Bidirectional Server-to-
Server Connections", XSF XEP 0288, September 2013. Server Connections", XSF XEP 0288, September 2013.
Appendix A. Acknowledgements
Thanks to Philipp Hancke for his feedback.
Authors' Addresses Authors' Addresses
Peter Saint-Andre Peter Saint-Andre
&yet &yet
P.O. Box 787
Parker, CO 80134
USA
Email: peter@andyet.com
Email: ietf@stpeter.im
Matthew Miller Matthew Miller
Cisco Systems, Inc. Cisco Systems, Inc.
1899 Wynkoop Street, Suite 600 1899 Wynkoop Street, Suite 600
Denver, CO 80202 Denver, CO 80202
USA USA
Email: mamille2@cisco.com Email: mamille2@cisco.com
 End of changes. 43 change blocks. 
74 lines changed or deleted 147 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/