Re: [MLS] *re*joining a group with the same identity key

Dennis Jackson <dennis.jackson@cs.ox.ac.uk> Wed, 25 July 2018 11:58 UTC

Return-Path: <dennis.jackson@cs.ox.ac.uk>
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 7226F131008 for <mls@ietfa.amsl.com>; Wed, 25 Jul 2018 04:58:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 RuEa4BNgb_us for <mls@ietfa.amsl.com>; Wed, 25 Jul 2018 04:58:49 -0700 (PDT)
Received: from relay15.mail.ox.ac.uk (relay15.mail.ox.ac.uk [163.1.2.163]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B8CD0130FF4 for <mls@ietf.org>; Wed, 25 Jul 2018 04:58:40 -0700 (PDT)
Received: from smtp4.mail.ox.ac.uk ([129.67.1.207]) by relay15.mail.ox.ac.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <dennis.jackson@cs.ox.ac.uk>) id 1fiIRA-0000ez-mj for mls@ietf.org; Wed, 25 Jul 2018 12:58:38 +0100
Received: from visitor-nat.cs.ox.ac.uk ([163.1.88.1] helo=T-200) by smtp4.mail.ox.ac.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from <dennis.jackson@cs.ox.ac.uk>) id 1fiIR9-00063u-Fi for mls@ietf.org; Wed, 25 Jul 2018 12:58:35 +0100
Date: Wed, 25 Jul 2018 12:58:30 +0100
From: Dennis Jackson <dennis.jackson@cs.ox.ac.uk>
To: mls@ietf.org
Message-ID: <20180725125830.6af30662@T-200>
In-Reply-To: <2046EE4E-2F25-4E89-8844-0EDAAABA2A38@fb.com>
References: <1532516469.3570686.1452294728.424CDA78@webmail.messagingengine.com> <2046EE4E-2F25-4E89-8844-0EDAAABA2A38@fb.com>
X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; boundary="Sig_/qhc.5z+FI2HxYb3Cek_uemT"; protocol="application/pgp-signature"
X-Oxford-Username: exet4027
X-Oxmail-Spam-Status: score=0.0 tests=none
X-Oxmail-Spam-Level: /
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/ReOWc4Ycb-nP5QK1e03rHb7PnQY>
Subject: Re: [MLS] *re*joining a group with the same identity key
X-BeenThere: mls@ietf.org
X-Mailman-Version: 2.1.27
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: Wed, 25 Jul 2018 11:58:53 -0000

me@katriel.co.uk<mailto:me@katriel.co.uk> wrote:

> The simple answer is to forbid such joins, but this might happen if a
> device forgets its group state but remembers its identity key.

Depending on how MLS specifies update operations, this could also
happen if there was a network partition and some group members see a
different order of key updates. Even if we assume the existence of a
delivery service which can provide a linear order for key update
messages, the attacker will be allowed to compromise the server and
violate this property. Consequently, some participants will have
differing views of the group key and need to converge.

In both cases we have a long term key, already in the group, with bad
local state. I think we need a recovery mechanism for this other than
just starting a new group or allowing a rejoin since that would allow
an attacker with only knowledge of a long term key to join a previously
secure group. 

We could mitigate this by proving knowledge of some recent state: a
device which knew the group key five minutes ago is more trustworthy
than one which doesn’t know any group state. It’s an application-layer
decision to actually figure out what to do in this case, but we could
expose a way to prove state knowledge (e.g. by deriving a “recovery”
key after every update).

Best,
Dennis

On Wed, 25 Jul 2018 11:05:09 +0000
Jon Millican <jmillican@fb.com> wrote:

> One potential option that comes to mind is for the server to help it
> reinsert itself in the correct place. This would essentially amount
> to a join, but serving its own copath instead of the group’s
> frontier. We could then reject somebody double-joining their own
> identity key; under the assumption that this could only happen with a
> malicious server anyway.
> 
> I don’t have strong feelings about this vs your proposed solution
> though. The main benefit would probably be just in terms of keeping
> the tree cleaner and minimising remove operations that need to be
> done.
> 
> Jon
> 
> On 25/07/2018, 12:01, "MLS on behalf of Katriel Cohn-Gordon"
> <mls-bounces@ietf.org<mailto:mls-bounces@ietf.org> on behalf of
> me@katriel.co.uk<mailto:me@katriel.co.uk>> wrote:
> 
> Hi all,
> 
> Here'a s case we might want to think about: what should happen if a
> current member of a group asks to join, with the same long-term key
> that they're already joined with?
> 
> The simple answer is to forbid such joins, but this might happen if a
> device forgets its group state but remembers its identity key.
> (Perhaps it writes the group state to a local database and the write
> got corrupted.)
> 
> Alternatively I see a handful of different ways we could support
> these joins, if we wanted to. Perhaps the simplest is to allow the
> device to double-join but require it to immediately delete the old
> copy of itself.
> 
> best,
> k
> 



-- 
PGP Fingerprint: 5B93 F0B9 D6A8 9BC1 546B C98C 6105 A775 8CD2 46AC