[MLS] Re: virtual-clients and room-policy's multi_device flag

Konrad Kohbrok <konrad.kohbrok@datashrine.de> Thu, 09 July 2026 14:47 UTC

Return-Path: <konrad.kohbrok@datashrine.de>
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 B045D11402CCF; Thu, 9 Jul 2026 07:47:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1783608475; bh=X5r/TWQHAY8ITPAnLU5OBCfqYRtyKcXyriXb3K88kq0=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=s9WEH6bnYeSmM5NHOk3NLZqIgdx40O1+JdQf6GpDsY585WH/NEiwBp+WN42CSUuC9 pGQQuJFFD1u1aWGAzb4UwuYAxRkUf/f0jUiceFJTILx+es1Biq9DWvPjwoy8SYGI7/ 0t7UDx0DxJmxD4sEx860xrUpxxKBaWw96Hkm29Io=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.797
X-Spam-Level:
X-Spam-Status: No, score=-2.797 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, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=datashrine.de
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 E4pZt0Lo9WSo; Thu, 9 Jul 2026 07:47:54 -0700 (PDT)
Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 56D6B11402BCD; Thu, 9 Jul 2026 07:47:34 -0700 (PDT)
Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA512) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4gwyVN2NypzMlGc; Thu, 09 Jul 2026 16:47:24 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datashrine.de; s=MBO0001; t=1783608444; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=X5r/TWQHAY8ITPAnLU5OBCfqYRtyKcXyriXb3K88kq0=; b=hNmRTT2gHBuG13ReMchhGv9s+ezF871tgMsC8b9k/xiF/Wr7UhTq4/nqHxeSDgsXKYYGbK FKanhVciYyrwB7TYzRKfq302FAN+dub4jus0xvCi8iuaCah7tPVZrviZo8C0k0mi0v7syh Q9Jb1rm3XFhdvDQFr3g8KExca/ENDGEbudyz9SF00Owm+klqSA5hVdBNyP3pZY02OX9KMJ EL+vSgKzd3aM/131VBoO5Dnk51e8bnjUTSyieAWcVAwNhYa/WN89ZcBvlVJfHSemS5oEP/ mBAlJOJZf4y5P1ssQo4A4hpb07MPuvd+HhQQ/1/rfTnyrwrTxn4F+u+dsmmL7Q==
Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of konrad.kohbrok@datashrine.de designates 2001:67c:2050:b231:465::102 as permitted sender) smtp.mailfrom=konrad.kohbrok@datashrine.de
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0
From: Konrad Kohbrok <konrad.kohbrok@datashrine.de>
In-Reply-To: <CA+7d1zns1+setQdn1KXWFL2aE0VrTGMPcbP12eiLixeAJPHoEA@mail.gmail.com>
Date: Thu, 09 Jul 2026 16:47:11 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <28212D2D-00A6-4DBB-8FF3-20A815FC3526@datashrine.de>
References: <CA+7d1zns1+setQdn1KXWFL2aE0VrTGMPcbP12eiLixeAJPHoEA@mail.gmail.com>
To: Jason Bolduc <jasbolduc@gmail.com>
X-Rspamd-Queue-Id: 4gwyVN2NypzMlGc
Message-ID-Hash: RYFDPRDBE5W53XQOCF232LMLYYL67GU6
X-Message-ID-Hash: RYFDPRDBE5W53XQOCF232LMLYYL67GU6
X-MailFrom: konrad.kohbrok@datashrine.de
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
CC: mls@ietf.org, mimi@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [MLS] Re: virtual-clients and room-policy's multi_device flag
List-Id: Messaging Layer Security <mls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/dYqTvM7xPhXyBzxcUwFrIr5Ft78>
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 Jason,

The MIMI draft was not really written with the virtual-clients draft in mind.

One of the goals of the virtual clients draft is to hide much of the multi-client related metadata from other group members (and the Hub in case of MIMI). So the fact that the Hub can’t enforce MIMI policy is kind of by design.

We could add a note to the MIMI policy draft saying that the Hub can’t effectively enforce this particular policy if clients do virtual-clients style multi-device. Personally, I don’t think that’s necessary, but if you have a strong opinion I’d be happy to review a PR.

Cheers,
Konrad


> On 8. Jul 2026, at 20:57, Jason Bolduc <jasbolduc@gmail.com> wrote:
> 
> Hi all,
> 
> While implementing both draft-ietf-mls-virtual-clients-01 and the MIMI room policy (draft-ietf-mimi-room-policy-04) we ran into an interaction between the two documents that neither talks about.
> 
> BaseRoomPolicy (room-policy §5) defines `multi_device`: "If false only a single client can be an MLS member at one time." It also defines `max_clients`, with normative force: "When max_clients has a value, the room's associated MLS group MUST NOT have more clients than the provided value." Both are expressed in terms of clients in the MLS group.
> 
> Virtual clients deliberately break the client==device equivalence: a user's N devices jointly operate one leaf, and the emulation group behind that leaf is invisible to the room. That invisibility is the mechanism's stated metadata-hiding goal (virtual-clients §4.2, §8). So a room with `multi_device = false` admits a five-device user without any violation as written, and a room whose policy says `max_clients = 10` can carry fifty devices while every hub-side count stays at ten. 
> 
> The count itself is not the problem: a hub can still enumerate leaves accurately, and the MUST NOT is still enforceable. `max_clients` and 'multi_device' bound leaves, and with virtual clients a leaf is no longer one device, so if the intent was to bound the number of endpoints holding the room's keys, that intent is no longer served even though every count is correct. `max_users` does not have this problem, since it counts participant-list entries rather than MLS clients, which suggests the member-counting fields were not written with a member/device split in mind.
> 
> Whether that's a bug depends on what the flag intends, and the document doesn't say:
> - If 'multi_device=false' is a performance/simplicity bound (one leaf per user), virtual clients are compatible with it.
> - If it is a security semantic ("I want to talk to exactly one device"), it is now unenforceable by construction, and a room policy cannot restore it: no room-visible artifact distinguishes a virtual client from a plain one unless the deployment chooses to reveal it (the DerivationInfo component is visible in the tree, but its absence proves nothing about a foreign provider's client implementation).
> 
> We'd suggest room-policy state the intent explicitly, and virtual-clients note the interaction in its privacy considerations. If the intent is the security semantic, that likely needs credential-level support (an AS-attested "this leaf is not emulated" claim) rather than a policy bit, though that is not simple either, since the Authentication Service cannot easily verify non-emulation...
> 
> We can write up a more detailed document, if useful, with code that we're already using. We hit this because our implementation sits on both sides: an MLS deployment adding virtual-clients multi-device, federating via MIMI.
> 
> Thanks,
> Jason
> _______________________________________________
> MLS mailing list -- mls@ietf.org
> To unsubscribe send an email to mls-leave@ietf.org