<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<!-- used v2 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<rfc category="info" ipr="trust200902" number="7106" submissionType="IETF"
consensus="yes">

<?rfc toc='yes' ?>
<?rfc symrefs='yes' ?>
<?rfc sortrefs='yes'?>
<?rfc iprnotified='no' ?>
<?rfc strict='yes' ?>
<?rfc compact='yes' ?>
   <?rfc subcompact="no" ?>
   <?rfc rfcedstyle="yes" ?>


  <front>
    <title abbrev="Entry Purpose: GroupTextChat">A Group Text Chat
      Purpose for Conference and Service URIs in the SIP
      Event Package for Conference State
    </title>

    <author initials='E.' surname='Ivov' fullname='Emil Ivov'>
      <organization abbrev='Jitsi'>Jitsi</organization>
      <address>
        <postal>
          <street></street>
          <city>Strasbourg</city>
          <code>67000</code>
          <country>France</country>
        </postal>
        <phone>+33-177-624-330</phone>
        <email>emcho@jitsi.org</email>
      </address>
    </author>

    <date month="January" year="2014"/>

    <keyword>SIP</keyword>
    <keyword>Conference Event Package</keyword>
    <keyword>service-uris</keyword>
    <keyword>conference-uris</keyword>
    <keyword>URI purpose</keyword>

    <abstract>
      <t>
        This document defines and registers a value of "grouptextchat"
        ("Group Text Chat") for the URI &lt;purpose&gt; element of
        SIP's Conference Event Package.
      </t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" anchor="intro">
      <t>
        The Conference Event Package <xref target="RFC4575"/> defines
        means for a SIP User Agent (UA) to obtain information about the
        state of the conference, the types of media that are being used,
        the number and state of current participants, additional sources of 
information (e.g., web page), availability of recordings, and more.
      </t>
      <t>
        Details describing auxiliary services available for a conference
        are included within a &lt;service-uris&gt; child element of the
        &lt;conference&nbhy;description&gt; element. Such details are
        presented as a set of &lt;entry&gt; child elements, each
        containing the URI allowing access the corresponding auxiliary
        service. In addition to the URI, entries can also contain a
        descriptive &lt;display-text&gt; element and are expected to
        have a &lt;purpose&gt; element that specifies their nature
        as illustrated in the following example:
      </t>
      <figure>
                <artwork>
<![CDATA[
<conference-description>
<subject>Agenda: This sprint's goals</subject>
  <service-uris>
    <entry>
      <uri>http://conference.example.com/dev-group/</uri>
      <purpose>web-page</purpose>
    </entry>
  </service-uris>
</conference-description>
]]>
        </artwork>
      </figure>
      <t>
        In addition to the "web-page" purpose mentioned above,
        <xref target="RFC4575"/> also defines several other possible
        values in the "URI Purposes" sub-registry under the existing
        "Session Initiation Protocol (SIP) Parameters" registry.
      </t>
      <t>
        This specification adds the "grouptextchat" value to this
        "URI Purposes" sub-registry. The new value allows conference
        mixers or focus agents to advertise a multi-user chat location
        (i.e., a chat room) associated with the current conference.
      </t>
      <t>
        The actual URI carried by the entry with the "grouptextchat"
        purpose can be of any type as long as the content that it points
        to allows for instant text communication between
        participants of the conference. Suitable URI schemes include
        sip: and sips: <xref target="RFC3261"/> for SIP-signaled
        Message Session Relay Protocol (MSRP) conferences, xmpp:
        <xref target="RFC5122"/> for XMPP Multi-User Chat (MUC), irc:
        for Internet Relay Chat, http: or https: for web-based chat, and
        others.
      </t>
      <t>
        The following example shows one possible use case:
      </t>
      <figure>
        <artwork>
<![CDATA[
<conference-description>
<subject>Agenda: The goals for this development sprint.</subject>
  <service-uris>
    <entry>
      <uri>xmpp:dev-sprint@conference.example.com</uri>
      <purpose>grouptextchat</purpose>
    </entry>
  </service-uris>
</conference-description>
]]>
        </artwork>
      </figure>
      <t>
        It is worth pointing out that, in addition to simply adding
        text messaging capabilities to an audio/video conference, group
        chats can also be used for defining roles, giving permissions,
        muting, kicking out and banning participants, etc. A conference mixer
        or focus agent can mimic these settings within the conference
        call, actually muting, kicking out, or banning participants on the
        call as these actions occur in the chat room. Such an approach
        requires no additional specification and is purely an
        implementation decision for the conferencing software.
      </t>
      <t>
        It is also worth mentioning that it is possible for the
        grouptextchat URI to match the URI of the conference. This
        would typically be the case in scenarios where the conference
        focus agent also provides a SIP-signaled MSRP chat service at the
        same URI.
      </t>
      <t>
        Also, in some cases, servers could potentially advertise more
        than a single chat room for a specific conference. When this happens,
