Re: [Trans] Providing the history of STHs a log has issued (in 6962-bis)

Eran Messeri <eranm@google.com> Fri, 19 May 2017 14:50 UTC

Return-Path: <eranm@google.com>
X-Original-To: trans@ietfa.amsl.com
Delivered-To: trans@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 79B08128959 for <trans@ietfa.amsl.com>; Fri, 19 May 2017 07:50:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.001
X-Spam-Level:
X-Spam-Status: No, score=-0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 kdYxMoDsNs5H for <trans@ietfa.amsl.com>; Fri, 19 May 2017 07:50:10 -0700 (PDT)
Received: from mail-it0-x22d.google.com (mail-it0-x22d.google.com [IPv6:2607:f8b0:4001:c0b::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 94F4F12869B for <trans@ietf.org>; Fri, 19 May 2017 07:50:10 -0700 (PDT)
Received: by mail-it0-x22d.google.com with SMTP id g126so47860953ith.0 for <trans@ietf.org>; Fri, 19 May 2017 07:50:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=pNMK11PTibcm8fa3DZKk470VwvP2s5nKv8CdvjlGW0o=; b=iwSwFpQ09JboCRFWaa+ub7lrY6FKHOostvGwFjF2dIx/g7/jmxS0nK53cEkLgcgfHQ 71Yq29xunuyUnZ5ApnYeJ803y1wu2O4FNa0GAncp1t5c31RpLAJV/odr0mhmaAWpW7LI qGHlX8r8KIGuCGSXOt1BEXe9FfeYO+w4hFfgQQqwyYygKH2OmfZmqw+rJq6Bbj2RZA5a k3bKMtERBWvYmAuiFt1GvKo6R089r9xY5p8WtRomFtemw5lV3Cv68nD6CEw3LTaNjn03 tNwWSbseMcONumI5hbsAl7YmgT6jai32TSJa7WvnME3xsEiV3w0pJI+ZP4txo9Xr52p0 DL1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=pNMK11PTibcm8fa3DZKk470VwvP2s5nKv8CdvjlGW0o=; b=Ms2uSKTNStKrmknh14kEo7GXSsnERQeDlZWVz3o+etUf6CyV0GI9VbMlmY7+MOON4J 2N/Q57shelgqr3HcwKjtS8Ed3q2v+uPgecSeI0Pu5CdiLJRlQ9R/B/R6zsiJdaJBSZn9 blhz4nWAcxn8N/j3WmpkL7DS41h6yMtsM0gjd6YscwlHP4WhSxWVepFCm4CnB8OWxziO uuhg3lCvLgv9M6r/NA2Aoe6uBokGY1PTnHLx4s4uyEY4T0VuDA+uwMpUwTkIzcwqszdz QvsgNE3Au76bAlRVCp2le5xn86T+vGfwMQlJMmy2E9xGnjKsWOWbVbxCZrU2nZu/2KVy 1hrA==
X-Gm-Message-State: AODbwcCXAnl5kwW8Z8Ho3OaLGYou7zbfIf10T3C0kOKC9h4yso2lt9S/ ldkwoX/84ODKTVuJRxeRPeBhhiynddxS1fhDcA==
X-Received: by 10.36.55.149 with SMTP id r143mr27728740itr.53.1495205409630; Fri, 19 May 2017 07:50:09 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.107.129.6 with HTTP; Fri, 19 May 2017 07:49:38 -0700 (PDT)
In-Reply-To: <20170516221717.c05a62d681ecd64322bdc682@andrewayer.name>
References: <CALzYgEe+PbYJN6Zz4NnPXBnnhYCi8Op-WmSzFKGxRv+uf+b=sA@mail.gmail.com> <20170504082636.dd0212e34e17949eb69b2fed@andrewayer.name> <CAFDDyk93AcRsCTmt+EPO6VFn-Y4D8g1ETTdGuJrtVk3rH7Xnxg@mail.gmail.com> <20170504123447.41d957a88bd65417e714be78@andrewayer.name> <CAFDDyk-DyBObm2W96R1dZPET-CWwTnitmonkHV2oT+_GH4Gyew@mail.gmail.com> <20170505100910.f3da472d9ad71d1d540b8b62@andrewayer.name> <87lgq7j6a3.fsf@nordberg.se> <CALzYgEeXq0iwJTOfcRUQPR49=Xaqvd21nR=Tk5C884xyGehRuQ@mail.gmail.com> <20170516221717.c05a62d681ecd64322bdc682@andrewayer.name>
From: Eran Messeri <eranm@google.com>
Date: Fri, 19 May 2017 15:49:38 +0100
Message-ID: <CALzYgEdgDSOTTL3BdBFCZCLmH6Z=c==m53d3KO-oKu2RFt4cqQ@mail.gmail.com>
To: Andrew Ayer <agwa@andrewayer.name>
Cc: Linus Nordberg <linus@sunet.se>, "trans@ietf.org" <trans@ietf.org>
Content-Type: multipart/alternative; boundary="001a1140c8384f3f28054fe1a3b2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trans/YXbOFJIyzeNnfd4nCypzt9BqBqk>
Subject: Re: [Trans] Providing the history of STHs a log has issued (in 6962-bis)
X-BeenThere: trans@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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: Fri, 19 May 2017 14:50:13 -0000

Following an out-of-band discussion with Andrew (summarized below), I
propose the following, to make progress on 6962-bis:
* Add get-sths as a mandatory API.
* Defer discussion on chaining of STHs to a follow-up document: It's
evident that we need to do more thinking about it. Since we have an STH
extensions mechanism, an extension including a reference to a past STHs can
be added in a later document.

It seems to me that STH chaining is set out to achieve a goal that's
different than how CT currently operates; I'm also not confident it can
achieve this goal. Because further discussion on both topics is necessary,
I don't think it's right to add this feature to 6962-bis yet or gate
6962-bis on it.

CT's current design aims to detect a single log presenting different views
(i.e. different trees) to different parties by exchanging STHs between
observers.
A variant with stronger security guarantees aims to have individual clients
have the entire STH history so they cannot be presented with inclusion
proofs to different trees at different times. Chaining STHs aims to achieve
that (as far as I understand).

However it seems to me chaining STHs does not prevent a client, that
fetches STHs individually, from being tricked into accepting inclusion
proofs to different trees presented by the same log:

A log could produce the following chain of STHs:
STH 1 with root hash Z, then STH 2 with root hash Y = HASH(Z ||
hash(entry_1)), prev_hash = Z, then STH 3 with root hash X = HASH(Z ||
hash(entry_2)), prev_hash = Y (assuming the tree size with STH1 is an exact
power of 2, just for simplicity, as the new root hash would be exactly
HASH(0x01 || Z || hash(new entry))).
STH 1 chains to STH 2 that chains to STH 3, but STH 2 and STH 3 each have,
as their root hash, hash of Z, appending a different entry every time (the
tree is forked at root hash Z).
To the rest of the world, the log would present a chain of hashes that is
STH 1 and  STH 3' - which has the same root hash as STH 3 but prev_hash = Z.
The client could not know that it's being presented with a chain of STHs
that are for different trees unless it has consistency proofs between
(STH1, STH2) and (STH2, STH3).

It seems to me that:
- Clients still need to get (via push or pull) consistency proofs between
STHs and validate them.
- STHs still have to be gossiped for a single entity (monitor) to be in
possession of STHs that cannot be proven consistent.

But maybe there are other ways to chain STHs, so I'd like to follow up on
that independently of 6962-bis.

Eran


On Wed, May 17, 2017 at 6:17 AM, Andrew Ayer <agwa@andrewayer.name> wrote:

> On Mon, 15 May 2017 17:18:22 +0100
> Eran Messeri <eranm@google.com> wrote:
>
> > As it has been pointed out to me, the STH history API, even with the
> > proposed changes of adding a sequence number to issued STHs, or
> > requiring an STH refers to a previous STH, would not prevent
> > backdating of STHs in a meaningful way - see explanation below.
>
> This is not the only reason for a get-sths API.  The other reason is that
> it facilitates the prospective auditing model favored by Mozilla, which is
> why Richard Barnes has asked for it[1].
>
> There seems to be a general agreement that in the long term, TLS
> servers should send inclusion proofs due to the difficulty of auditing
> SCTs robustly and privately.  6962-bis already provides a way to embed
> inclusion proofs in the certificate, OCSP response, or TLS handshake.
> However, this is just shifting the problem to auditing STHs.
> Unfortunately, gossiping STHs or requesting consistency proofs has
> similar privacy problems[2].
>
> An alternative to auditing STHs on-the-fly is for clients to download and
> cache batches of every STH the log has produced.  An inclusion proof would
> be considered valid as long as it is based on one of the cached STHs.
>
> Currently, there are two obstacles to doing this:
>
> 1. Getting the STHs.  Calling get-sth repeatedly isn't robust, because an
> STH might be missed.  A get-sths endpoint allows all STHs to be obtained
> so they can be cached.
>
> 2. Auditing the STHs.  Obtaining consistency proofs for every STH would
> require a lot of bandwidth.  For this reason, Richard Barnes called
> for the use of a Haber-Stornetta hash chain[3], which would be a rather
> drastic change to the protocol.
>
> I have a simpler proposal: have each STH contain the hash of the previous
> STH.  This provides the same properties as a Haber-Stornetta hash chain
> while making only a modest, backwards-compatible change to the protocol.
> Clients need only gossip the latest STH to be confident that everyone
> has the same view of the log, including its entire STH history.  Therefore,
> there is no need for clients to audit the consistency of each STH, as this
> job can be left to auditors who are guaranteed to have the same view of
> the log's STH history.
>
> A get-sths endpoint, plus embedding the hash of the previous STH in each
> STH, plus the existing ability to embed inclusion proofs, will permit
> RFC6962-bis to be used with a robust, privacy-preserving, and prospective
> auditing model, while remaining conceptually backwards compatible with
> the auditing model of RFC6962. This seems like a win-win to me.
>
> Regards,
> Andrew
>
>
> [1] https://mailarchive.ietf.org/arch/msg/trans/
> Zm4NqyRc7LDsOtV56EchBIT9r4c
>
> [2] Although an STH doesn't uniquely identify a certificate like an SCT
> does, in practice a client auditing or gossiping a particular STH may
> be a very strong indicator that it just saw a particular certificate.
> For example, if 10 certificates embed an inclusion proof to STH X,
> but 9 of those certificates are expired or aren't used on the public
> Internet, then a client auditing STH X probably just connected to the
> server identified by the 10th certificate.
>
> [3] https://mailarchive.ietf.org/arch/msg/trans/gO_
> DFW3v9FmBCOek_hifZ6KL368
>