Re: [Trans] [Cryptography] Certificate transparency on blockchains

Tom Ritter <> Fri, 27 March 2015 01:18 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 6C0D91A88C1 for <>; Thu, 26 Mar 2015 18:18:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.379
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 ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YRH8Lrasd5Um for <>; Thu, 26 Mar 2015 18:18:24 -0700 (PDT)
Received: from ( [IPv6:2a00:1450:400c:c05::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id F00CD1A02F1 for <>; Thu, 26 Mar 2015 18:18:23 -0700 (PDT)
Received: by wiaa2 with SMTP id a2so11333949wia.0 for <>; Thu, 26 Mar 2015 18:18:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=vg; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=G4XYoDkMKzlRCe8qgZBApAwggF5AJ9AFP99+Y0k7S6s=; b=Re5eSVQ2lsmqnq5nXgs9+d3gz17cVhi3M+Cwox0IuBgXJNwsWv5E1OU8UATsOnfO/p Wpy5PFcnYKeJOFN81FJAZ4+ScywYTtKBVi9CrU52+J4g/alZ10Tygamh03osbZlvoftE /QiXX2p4V1sPX5aOzOKX5vJyvI9frdWb8ARLY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=G4XYoDkMKzlRCe8qgZBApAwggF5AJ9AFP99+Y0k7S6s=; b=EGqv9ouVbmMsKahCxeso1qQ19cuGYaQDncTT6GiOLNVEgrRfT0GEpwvJlyG378Czuo HXq/+Ir5rIMfD4dFkQbHMn411q9caP4LHMKPkk17qXWRdACPjXtR8ozKCJLDD8EYmCKt +4WNJssqxAMLMyGURdow4RidqY+wxPuurqER+dKC4o/K1bUTbFts3/fnyKHcg5/G6WxT B8G+ATEpfZG05tNKM2ym9ju62Ty3RZ9b3YuAHRiry6XGaMMFq0hqQST91vPBfIV1notv /GdyGpvBzKf68qX1UpBMt5s3psl2/MacdmgVnEX4RuLzytYCUVSBQZ04sbd6dFY7j1ir bMLA==
X-Gm-Message-State: ALoCoQnDezJQgB/8aQ/hrq7kTTj/HpDXIrGNuWUy91X8k3e1aYYsmIeaWf4FuZDED25PeRzSs022
X-Received: by with SMTP id gg5mr51818683wic.93.1427419102738; Thu, 26 Mar 2015 18:18:22 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Thu, 26 Mar 2015 18:18:02 -0700 (PDT)
In-Reply-To: <>
References: <> <> <>
From: Tom Ritter <>
Date: Thu, 26 Mar 2015 20:18:02 -0500
Message-ID: <>
To: Greg <>
Content-Type: text/plain; charset=ISO-8859-1
Archived-At: <>
Cc: "" <>, Paul Wouters <>, Cryptography <>
Subject: Re: [Trans] [Cryptography] Certificate transparency on blockchains
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Public Notary Transparency working group discussion list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 27 Mar 2015 01:18:25 -0000

On 26 March 2015 at 15:45, Greg <> wrote:
> Reading over it, I still have several concerns, which I will voice here but
> let me know if it would be better to also voice them on [trans].

It would be better to voice them on trans, which I am copying.  I
suggest we move it there for follow-ups.

> In Section 3.1.1, it says:
> <begin>
> HTTPS servers MUST perform a number of sanity checks on SCTs from
>    clients before storing them:
>    1.  if a bit-wise compare of the SCT matches one already in the
>        store, discard
>    2.  if the SCT can't be verified to be a valid SCT for the
>        accompanying leaf cert, issued by a known log, discard
>    3.  if the leaf cert is not for a domain that the server is
>        authoritative for, discard
>    Check number 1 is a pure optimisation.  Check number 2 is to prevent
>    spamming and attacks where an adversary can fill up the store prior
>    to attacking a client.  Check number 3 is to help misbehaving clients
>    from leaking what sites they visit.
> </end>
> Concern #1: Discarding invalid SCTs
> ============================
> It is not clear to me what's going on in (2) above.
> Specifically:
> - How is the server verifying the SCT for validity?

It checks if the signature over the data is valid.

> - Why is the server discarding the SCT if it is invalid?
> Wouldn't discarding an invalid SCT totally undermine the point of clients
> sharing them?

Keeping data for an invalid signature (or a signature for a log which
I do not recognize and thus don't have the public key) would allow
clients to store arbitrary data on your server. Complex rate-limiting
and DoS concerns now apply.

> Concern #2: The use of the word SHOULD
> =================================
> The doc states:
> (with ref to server => auditor comms):
> <begin>
> HTTPS servers SHOULD share all SCTs and certificate data they see
>    that pass the checks above
> </end>
> <begin>
> Auditors SHOULD provide the following URL accepting HTTPS POSTing of
>    SCT feedback data:
> </end>
> <begin>
> Auditors SHOULD regularly poll HTTPS servers at the well-known sct-
>    feedback URL.  How to determine which domains to poll is outside the
>    scope of this document
> </end>
> As per RFC2119, "SHOULD" means the advice is free to be ignored after the
> implications are "carefully weighed".
> This means that so far the document provides no guarantees that a
> misbehaving log will be caught.

Yup. We can't force anyone to participate unfortunately.  A client
_can_ opt-in to using a trusted auditor and send SCTs to them, which
then mitigates the concerns over a server not participating.  But I
will note that if a server does not participate they are essentially
opening themselves to attacks by logs. So they have an incentive to

> It is also disconcerting that instead of taking direct action themselves,

There is nothing stopping a server from being an auditor and detecting
log misbehavior.  I suppose we could add a note in the draft to that
effect, but it's a pretty weighty option I imagine most people will
not pursue.

> servers are supposed to initiate yet another HTTPS connection to an auditor.

(nit: Server can instead just make the SCTs available for auditors to
query and retrieve from them. Server doesn't have to initiate outbound

> This is cumbersome and will probably leave open holes for a global MITM to
> prevent SCTs from reaching auditors, yet again undermining the entire point
> of sharing SCTs.

Yes, an attacker who can persistently isolate a client or server from
the rest of the internet is powerful, and is difficult to defeat. We
do not defend against such an attacker. I'm open to suggestions here,
but none really came to me.

> While it's definitely a positive sign that the sharing of SCTs and
> certificate chains is now an official recommendation, I am concerned that
> the particular implementation is without any teeth to deliver concrete
> results, and so until these concerns are addressed I am not convinced that
> the problem has been fully addressed.

That's fair.  There are limitations to the draft, to be sure - but
balancing the very difficult privacy concerns of literally
broadcasting the websites you've visited is also important.