<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc compact="yes"?>
<?rfc iprnotified="no" ?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>

<rfc category="std" docName="draft-ietf-uta-xmpp-07" ipr="trust200902" updates="6120">

  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <front>
    <title abbrev="XMPP TLS">Use of Transport Layer Security (TLS) in the Extensible Messaging and Presence Protocol (XMPP)</title>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization>&amp;yet</organization>
      <address>
        <email>peter@andyet.com</email>
        <uri>https://andyet.com/</uri>
      </address>
    </author>
    <author initials="T." surname="Alkemade" fullname="Thijs Alkemade">
      <organization/>
      <address>
        <email>me@thijsalkema.de</email>
      </address>
    </author>
    <date/>
    <abstract>
      <t>This document provides recommendations for the use of Transport Layer Security (TLS) in the Extensible Messaging and Presence Protocol (XMPP).  This document updates RFC 6120.</t>
    </abstract>
  </front>

  <middle>

    <section title="Introduction" anchor='intro'>
      <t>The Extensible Messaging and Presence Protocol (XMPP) <xref target='RFC6120'/> (along with its precursor, the so-called "Jabber protocol") has used Transport Layer Security (TLS) <xref target='RFC5246'/> (along with its precursor, Secure Sockets Layer or SSL) since 1999.  Both <xref target='RFC6120'/> and its predecessor <xref target='RFC3920'/> provided recommendations regarding the use of TLS in XMPP.  In order to address the evolving threat model on the Internet today, this document provides stronger recommendations.</t>
      <t>In particular, this document updates <xref target='RFC6120'/> by specifying that XMPP implementations and deployments MUST follow the best current practices documented in the "Recommendations for Secure Use of TLS and DTLS" <xref target='I-D.ietf-uta-tls-bcp'/>.  This includes stronger recommendations regarding SSL/TLS protocol versions, fallback to lower versions, TLS-layer compression, TLS session resumption, cipher suites, public key lengths, forward secrecy, and other aspects of using TLS with XMPP.</t>
    </section>

    <section title="Terminology" anchor="terms">
      <t>Various security-related terms are to be understood in the sense defined in <xref target="RFC4949"/>.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target='RFC2119'/>.</t>
    </section>

    <section title="Recommendations" anchor="rec">

      <t>The best current practices documented in the "Recommendations for Secure Use of TLS and DTLS" <xref target='I-D.ietf-uta-tls-bcp'/> are included here by reference.  Instead of repeating those recommendations here, this document mostly provides supplementary information regarding secure implementation and deployment of XMPP technologies.</t>

      <section title="Support for TLS" anchor="rec-support">
        <t>Support for TLS (specifically, the XMPP profile of STARTTLS) is mandatory for XMPP implementations, as already specified in <xref target='RFC6120'/> and its predecessor <xref target='RFC3920'/>.</t>
        <t>The server (i.e., the XMPP receiving entity) to which a client or peer server (i.e., the XMPP initiating entity) connects might not offer a stream feature of &lt;starttls xmlns='urn:ietf:params:xml:ns :xmpp-tls'/&gt;.  Although in general this stream feature indicates that the server supports XMPP 1.0 and therefore supports TLS, that this stream feature might be stripped out by an attacker (see Section 2.1 of <xref target='RFC7457'/>).  Similarly, the &lt;required/&gt; child element of the &lt;starttls/&gt; stream feature is used to indicate that negotiation of TLS is mandatory, but could also be stripped out by an attacker.  Therefore, the initiating entity MUST NOT be deterred from attempting TLS negotiation even if the receiving entity does not advertise support for TLS.  Instead, the initiating entity SHOULD (based on local policy) proceed with the stream negotiation and attempt to negotiate TLS.</t>
      </section>

      <section title="Compression" anchor="rec-compress">
        <t>XMPP supports an application-layer compression technology <xref target='XEP-0138'/>.  Although this XMPP extension might have slightly stronger security properties than TLS-layer compression (since it is enabled after SASL authentication, as described in <xref target='XEP-0170'/>), this document neither encourages nor discourages use of XMPP-layer compression.</t>
      </section>

      <section title="Session Resumption" anchor="rec-resume">
        <t>To improve the reliability of communications over XMPP, it is common practice for clients and servers to implement the stream management extension <xref target='XEP-0198'/>.  Although that specification includes a method for resumption of XMPP streams at the application layer, also using session resumption at the TLS layer further optimizes the overall process of resuming an XMPP session (see <xref target='XEP-0198'/> for detailed information).  Whether or not XEP-0198 is used for application-layer session resumption, implementations MUST follow the recommendations provided in <xref target='I-D.ietf-uta-tls-bcp'/> regarding TLS-layer session resumption.</t>
      </section>

      <section title="Authenticated Connections" anchor="rec-auth">
        <t>Both the core XMPP specification <xref target='RFC6120'/> and the "CertID" specification <xref target='RFC6125'/> provide recommendations and requirements for certificate validation in the context of authenticated connections.  This document does not supersede those specifications (e.g., it does not modify the recommendations in <xref target='RFC6120'/> regarding the Subject Alternative Names or other certificate details that need to be supported for authentication of XMPP connections using PKIX certificates).</t>
        <t>Wherever possible, it is best to prefer authenticated connections (along with SASL <xref target='RFC4422'/>), as already stated in the core XMPP specification <xref target='RFC6120'/>.  In particular:</t>
        <t>
          <list style='symbols'>
            <t>Clients MUST authenticate servers.</t>
            <t>Servers MUST authenticate clients.</t>
            <t>Servers SHOULD authenticate other servers.</t>
          </list>
        </t>
        <t>This document does not mandate that servers need to authenticate peer servers, although such authentication is strongly preferred.  Unfortunately, in multi-tenanted environments it can be extremely difficult to obtain and deploy PKIX certificates with the proper Subject Alternative Names (see <xref target='I-D.ietf-xmpp-dna'/> and <xref target='I-D.ietf-xmpp-posh'/> for details).  To overcome that difficulty, the Domain Name Associations (DNA) specification <xref target='I-D.ietf-xmpp-dna'/> describes a framework for XMPP server authentication methods, which include not only PKIX but also DNS-Based Authentication of Named Entities (DANE) as defined in <xref target='I-D.ietf-dane-srv'/> and PKIX over Secure HTTP (POSH) as defined in <xref target='I-D.ietf-xmpp-posh'/>.  These methods can provide a basis for server identity verification when appropriate PKIX certificates cannot be obtained and deployed.</t>
        <t>Given the pervasiveness of eavesdropping <xref target='RFC7258'/>, even an encrypted but unauthenticated connection might be better than an unencrypted connection in these scenarios (this is similar to the "better than nothing security" approach for IPsec <xref target='RFC5386'/>).  Encrypted but unauthenticated connections include connections negotiated using anonymous Diffie-Hellman mechanisms or using self-signed certificates, among others.  In particular for XMPP server-to-server interactions, it can be reasonable for XMPP server implementations to accept encrypted but unauthenticated connections when Server Dialback keys <xref target='XEP-0220'/> are used; such keys on their own provide only weak identity verification (made stronger through the use of DNSSEC <xref target='RFC4033'/>), but this at least enables encryption of server-to-server connections.  The DNA prooftypes described above are intended to mitigate the residual need for encrypted but unauthenticated connections in these scenarios.</t>
      </section>

      <section title="Server Name Indication" anchor="rec-sni">
        <t>Although there is no harm in supporting the TLS Server Name Indication (SNI) extension <xref target='RFC6066'/>, this is not necessary since the same function is served in XMPP by the 'to' address of the initial stream header as explained in Section 4.7.2 of <xref target='RFC6120'/>.</t>
      </section>

      <section title="Human Factors" anchor="rec-user">
        <t>It is strongly encouraged that XMPP clients provide ways for end users (and that XMPP servers provide ways for administrators) to complete the following tasks:</t>
        <t>
          <list style='symbols'>
            <t>Determine if a given incoming or outgoing XML stream is encrypted using TLS.</t>
            <t>Determine the version of TLS used for encryption of a given stream.</t>
            <t>If authenticated encryption is used, determine how the connection was authenticated or verified (e.g., via PKI, DANE, POSH, or Server Dialback).</t>
            <t>Inspect the certificate offered by an XMPP server.</t>
            <t>Determine the cipher suite used to encrypt a connection.</t>
            <t>Be warned if the certificate changes for a given server.</t>
          </list>
        </t>
      </section>

    </section>

    <section title="IANA Considerations" anchor="iana">
      <t>This document requests no actions of the IANA.</t>
    </section>

    <section title="Security Considerations" anchor="security">
      <t>The use of TLS can help limit the information available for correlation between the XMPP application layer and the underlying network and transport layers.  As typically deployed, XMPP technologies do not leave application-layer routing data (such as XMPP 'to' and 'from' addresses) at rest on intermediate systems, since there is only one hop between any two given XMPP servers.  As a result, encrypting all hops (sender's client to sender's server, sender's server to recipient's server, recipient's server to recipient's client) can help to limit the amount of "metadata" that might leak.</t>
      <t>It is possible that XMPP servers themselves might be compromised. In that case, per-hop encryption would not protect XMPP communications, and even end-to-end encryption of (parts of) XMPP stanza payloads would leave addressing information and XMPP roster data in the clear.  By the same token, it is possible that XMPP clients (or the end-user devices on which such clients are installed) could also be compromised, leaving users utterly at the mercy of an adversary.</t>
      <t>This document and related actions to strengthen the security of the XMPP network are based on the assumption that XMPP servers and clients have not been subject to widespread compromise.  If this assumption is valid, then ubiquitous use of per-hop TLS channel encryption and more significant deployment of end-to-end object encryption technologies will serve to protect XMPP communications to a measurable degree, compared to the alternatives.</t>
      <t>This document covers only communication over the XMPP network and does not take into account gateways to non-XMPP networks.  As an example, for security considerations related to gateways between XMPP and the Session Initiation Protocol (SIP) see <xref target='RFC7247'/> and <xref target='I-D.ietf-stox-im'/>.</t>
    </section>

  </middle>

  <back>

    <references title="Normative References">

