Re: [Trans] Write-up of the "Strict CT" variant

Ryan Sleevi <ryan-ietf@sleevi.com> Tue, 23 May 2017 13:20 UTC

Return-Path: <ryan-ietf@sleevi.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 8D740129B35 for <trans@ietfa.amsl.com>; Tue, 23 May 2017 06:20:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.299
X-Spam-Level:
X-Spam-Status: No, score=-4.299 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.8, RCVD_IN_SORBS_SPAM=0.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=sleevi.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 W99X7RU5lalC for <trans@ietfa.amsl.com>; Tue, 23 May 2017 06:20:04 -0700 (PDT)
Received: from homiemail-a106.g.dreamhost.com (sub4.mail.dreamhost.com [69.163.253.135]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 892D0129B33 for <trans@ietf.org>; Tue, 23 May 2017 06:20:04 -0700 (PDT)
Received: from homiemail-a106.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a106.g.dreamhost.com (Postfix) with ESMTP id 0A7E530002924 for <trans@ietf.org>; Tue, 23 May 2017 06:20:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sleevi.com; h=mime-version :in-reply-to:references:from:date:message-id:subject:to:cc :content-type; s=sleevi.com; bh=Jb6U/YTIvKmFJwHloDx0hMBboZk=; b= VIoUimmApbaKlv6IiMskcHX8frDmMmufys+ZmKZWaZpYYSq80fp2SuRD/3muXX6a YRi9ms0zfPNnOuqYhUuswNc5kf0nO8i0MyKeOCs7eLz1rj082jT2LYniVuF84Cxe KV76fulwatWjIPyeOtovvAAS2MxZ0e4TvHhD0Xn6YeQ=
Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: ryan@sleevi.com) by homiemail-a106.g.dreamhost.com (Postfix) with ESMTPSA id B6E5B30002925 for <trans@ietf.org>; Tue, 23 May 2017 06:20:03 -0700 (PDT)
Received: by mail-wm0-f42.google.com with SMTP id m7so14597854wmg.0 for <trans@ietf.org>; Tue, 23 May 2017 06:20:03 -0700 (PDT)
X-Gm-Message-State: AODbwcBT337Ru7dD8zXI0sBy9RGdaexgnBa8alRikQZrjgAgwD+4LnZV gze9fx0Nw0nRVDGf5M0S0c0ZBMr3ig==
X-Received: by 10.223.136.165 with SMTP id f34mr415818wrf.134.1495545602219; Tue, 23 May 2017 06:20:02 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.128.164 with HTTP; Tue, 23 May 2017 06:20:01 -0700 (PDT)
In-Reply-To: <CALzYgEeUCmj4BgY7uKdMnsvTcbvfAunquuqHxD7FxuzZxY1=Fg@mail.gmail.com>
References: <CALzYgEeUCmj4BgY7uKdMnsvTcbvfAunquuqHxD7FxuzZxY1=Fg@mail.gmail.com>
From: Ryan Sleevi <ryan-ietf@sleevi.com>
Date: Tue, 23 May 2017 09:20:01 -0400
X-Gmail-Original-Message-ID: <CAErg=HHLVyTS=PxbUWsNQpzkc+S4SS9t5Bz3KHm1oFmJiyf+dg@mail.gmail.com>
Message-ID: <CAErg=HHLVyTS=PxbUWsNQpzkc+S4SS9t5Bz3KHm1oFmJiyf+dg@mail.gmail.com>
To: Eran Messeri <eranm@google.com>
Cc: "trans@ietf.org" <trans@ietf.org>
Content-Type: multipart/alternative; boundary="001a11491f7a5db2fb055030d829"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trans/kL2tV46KrBMNu6FIMl3KEK4aNj4>
Subject: Re: [Trans] Write-up of the "Strict CT" variant
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: Tue, 23 May 2017 13:20:07 -0000

On Tue, May 23, 2017 at 8:42 AM, Eran Messeri <eranm@google.com> wrote:

