[MLS] Idea for Issue #33

Nick Sullivan <nick@cloudflare.com> Thu, 24 January 2019 01:34 UTC

Return-Path: <nick@cloudflare.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 D8F27130FE9 for <mls@ietfa.amsl.com>; Wed, 23 Jan 2019 17:34:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.553
X-Spam-Level:
X-Spam-Status: No, score=-6.553 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cloudflare.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 J3XwjYj59ZjP for <mls@ietfa.amsl.com>; Wed, 23 Jan 2019 17:34:14 -0800 (PST)
Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) (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 5409C130FE4 for <mls@ietf.org>; Wed, 23 Jan 2019 17:34:14 -0800 (PST)
Received: by mail-oi1-x22d.google.com with SMTP id j21so3545147oii.8 for <mls@ietf.org>; Wed, 23 Jan 2019 17:34:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=41YFSpfxWW3uIztfqG8InLyuxeOH1fKDO+lytpTG/xM=; b=ObvDmHGlukM1kI0FG7w5Zersj5BWhX7nBZ61WAnc5p09uqsaTxMvnqQcz2tzGkS30+ f1YUX9/A1rxGmlYQT436/o8qKlqGqxhhxk/8+pug4vQb9GvhXBm+3xh1QlQKzNQNVsvo 9KkIdzO2agEnjub1ASph1QRhUVpgKBMX9jt2M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=41YFSpfxWW3uIztfqG8InLyuxeOH1fKDO+lytpTG/xM=; b=gKb/+9Z8OfOxeYpQyegqS1snuPsF6N75D5hO0gKv014aRyCPHC5raaycic5Xqvsv3r l04eJ4uKqvl0Gexx9Yjuc2YuYeO7XNwet1Excw2RHJ7zVRB67nC1XPtDHqXYOotNqEEW /zvi6xzAli/7nJ2OxZKudTLSfTcM0LLBVm+HDA+1hBaxSPMIlL01B2xS9bIl1/Mxn12d Jm+D7xSZToyxLfKVwtZgnBoRnRwX9UMWY8cHzhbfZdDMI6TbKAtFs0JSGUvOJLIMg5t3 o7Uzx466OLjDrfVQvvpAbFXDG20F/QA/BWVMBZI2G1wkhU+MeKVcjjZxhdDci3fPPJsQ hO/g==
X-Gm-Message-State: AJcUukexEiv3e/EoeMshJZfdmXevgW31fV7pqmAx4TT8lW1sKSmr8Enw hxdnXuJzJPEx00KxlmIsY3uQVMQEfAa4bSK5z2DbwufsSKk=
X-Google-Smtp-Source: ALg8bN5/na1Tq//wJ5frGQ/dkZ2PwLeUm70hGDZ28HehqHOit63pNAk+FK415xdBs357KepbucShcEa1WugNJNFCZwE=
X-Received: by 2002:aca:4fc5:: with SMTP id d188mr23442oib.138.1548293653067; Wed, 23 Jan 2019 17:34:13 -0800 (PST)
MIME-Version: 1.0
From: Nick Sullivan <nick@cloudflare.com>
Date: Wed, 23 Jan 2019 17:34:02 -0800
Message-ID: <CAFDDyk8Onmkmn=BeK27X5cXVsN1ardw745vX2QqxYhwYnAC-RA@mail.gmail.com>
To: "mls@ietf.org" <mls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000331f1205802a35d1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/mRaOFSLZdO6_0m8844i5k6ZiJao>
Subject: [MLS] Idea for Issue #33
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: Thu, 24 Jan 2019 01:34:17 -0000

Hello all,

Relaying some ideas that I posted in the Github issue that allow a
participant that was maliciously removed from the group by a bad update
message to publicly prove that it was given an inconsistent update. This is
an idea based on lightweight zero-knowledge proofs.

https://github.com/mlswg/mls-protocol/issues/21

Recall the following from ECIES:
Say that you are encrypting a ciphertext *X* to a user with private key *a*,
public key *A* (= aP) and elliptic curve base point *P*. The ECIES
ciphertext is the pair *(rP, c)* where *r* is a randomly-chosen scalar and
*c* is the encryption of X with a key derived from *k*=KDF(rA)=KDF(raP).

The key to this mechanism is revealing enough to prove to a third party
that an update received by the user is decrypted to an inconsistent X than
an update received by another participant, but without revealing the
private key *a *(which would compromise the confidentiality of previous
messages).

Proposed modifications of the protocol:
1) Add a mechanism that allows a party with access to a supposed secret
value of a node to validate the consistency of the chain of hashed derived
from that secret. This could be implemented by creating a public value that
consists of a KDF of the secret value with a known public value for every
node that is being updated. To check a secret value, the validating party
needs to compute the KDF for every node up the tree to the root and compare
with the published values.

The KDF acts as sort of a public integrity hash of to the node's secret
value.

2) Add a Schnorr NIZK of knowledge (RFC 8235) of the random value r with
every ECIES ciphertext. This proves that the r used in the ECIES encryption
is known to the updater and rP is not trivially derived from some other
previously sent r'P.

For one participant to prove that they were given an update message that
did not include the correct node secret, that participant can reveal the
following:
arP, DLEQ(arP:rP :: P:aP)

Where a is the node's private key, and DLEQ is a discrete log equivalence
proof that shows that arP is rP multiplied by the private key *a* of the
user.


So in summary, we would add:
- Proof of knowledge of the randomness used in ECIES
- Public KDF of each node's secret value
and then a member could prove to an auditor that it was given the wrong
secret by revealing:
- an intermediate calculation of the ECIES decryption, a DLEQ proof that
the right key was used


I'm eager for this proposal to have some holes shot in it.


Nick