<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rosenberg-mimi-msg-format-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="MIMI Msg Format">Message format for More Messaging Interop (MIMI)</title>
    <seriesInfo name="Internet-Draft" value="draft-rosenberg-mimi-msg-format-00"/>
    <author initials="J." surname="Rosenberg" fullname="Jonathan Rosenberg">
      <organization>Five9</organization>
      <address>
        <email>jdrosen@jdrosen.net</email>
      </address>
    </author>
    <author initials="C." surname="Jennings" fullname="Cullen Jennings">
      <organization>Cisco</organization>
      <address>
        <email>fluffy@iii.ca</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Applications</area>
    <workgroup>Mimi</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines a semantic model and format for the inter-provider exchange of chat messages. This format is focused on interoperability, while providing extensibility for additional content downstream. It supports the common messaging features present in chat systems today, including threading, reactions, images, gifs, videos, delivery and read receipts.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="problems">
      <name>Introduction</name>
      <t>The More Instant Messaging Interoperability (MIMI) working group will specify the minimal set of mechanisms required to make modern Internet messaging applications interoperable. Over time, messaging applications have achieved widespread use, their feature sets have broadened, and their adoption of end-to-end encryption (E2EE) has grown, but the lack of interoperability between these services continues to create a suboptimal user experience. The standards produced by the MIMI working group will allow for E2EE messaging applications for both consumer and enterprise to interoperate without undermining the security guarantees that they provide.</t>
      <t>For security purposes, end to end messaging encryption using MLS <xref target="I-D.ietf-mls-architecture"/> will be used. MLS provides encryption of opaque blobs of message content, but does not specify the content format itself. This specification is meant to fill that gap, providing the semantics of a messaging system and the syntax of messages exchanged between providers.</t>
    </section>
    <section anchor="chat-resource-semantic-model">
      <name>Chat Resource Semantic Model</name>
      <t>A chat resource (often called a chat or chat room), represents a message-based communications between 2 or more users. When there are two users, it is referred to as a 1-1 chat. When there are more than two users, it is referred to as a group chat. Each chat resource is identified by a tuple, consisting of a version 4 UUID, and a DNS name. The UUID uniquely identifies the chat resource, and is called the chat ID. The DNS name identifies the provider in which it lives. We refer to this provider as the owner.</t>
      <t>In some chat systems, there can only be a single instance of a 1-1 group chat between a pair of users. MIMI is agnostic to this choice, and reflects whatever policy is in place by the owner.</t>
      <t>A chat has a set of properties. In this version, only a single property is defined - the display name.</t>
      <t>The chat also maintains the current list of members. Each member is represented by their identity, which can be mapped to the keying material used to decrypt messages using MLS <xref target="I-D.ietf-mls-protocol"/>.</t>
      <t>The chat, of course, has a sequence of messages. Each message has a type. The set of valid types is extensible. Messages are immutable once posted. If a message is edited or deleted, this is handled by sending a new message which is an edit or deletion of the prior message. The set of types are: content (in which the user sends text, image, video or audio), edit (in which the user is modifying a prior message), delete (in which the user is deleting a prior message), reaction (in which the user is reacting to a prior message), and create thread (in which the user is creating a thread about a prior message). The content message type includes the format of the content as a MIME type (e.g., text/plain). All messages include a reference to the prior message. For reactions, edits, deletes and threads, this reference is to the specific message for which this is a reaction, edit, delete or start of a thread. For a content message, the reference indicates the most recent message in the chat known to the user when they posted the message. This facilitates message sequencing operations.</t>
      <t>There is also a message type for modifying the chat properties. This message contains the property name and its value. In this case, it would be text for the display name of the chat.</t>
      <t>(TBD: need to sort out message related to group membership changes and whether they are part of this protocol or just using mls in some way).</t>
      <t>All messages include the identity of the user that generated the message. These must match to the identities known the MLS AS.</t>
      <t>(TBD: how to convey the keyID needed to decrypt, which is needed outside of the payload that is encrypted?)</t>
      <t>All messages also include the chat resource (ID and provider DNS name). This makes each MIMI message completely self-contained, and usable without any additional context outside of the message itself.</t>
      <t>When a user posts a message to the chat, the message is e2e encrypted. This means that the server, and its provider, does not and cannot decrypt the content. Thus, mimi messages are considered opaque to the server. The server will store these messages, but note the timestamp at which the message is received. This timestamp is used to facilitate synchronization of messages between the source of truth and any domains which are holding replicas. The synchronization is performed by having the providers of the participants issue subscription using I-D.nandakumar-mimi-transport, and requesting all messages since a specific timestamp.</t>
      <t>Different chat systems have different rules about whether or not a new user, added to the chat, has access to historic messages in the chat that were posted prior to joining. This specification leaves that choice to the policy of the owner of the chat, and supports models where history is provided, and where it is not provided. In cases where it is not provided, when a user is added to a chat at time T, they would have access to all content posted from time T onwards. This would work by having their provider subscribe to all messages starting at time T. In cases where history is required, the provider would request messages starting from some time prior to T, probably as the user scrolls backwards through the chat.</t>
      <t>Consequently, a key property of the system is that, for any value of T, a provider can subscribe to messages sent since time T, pass them to the end client, which can decrypt them and "execute" them in sequence. That sequence produces a valid rendering of the chat history that is not missing information. For this to be true, it also means that reactions, threads, edits and deletes must also include the original content to which they apply. Consider the case where a message is posted at time T-5, and then another user posts a reaction at time T+3. A new user is invited to the group chat at time T. If they subscribe to receive all messages sent since time T, they will get the reaction at time T+3, but not the original content which is being reacted to. Thus, the edit needs to include the content to which there is a reaction.</t>
      <t>TODO: need to add timestamps, think about whether these are client generated and thus included in the signatures or server side; does MLS say something about this?</t>
    </section>
    <section anchor="mimi-message-syntax">
      <name>MIMI Message Syntax</name>
      <t>MIMI messages are structured as JSON, which is the current syntax dujour for representing extensible data on the Internet. The old CPIM format <xref target="RFC3862"/>, while originally specified as an interoperable format for instant messaging, is sufficiently dated at this point and missing many of the fields needed.</t>
      <t>The following is an example message in json format:</t>
      <artwork><![CDATA[
{
  "ID" : "6845db7f-95b4-4f60-9a65-820f222e444a",

  "chat" : {
    "ID" : "72c659b7-d1f7-46ab-ae73-2339e3839036",
    "provider": "whatsapp.com"
  },

  "sender" : "+14085551212",

  "type" : "reaction",

  "reaction" : {
    "unicode" : "U+2764"
  }

  "reference" : {
    "ID" : "959489b0-40ab-4baf-b187-5795b8757c67",

    "sender" : "+17329876543",
    "type" : "content",
    "format" "text/plain",

    "text" : "Sure, I will join you guys *l8r*",

    "refersTo" : "473db0ec-7950-4c38-8de2-189ea9ac132b"

  }

}

]]></artwork>
      <t>The "ID" field indicates the identity of the message. The "chat" structure includes the chat resource ID and its associated provider. The "sender" here is an E.164 number which refers to the sender of this mesage. This example message is of type "reaction". For each type, there is always a structure which has information specific to this type. In the case of a reaction, this is a "reaction" structure that has a single field - the unicode character that represents the reaction. In this case, it is U+2764 which is a heart.</t>
      <t>Most importantly, the message contains a reference structure, which is the message to which the reaction applies. The reference always includes the ID, sender, type and content of the reference. Here, it is a text message from a different user, "+17329876543". That message, in turn, was typed at a time when message "473db0ec-7950-4c38-8de2-189ea9ac132b" was the most recent one in the UI of this user.</t>
      <t>In this use case, had there been reactions to this message which happened prior to the user joining the group, and history was not provided, the new user would not see all of the reactions - it would only see those reactions which were sent subsequent to the user joining the chat. But, the new user joining the group would at least see the message to which the reaction was applied, even though that message itself may have been sent prior to the user joining the group.</t>
      <t>For text content, markdown is used to enable based formatting. A limited subset of markdown will be supported (details TBD).</t>
      <t>Threads are not permitted to have subthreads.</t>
      <t>Link previews are problematic and require further discussion. THere are two options - previews generated at the sender, and previews generated at the receiver. If the preview is generated at the receiver, it is a significant security issue, since it triggers the receiver to fetch a URL that they did not explicitly click on. When generated at the sender, they potentially reveal private information about the page which would only be shown to the sender, not the receiver (think: sending a link to your bank). My view is that they should be sender generated in mimi, but without cookies.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <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.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="I-D.ietf-mls-architecture" target="https://www.ietf.org/archive/id/draft-ietf-mls-architecture-09.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mls-architecture.xml">
        <front>
          <title>The Messaging Layer Security (MLS) Architecture</title>
          <author fullname="Benjamin Beurdouche" surname="Benjamin Beurdouche">
            <organization>Inria &amp; Mozilla</organization>
          </author>
          <author fullname="Eric Rescorla" surname="Eric Rescorla">
            <organization>Mozilla</organization>
          </author>
          <author fullname="Emad Omara" surname="Emad Omara">
            <organization>Google</organization>
          </author>
          <author fullname="Srinivas Inguva" surname="Srinivas Inguva">
            <organization>Twitter</organization>
          </author>
          <author fullname="Albert Kwon" surname="Albert Kwon">
            <organization>MIT</organization>
          </author>
          <author fullname="Alan Duric" surname="Alan Duric">
            <organization>Wire</organization>
          </author>
          <date day="19" month="August" year="2022"/>
          <abstract>
            <t>The Messaging Layer Security (MLS) protocol [I-D.ietf-mls-protocol] specification has the role of defining a Group Key Agreement protocol, including all the cryptographic operations and serialization/deserialization functions necessary for scalable and secure group messaging. The MLS protocol is meant to protect against eavesdropping, tampering, message forgery, and provide further properties such as Forward Secrecy (FS) and Post-Compromise Security (PCS) in the case of past or future device compromises. This document describes a general secure group messaging infrastructure and its security goals. It provides guidance on building a group messaging system and discusses security and privacy tradeoffs offered by multiple security mechanisms that are part of the MLS protocol (e.g., frequency of public encryption key rotation). The document also provides guidance for parts of the infrastructure that are not standardized by the MLS Protocol document and left to the application or the infrastructure architects to design. While the recommendations of this document are not mandatory to follow in order to interoperate at the protocol level, they affect the overall security guarantees that are achieved by a messaging application. This is especially true in case of active adversaries that are able to compromise clients, the delivery service, or the authentication service.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-09"/>
      </reference>
      <reference anchor="I-D.ietf-mls-protocol" target="https://www.ietf.org/archive/id/draft-ietf-mls-protocol-16.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mls-protocol.xml">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="Richard Barnes" surname="Richard Barnes">
            <organization>Cisco</organization>
          </author>
          <author fullname="Benjamin Beurdouche" surname="Benjamin Beurdouche">
            <organization>Inria &amp; Mozilla</organization>
          </author>
          <author fullname="Raphael Robert" surname="Raphael Robert"/>
          <author fullname="Jon Millican" surname="Jon Millican">
            <organization>Facebook</organization>
          </author>
          <author fullname="Emad Omara" surname="Emad Omara">
            <organization>Google</organization>
          </author>
          <author fullname="Katriel Cohn-Gordon" surname="Katriel Cohn-Gordon">
            <organization>University of Oxford</organization>
          </author>
          <date day="11" month="July" year="2022"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy and post-compromise security for groups in size ranging from two to thousands.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-16"/>
      </reference>
      <reference anchor="RFC6914" target="https://www.rfc-editor.org/info/rfc6914" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6914.xml">
        <front>
          <title>SIMPLE Made Simple: An Overview of the IETF Specifications for Instant Messaging and Presence Using the Session Initiation Protocol (SIP)</title>
          <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
          <date month="April" year="2013"/>
          <abstract>
            <t>The IETF has produced many specifications related to Presence and Instant Messaging with the Session Initiation Protocol (SIP).  Collectively, these specifications are known as SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE).  This document serves as a guide to the SIMPLE suite of specifications.  It categorizes the specifications, explains what each is for, and how they relate to each other.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6914"/>
        <seriesInfo name="DOI" value="10.17487/RFC6914"/>
      </reference>
      <reference anchor="RFC6120" target="https://www.rfc-editor.org/info/rfc6120" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6120.xml">
        <front>
          <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
          <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
          <date month="March" year="2011"/>
          <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"/>
        <seriesInfo name="DOI" value="10.17487/RFC6120"/>
      </reference>
      <reference anchor="RFC3862" target="https://www.rfc-editor.org/info/rfc3862" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3862.xml">
        <front>
          <title>Common Presence and Instant Messaging (CPIM): Message Format</title>
          <author fullname="G. Klyne" initials="G." surname="Klyne"/>
          <author fullname="D. Atkins" initials="D." surname="Atkins"/>
          <date month="August" year="2004"/>
          <abstract>
            <t>This memo defines the MIME content type 'Message/CPIM', a message format for protocols that conform to the Common Profile for Instant Messaging (CPIM) specification. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3862"/>
        <seriesInfo name="DOI" value="10.17487/RFC3862"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA41aW28judF9N+D/QHhfPFm1P1uWr8GHZHY8i3ixzgY7M8hj