<reference anchor='I-D.ietf-uta-tls-bcp'>
<front>
<title>Recommendations for Secure Use of TLS and DTLS</title>
<author initials='Y' surname='Sheffer' fullname='Yaron Sheffer'>
    <organization />
</author>
<author initials='R' surname='Holz' fullname='Ralph Holz'>
    <organization />
</author>
<author initials='P' surname='Saint-Andre' fullname='Peter Saint-Andre'>
    <organization />
</author>
<date month='February' day='20' year='2015' />
<abstract><t>Transport Layer Security (TLS) and Datagram Transport Security Layer (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP.  Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and modes of operation.  This document provides recommendations for improving the security of both software implementations and deployed services that use TLS and DTLS.</t></abstract>
</front>
<seriesInfo name='Internet-Draft' value='draft-ietf-uta-tls-bcp-11' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-uta-tls-bcp-11.txt' />
</reference>

<reference anchor="RFC2119">
<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass.  Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date month='March' year='1997' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
      NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,  &quot;MAY&quot;, and
      &quot;OPTIONAL&quot; in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>
<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='ftp://ftp.isi.edu/in-notes/rfc2119.txt' />
<format type='HTML' octets='14486' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5661' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

<reference anchor='RFC4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author initials='R.' surname='Shirey' fullname='R. Shirey'>
<organization /></author>
<date year='2007' month='August' />
<abstract>
<t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security.  The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026).  The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract></front>
<seriesInfo name='RFC' value='4949' />
<format type='TXT' octets='867626' target='http://www.rfc-editor.org/rfc/rfc4949.txt' />
</reference>

