Additional comments on draft-stark-expect-ct-00

=JeffH <> Thu, 24 November 2016 01:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 493C8129593 for <>; Wed, 23 Nov 2016 17:01:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8.398
X-Spam-Status: No, score=-8.398 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-1.497, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id RTBDhhwUT_AR for <>; Wed, 23 Nov 2016 17:01:07 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id AB624128874 for <>; Wed, 23 Nov 2016 17:01:07 -0800 (PST)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1c9iLO-0004uw-AE for; Thu, 24 Nov 2016 00:56:54 +0000
Resent-Date: Thu, 24 Nov 2016 00:56:54 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1c9iLH-0004sG-5z for; Thu, 24 Nov 2016 00:56:47 +0000
Received: from ([]) by with smtp (Exim 4.84_2) (envelope-from <>) id 1c9iLA-0002tQ-V9 for; Thu, 24 Nov 2016 00:56:41 +0000
Received: (qmail 11222 invoked by uid 0); 24 Nov 2016 00:56:18 -0000
Received: from unknown (HELO CMOut01) ( by with SMTP; 24 Nov 2016 00:56:18 -0000
Received: from ([]) by CMOut01 with id BcwD1u00X2UhLwi01cwGXg; Wed, 23 Nov 2016 17:56:16 -0700
X-Authority-Analysis: v=2.1 cv=QtDNgzCd c=1 sm=1 tr=0 a=9W6Fsu4pMcyimqnCr1W0/w==:117 a=9W6Fsu4pMcyimqnCr1W0/w==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=IkcTkHD0fZMA:10 a=L24OOQBejmoA:10 a=48vgC7mUAAAA:8 a=QIhr-27iAAAA:8 a=1XWaLZrsAAAA:8 a=wLPFoA7D8s_kOfo565QA:9 a=QEXdDO2ut3YA:10 a=w1C3t2QeGrPiZgrLijVG:22 a=cgaYBWEFosGJW4rWv5Lf:22 a=nJcEw6yWrPvoIXZ49MH8:22
Received: from [] (port=22385 helo=[]) by with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.86_1) (envelope-from <>) id 1c9iKl-0008Fy-Dt for; Wed, 23 Nov 2016 17:56:15 -0700
From: =JeffH <>
Message-ID: <>
Date: Wed, 23 Nov 2016 16:56:14 -0800
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
X-BWhitelist: no
X-Exim-ID: 1c9iKl-0008Fy-Dt
X-Source-Sender: ([]) []:22385
X-Email-Count: 5
X-Source-Cap: a2luZ3Ntb3U7a2luZ3Ntb3U7Ym94NTE0LmJsdWVob3N0LmNvbQ==
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-3.6
X-W3C-Hub-Spam-Report: AWL=0.280, BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, W3C_IRA=-1, W3C_WL=-1
X-W3C-Scan-Sig: 1c9iLA-0002tQ-V9 a5115701d80c57ab1396550b0ba5411b
Subject: Additional comments on draft-stark-expect-ct-00
Archived-At: <>
X-Mailing-List: <> archive/latest/32980
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

Here's some additional comments on "Expect-CT"



In the below, "the I-D" refers to the above I-D.

1. Spec title

Having a title of "HTTP Expect-CT" (HECT) would be more accurate
because, like HSTS and HPKP, the mechanism is particular to HTTP (and
actually HTTP-over-secure-transport)

2. Expect-CT header field syntax

The behavior of a valueless Expect-CT header field is presently not
defined, although it is syntactically correct: both 'enforce' and
'report-uri' are OPTIONAL, and 'max-age' is only REQUIRED if 'enforce'
is present. In HSTS [RFC6797], a valueless strict-transport-security
header field violates the syntax (because 'max-age' is always required)
and thus is explicitly ignored.

Also, the Expect-CT syntax presently defines the below as a valid
Expect-CT header field..

  Expect-CT: enforce; report-uri=""; max-age=86400

..which will ostensibly not yield "report-only" behavior, i.e., UA's
CT-policy will be enforced AND will submit reports of violations of "the
UA's CT policy". Is that directive combination intended? If so, perhaps
this might be termed an "enforce-and-report" expect-ct policy.

3. Terminology

The I-D does not have terminology of "known expect-ct host" (as in HSTS 
& HPKP) ?

"known/unknown" can be a useful distinction and spec-writing shorthand,
see e.g.: <>, the parag
after the two bulleted parags. I.e. a host can be an "expect-ct host" 
but be unknown as one from the perspective of a particular UA instance.

The I-D could use a terminology section tho I note HPKP [RFC7469] does
not have one.

4. Is expect-ct policy host-wide or connection-specific?

Is expect-ct policy host-wide, a la HSTS - i.e., applied to all ports
on a host? Or is it specific to just that particular secure transport
connection over which the Expect-CT header field was received?  If it is
connection-specific, should not the port be explicitly part of the
storage model, as well as the host's domain name?

The I-D implies that expect-ct policy is connection-specific, and that 
makes sense to me because it is specific to characteristics of the 
server's certificate returned on that connection. It would be good to 
explicitly state this.

5. server-initiated expect-ct policy deletion?

Is there no "max-age=0" ability for an Expect-CT host to signal a UA to
remove it from the UA's Expect-CT cache?

6. clarify characteristics of report-only

Emily Stark <> wrote on Monday, November 21, 2016
at 3:28 PM:
> - Caching in report-only mode: I can be convinced that this is
> useful, in case where you are e.g. rolling out a CT-compliant
> certificate in conjunction with Expect-CT (for example if you have a
>  config that turns on CT and also turns on Expect-CT in report-only
> mode, and the config didn't make it out to a few of your servers).
> Will be especially convinced if site owners say that this is how they
> want it to work.

I am thinking that it would be useful to cache report-only expect-ct
policies, e.g. to satisfy the above use case.

Thus max-age would be required in the header field value whether either
or both report-uri and enforce directives are present. (see #2)

And then we can have max-age=0 be the policy deletion mechanism :) (see #5).

7. User agent and server implementation advice, sec cons

The I-D might have similar UA and server implementation
advice/considerations, as well as security considerations, as HSTS
and/or HPKP. Something to think about, though I note HPKP does not
feature distinct UA and server implementation advice/considerations 
sections, though it does have a distinct "privacy considerations" 
section which HSTS lacks.