[websec] draft-ietf-websec-key-pinning-20 feedback

Julian Reschke <jreschke@adobe.com> Tue, 26 August 2014 08:54 UTC

Return-Path: <jreschke@adobe.com>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com []) by ietfa.amsl.com (Postfix) with ESMTP id A22FC1A070B for <websec@ietfa.amsl.com>; Tue, 26 Aug 2014 01:54:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.703
X-Spam-Status: No, score=-0.703 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id fVrLBJ3aSOyC for <websec@ietfa.amsl.com>; Tue, 26 Aug 2014 01:54:31 -0700 (PDT)
Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2lp0203.outbound.protection.outlook.com []) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C400B1A0BEA for <websec@ietf.org>; Tue, 26 Aug 2014 01:54:30 -0700 (PDT)
Received: from [] ( by BL2PR02MB482.namprd02.prod.outlook.com ( with Microsoft SMTP Server (TLS) id 15.0.1015.19; Tue, 26 Aug 2014 08:54:28 +0000
Message-ID: <53FC4B34.8050604@adobe.com>
Date: Tue, 26 Aug 2014 10:54:12 +0200
From: Julian Reschke <jreschke@adobe.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.0
MIME-Version: 1.0
To: websec <websec@ietf.org>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Originating-IP: []
X-ClientProxiedBy: AMSPR01CA008.eurprd01.prod.exchangelabs.com ( To BL2PR02MB482.namprd02.prod.outlook.com (
X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;UriScan:;
X-Forefront-PRVS: 03152A99FF
X-Forefront-Antispam-Report: SFV:NSPM; SFS:(6049001)(6009001)(51704005)(189002)(199003)(64706001)(102836001)(76482001)(87976001)(230783001)(92566001)(4396001)(92726001)(85306004)(101416001)(47776003)(77982001)(81342001)(46102001)(33656002)(21056001)(90102001)(117156001)(83072002)(85852003)(66066001)(79102001)(65956001)(80022001)(20776003)(86362001)(95666004)(99396002)(107886001)(107046002)(105586002)(36756003)(50466002)(23676002)(83322001)(80316001)(77096002)(106356001)(65806001)(74662001)(64126003)(65816999)(81542001)(42186005)(229853001)(83506001)(87266999)(74502001)(54356999)(50986999)(110136001)(31966008); DIR:OUT; SFP:; SCL:1; SRVR:BL2PR02MB482; H:[]; FPR:; MLV:sfv; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
X-OriginatorOrg: adobe.com
Archived-At: http://mailarchive.ietf.org/arch/msg/websec/JHcDd4mSDVORKne5StsxQAYQJvA
X-Mailman-Approved-At: Tue, 26 Aug 2014 01:57:59 -0700
Subject: [websec] draft-ietf-websec-key-pinning-20 feedback
X-BeenThere: websec@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <websec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/websec>, <mailto:websec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/websec/>
List-Post: <mailto:websec@ietf.org>
List-Help: <mailto:websec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/websec>, <mailto:websec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Aug 2014 08:54:34 -0000

Hi there.

Some more quick feedback, somewhat unstructured...

Throughout: please say "header field" rather than "header".

>    The "Public-Key-Pins" and "Public-Key-Pins-Report-Only" header
>    fields, also referred to within this specification as the PKP and
>    PKP-RO header fields, respectively, are new response headers defined
>    in this specification.  They are used by a server to indicate that a

s/server/origin server/ maybe?

>    Figure 1 describes the syntax (Augmented Backus-Naur Form) of the
>    header fields, using the grammar defined in [RFC5234] and the rules
>    defined in Section 3.2 of [RFC7230].  The field values of both header
>    fields conform to the same rules.
>    Public-Key-Directives = [ directive ] *( OWS ";" OWS [ directive ] )
>    directive             = simple-directive
>                          / pin-directive
>    simple-directive      = directive-name [ "=" directive-value ]
>    directive-name        = token
>    directive-value       = token
>                          / quoted-string
>    pin-directive         = "pin-" token "=" quoted-string

1) I would recommend not to special-case pin-directive here, as it makes 
the ABNF ambiguous. Just put the additional requirements into prose.

2) The value of pin-directive ought to allow token syntax as well. 
(Otherwise a conforming parser will need to special-case their parsing 
which doesn't make any sense at all).

>        given header field.  Directives are either optional or required,
>        as stipulated in their definitions.


>    Additional directives extending the semantic functionality of the
>    header fields can be defined in other specifications.  The first such
>    specification will need to define a reistry for such directives.


>    According to rule 5, above, the UA MUST ignore pin-directives with

Repeats a requirement. Maybe do not use MUST here; instead say "will".

>    tokens naming hash algorithms it does not recognize.  If the set of
>    remaining effective pin-directives is empty, and if the host is a
>    Known Pinned Host, the UA MUST cease to consider the host as a Known
>    Pinned Host (the UA should fail open).  The UA should indicate to


>    UAs SHOULD make their best effort to report Pin Validation failures
>    to the report-uri, but may fail to report in exceptional conditions.

MAY? (in general: try to avoid lowercase RFC2119 terms)