<reference anchor='RFC5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'>
<organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'>
<organization /></author>
<date year='2008' month='August' />
<abstract>
<t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='5246' />
<format type='TXT' octets='222395' target='http://www.rfc-editor.org/rfc/rfc5246.txt' />
</reference>

<reference anchor='RFC6120'>
<front>
<title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<date year='2011' month='March' />
<abstract>
<t>The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities.  This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions.  This document obsoletes RFC 3920. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='6120' />
<format type='TXT' octets='451942' target='http://www.rfc-editor.org/rfc/rfc6120.txt' />
</reference>

<reference anchor='RFC6125'>
<front>
<title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<author initials='J.' surname='Hodges' fullname='J. Hodges'>
<organization /></author>
<date year='2011' month='March' />
<abstract>
<t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS).  This document specifies procedures for representing and verifying the identity of application services in such interactions. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='6125' />
<format type='TXT' octets='136507' target='http://www.rfc-editor.org/rfc/rfc6125.txt' />
</reference>

    </references>

    <references title="Informative References">

      <reference anchor="I-D.ietf-dane-srv">
        <front>
          <title>Using DNS-Based Authentication of Named Entities (DANE) TLSA records with SRV and MX records.</title>
          <author initials="T" surname="Finch" fullname="Tony Finch">
            <organization/>
          </author>
          <author initials="M" surname="Miller" fullname="Matthew Miller">
            <organization/>
          </author>
          <author initials="P" surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization/>
          </author>
          <date month="April" day="15" year="2015"/>
          <abstract>
            <t>The DANE specification (RFC 6698) describes how to use TLSA resource records in the DNS to associate a server's host name with its TLS certificate, where the association is secured with DNSSEC.  However, application protocols that use SRV records (RFC 2782) to indirectly name the target server host names for a service domain cannot apply the rules from RFC 6698.  Therefore this document provides guidelines that enable such protocols to locate and use TLSA records.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-dane-srv-13"/>
        <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-dane-srv-13.txt"/>
      </reference>

