Return-Path: <raphael@wire.com>
X-Original-To: mls@ietfa.amsl.com
Delivered-To: mls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id EB36A12F18C
 for <mls@ietfa.amsl.com>; Fri,  7 Sep 2018 13:45:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 RCVD_IN_DNSWL_NONE=-0.0001, T_DKIMWL_WL_MED=-0.01,
 T_SPF_PERMERROR=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=wire-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id a2GS4ZK4Pawg for <mls@ietfa.amsl.com>;
 Fri,  7 Sep 2018 13:45:38 -0700 (PDT)
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [IPv6:2a00:1450:4864:20::42e])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 6C53B128C65
 for <mls@ietf.org>; Fri,  7 Sep 2018 13:45:38 -0700 (PDT)
Received: by mail-wr1-x42e.google.com with SMTP id e1-v6so7091551wrt.3
 for <mls@ietf.org>; Fri, 07 Sep 2018 13:45:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=wire-com.20150623.gappssmtp.com; s=20150623;
 h=from:content-transfer-encoding:mime-version:subject:date:references
 :to:in-reply-to:message-id;
 bh=e9O/ET467QQTT7bP6au36+AWg3yd+XEpzKI56hCVh8c=;
 b=vCf+ajtDUOkSUA+BACBlqJYV1kIjsSxxrCZM4T1K18dNOLC5wkzc4TB7OF28IJ8JCn
 dIG3Wv/x5pNK/av6TJk/9CZ8wUgNHcHc74x9FwEI450NslK6gFLExdeGmLVNaklpY9xR
 4bQyf2DoFSBVJ99LkuNwgu3ikTGQjxWMNZp3117vJ3R/O6YE89ITxm51zIZtowxQdtgc
 f2unWnt7lky4Sf4FfnhJScN4mNodL+StLRzhKtv5CH9LXV2bTz4vjHU/3ZnNAepybMhc
 ONhkqbHyhjIQaei7uMpQ99WMd9icOX7/60A3q/i+yA/e0vmSDOdBzncxL0LHYstIHxfP
 4ZCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:content-transfer-encoding:mime-version
 :subject:date:references:to:in-reply-to:message-id;
 bh=e9O/ET467QQTT7bP6au36+AWg3yd+XEpzKI56hCVh8c=;
 b=kshmKyiFCKVs6NRbahDf0hFd6IMt21lpDgiMKvtiUyqc4cwR24YwVOLJTFgE7esGO0
 RqARWbGG4Jqm22jiYbCZkvK8/W72naSn9teIUjLyoCGp+HDysprv2L0rg7TOAAFhmgjy
 nIxEEqXB6+I7yKcoCKnO50mAi+1it2+/27uCgcBxCN7H1GSe55d2UbnGt6pGuA06j2Se
 SluvbKFixq3T/FhYw9asy7v3u/g+Vm1luisAipfvmqwTJvwroqE61TILeBFD9EP70JIe
 nA7zteTKXCn9DxD1AhB8NB2qYqiALCpwuP27qoqwotHSYl8kMSpY8CfmtsCeaEPn9gqQ
 cdLA==
X-Gm-Message-State: APzg51BjFSUan1urOAQf96pJr1Jd7d139A6yYpssvhqcjiR3KRHYhQuA
 TOMRSc96zzJ0bL8Tdhs5xFNnXg19xlP8VA==
X-Google-Smtp-Source: ANB0Vdagv+v2xhD4224dKGDqakntt2SLHrs906xk8nZUgAr/jXKihQBm733p+GUnlyf/1Ux1jYLsYw==
X-Received: by 2002:adf:b69a:: with SMTP id
 j26-v6mr7456833wre.55.1536353136227; 
 Fri, 07 Sep 2018 13:45:36 -0700 (PDT)
Received: from [10.10.1.109] (149.red-88-18-51.staticip.rima-tde.net.
 [88.18.51.149])
 by smtp.gmail.com with ESMTPSA id y17-v6sm11985833wrh.49.2018.09.07.13.45.35
 for <mls@ietf.org>
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 07 Sep 2018 13:45:35 -0700 (PDT)
From: Raphael Robert <raphael@wire.com>
Content-Type: text/plain;
	charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Fri, 7 Sep 2018 22:45:33 +0200
References: <CAL02cgQeVdvpUrjbaQn67MoYMb1tzBZCPPsz3cvDpQxZ_kJijQ@mail.gmail.com>
To: mls@ietf.org
In-Reply-To: <CAL02cgQeVdvpUrjbaQn67MoYMb1tzBZCPPsz3cvDpQxZ_kJijQ@mail.gmail.com>
Message-Id: <1E76A31F-5F2D-496C-BAC3-4C8CF8D2ECDC@wire.com>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/v4ZqKnmJmHSnkQUFgV2RG3cCvwg>
Subject: Re: [MLS] Authentication
X-BeenThere: mls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Messaging Layer Security <mls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mls>,
 <mailto:mls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mls/>