> Below is a write up of the “Strict CT” variant, based on Mozilla’s
> suggestion.
> The goal of this write-up is to serve as a foundation for a document that
> will describe the deployment of CT needed to operate with stronger
> guarantees for TLS clients, as well as the protocol extensions necessary to
> deploy it.
>
> *Goal*: Provide TLS clients with proof of inclusion to a tree state they
> already know (save clients the need to audit logs themselves).
>
> *Overview*:
>
>    - UA vendor ("auditor") periodically collects an STH (denoted
>    "official" STH [1]) from each log, distributes it to its UAs ("clients").
>    Clients are expected to cache all STHs.
>    - CA/Site Owner ("submitter") submits (pre)certificate to the log,
>    gets SCT [2].
>    - Submitter waits until the next official STH that includes the
>    certificate, gets an inclusion proof to be served alongside the certificate
>     + SCT.
>    - In the TLS handshake, clients get certificate + SCT + inclusion
>    proof to an official STH they know about [5].
>
>
> The purpose of the UA vendor sending down the official STH is to provide
> third-party verification of the consensus.
> The purpose of the submitter bundling the STH + inclusion proof is to
> avoid the client having to retrieve it via some other protocol
>
>
> Options for dealing with the delayed usability of certificates:
>
>    - Submitter waits until an inclusion proof to an “official” STH
>    becomes available, only starts serving that certificate then (could take up
>    to 2 x MMD - two days, typically).
>       - The CA could wait until the proof becomes available and only
>       issue the final certificate then - delay issuance by up to MMD.
>       - The requester could get the certificate immediately but only
>       start using it once it’s able to obtain an inclusion proof to an official
>       STH [3].
>    - Certificate is used immediately, only with SCT: Clients accept
>    certificates only with SCTs for a limited duration; after that an inclusion
>    proof must be accompanied [4].
>    - Opt-in: servers requires presence of proofs via header / X.509
>    extension [6].
>    - Certificate is used after the client can fetch an inclusion proof
>    and an STH the log has produced; if it’s an unknown STH the client sends it
>    to the auditor for reconciliation.
>
>
> Footnotes:
>
> [1] The "official" STH does not have to be explicitly marked: Assuming
> daily STH push cycle, a log could mint one marked STH every day, to be
> distributed to clients. Alternatively, if STH issuance frequency (which
> 6962-bis requires specifying) is not too high (e.g. hourly) then the
> "official" STH could be the first one issued after midnight UTC
> (synchronizing on the clock).
>

Note: A 'daily' cycle is a generous assumption. While this captures
publication, it does not measure client update. For example, it presumes
the UA is awake and listening and able to receive such an update, but in
situations of mobile devices, weekend home devices, etc, this doesn't hold.


> [2] An intermediate improvement is to return, rather than just SCT, the
> SCT + STH issued immediately afterwards (~seconds) + inclusion proof to
> that STH. Effectively, this would rid of SCTs - the STHs issued that way
> will have the same privacy properties of SCTs, but it will simplify the
> system by removing the requirement to deal with inclusion proofs, only
> consistency proofs  (clients would still have to know how to check an
> inclusion proof to those intermediate STHs, but not have to  fetch them).
> If this variant can be successfully deployed using 6962-bis, in
> 6962-bis-bis we could get rid of SCTs completely.
>
> [3] The web server only has to do this once for each new certificate since
> clients are expected to cache all STHs indefinitely.
>

Was this part of Mozilla's proposal? I probably misunderstood, but this
would seem to be an effective non-starter. Indefinite, unbounded caching,
on billions of clients of a variety of form factors, doesn't really seem
like a solution at all :)


> [4] That requires auditing logs asynchronously, since an attacker with
> persistent access could keep getting new SCTs issued, or some clients may
> not have fresh STHs because they missed some updates.
>
> [5] There will be a time period where a submitter serves an official STH
> that the client doesn’t yet know about because it wasn’t distributed, or
> received, yet. Clients could send these for reconciliation, or the
> submitter required to not serve it yet until it was distributed to clients.
>
> [6] In theory, a new certificate, with the inclusion proof embedded, could
> be issued - but it may run afoul of the restriction on issuing different
> certificates with the same serial number.
>

Isn't that the whole reason 6962-bis moved to the (terrible) CMS structure?
:) That CAs were concerned that precerts & certs constituted two logically
distinct X.509 certificates? If that was to be introduced, it would make
sense to simply return to the critical extension, since we'd have lost the
main argument for using CMS :)