<reference anchor='I-D.ietf-stox-im'>
<front>
<title>Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Instant Messaging</title>
<author initials='P' surname='Saint-Andre' fullname='Peter Saint-Andre'>
    <organization />
</author>
<author initials='A' surname='Houri' fullname='Avshalom Houri'>
    <organization />
</author>
<author initials='J' surname='Hildebrand' fullname='Joe Hildebrand'>
    <organization />
</author>
<date month='March' day='5' year='2015' />
<abstract><t>This document defines a bidirectional protocol mapping for the exchange of single instant messages between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP).</t></abstract>
</front>
<seriesInfo name='Internet-Draft' value='draft-ietf-stox-im-13' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-stox-im-13.txt' />
</reference>

<reference anchor='I-D.ietf-xmpp-dna'>
<front>
<title>Domain Name Associations (DNA) in the Extensible Messaging and Presence Protocol (XMPP)</title>
<author initials='P' surname='Saint-Andre' fullname='Peter Saint-Andre'>
    <organization />
</author>
<author initials='M' surname='Miller' fullname='Matthew Miller'>
    <organization />
</author>
<date month='March' day='24' year='2015' />
<abstract><t>This document improves the security of the Extensible Messaging and Presence Protocol (XMPP) in two ways.  First, it specifies how "prooftypes" can establish a strong association between a domain name and an XML stream.  Second, it describes how to securely delegate a source domain to a derived domain, which is especially important in virtual hosting environments.</t></abstract>
</front>
<seriesInfo name='Internet-Draft' value='draft-ietf-xmpp-dna-10' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-xmpp-dna-10.txt' />
</reference>

      <reference anchor="I-D.ietf-xmpp-posh">
        <front>
          <title>PKIX over Secure HTTP (POSH)</title>
          <author initials="M" surname="Miller" fullname="Matthew Miller">
            <organization/>
          </author>
          <author initials="P" surname="Saint-Andre" fullname="Peter Saint-Andre">
            <organization/>
          </author>
          <date month="February" day="23" year="2015"/>
          <abstract>
            <t>Experience has shown that it is extremely difficult to deploy proper PKIX certificates for TLS in multi-tenanted environments, since certification authorities will not issue certificates for hosted domains to hosting services, hosted domains do not want hosting services to hold their private keys, and hosting services wish to avoid liability for holding those keys.  As a result, domains hosted in multi-tenanted environments often deploy non-HTTP applications such as email and instant messaging using certificates that identify the hosting service, not the hosted domain.  Such deployments force end users and peer services to accept a certificate with an improper identifier, resulting in obvious security implications.  This document defines two methods that make it easier to deploy certificates for proper server identity checking in non-HTTP application protocols.  The first method enables the TLS client associated with a user agent or peer application server to obtain the end-entity certificate of a hosted domain over secure HTTP as an alternative to standard PKIX techniques.  The second method enables a hosted domain to securely delegate a non-HTTP application to a hosting service using redirects provided by HTTPS itself or by a pointer in a file served over HTTPS at the hosted domain.  While this approach was developed for use in the Extensible Messaging and Presence Protocol (XMPP) as a Domain Name Association prooftype, it can be applied to any non-HTTP application protocol.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-xmpp-posh-04"/>
        <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-xmpp-posh-04.txt"/>
      </reference>