clients supporting the "grouptextchat" purpose could either present the user
with a choice of joining individual chats or simply opening all of them simultaneously.
Either way, there is to be no expectation about
        any content synchronization between chat rooms. If synchronization exists,
        such behavior would be entirely implementation specific.
      </t>
    </section>
    <section title="Security Considerations" anchor="security">
      <t>
        Advertising group text chats over SIP could provide malicious
        entities with the following attack vector: if a malicious entity
        is capable of intercepting and modifying conference package event notifications, it could trick participants into joining
        a third-party chat room where the attacker could eavesdrop on
        the conversation and potentially even impersonate some of the
        participants.
      </t>
      <t>
        Similar attacks are already possible with the "participation"
        &lt;conference-uris&gt; defined in <xref target="RFC4575"/>,
        which is why it recommends "a strong means for authentication
        and conference information protection" as well as "comprehensive
        authorization rules". Clients can integrity protect and encrypt
        notification messages using end-to-end mechanisms such as S/MIME
        or hop-by-hop mechanisms such as TLS. When none of these are
        possible, clients need to clearly display the address of
        the destination chat room (before and after it has been joined)
        so that users can notice possible discrepancies.
      </t>
      <t>
        As an example, let's consider a situation in which an attacker
        tricks participants into joining a conference chat at
        xmpp:attack@evil.example.com rather than the chat at
        xmpp:dev&nbhy;sprint@conference.example.com, which was originally
        advertised for this conference. In the absence of any SIP-layer
        security, displaying the full URI of the target chat room to the
        user would be the only way of actually detecting the problem.
      </t>
      <t>
        Obviously, relying on human-performed string comparison is a
        rather meek form of protection. Therefore, client developers are
        encouraged to implement additional checks that would allow users
        to request via configuration that a target chat room satisfy some
        basic criteria, such as:
      </t>
      <t>
        <list style="symbols">
          <t>
            target chat rooms belong to the same domain as the
            conference service that is advertising them.
          </t>
          <t>
            chat room names (user part of the chat room URI) match the
            name of the conference.
          </t>
        </list>
      </t>
      <t>
        Once again, these conditions are only satisfied if the
        corresponding deployment conventions have been followed and they
        cannot be universally required by clients. Therefore, they are
suggested configuration options.
      </t>
      <t>
        An additional security consideration might be the possibility for using
a large-scale conference as leverage to perform a flooding attack on a chat room.
To help prevent this, clients could to require
        an explicit user action before joining chat rooms on behalf of
        users. In cases where such a constraint could be considered to
        have a negative impact on usability and where automatic joins are
        seen as important, clients may still perform the joins but only when
        they can confirm a relationship between the room and the
        conference (e.g., they both belong to the same administrative
        domain, or domains that the client is provisioned to consider as
        related).
      </t>
      <t>
        Furthermore, an attack on an auxiliary chat room might be easier
        (or harder) than an attack on the main conference chat room depending on
        the security policies in effect. Once again, clients would have
        to make sure that users are appropriately notified about the
        security levels of each component of the conference and that
        user-specified privacy restrictions are applied to all of them.
      </t>
    </section>

    <section title="IANA Considerations" anchor="iana">
      <t>
        IANA has added the value "grouptextchat" to the "URI Purposes" sub-registry of the
        "Session Initiation Protocol (SIP) Parameters" registry &lt;http://www.iana.org/assignments/sip-parameters&gt; as
        follows:</t>
      <figure>
        <artwork><![CDATA[
  Value: grouptextchat
  Description: The URI can be used to join a multi-user chat directly
     associated with the conference
  Document: [this document]
        ]]></artwork>
      </figure>
    </section>

  </middle>

  <back>
    <references title='Normative References'>
      <?rfc include="reference.RFC.4575"?>
    </references>
    <references title='Informative References'>
      <?rfc include="reference.RFC.3261"?>
      <?rfc include="reference.RFC.5122"?>
    </references>
    <section title='Acknowledgements'>
      <t>
        Thanks to Jonathan Lennox, Mary Barnes, Paul Kyzivat, Peter
        Saint-Andre, Rifaat Shekh-Yusef, and Saul Ibarra Corretge for
        their input.
      </t>
    </section>
  </back>

</rfc>
