Messaging Layer Security
# Messaging Layer Security

Messaging Layer Security (MLS) ist eine Sicherheitsschicht für die Ende-zu-Ende-Verschlüsselung von Nachrichten in kleinen und großen Gruppen. Es wird von der IETF MLS-Arbeitsgruppe entwickelt, mit den Zielen, effizient, praktisch und sicher zu sein.

## Geschichte

Die Idee der Standardisierung wurde 2016 geboren und erstmals in einem inoffiziellen Treffen während der IETF 96 in Berlin mit Teilnehmern von Wire, Mozilla und Cisco diskutiert.

Erste Ideen basierten auf der paarweisen Verschlüsselung für eine sichere 1:1- und Gruppenkommunikation. Im Jahr 2017 wurde von der University of Oxford eine wissenschaftliche Arbeit zur Einführung von Asynchronous Ratcheting Trees veröffentlicht, die den Schwerpunkt auf effizientere Verschlüsselungsverfahren legt.

Der erste BoF fand im Februar 2018 im IETF 101 in London statt. Die Gründungsmitglieder waren Mozilla, Facebook, Wire, Google, Twitter, University of Oxford und INRIA.

OpenMLS soll für eine Referenz-Implementierung in Rust stehen.

## Sicherheitseigenschaften

Die folgenden Sicherheitseigenschaften werden in der Charter von MLS erwähnt:

### Nachrichtenvertraulichkeit

    Nachrichten können nur von Mitgliedern der Gruppe gelesen werden.

### Nachrichtenintegrität und -authentifizierung

    Jede Nachricht wurde von einem authentifizierten Absender gesendet und wurde nicht manipuliert.

### Mitgliedschaftsauthentifizierung

    Jeder Teilnehmer kann die Mitgliederliste in der Gruppe überprüfen.

### Asynchronität

    Schlüssel können erstellt werden, ohne dass zwei Teilnehmer gleichzeitig online sind.

### Forward Secrecy

    Die vollständige Kompromittierung eines Knotens zu einem bestimmten Zeitpunkt offenbart keine vergangenen Nachrichten, die innerhalb der Gruppe gesendet wurden.

### Post-compromise Security

    Die vollständige Kompromittierung eines Knotens zu einem bestimmten Zeitpunkt offenbart keine zukünftigen Nachrichten, die innerhalb der Gruppe gesendet werden.

### Skalierbarkeit

    Der Ressourcenbedarf skaliert gut mit der Gruppengröße (vorzugsweise sublinear).

## Implementierungen

* OpenMLS: Programmiersprache: Rust, Lizenz: MIT, Maintainer: Phoenix R&D und Cryspen
* MLS++: Programmiersprache: C++, Lizenz: BSD-2, Maintainer: cisco