<reference anchor='RFC3920'>
<front>
<title abbrev='XMPP Core'>Extensible Messaging and Presence Protocol (XMPP): Core</title>
<author initials='P.' surname='Saint-Andre' fullname='Peter Saint-Andre' role='editor'>
<organization>Jabber Software Foundation</organization>
<address>
<email>stpeter@jabber.org</email></address></author>
<date year='2004' month='October' />
<area>Applications</area>
<workgroup>XMPP Working Group</workgroup>
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>XMPP</keyword>
<keyword>Extensible Messaging and Presence Protocol</keyword>
<keyword>Jabber</keyword>
<keyword>IM</keyword>
<keyword>Instant Messaging</keyword>
<keyword>Presence</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>
<abstract>
<t>This memo defines the core features of the Extensible Messaging and Presence Protocol (XMPP), a protocol for streaming Extensible Markup Language (XML) elements in order to exchange structured information in close to real time between any two network endpoints.  While XMPP provides a generalized, extensible framework for exchanging XML data, it is used mainly for the purpose of building instant messaging and presence applications that meet the requirements of RFC 2779.</t></abstract></front>
<seriesInfo name='RFC' value='3920' />
<format type='TXT' octets='194313' target='http://www.rfc-editor.org/rfc/rfc3920.txt' />
<format type='HTML' octets='281359' target='http://xml.resource.org/public/rfc/html/rfc3920.html' />
<format type='XML' octets='234610' target='http://xml.resource.org/public/rfc/xml/rfc3920.xml' />
</reference>

<reference anchor='RFC4033'>
<front>
<title>DNS Security Introduction and Requirements</title>
<author initials='R.' surname='Arends' fullname='R. Arends'>
<organization /></author>
<author initials='R.' surname='Austein' fullname='R. Austein'>
<organization /></author>
<author initials='M.' surname='Larson' fullname='M. Larson'>
<organization /></author>
<author initials='D.' surname='Massey' fullname='D. Massey'>
<organization /></author>
<author initials='S.' surname='Rose' fullname='S. Rose'>
<organization /></author>
<date year='2005' month='March' />
<abstract>
<t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System.  This document introduces these extensions and describes their capabilities and limitations.  This document also discusses the services that the DNS security extensions do and do not provide.  Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='4033' />
<format type='TXT' octets='52445' target='http://www.rfc-editor.org/rfc/rfc4033.txt' />
</reference>

