Re: [Trans] draft-linus-trans-gossip-ct-01: gossiping STHs
Tom Ritter <tom@ritter.vg> Wed, 25 March 2015 14:10 UTC
Return-Path: <tom@ritter.vg>
X-Original-To: trans@ietfa.amsl.com
Delivered-To: trans@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3CA3A1A1B9C for <trans@ietfa.amsl.com>; Wed, 25 Mar 2015 07:10:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.379
X-Spam-Level:
X-Spam-Status: No, score=-1.379 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, SPF_PASS=-0.001] autolearn=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 pz5Uom-EbYQP for <trans@ietfa.amsl.com>; Wed, 25 Mar 2015 07:10:40 -0700 (PDT)
Received: from mail-ig0-x234.google.com (mail-ig0-x234.google.com [IPv6:2607:f8b0:4001:c05::234]) (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 947D61A1B4A for <trans@ietf.org>; Wed, 25 Mar 2015 07:10:40 -0700 (PDT)
Received: by igcxg11 with SMTP id xg11so26470581igc.0 for <trans@ietf.org>; Wed, 25 Mar 2015 07:10:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ritter.vg; s=vg; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=22L7yVr8GCwq7SH9uFjIHKyOL8dq4CEDGHh2DskbYDg=; b=nUINKKcqyDtc4ZeFTmCIyt/xd+IizqMw5lOdFLK5UpKkRpCDjc6uLvWAeFxUwTKeJQ 1N8V4Yy1lYxkuhv8cw7D0smKt2lwcN/kGueS4+YUSEBU4lxn/ng5x/xYzI85juD24pvW 1njROgcC0hhmVFqjY5e+0RsF8PAmGp5H6AYrw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=22L7yVr8GCwq7SH9uFjIHKyOL8dq4CEDGHh2DskbYDg=; b=cD2G3NbofNX8BzD+yTR5C+b1o91coVk8YkdbtEzG4Cztst3I1CoUlkHm95X6UrkQjJ 0ydFb6tbujBtsmhCv9t7tX32qbtjnzBjFrnszMokk0qjge33Y8WRoaOSONPPA5v2N6D5 XyF+G4SV9x6p8kZLmSYn4wZANzrtnP660rhYWACnLJgtXMwzmHe9cXkopQ2KVvccu2MN V3M/u9522rafuNjKZfJ9tHMPsPCJKzrdS3rx9WthLX/xGh7LMEA6AM2tQBeunL+moFZX Ulrwq3ADt+k3gulea5DSJ2W3a8s2PmNP3uL37wPuVgjvUk2JeHEt7nGkkMg0sGvR94x2 JPMw==
X-Gm-Message-State: ALoCoQm5BMB3yIIASu1gmgE7gQS4qh+WjzvHZPcPapcL0xtZmbte74TC0J711owTa2Jt8ZU9cxWw
X-Received: by 10.50.41.33 with SMTP id c1mr29704903igl.12.1427292639998; Wed, 25 Mar 2015 07:10:39 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.107.166.84 with HTTP; Wed, 25 Mar 2015 07:10:19 -0700 (PDT)
In-Reply-To: <CABrd9SQu1cHzhPXgrNj9eAb_0-4rxDyfHhiR3hmjvbLDcir__w@mail.gmail.com>
References: <CABrd9SQu1cHzhPXgrNj9eAb_0-4rxDyfHhiR3hmjvbLDcir__w@mail.gmail.com>
From: Tom Ritter <tom@ritter.vg>
Date: Wed, 25 Mar 2015 09:10:19 -0500
Message-ID: <CA+cU71=O7Lf3L7ia51V82DK3TVn11U8vo66jJiRwc6BffODgFA@mail.gmail.com>
To: Ben Laurie <benl@google.com>
Content-Type: text/plain; charset="ISO-8859-1"
Archived-At: <http://mailarchive.ietf.org/arch/msg/trans/Y0rZlMJD6UerfnVGd6Hemq3pq3g>
Cc: "trans@ietf.org" <trans@ietf.org>
Subject: Re: [Trans] draft-linus-trans-gossip-ct-01: gossiping STHs
X-BeenThere: trans@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Public Notary Transparency working group discussion list <trans.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/trans>, <mailto:trans-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/trans/>
List-Post: <mailto:trans@ietf.org>
List-Help: <mailto:trans-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/trans>, <mailto:trans-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Mar 2015 14:10:42 -0000
On 24 March 2015 at 16:48, Ben Laurie <benl@google.com> wrote: > If TLS clients and servers send each other STHs, then realistically, there > is no privacy issue: everyone has all STHs. I had thought about this for a while, I'm going to outline my train of thought as briefly as I can, but it'll still be a tad long. How do I (TLS Client) get STH's? Few ideas: - Request them from logs from a given SCT (and logs learn my browsing habits, that's bad) - Request the latest SCT-head from logs (less privacy-worrying, but still - I don't like the idea of my browser calling out to random third parties so they can attempt to track me and learn my online habits) - My browser proxies latest SCT-head in update checks?? - Servers send me STH's (and Inclusion proofs?) with an SCT - Servers proxy STH (and inclusion proof) requests for a client Proxying is not a fully deployable mechanism. Not all server operators are willing to allow outbound connections from servers, you have to be whitelist log addresses to avoid becoming a full proxy. Even if I did get STH's this way there is still a problem. So I'm ruling that out. A STH is minorly useful, in that it's a signed statement we may catch a log having lied about. But without an inclusion proof for a SCT, a STH is just a dead piece of data the client holds and then gives to someone in the hope it's useful later. Assume a client gets an inclusion proof along with an STH. This is one more component of the lie, but still, is just dead data that does not significantly help the client. Are STH's (by themselves) even useful for detecting misissuance? No. If we assume a log will misbehave we have to assume a log will try to cover up it's misbehavior. This means an SCT will have a valid STH associated, and that a log will be willing to continue a 'fork' (including all other SCTs, so differing in only a single node) essentially forever in the hope of not getting caught. So assume the STH 'branch' extends from the point of misissuance until present day. So we need consistency proofs. An STH (even on the misissuance branch) is not useful without linking that STH to another STH. There is value in linking STHs with consistency proofs - if one cannot get a consistency proof between two STH's _then_ you've detected log misbehavior. But how does someone get consistency proofs? They can only come from the log. So either the client attempts to resolve consistency proofs itself (this brings us back to the original problem of asking a log or proxies, so we rule this out) or the client passes on STH's for someone else to resolve consistency proofs. Of note: if I've been attacked, and have a STH on a misissuance branch I will _never_ just 'happen' to get a consistency proof that shows it's an attack. I'll always have an STH hanging out I can't connect, but also can't be certain _isn't_ connected. I can _only_ detect misissuance by _actively_ querying a log for a consistency proof between by misissuance STH and a valid STH. Another issue with STH's is (at present) they can be uniquely identifiable. A log can (as I read 6962) create a new STH for every SCT they create. This is unrealistic, and it's not the bedrock of my argument, but it's worth noting. Regardless of that loophole, a STH is somewhat identifiable (and potentially a tracking mechanism) depending on the algorithm they are given. Design me an algorithm, and you can find some amount of privacy leak in it. (For example, a SCT can reveal last online time. Or, in conjunction with other STH's, it can reveal some indication of what sites you visited.) Another independent component: I assume a client does _not_ have a trusted auditor, because said auditor is basically some third party you're going to send your SCT (aka browsing history) to. And who is doing to run the default auditors? Privacy problem, the same as OCSP lookups. (nb. a client can obviously opt-in to a trust auditor) In some cases I note "something can only come from a log" but it could probably some from an auditor. But the problem is the same: who is this auditor/log we're willing to release data to by default? Gossiping STHs seems natural, but I could not arrive at a way to connect all the data in a privacy preserving manner. If we follow strict privacy protection this is what I arrived at: A) Clients get STH's (from servers I must conclude) but don't care about them. (Or they get STH's + Inclusion Proofs and validate the proof) B) Clients pass the STH back to someone (which must be the server it got it from. (Or a opt-in trusted auditor)) C) An auditor collects the STHs from somewhere (must be servers following from (B)) and retrieves consistency proofs between them. Misissuance is detected at (C). Because the client itself does not do anything with a STH, and because a SCT will always resolve to an STH, it seemed like it would be both simpler and bandwidth reduction to just cut it out. -tom