Re: [Trans] Providing the history of STHs a log has issued (in 6962-bis)
Nick Sullivan <nicholas.sullivan@gmail.com> Fri, 19 May 2017 20:45 UTC
Return-Path: <nicholas.sullivan@gmail.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 03A59129AC1 for <trans@ietfa.amsl.com>; Fri, 19 May 2017 13:45:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 LgyxHgqTLdaz for <trans@ietfa.amsl.com>; Fri, 19 May 2017 13:45:12 -0700 (PDT)
Received: from mail-vk0-x22f.google.com (mail-vk0-x22f.google.com [IPv6:2607:f8b0:400c:c05::22f]) (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 92F871294C4 for <trans@ietf.org>; Fri, 19 May 2017 13:45:12 -0700 (PDT)
Received: by mail-vk0-x22f.google.com with SMTP id p85so17968925vkd.3 for <trans@ietf.org>; Fri, 19 May 2017 13:45:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=4Kppqq/RdiauK//yODrVZUTLewqT7yrjpaiMI4v10h0=; b=Pc2gYyG7GwA+tEcp416waSeqSwY0aRWYOQI4p5DTvlihpcZsGPAe+Ms6e/Xynoa6vO pSDAG1AJIKheui6ebhbGkYGll6B8nq2KWn5mPlkG4PP6e82lG6AzYjlJvN0YX8ihF0FD eSm4plpOPS/8WuL+wMsuMWzmhN6hj8T+rDhd78C5aSWDIwY50hYkbanzKDsgW3oWjJC2 skxD8jHxRBuYpzrmO47M8zkaamtwlpmqMe5Uq2KwT4bRkBGyMpk0kcgMk4/TVMpdadh2 9KdAabGd5rAQYvh/jdJ80CNreLNzhhnCkbNVxlxreo4xY5iF6y1vfOjTd0e5sHWochd0 rwgA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4Kppqq/RdiauK//yODrVZUTLewqT7yrjpaiMI4v10h0=; b=mhPY5WXeziZ8FObndN8IccjPqdybrWjhGh4ZJncYVNoEA2tjcLQWjN4Z6ES7d8sIKD uN2O0uAb6PL1sGp7msZ3qB2IbDuw5KWBb9vETcc6wYoyGCTJcWAc/HhtiWA1/4q+GzPB f4I9gVvBiHirBaO/EDf38IUkPwnLVSZpiNMx8x/1NGsyRcPoU3kTM5L6hb++ljV0AelL JtGh0Zigcv8icg38qT2seWIED8ZHAFa/l1xapIoTCgGX/NYx9FdsDtiSLDEgV4yK09vb WiO3sEbEH/r0tAhSmkg2U6Sy//rvqtVK2tG95tPQ8wcIqWs8vFYccZux8+X7P1E/N6XU O2+A==
X-Gm-Message-State: AODbwcCIvna9hIgr3NrE/K7Q5w2oRFTkGEya/8sXj9dsgMKpYYsfwuUL vPMy95V9mXfeoaNBPn6G7D7QL7Cvag==
X-Received: by 10.31.157.132 with SMTP id g126mr2654973vke.60.1495226711652; Fri, 19 May 2017 13:45:11 -0700 (PDT)
MIME-Version: 1.0
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> <CALzYgEdgDSOTTL3BdBFCZCLmH6Z=c==m53d3KO-oKu2RFt4cqQ@mail.gmail.com> <CACM=_OdZy2wyNZo4GMtOSdmanzBhyw=SKr=DOOSS9h05V80arw@mail.gmail.com>
In-Reply-To: <CACM=_OdZy2wyNZo4GMtOSdmanzBhyw=SKr=DOOSS9h05V80arw@mail.gmail.com>
From: Nick Sullivan <nicholas.sullivan@gmail.com>
Date: Fri, 19 May 2017 20:45:00 +0000
Message-ID: <CAOjisRzMAVn757v0O07bYg1JT+oext_MkcGUS8ZSe=PmmZ7R=w@mail.gmail.com>
To: Al Cutter <al@google.com>, Eran Messeri <eranm@google.com>
Cc: Linus Nordberg <linus@sunet.se>, "trans@ietf.org" <trans@ietf.org>, Andrew Ayer <agwa@andrewayer.name>
Content-Type: multipart/alternative; boundary="001a11425fc401bf37054fe699a5"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trans/KRpMYPHXLl4eoUWKAfGvyTeheWI>
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 20:45:16 -0000
On Fri, May 19, 2017 at 10:44 AM Al Cutter <al@google.com> wrote: > On Fri, May 19, 2017 at 3:49 PM, Eran Messeri <eranm@google.com> wrote: > >> 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. >> > > In the ticket you said: > "The problem it [get-sths API] solves is the lack of ability to verify > that the log did not breach the MMD throughout its lifetime: A submission's > timestamp is available via get-entries, but unless a monitor has observed > STHs issued by the log around the time an entry was created for it, there's > no proof that the entry was incorporated within the MMD." > > but you later acknowledged that a get-sths API without some extra > sprinkles *somewhere* doesn't actually solve that problem because there's > nothing stopping a Log from going back and creating a few extra "old" STHs > to cover, say, a period when its signing infrastructure was down, which > it'll happily return to you when you call get-sths at a later date. > This is prevented by requiring the get STHs endpoint to provide a consistent sequence of entries over time and making sure that auditors track it. Alternatively, the chaining idea also achieves this, and so does logging STHs as you suggest. > > I admit I'm not really that familiar with process of defining RFCs, but it > seems weird to me to add a mandatory API, which, as defined in the standard > which makes it mandatory, doesn't solve the problem it was added to solve... > > >> 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. >> > > The hash chaining is only a commitment to a claim of which blob is the > immediate predecessor of this other blob, you still need to verify the > correctness of the blobs in context, of course. > > At least for the monitoring-MMD use-case, it seems like a similar thing > could be achieved by requiring Logs to also log their own STHs, even > allowing for the vagaries of pending queues that'd put an MMD-sized window > on how far back in time a log could create old STHs to cover up MMD-blown > fails. > > The monitors wouldn't then need a get-sths call (although if there were > other use cases for that API then the results from it would at least be > verifiable by monitors). > A thought is that you'd then have the ability to query a Log using > get-proof-by-hash for an STH you're holding to see if it can prove it was > logged, I'm not sure if that's useful at the moment, but my Friday evening > brain finds it amusing for some reason. > > The obvious next step would be to require Logs to log their STHs with a > quorum of other Logs. Assuming all Logs are not collaborating, that makes > it quite a lot harder for anyone to pull off split views, and of course you > can now do the same get-proof-by-hash call for your STH on other logs now, > if you didn't mind trying a a number of logs (or if you already knew in > which Logs to look*). > > *perhaps the set of target logs for a given STH could be defined by some > function of the day or week that the STH timestamp corresponds to - > something which changes infrequently enough that Logs can't simply not > issue an STH during that period or they'd blow their MMD - the intention > being to narrow the set of logs you'd have to look in, but also make it > harder to to choose colluding Logs. > > > >> 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 >>> >> >> >> _______________________________________________ >> Trans mailing list >> Trans@ietf.org >> https://www.ietf.org/mailman/listinfo/trans >> >> _______________________________________________ > Trans mailing list > Trans@ietf.org > https://www.ietf.org/mailman/listinfo/trans >
- [Trans] Providing the history of STHs a log has i… Eran Messeri
- Re: [Trans] Providing the history of STHs a log h… Paul Hadfield
- Re: [Trans] Providing the history of STHs a log h… Andrew Ayer
- Re: [Trans] Providing the history of STHs a log h… Nick Sullivan
- Re: [Trans] Providing the history of STHs a log h… Andrew Ayer
- Re: [Trans] Providing the history of STHs a log h… Nick Sullivan
- Re: [Trans] Providing the history of STHs a log h… Andrew Ayer
- Re: [Trans] Providing the history of STHs a log h… Brian Smith
- Re: [Trans] Providing the history of STHs a log h… Linus Nordberg
- Re: [Trans] Providing the history of STHs a log h… Eran Messeri
- Re: [Trans] Providing the history of STHs a log h… Andrew Ayer
- Re: [Trans] Providing the history of STHs a log h… Eran Messeri
- Re: [Trans] Providing the history of STHs a log h… Al Cutter
- Re: [Trans] Providing the history of STHs a log h… Brian Smith
- Re: [Trans] Providing the history of STHs a log h… Nick Sullivan
- Re: [Trans] Providing the history of STHs a log h… Matt Palmer
- Re: [Trans] Providing the history of STHs a log h… Brian Smith
- Re: [Trans] Providing the history of STHs a log h… Linus Nordberg