<reference anchor='RFC4422'>
<front>
<title>Simple Authentication and Security Layer (SASL)</title>
<author initials='A.' surname='Melnikov' fullname='A. Melnikov'>
<organization /></author>
<author initials='K.' surname='Zeilenga' fullname='K. Zeilenga'>
<organization /></author>
<date year='2006' month='June' />
<abstract>
<t>The Simple Authentication and Security Layer (SASL) is a framework for providing authentication and data security services in connection-oriented protocols via replaceable mechanisms. It provides a structured interface between protocols and mechanisms. The resulting framework allows new protocols to reuse existing mechanisms and allows old protocols to make use of new mechanisms. The framework also provides a protocol for securing subsequent protocol exchanges within a data security layer.&lt;/t>&lt;t> This document describes how a SASL mechanism is structured, describes how protocols include support for SASL, and defines the protocol for carrying a data security layer over a connection. In addition, this document defines one SASL mechanism, the EXTERNAL mechanism.&lt;/t>&lt;t> This document obsoletes RFC 2222. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='4422' />
<format type='TXT' octets='73206' target='http://www.rfc-editor.org/rfc/rfc4422.txt' />
</reference>

<reference anchor='RFC5386'>
<front>
<title>Better-Than-Nothing Security: An Unauthenticated Mode of IPsec</title>
<author initials='N.' surname='Williams' fullname='N. Williams'>
<organization /></author>
<author initials='M.' surname='Richardson' fullname='M. Richardson'>
<organization /></author>
<date year='2008' month='November' />
<abstract>
<t>This document specifies how to use the Internet Key Exchange (IKE) protocols, such as IKEv1 and IKEv2, to setup "unauthenticated" security associations (SAs) for use with the IPsec Encapsulating Security Payload (ESP) and the IPsec Authentication Header (AH).  No changes to IKEv2 bits-on-the-wire are required, but Peer Authorization Database (PAD) and Security Policy Database (SPD) extensions are specified.  Unauthenticated IPsec is herein referred to by its popular acronym, "BTNS" (Better-Than-Nothing Security). [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='5386' />
<format type='TXT' octets='23103' target='http://www.rfc-editor.org/rfc/rfc5386.txt' />
</reference>

<reference anchor='RFC6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake' fullname='D. Eastlake'>
<organization /></author>
<date year='2011' month='January' />
<abstract>
<t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t></abstract></front>
<seriesInfo name='RFC' value='6066' />
<format type='TXT' octets='55079' target='http://www.rfc-editor.org/rfc/rfc6066.txt' />
</reference>

<reference anchor='RFC7247'>
<front>
<title>Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Architecture, Addresses, and Error Handling</title>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<author initials='A.' surname='Houri' fullname='A. Houri'>
<organization /></author>
<author initials='J.' surname='Hildebrand' fullname='J. Hildebrand'>
<organization /></author>
<date year='2014' month='May' />
<abstract>
<t>As a foundation for the definition of bidirectional protocol mappings between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP), this document specifies the architectural assumptions underlying such mappings as well as the mapping of addresses and error conditions.</t></abstract></front>
<seriesInfo name='RFC' value='7247' />
<format type='TXT' octets='57218' target='http://www.rfc-editor.org/rfc/rfc7247.txt' />
</reference>

<reference anchor='RFC7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'>
<organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'>
<organization /></author>
<date year='2014' month='May' />
<abstract>
<t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract></front>
<seriesInfo name='BCP' value='188' />
<seriesInfo name='RFC' value='7258' />
<format type='TXT' octets='13396' target='http://www.rfc-editor.org/rfc/rfc7258.txt' />
</reference>

<reference anchor='RFC7457'>
<front>
<title>Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'>
<organization /></author>
<author initials='R.' surname='Holz' fullname='R. Holz'>
<organization /></author>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'>
<organization /></author>
<date year='2015' month='February' />
<abstract>
<t>Over the last few years, there have been several serious attacks on Transport Layer Security (TLS), including attacks on its most commonly used ciphers and modes of operation.  This document summarizes these attacks, with the goal of motivating generic and protocol-specific recommendations on the usage of TLS and Datagram TLS (DTLS).</t></abstract></front>
<seriesInfo name='RFC' value='7457' />
<format type='TXT' octets='28614' target='http://www.rfc-editor.org/rfc/rfc7457.txt' />
</reference>

