Last updated: 2022-11-16

                                   __   __ _    ____               _   ___ 
  __ _ _ __ ___   __      _____   |  \ /  | |  /   _|   _   _  ___| |_/ _ \
 / _` | '__/ _ \  \ \ /\ / / _ \  |   V   | |  \_ (_   | | | |/ _ \ __\// /
| (_| | | |  __/   \ V  V /  __/  | |\_/| | |____)  \  | |_| |  __/ |_  \/ 
 \__,_|_|  \___|    \_/\_/ \___|  |_|   |_|____|____/   \__, |\___|\__| () 
                                                         |___/             

Not Yet.

Messaging Layer Security (MLS) is an upcoming IETF standard for end-to-end encryption in messaging systems. We are investigating bringing MLS to Matrix.

In most cases, MLS has better performance in large groups than Olm/Megolm. The graph below shows a comparison¹ between some MLS and Olm/Megolm operations.

Comparison graph

The graph gives a simplified comparison, but gives an idea of their relative performance. In most cases, MLS is faster than Olm/Megolm. But one case in which MLS can be much slower when adding a large number of users to a group at a time. It is expected that this would not be a common occurrence.

However, integrating MLS into Matrix is not a simple task. One of the biggest hurdles is that MLS assumes that epochs (essentially, the state of an MLS tree in between updates to the tree) have a linear ordering. However, Matrix being a decentralised system with no central authority, it is difficult to enforce a linear ordering. Thus we must either determine a way to do so, or work around this limitation.

In addition, we need to investigate how other Matrix features, such as key backups, interact with MLS.

Tasks

(tasks are not necessarily in order)

Initial investigation

Implementation

Documentation

Resources


¹ code for running the comparison is at https://gitlab.matrix.org/uhoreg/mls-comparison. More details on how the comparison was run is at https://gitlab.matrix.org/uhoreg/mls-comparison/-/wikis/home.