Internet DRAFT - draft-kohbrok-mimi-transport

draft-kohbrok-mimi-transport







Network Working Group                                         K. Kohbrok
Internet-Draft                                                 R. Robert
Intended status: Informational                               Phoenix R&D
Expires: 24 March 2024                                 21 September 2023


                             MIMI Transport
                    draft-kohbrok-mimi-transport-01

Abstract

   This document defines an HTTPS based transport layer for use with the
   MIMI Protocol.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the More Instant Messaging
   Interoperability Working Group mailing list (mimi@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/mimi/.

   Source for this draft and an issue tracker can be found at
   https://github.com/kkohbrok/mimi-transport.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 24 March 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.





Kohbrok & Robert          Expires 24 March 2024                 [Page 1]

Internet-Draft                     MT                     September 2023


   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Authentication  . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Framing . . . . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Endpoint Discovery  . . . . . . . . . . . . . . . . . . . . .   3
   5.  REST Endpoints  . . . . . . . . . . . . . . . . . . . . . . .   3
     5.1.  Process Group Message . . . . . . . . . . . . . . . . . .   3
     5.2.  Welcome Information . . . . . . . . . . . . . . . . . . .   4
     5.3.  External Commit Information . . . . . . . . . . . . . . .   4
     5.4.  Verification Key  . . . . . . . . . . . . . . . . . . . .   5
     5.5.  Deliver Connection Request  . . . . . . . . . . . . . . .   5
     5.6.  Deliver Message . . . . . . . . . . . . . . . . . . . . .   5
     5.7.  Connection KeyPackage Retrieval . . . . . . . . . . . . .   6
     5.8.  Group KeyPackage Retrieval  . . . . . . . . . . . . . . .   6
   6.  Rate-limiting . . . . . . . . . . . . . . . . . . . . . . . .   6
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
     7.1.  Transaction Types . . . . . . . . . . . . . . . . . . . .   6
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   7

1.  Introduction

   This document describes an HTTP-based transport layer protocol for
   use with all MIMI sub-protocols.  The MIMI transport protocol
   provides an envelope for for MIMI transaction types and takes care of
   message authentication.

   This document also describes the endpoints that are served by the
   individual MIMI functionalities.

2.  Authentication

   The MIMI transport protocol uses the mutually authenticated mode of
   TLS to provide authentication for server-to-server communication.

   TODO: More information specific to how TLS should be used, i.e.
   mandate best practices that make sense in a mutually authenticated
   scenario that involves two WebPKI based certificates.




Kohbrok & Robert          Expires 24 March 2024                 [Page 2]

Internet-Draft                     MT                     September 2023


3.  Framing

   The MIMI transport protocol uses a simple framing structure that
   includes the transaction payload, as well as a small header that
   signals the protocol version, as well as the transaction type
   contained in the envelope.

   enum {
       reserved(0),
       mimi10(1),
       (65535)
   } ProtocolVersion;

   // See the "MIMI Transaction Types" IANA registry for values
   // e.g. "mimi.delivery-service.add"
   opaque TransactionType;

   struct {
     ProtocolVersion version = mimi10;
     TransactionType transaction_type;
     opaque serialized_transaction<V>;
   } TransactionEnvelope;

4.  Endpoint Discovery

   A messaging provider that wants to query the endpoint of another
   messaging provider first has to discover the fully qualified domain
   name under which Delivery Service of that provider can be reached.
   It does so by performing a GET request to provider.com/.well-
   known/mimi/ds-domain. provider.com could for example answer by
   providing the domain ds.provider.com (assuming that this is where it
   responds to the REST endpoints defined below).

5.  REST Endpoints

   The following REST endpoints can then be used to access the different
   functionalities of the Delivery Service.

   As the Delivery Service relies on TLS encoded structs, all requests
   to endpoints described below should be marked as Content-type:
   application/octet-stream.

   All structs and concepts referred to below are defined in draft-
   robert-mimi-delivery-service, where their underlying functionality is
   defined in more detail.

5.1.  Process Group Message




Kohbrok & Robert          Expires 24 March 2024                 [Page 3]

Internet-Draft                     MT                     September 2023


   POST /group_operation
   Content-type: application/octet-stream

   Body
   TLS serialized DSRequest

   Response
   TLS serialized DSResponse

   This REST endpoint provides access to all operations associated with
   an existing MLS group on the Delivery Service such as delivering
   application messages, adding group members, removing group members,
   updating key material, etc.  The payloads for this endpoint are
   generally provided (and signed) by a member of the corresponding
   group rather than the service provider of that member.  The exact
   operation, as well as the target group ID is determined by the
   payload itself rather than an HTTP header, the path or any other
   query parameter.

5.2.  Welcome Information

   GET /welcome_information
   Content-type: application/octet-stream

   Body
   TLS serialized DSRequest

   Response
   TLS serialized DSResponse

   Through this endpoint, a provider can obtain information required to
   join the group for clients that have already received a Welcome
   message.  The DS responds with the group’s RatchetTree, as well as
   authentication information of existing group members.

5.3.  External Commit Information

   GET /external_commit_information
   Content-type: application/octet-stream

   Body
   TLS serialized DSRequest

   Response
   TLS serialized DSResponse






Kohbrok & Robert          Expires 24 March 2024                 [Page 4]

Internet-Draft                     MT                     September 2023


   Guest providers can use this endpoint to obtain information that
   allows a client to join a group without a Welcome message from an
   existing group member.

5.4.  Verification Key

   GET /verification_key
   Content-type: application/octet-stream

   Body
   TLS serialized VerificationKeyRequest

   Response
   TLS serialized VerificationKeyResponse

   This allows guest providers to obtain the verification key of this
   provider.  This allows other providers to authenticate queries
   originating from this provider.

5.5.  Deliver Connection Request

   POST /connection_request
   Content-type: application/octet-stream

   Body
   TLS serialized QueueingServiceRequest

   Response
   TLS serialized QueueingServiceResponse

   This endpoint lets other providers deliver connection establishment
   request to clients of this provider.

5.6.  Deliver Message

   POST /deliver_message
   Content-type: application/octet-stream

   Body
   TLS serialized QueueingServiceRequest

   Response
   TLS serialized QueueingServiceResponse

   An owning provider can deliver messages from one of its owned groups
   to this endpoint, if one of the group’s clients is associated with
   this provider.




Kohbrok & Robert          Expires 24 March 2024                 [Page 5]

Internet-Draft                     MT                     September 2023


5.7.  Connection KeyPackage Retrieval

   POST /connection_key_packages
   Content-type: application/octet-stream

   Body
   TLS serialized ConnectionKeyPackageRequest

   Response
   TLS serialized ConnectionKeyPackageResponse

   Allows another provider to retrieve KeyPackages for use during the
   connection establishment process between two users.

5.8.  Group KeyPackage Retrieval

   POST /group_key_packages
   Content-type: application/octet-stream

   Body
   TLS serialized GroupKeyPackageRequest

   Response
   TLS serialized GroupKeyPackageResponse

   Allows another provider to retrieve KeyPackages that can be used to
   add another user or one of its clients to an existing group.

6.  Rate-limiting

   The MIMI transport protocol itself doesn’t include any rate-limiting
   measures.  However, traditional rate-limiting (e.g. based on sender
   IP) can be applied, as well as rate-limiting based on information in
   the message body such as Group ID (e.g. in the case of the
   /welcome_information endpoint) or group member (in the case of the
   /group_operation endpoint).  More fine-grained rate-limiting can be
   applied through the use of the emerging Privacy Pass protocol (draft-
   ietf-privacypass-auth-scheme).

7.  IANA Considerations

   IANA has created the following registries: * Transaction Types

7.1.  Transaction Types

   An transaction type denotes the nature of a given payload in the
   context of the MIMI protocol.  The transaction type is a string that
   is composed of substrings separated by dots.



Kohbrok & Robert          Expires 24 March 2024                 [Page 6]

Internet-Draft                     MT                     September 2023


   The first substring is "mimi", followed by the document that defines
   the corresponding transaction payload, which in turn is followed by
   the name of the transaction.  The MIMI transaction specified in the
   MIMI DS document that signals the addition of a client would for
   example be denoted by the string ~~~ "mimi.delivery-service.add" ~~~

Authors' Addresses

   Konrad Kohbrok
   Phoenix R&D
   Email: konrad.kohbrok@datashrine.de


   Raphael Robert
   Phoenix R&D
   Email: ietf@raphaelrobert.com



































Kohbrok & Robert          Expires 24 March 2024                 [Page 7]