<reference anchor="XEP-0138">
  <front>
    <title>Stream Compression</title>
    <author initials="J." surname="Hildebrand" fullname="Joe Hildebrand">
      <organization/>
      <address>
        <email>jhildebr@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization/>
      <address>
        <email>stpeter@jabber.org</email>
      </address>
    </author>
    <date day="27" month="May" year="2009"/>
  </front>
  <seriesInfo name="XSF XEP" value="0138"/>
  <format type="HTML" target="http://xmpp.org/extensions/xep-0138.html"/>
</reference>

<reference anchor="XEP-0170">
  <front>
    <title>Recommended Order of Stream Feature Negotiation</title>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization/>
      <address>
        <email>stpeter@jabber.org</email>
      </address>
    </author>
    <date day="04" month="January" year="2007"/>
  </front>
  <seriesInfo name="XSF XEP" value="0170"/>
  <format type="HTML" target="http://xmpp.org/extensions/xep-0170.html"/>
</reference>

<reference anchor="XEP-0198">
  <front>
    <title>Stream Management</title>
    <author initials="J." surname="Karneges" fullname="Justin Karneges">
      <organization/>
      <address>
        <email>justin@affinix.com</email>
      </address>
    </author>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization/>
      <address>
        <email>stpeter@jabber.org</email>
      </address>
    </author>
    <author initials="J." surname="Hildebrand" fullname="Joe Hildebrand">
      <organization/>
      <address>
        <email>jhildebr@cisco.com</email>
      </address>
    </author>
    <author initials="F." surname="Forno" fullname="Fabio Forno">
      <organization/>
      <address>
        <email>fabio.forno@gmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Cridland" fullname="Dave Cridland">
      <organization/>
      <address>
        <email>dave.cridland@isode.com</email>
      </address>
    </author>
    <author initials="M." surname="Wild" fullname="Matthew Wild">
      <organization/>
      <address>
        <email>mwild1@gmail.com</email>
      </address>
    </author>
    <date day="29" month="June" year="2011"/>
  </front>
  <seriesInfo name="XSF XEP" value="0198"/>
  <format type="HTML" target="http://xmpp.org/extensions/xep-0198.html"/>
</reference>

<reference anchor="XEP-0220">
  <front>
    <title>Server Dialback</title>
    <author initials="J." surname="Miller" fullname="Jeremie Miller">
      <organization/>
      <address>
        <email>jer@jabber.org</email>
      </address>
    </author>
    <author initials="P." surname="Saint-Andre" fullname="Peter Saint-Andre">
      <organization/>
      <address>
        <email>stpeter@jabber.org</email>
      </address>
    </author>
    <author initials="P." surname="Hancke" fullname="Philipp Hancke">
      <organization/>
      <address>
        <email/>
      </address>
    </author>
    <date day="27" month="September" year="2013"/>
  </front>
  <seriesInfo name="XSF XEP" value="0220"/>
  <format type="HTML" target="http://xmpp.org/extensions/xep-0220.html"/>
</reference>

    </references>

    <section title="Implementation Notes" anchor="impl">
      <t>Some governments enforce legislation prohibiting the export of strong cryptographic technologies.  Nothing in this document ought to be taken as advice to violate such prohibitions.</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors would like to thank the following individuals for their input: Dave Cridland, Philipp Hancke, Olle Johansson, Steve Kille, Tobias Markmann, Matt Miller, and Rene Treffer.</t>
      <t>Roni Even caught several important issues in his review on behalf of the General Area Review Team.</t>
      <t>Ben Campbell, Spencer Dawkins, and Barry Leiba provided helpful input during IESG review.</t>
      <t>Thanks to Leif Johansson and Orit Levin as chairs of the UTA WG, Ben Campbell and Joe Hildebrand as chairs of the XMPP WG, and Stephen Farrell as the sponsoring Area Director.</t>
    </section>

  </back>

</rfc>
