[MLS] SlimMLS

Raphael Robert <ietf@raphaelrobert.com> Fri, 29 May 2026 10:39 UTC

Return-Path: <ietf@raphaelrobert.com>
X-Original-To: mls@mail2.ietf.org
Delivered-To: mls@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id B8B97F751235 for <mls@mail2.ietf.org>; Fri, 29 May 2026 03:39:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1780051183; bh=oKpoMnqgijFUbUC7FfzurY1Ca7J6cFMtDxRi4xCEm8w=; h=From:Subject:Date:To; b=i8IroikKM+2uvB6uEb4DpyBCu6vGNncxYcXjzoFn+SRTIKr48h9ivPsWe1P/aE98G 5SOidFu6RlQGOyUbLWpOH07foNvt0y6i75WF0NuTrRpgeaUAYekDpXjEDYwCZC2wUe tWQCJciCEaHV7+1/o9upIyDj/lEh78dUquTS0+mA=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=raphaelrobert.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id G_xVXL9N4dKW for <mls@mail2.ietf.org>; Fri, 29 May 2026 03:39:42 -0700 (PDT)
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 7F49AF750E7C for <mls@ietf.org>; Fri, 29 May 2026 03:37:33 -0700 (PDT)
Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-bd124546379so2040893466b.3 for <mls@ietf.org>; Fri, 29 May 2026 03:37:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raphaelrobert.com; s=rr; t=1780051052; x=1780655852; darn=ietf.org; h=to:date:message-id:subject:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=hBOwSFFu0MtY1MQ2PqHB9C3RJXAhTRmIF72Dy0KzMPw=; b=FKnX98vDTYPGWSg7JB6wNCBHCyGmnqnO1rT0KNG7OOUfVcOg8XzkoTZvFP06Gtg6jd kCNt+Qv26TtyXmwFDqT7EAaQ+MA3XHiSqjXBH514MyAvC2RZSgekm/mNbeBu8bWVoT+/ 9zU3Ja6oweAPm/lMWGJegYRLvBpGRZYkc0o2w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780051052; x=1780655852; h=to:date:message-id:subject:mime-version:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hBOwSFFu0MtY1MQ2PqHB9C3RJXAhTRmIF72Dy0KzMPw=; b=nRy3ufJU+Ygk5ttr771FaBzP3TWKrsetvuIjA1BDzLcZFQyx7JBNnoIn8BC30R1PiM 6bajxfoDXTmus5MDBmIj6KLt7ReXRwRSv5hPiZnc/IDUSPw7TnW6yz+TU7i+9Ikoij7c iGw/WKv1BJfm9mEQtaQ93Lc06JqxtVqJuS+epiYN9Zt0TvlgJUgsWElcs891+UT6LhDJ Ch6NLgaTzyjNA6sh872wDS1AD0tRMbh3vk9Jbgb3DJAGi5v5k0JGaa92RW2oIBrBgyRG OQbK6whQRAU2JXEqnXhZgLgdDHWgEB7eC+paG2PCnBA3H9NpzCHtvqoWwCkK0gtmAbwn iC9A==
X-Gm-Message-State: AOJu0YwUtCP/h73urpCXTxzxLKZQOYUW1wdFXCmDYcoV1I80iet/p/Eb nm1zw3+Lk/FFwrAoX+DWZiL2Lmuqm4zHJQQ7lenJUtM4uiLxDYE+/jLaWE8dfASEsmPVI2S4dQm Dno31
X-Gm-Gg: Acq92OGB+j3dqmFnvLOd5N22Ve3sgJEjKmDPNKnnsiesExG7EWpHejHBqyfRc92SXkG P5zgFFPZmWI46/4qY+2MzN1QCFj+euHCsSW6njM+swnW5ZG+1jGL7JfNPSkziUY9yhccOJHk5q4 dHIf+jLJx98Kygk6hoImmiUQ3r5G6fjZRo7TrIrbFi2spsU25M6Que/DHeXGq/RkGtOgQdqKq0r iRY3cqqL5CL+E+aBomJ0Ly6EdmwCXHN7mrmzlln+BCCG51HE5G2Oa+Ii0XYxnLsr4GTnAxO4Ohj GEXEyi/l4fevaOs2/RdyiMrpvOQJmJLmJQQRiaAVEldsd97yfkiniMnSgpQFDfbKgnM70DbogXr oJ1W5zefYJJq9BP9ZScRxXbyTOJEttJBfF3Y5yf7p8HbyA4ps8Zb/tsC2T7kkGg/nG5V9sU2vpR kcubS9kUA+YsJ8DfkUqUe0Z+rqwqs6geGs7svy8U/n2FKHj/LemlKXhT3J
X-Received: by 2002:a17:907:7844:b0:bea:3f4a:5d6c with SMTP id a640c23a62f3a-bea3f4a5dbdmr26002566b.42.1780051051597; Fri, 29 May 2026 03:37:31 -0700 (PDT)
Received: from smtpclient.apple ([95.90.239.65]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-be9d5cd01b1sm55403766b.37.2026.05.29.03.37.30 for <mls@ietf.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 May 2026 03:37:31 -0700 (PDT)
From: Raphael Robert <ietf@raphaelrobert.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_B279AF6F-4573-4DA2-A1BA-3341CF8DDBB0"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.600.51.1.1\))
Message-Id: <3475CBBA-0262-4F76-A238-12CCF592339B@raphaelrobert.com>
Date: Fri, 29 May 2026 12:37:20 +0200
To: MLS List <mls@ietf.org>
X-Mailer: Apple Mail (2.3864.600.51.1.1)
Message-ID-Hash: KRQQVECNZ2M2ZGFXJQL37YQ6WR2HVHIB
X-Message-ID-Hash: KRQQVECNZ2M2ZGFXJQL37YQ6WR2HVHIB
X-MailFrom: ietf@raphaelrobert.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-mls.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [MLS] SlimMLS
List-Id: Messaging Layer Security <mls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/JZ81QxUN0F2OK3hPAbRFxpd59Pw>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mls>
List-Help: <mailto:mls-request@ietf.org?subject=help>
List-Owner: <mailto:mls-owner@ietf.org>
List-Post: <mailto:mls@ietf.org>
List-Subscribe: <mailto:mls-join@ietf.org>
List-Unsubscribe: <mailto:mls-leave@ietf.org>

Hi everyone,

We want to share draft-robert-mls-slim [1], an MLS extension to address efficiency issues with PQ resistant cipher suites.

TL;DR: The idea behind SlimMLS [1] is to significantly reduce the additional overhead of PQ cipher suites in a way that is complementary to draft-ietf-mls-combiner [2]. It gives applications more flexibility to optimize in different deployment scenarios and is intended to preserve the all MLS security guarantees.

Introduction/Context
---

MLS was designed to support large groups. Section 2.1 of RFC9750 says

> A group may be […] as large as hundreds of thousands [of clients].

And Section 6 says

> Messaging systems that implement MLS […] aim to scale to groups with tens of thousands of members.

When using PQ cipher suites, groups of that size can become impractical because the O(log n) update complexity hides a large constant factor. Consider the following minimal viable PQ secure example setting: A 1,000-member group with Ed25519 signatures, an ML-KEM768/X25519 hybrid KEM, a full tree, and small credentials (see appendix for size breakdown):

- Individual update Commit: ~25 KB per delivered Commit
- Welcome: ~2.6 MB
- Catching up after 100 update Commits: ~2.5 MB

For larger groups and/or groups with a PQ signature scheme or larger credentials, those sizes balloon even further.

Idea
---

The idea behind SlimMLS is to mitigate this issue. It changes MLS in three major ways:

- Replace large objects (PQ keys, credentials, etc.) with hash references
- Avoid unnecessary upload and download of large objects (building on ideas from draft-mularczyk-mls-splitcommit [3])
- Reduce the number of signatures required for update Commits and KeyPackages (building on ideas from draft-kohbrok-mls-fewer-signatures [4])

Distinguishing between large objects and their references gives applications more flexibility to optimize distribution, especially in the server-assisted scenario. For example, it allows clients to download large objects selectively as needed and de-duplicate between groups.

In the default mode, where clients fetch and verify the referenced objects needed for vanilla MLS validation, these modifications are intended to preserve the relevant MLS security guarantees.

Impact
---

Revisiting the example above, SlimMLS reduces payload size significantly (see appendix for size breakdown):

- Individual update Commit: ~26 KB upload, but only ~3 KB download (~90% reduction
- Welcome: ~370 KB (~86% reduction)
- Catching up after 100 update Commits: ~200 KB (~92% reduction)

In short, SlimMLS makes MLS significantly more efficient for PQ cipher suites and gives applications more flexibility to trade off membership authentication and download size.

Relation to other drafts
---

SlimMLS is complementary to draft-ietf-mls-combiner. Where draft-ietf-mls-combiner allows applications to independently control the frequency of PQ and traditional updates by linking two groups with different ciphersuites. SlimMLS reduces the size of the payloads incurred by the PQ group.

While the intention behind SlimMLS is not to impact the security guarantees of MLS, it could optionally be used in a mode where clients decide to only selectively download the full leaf information (credentials, signatures, signature keys). In that scenario, SlimMLS can cater to the same use cases Partial MLS [5] was designed for. It’s an open quest whether this is desired, given the obvious impact on the authentication guarantees.

We’ve published the draft on the datatracker [1] and are looking forward to your feedback, as well as a discussion at IETF 126 in Vienna.

Raphael & Konrad

---

[1] https://datatracker.ietf.org/doc/draft-robert-mls-slim/

[2] https://datatracker.ietf.org/doc/draft-ietf-mls-combiner/

[3] https://datatracker.ietf.org/doc/draft-mularczyk-mls-splitcommit/

[4] https://datatracker.ietf.org/doc/draft-kohbrok-mls-fewer-signatures/

[5] https://datatracker.ietf.org/doc/draft-ietf-mls-partial/


Appendix
---

Payload size breakdown for a 1,000-member group, 10 path nodes, ML-
KEM768/X25519, Ed25519, full tree, small credentials.

For simplicity, the following lists the dominant large objects per message and groups all remaining objects, references, signatures, credentials, MACs, framing, and vector overhead into a single "smaller objects and overhead" line.

For more size calculations (other group sizes, ciphersuites, sparse trees, etc.), use the message size calculation script in the draft repo: https://github.com/raphaelrobert/slim-mls

Vanilla MLS example:

Individual update Commit:

11 HPKEPublicKey = 11 * 1,218 = 13,398 B
(1 committer leaf key + 10 path-node keys)
10 UpdatePath HPKECiphertext = 10 * 1,171 = 11,710 B
Smaller objects and overhead = 358 B

Total = 25,466 B ~= 25 KB

Welcome:

1,999 HPKEPublicKey = 1,999 * 1,218 = 2,434,782 B
(1,000 leaf keys + 999 parent-node keys)
Smaller objects and overhead = 186,463 B

Total = 2,621,245 B ~= 2.6 MB

Catch-up after 100 Commits:

100 * Individual update Commit
= 100 * 25,466 B
= 2,546,600 B ~= 2.5 MB

SlimMLS example:

Individual update Commit:

Upload: same dominant HPKE objects as vanilla MLS

11 HPKEPublicKey = 11 * 1,218 = 13,398 B
10 UpdatePath HPKECiphertext = 10 * 1,171 = 11,710 B
Smaller objects and overhead = 1,037 B

Total upload = 26,145 B ~= 26 KB

Download:

1 HPKEPublicKey = 1,218 B
1 UpdatePath HPKECiphertext  = 1,171 B
Smaller objects and overhead = 740 B

Total download = 3,129 B ~= 3 KB

Welcome:

10 HPKEPublicKey = 10 * 1,218 = 12,180 B
(joiner's copath keys)
Smaller objects and overhead = 360,398 B

Total = 372,578 B ~= 370 KB

Catch-up:

99 Commits with basic delivery, without downloading public keys not needed for
processing:

1 UpdatePath HPKECiphertext  = 1,171 B
Smaller objects and overhead = 739 B

99 * (1,171 B + 739 B)
= 99 * 1,910 B
= 189,090 B

Final Commit with update-capable delivery:

1 HPKEPublicKey = 1,218 B
1 UpdatePath HPKECiphertext  = 1,171 B
Smaller objects and overhead = 740 B

Total final Commit = 3,129 B

Total catch-up:
189,090 B + 3,129 B = 192,219 B ~= 200 KB