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