Re: [Privacy-pass] Questions on client trust

Alex Davidson <adavidson@cloudflare.com> Tue, 14 April 2020 11:24 UTC

Return-Path: <adavidson@cloudflare.com>
X-Original-To: privacy-pass@ietfa.amsl.com
Delivered-To: privacy-pass@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 404DC3A0C59 for <privacy-pass@ietfa.amsl.com>; Tue, 14 Apr 2020 04:24:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.266
X-Spam-Level:
X-Spam-Status: No, score=-2.266 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.168, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 tlWQg6njcHkD for <privacy-pass@ietfa.amsl.com>; Tue, 14 Apr 2020 04:24:47 -0700 (PDT)
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) (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 5CBB33A0C5F for <privacy-pass@ietf.org>; Tue, 14 Apr 2020 04:24:47 -0700 (PDT)
Received: by mail-wm1-x32d.google.com with SMTP id a81so13483931wmf.5 for <privacy-pass@ietf.org>; Tue, 14 Apr 2020 04:24:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=7OCLYmmfVsLrL/aH1NwJhexN0RcxuWTtGivgsUFl5ck=; b=E5WMML8LXA1QX26pcxCrCpdxR5hus5B9iKPzDK2iXIgMbvP+nlhWld3Mcmv0OINegz 9TUMU7J1mnhSu2R4GCOu9hYuNazyzOZx+2QEGB2lgylQKJf6wl9Bf6Slt6pJLTfPcyNL /z7GA00gMtbhsLP6Lodpc0LXpSBS0YD8xjyTo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=7OCLYmmfVsLrL/aH1NwJhexN0RcxuWTtGivgsUFl5ck=; b=kh6LR74zWid23bWOVUG+6LGFP401qLpJ9dGh8aFLwe30s7BZY2sxQBEC8Ex7JnJSZL YFLyDAU9LH0K3xoyWofKO1VrIX7GnA2wYIaFidgwI5+cjtM7KHgTfPsRBye+jt0OVKMa C2piudk8wjG7uffD6wlsbl+TCz/yPRea9WMH8uGsAhZmFd2vUcUFNt9gNuhbAY3LFFCF Ah5A+pQ2qKXfXUBflwdi20/HWYiGYYuriLzR24j+9sgMSSIPaFRnynfAe657esRxvbpT okifCRwrgZVF4AmAf37WF2ekjyOL32yD2u+Cbi/9K8p5+dTcsXrXeS7y7Cz8PQWRPc2p 7TaQ==
X-Gm-Message-State: AGi0PuaIx7166fFyLjvqKvGeMEluT7OunZmkSrZJ3mZe/jMEF4YEFjBc 9VqFGuzSqlB6oKFOZCFDpNteYQ==
X-Google-Smtp-Source: APiQypLnUGF5rvbTLsZmMYJg2jNEZ+1G5d44H9TGQC0dbGNWPXsCZruVou2bAVLo2IPleQrHZWdH6Q==
X-Received: by 2002:a1c:f306:: with SMTP id q6mr2230749wmq.169.1586863485547; Tue, 14 Apr 2020 04:24:45 -0700 (PDT)
Received: from ?IPv6:2001:8a0:7ac8:f600:7d4f:bcd:61e1:903a? ([2001:8a0:7ac8:f600:7d4f:bcd:61e1:903a]) by smtp.gmail.com with ESMTPSA id h17sm6875291wmm.6.2020.04.14.04.24.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Apr 2020 04:24:44 -0700 (PDT)
From: Alex Davidson <adavidson@cloudflare.com>
Message-Id: <E665BB52-805F-4640-A975-7989379F1BFD@cloudflare.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_096047D4-55CA-4982-B1D6-DB5C3D17ABFE"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Tue, 14 Apr 2020 12:24:41 +0100
In-Reply-To: <CAJoqpTLLeqpaA6YN5V99vX-P6B1G_NGGC2T8cyP5zt5k6pUnVw@mail.gmail.com>
Cc: privacy-pass@ietf.org, Matthew Finkel <matthew.finkel@gmail.com>
To: Chelsea Komlo <chelsea.komlo@gmail.com>
References: <9A77145D-1506-4DC4-ADE2-9C5BD4B2AC86@cloudflare.com> <CAJoqpTLLeqpaA6YN5V99vX-P6B1G_NGGC2T8cyP5zt5k6pUnVw@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/privacy-pass/OFOkxTfJCqzO-NwDYCpSE_WuWUk>
Subject: Re: [Privacy-pass] Questions on client trust
X-BeenThere: privacy-pass@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <privacy-pass.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/privacy-pass>, <mailto:privacy-pass-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/privacy-pass/>
List-Post: <mailto:privacy-pass@ietf.org>
List-Help: <mailto:privacy-pass-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/privacy-pass>, <mailto:privacy-pass-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Apr 2020 11:24:50 -0000

Hi Chelsea & Matt,

Thanks for taking the time to review the current documents. Your insights are really valuable and raise a number of points that do indeed require addressing. I’ve inlined my responses below.

> On 14 Apr 2020, at 03:14, Chelsea Komlo <chelsea.komlo@gmail.com> wrote:
> 
> Hi all,
> 
> We are submitting this feedback as core contributors of the Tor Project (although not speaking on behalf of Tor), to assess the draft for user privacy and anonymity. We are happy to continue providing reviews going forward from this angle.
> 
> We will start with a few meta-comments, and then discuss Alex's points in-line.
> 
> First, the draft targets "privacy-preserving authorization", however, if clients do not use a network anonymity tool such as Tor, clients can be trivially tracked (ignoring all proposals that place complete trust in single entities such as IP blindness or VPNs). Hence, we assume that users of anonymity networks such as Tor are a core motivating use case of Privacy Pass (as they were for the original paper). We suggest adding Tor users to a "Motivating Use Cases" section to the draft (and other noteworthy cases) to ensure this use case is not lost throughout the standardization process. 

Agreed, the motivating use-cases in the original paper have not made it explicitly into the current documents so far. Adding such a section on motivating applications that includes the Tor use-case makes sense and I’ve created a github issue to track this [1].

> Second, we note the change of wording in the draft from "anonymously authorizing" to "privacy-preserving authorization". We recommend using the phrasing "anonymously authorizing" due to its stronger guarantees to end users. 

In principle, I would personally be fine with replacing "privacy-preserving” with “anonymously”. I think this also relates to something that was highlighted previously regarding establishing a better definition of the “anonymity" guarantee that we expect throughout the drafts. I’ve added an issue to track both of these things together [2].

> Third, we wish to highlight the lack of detail on trusted registries and the potential harm to users that could occur if registries cannot not be trusted. If registries are secretly malicious, users can be trivially tracked (by the registry colluding with malicious issuers to distribute unique public keys). As such, we suggest adding stronger mechanisms to the draft to ensure registry trust. 

I agree that trusted registries are still not very well-defined. I expect that, if we decide to go down the trusted registry route, the user-registry trust dynamic will be similar to the trust dynamic between user and Issuer. We will need mechanisms for the clients to ascertain the state of this dynamic and subsequently act on that. Ideally, we would have some more discussion on whether the trusted registry approach is the right path to take, or whether an alternative approach may be better suited (such as those raised by Steven in the BoF).

> Fourth, we suggest adding a strict upper bound to the number of bits of information that can be encoded into tokens, if this capability is added to the draft or an extension. Clearly, the larger the number of possible anonymity sets, the more fingerprintable users become. Consequently, we suggest upper bounding this number, and to keep it small.

Adding an analysis on the impact of adding additional metadata to tokens to the next iteration of the drafts is a necessity (created another issue to track this [3]). In practice, I agree that the amount of viable bits of metadata that can be added is going to be very low (e.g. <= 2). However, on specifying a strict upper bound, this may be more difficult. This is because the impact of adding metadata impacts the client’s privacy budget in essentially the same way that introducing more Issuers does, or reducing the total number of clients does. 

Currently, I’m slightly leaning towards putting a strict lower bound on the size of the effective anonymity set for any given user in an ecosystem, and offering different configurations that support this lower bound. For example, if an ecosystem only contains 2 Issuers, then you may be able to sanction 2 bits of metadata per token. If you construct an ecosystem with 4 Issuers, then maybe the number of sanctioned metadata bits is 1 or 0. Of course, these configurations will naturally imply an upper bound on the number of bits that are supported, but this approach may be slightly more flexible?

> On Thu, Apr 2, 2020 at 4:44 AM Alex Davidson <adavidson=40cloudflare.com@dmarc.ietf.org <mailto:40cloudflare.com@dmarc.ietf.org>> wrote:
> Hi all,
> 
> Following on from the previous email. There were some initial questions
> raised during the BoF that will be important to discuss before we
> proceed to rework the charter. The most immediate questions are the
> following:
> 
> - To what extent should client's trust the issuers when redeeming
> tokens?
>         - Under what conditions should they accept/redeem tokens?
>         - What information does the client trust the issuer to encode in the
>         tokens?
> - How does an ecosystem protect itself against issuer consolidation
> and/or centralization?
> 
> The first point is not currently covered by the current charter or docs.
> For example, a helpful measure would be for the client to check the size
> of the anonymity set that it is part of. Such considerations are
> required to be made for any client looking to use an
> anonymity-preserving tool. However, checking such measures appears
> difficult in the ecosystem that we are looking to construct. There are
> currently only recommendations in the architecture doc for redeeming
> tokens to reduce the impact of an issuer being able to target a specific
> client. I think providing practical mechanisms for allowing clients to
> make decisions on which issuers to trust is something that we will be
> able to do (such as specifying client/consumer allow-lists). But,
> providing the actual measures that the client uses to make these
> decisions appears (at least to me) to be beyond the scope of what can be
> achieved with the current design.
> 
> While indeed the task of ensuring client trust requires adding additional details to this draft, it is critical to ensure its effectiveness for its intended use case. 
> 
> For users to be sure they are part of a sufficiently large anonymity set, they should be sure that 1) their tokens do not have a large number of bits encoded into them, 2) their registry is trustworthy, and 3) the issuer that a user holds tokens from has issued a sufficiently large number of tokens to other users. The first two points can be reasonably verified from a user side; thus, we suggest including such mechanisms in the draft. The last point (regarding number of tokens an issuer has distributed) seems harder, but should be given more thought. 

On point 3), I currently don’t have a great grasp on what a solution may look like. Perhaps there could be some way of incorporating a client gossip protocol with a set of client-specified trusted peers? However, this may also open up further possibilities for centralisation if all clients decide to use the same trusted peers?

Thanks,
Alex

[1]: https://github.com/alxdavids/privacy-pass-ietf/issues/9 <https://github.com/alxdavids/privacy-pass-ietf/issues/9>
[2]: https://github.com/alxdavids/privacy-pass-ietf/issues/10 <https://github.com/alxdavids/privacy-pass-ietf/issues/10>
[3]: https://github.com/alxdavids/privacy-pass-ietf/issues/11 <https://github.com/alxdavids/privacy-pass-ietf/issues/11>