List-Post: <mailto:mls@ietf.org>
List-Help: <mailto:mls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mls>,
 <mailto:mls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Sep 2018 20:45:41 -0000

Thanks for the detailed write-up, Richard!

Here are my two cents:

1. SIGMA or Katz-Yung?=20

No opinion yet, other than SIGMA might offer more options as you =
mentioned.

2. Pubkeys in roster?=20

I think this begs the question what a public key stands for. Its scope =
could be a) per participant, b) per device of participants, c) per =
conversation, d) a combination of c + d. Additionally, it could be =
short-lived as you mention, meaning it could be rotated within a =
conversation.
I think we should start with public keys (regardless what they stand =
for) that might be short-lived, but assume the rotation happens =
out-of-band.

3. Clients store roster?=20
4. Roster in-band or out?=20

These two questions are somewhat linked. I think we want to achieve =
several goals here:

 - protocol simplicity (points to in-band roster stored on clients)
 - protocol efficiency (points to having the roster stored on a server, =
so that clients don't have to upload several MBs just to invite someone =
to a large group conversation)
 - anonymity (again points to the in-band solution)
=20
The last point probably deserves more explanation: With client-side =
conflict resolution not being a likely option for MLS, the assumption is =
that a server will assist with message ordering and other tasks. This =
makes it a somewhat centralised system, even if it doesn't preclude =
federation as such.
If the server is tasked to fan-out a message encrypted under a key =
established by MLS, observable metadata on that server will include =
either the identity or an alias of the recipients of that message. As =
such, anonymity is not something that can be achieved on the observable =
metadata level.
However, there might still be the option of not storing the group member =
list in clear text on the assisting server. This would address scenarios =
where such group membership lists could be a risk: one-off server =
breaches (without any persistent compromise), improper deletion =
mechanisms, etc.

A possible solution could be the following:
 - servers can store anonymised ratcheting trees (meaning the identity =
of members is not part of it), this helps when adding or removing =
participants
 - the roster is either in-band or encrypted on a server
 - we assume there is a viable solution to guarantee integrity =
(additional Merkle trees were mentioned)
=20
There is a follow-up question to this: If the server doesn't know the =
roster, how can it be tasked to do a proper fan-out of a message to the =
group?

Possible solutions are:
 - The client sending the message also send the list of recipients =
(roster) to the server along with the message
 - The roster is stored encrypted on the server and the server receives =
the decryption key along with the message, uses it for the sole purpose =
of fanning-out the message and forgets it immediately afterwards
=20
In other words: before we can clearly answer questions 3 & 4, we need to =
answer the other questions I mentioned as well.
=20
5. What to KDF?

Adding as much as possible into the KDF sounds like it makes things more =
robust, but doesn't this imply total message ordering? (Something that =
might or might not be necessary with TreeKEM)

> On 7 Sep 2018, at 00:00, Richard Barnes <rlb@ipv.sx> wrote:
>=20
> Hey all,
>=20
> I've been stewing about authentication for a little while, and I think =
I've gotten to a point where I have coherent-enough thoughts to share =
with the group.  (Though by no means final)  The attached PDF has some =
slightly stream-of-consciousness thoughts about authentication for MLS, =
but it ends up with (1) some crypto protocols with a degree of =
validation and (2) a loose proposal and some questions for the WG.
>=20
> Leaving the crypto details and protocol details for the PDF, the =
questions for the WG are as follows:
>=20
> 1. Is there any reason to prefer one of the two constructions in the =
document over the other?
>=20
> 2. The protocol enables agreement on a "roster" of participants.  =
Should that roster include only identities of participants, or also =
their public keys?
>=20
> 3. Can we rely on clients keeping around a copy of the roster, so that =
they can then use it to authenticate future messages?
>=20
> 4. Should the roster be distributed by the MLS protocol, or should MLS =
just provide a pointer?
>=20
> 5. Other than the roster, what information should we enforce group =
agreement on?
>=20
> The doc has some thoughts on the arguments on either side of all of =
these questions. =20
>=20
> The next step here is to generate a pull request that makes a concrete =
proposal.  If folks have thoughts about the overall plausibility of the =
analysis here, or thoughts on the design trade-offs highlighted above, =
that would be helpful as I work on fleshing this out.  Hope to have a PR =
in flight in time for the interim.
>=20
> Thanks,
> --Richard
> <group-authn.pdf>_______________________________________________
> MLS mailing list
> MLS@ietf.org
> https://www.ietf.org/mailman/listinfo/mls