QHVTEsd9UZpsa5SB89tzqopkU7KNxIsdXbpJ1vXUqWoVRXF44K2vza16MM7p
pVGLrm+0pxf10PUmfG/bpbpvvem7tTp+uH+4f3d4oOfz3jxhJT6qB7dUP/PS
w4OqK1vdYM+q1wtf9J0z7dz0y6KxjS0atyzkkOL0FDdrjzunp9NpcXZaTGeH
B4cHPyjndVv9Q9ddi4u+Hwx9bdc9f3B+enp6czqFCL3Rt+r9el3bUnvbte7w
YLOESDjo8OBxcytCt8YXdyTL4QFuu8XuFe1XdhX0ulWDK7QrLVas7a3C3w+q
1C2+Nkr3vd6qY7tQuq7V1rh3CoZZabdSK9MbElUVyndleOe63vdm4eLHbSOf
FN1zSxvQ+3jXLZ9VmYUeau9wS7pB1oUF0HPwq66/pUv0V8Q3StkWd/1yon6P
Rh4viQ9+6VrtV1DnlTu6Htr/bJ/MzfidabStb9XXit325/B6AhO+dfqHE/WL
aVuY0u0f/mGoa9O+cplP/mBd2b04eVEPi8X2z9bak1KT8ocHLYcL5AwW+P3n
D9Ozs5vw6b64O7HGL4qmhiP7cmW9Kf3Qm9eur/sOnujqcafLm7NZ9ulsejp+
Or++nN5y6LWLTIbDg6IolJ473+vS0+fPK+sU4n5oTOvJo7Y1TmnloFTrbama
rjK1QlDnCeZXBiZEgJJYT7YyvTLfSjgLedgtFN551UheuhPFZ4TV/K5EhFaq
a2WPbm16Pbe19duJ2qxsbZTsSrlrvnnTOiuX+WxdVZYyRteq7LCexO42LVQy
ujlR9165Yb1GoDoWs+yaBic1CQ0WRpONHQ4xjlbbVgR2W+dNQ9FcaUhi27Ie
WAa/wtb0bqLwpuR0xfWGtJuopV3gXzJCh1cYC6but2wxWoZ/SmPX3p1E8ze2
qmrGBeR431UD7xiD6fsPUH5eQ5Dnw4P/z/7EW0bA7b4loPEvQS6ZMqCd2nT9
I11f9t2wVhsLNHBrU9rFls3T2BaK4DvjyXONIS9aBzP05p+D7eEnZHejHw1H
Qt8mYMpMqjMcy31amxP1G6yhvG3M5K0FK/0EvEL0myectoEh3ZothyiZkJC2
j04jMcOCed/pyrSmmrCp5TZddWs2JlQxbVX4rsAL3pb9Vi4cf5x+/PiOgJAs
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

-->

</rfc>
