Re: [MLS] *re*joining a group with the same identity key
Richard Barnes <rlb@ipv.sx> Fri, 27 July 2018 15:24 UTC
Return-Path: <rlb@ipv.sx>
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 07B0E130F75 for <mls@ietfa.amsl.com>; Fri, 27 Jul 2018 08:24:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level:
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ipv-sx.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 E6fnld1c2dxV for <mls@ietfa.amsl.com>; Fri, 27 Jul 2018 08:24:13 -0700 (PDT)
Received: from mail-oi0-x230.google.com (mail-oi0-x230.google.com [IPv6:2607:f8b0:4003:c06::230]) (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 837BF130EBD for <mls@ietf.org>; Fri, 27 Jul 2018 08:24:13 -0700 (PDT)
Received: by mail-oi0-x230.google.com with SMTP id k81-v6so9702971oib.4 for <mls@ietf.org>; Fri, 27 Jul 2018 08:24:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipv-sx.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AzNfjX4wVG5Mttl3e/sguIac6srkSfFyCa5XtwrEJvc=; b=QgOqcggds58bwyYnciK4riyFecrWJo/OWsAQT0SwMUaoQ+Qt137LisTB+lgDDzNwVy Zzr6Gnrxu15vhaX1iCJ7psnNfCfdRwexblY+IjrczgbUBoO11u6IgiIaboEZjsHoSaqt AfDMrDf0DdFA5cylGeGcve8J9aaRqSvyRXvVAEfcNuouF+sJJ+VXADAMcyYFwBQvwAxU o3/sPJqGjeuxe+KJf/MqqoVIdYJ0GKkoM4T2eJ11FTaao/bk9e3FEqyFgZytLqxDRPMl XHTYbrjfwMqByuvW6rDm7M1EcPZOAunG4CmiItpPUt4chMzD5VzVwdFJzsHMwN7mQSYq w/ig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AzNfjX4wVG5Mttl3e/sguIac6srkSfFyCa5XtwrEJvc=; b=oMjOyxzLEzVxSzD/OtSukCZPihtXbX6iopP8bhINF0nRYTcRP5a7cPb+D/jOuwEEou ZxTp3nZySbPqdgtUm3Gy3XiXzvtLfKpicgUkftCxEhkoMl8QLCM2WxlbalLp3rgqINlh L0Zuhlcf0bVc0zbuRp4VaRGd9Q9AxZ5E1qwNE40wxhfswKRavATUvuekY0MI1POfUpAo l56p7tE1jgR0+4MIM/29g29P635OhxwKY0VQpQGTKWOwcdrlkbMtSYniWiVgBuZvAqf1 JkhDe1GEzaXRM69k2iAKiQ7UeU71D3mCniRfnnnSYsXRtnVyQOTsBOiw+OStsoEDbcy/ gQkA==
X-Gm-Message-State: AOUpUlEpNMwxW1uV8aWhWuD/bQ6BEDP27etABs7N2/W96qMtlHER4y+N MUAm1UYsJOXENj+tUu5L4LdIDYUg9vtqySwh2ErQgjwh
X-Google-Smtp-Source: AAOMgpeHddDUNVkxhZm4I2iwSlBU1O7ZztPg3gKR6qDFj0UR6WidHsFls6DN3NKhbCIsp79q/dGRH2h5PGEUDGKr07c=
X-Received: by 2002:aca:fc94:: with SMTP id a142-v6mr6530345oii.29.1532705052659; Fri, 27 Jul 2018 08:24:12 -0700 (PDT)
MIME-Version: 1.0
References: <1532516469.3570686.1452294728.424CDA78@webmail.messagingengine.com> <2046EE4E-2F25-4E89-8844-0EDAAABA2A38@fb.com> <20180725125830.6af30662@T-200> <CAL02cgRG4gXr2BfQjoUSymMk9qGQxNCV0+FQWBZjuuAcj9g+hw@mail.gmail.com> <CA+9kkMAdNLVCC4q_8xfKBrNcBnwWFxZ1pPVByq3xJsm6b3wEwQ@mail.gmail.com> <1532687704.3670264.1454705888.2DC75109@webmail.messagingengine.com>
In-Reply-To: <1532687704.3670264.1454705888.2DC75109@webmail.messagingengine.com>
From: Richard Barnes <rlb@ipv.sx>
Date: Fri, 27 Jul 2018 11:23:59 -0400
Message-ID: <CAL02cgRncXfVrXsZ5W_1bOb1CsqFnqJsDAQB_Jvz8TuY_W0A6w@mail.gmail.com>
To: Katriel Cohn-Gordon <me@katriel.co.uk>
Cc: mls@ietf.org
Content-Type: multipart/alternative; boundary="00000000000035a6360571fcb432"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/7wAOq9hqmptKwI0UxH-nrRxaoxo>
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: Fri, 27 Jul 2018 15:24:18 -0000
Just to confirm, the PCS risk you're thinking of is something like: - Attacker finds an identity key lying on a street corner - Attacker shows up at the group and say "hey guys, i lost all my other state, can you let me back in"? IIRC, we touched on this in the IETF meeting discussions, this idea that we might adopt a different PCS posture w.r.t. long-term identity keys than confidentiality keys. There's an underlying tension here between the desire for persistent identities and the ephemerality / rotation that PCS requires. Even assuming maximal rotation of all the key material, if you have a policy that says "$IDENTITY is a member of this group" and someone shows up with a valid credential for $IDENTITY, are you going to let them in? Given that, I'm kind of tempted to argue that PCS isn't even a meaningful concept with regard to identity keys. At least not in the same way as for confidentiality keys. Or at least that it needs to be framed in quite a different way. --Richard On Fri, Jul 27, 2018 at 6:35 AM Katriel Cohn-Gordon <me@katriel.co.uk> wrote: > One thing to be clear about: all of these "rejoin"-style operations break > post-compromise security in some way, because they allow an actor who knows > long-term keys but not the current state to become a full-fledged group > member. > > That's not to say we shouldn't support them, of course (it's no good > building a secure protocol that doesn't work), just that we should be > careful about when they can happen. I think it's also important to make > sure they're clearly differentiated from normal operations, so that > applications can disallow them or show warnings. > > k > > On Thu, 26 Jul 2018, at 5:43 PM, Ted Hardie wrote: > > On Thu, Jul 26, 2018 at 8:42 AM, Richard Barnes <rlb@ipv.sx> wrote: > > I actually expect this to be a not-uncommon case. Two use cases > immediately come to mind: > > 1. New devices in an application where identity keys are sync'ed among > devices > 2. Participants who have lost state and need to re-sync. > > On account of (1), I had been thinking that the mapping between members / > leaves in the tree and identity keys would not be one-to-one, but > many-to-one. Are folks thinking that there would be technical problems / > ambiguities in such a case? None are coming to my mind. > > > I think there is an ambiguity, but it is fairly easy to resolve. There > are cases where a participant attempting to add themselves with the same > identity to an existing group is implicitly replacing their previous > connection. Katriel called that out as: "Perhaps the simplest is to allow > the device to double-join but require it to immediately delete the old copy > of itself." There are others where this is a true add-a new device that > should also receive communication. I think the fix here is to replace > "require it to immediately delete" with "allow it to immediately delete"; > that seems to support both use cases and make the decision about which is > in use explicit and in the user's control.. > > Ted > > > > > It does seem worth thinking about the re-sync case (2), i.e., the case > where a participant has most of his state. If he's forgotten everything > besides his identity private key (or including the identity private key), I > don't think there's much you can do but treat him like a new participant. > If he remembers his position in the tree, it seems like you could do a > "re-sync" transaction that's like an add, but for that position in the tree > -- it's the same logic as an add, except instead of the frontier, you send > the copath for that position; for other nodes, it just looks like an Update > at that position. > > (Aside: This reinforces that we really only have 1.2 operations here: > Update + handle-update-at-edge + encrypt-leaf-secret) > > It also seems like if we can solve the "re-sync a member with lost state" > problem, then we can probably also solve the "heal a network partition" > problem that Dennis raises. Assuming we can choose a winning partition and > appoint someone to do the merge, the person doing the merge can just > re-initialize the losing members to their point in the tree, as if they had > lost their state. > > --Richard > > > On Wed, Jul 25, 2018 at 7:59 AM Dennis Jackson <dennis.jackson@cs.ox.ac.uk> > wrote: > > 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 > _______________________________________________ > MLS mailing list > MLS@ietf.org > https://www.ietf.org/mailman/listinfo/mls > > > _______________________________________________ > MLS mailing list > MLS@ietf.org > https://www.ietf.org/mailman/listinfo/mls > > *_______________________________________________* > MLS mailing list > MLS@ietf.org > https://www.ietf..org/mailman/listinfo/mls > <https://www.ietf.org/mailman/listinfo/mls> > > > _______________________________________________ > MLS mailing list > MLS@ietf.org > https://www.ietf.org/mailman/listinfo/mls >
- [MLS] *re*joining a group with the same identity … Katriel Cohn-Gordon
- Re: [MLS] *re*joining a group with the same ident… Jon Millican
- Re: [MLS] *re*joining a group with the same ident… Dennis Jackson
- Re: [MLS] *re*joining a group with the same ident… Richard Barnes
- Re: [MLS] *re*joining a group with the same ident… Peter Saint-Andre
- Re: [MLS] *re*joining a group with the same ident… Ted Hardie
- Re: [MLS] *re*joining a group with the same ident… Katriel Cohn-Gordon
- Re: [MLS] *re*joining a group with the same ident… Richard Barnes
- Re: [MLS] *re*joining a group with the same ident… Dennis Jackson