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

Julian Reschke <julian.reschke@gmx.de> Tue, 26 August 2014 08:56 UTC

Return-Path: <julian.reschke@gmx.de>
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 C65B01A6EE7 for <websec@ietfa.amsl.com>; Tue, 26 Aug 2014 01:56:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id ZkoXVjmytCtb for <websec@ietfa.amsl.com>; Tue, 26 Aug 2014 01:56:34 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net []) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 625CA1A6EE1 for <websec@ietf.org>; Tue, 26 Aug 2014 01:56:32 -0700 (PDT)
Received: from [] ([]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0Mb8MV-1X39CH1mhf-00KhEj for <websec@ietf.org>; Tue, 26 Aug 2014 10:56:30 +0200
Message-ID: <53FC4BBA.3080400@gmx.de>
Date: Tue, 26 Aug 2014 10:56:26 +0200
From: Julian Reschke <julian.reschke@gmx.de>
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-Provags-ID: V03:K0:bta43kbP/4oXedHCiTE+d1fjaw7/+apz1ggh+qNG4TFIY2DPsBE 3FAbIW/wRRNY2ExlqTfgVzkoIBoeOiXXe3ZgtZ9yX23wldrtsuMMLlRj2/MJAKZKJPZ6jfm 6zsUvuACAnqfD/Px3ZVtsB1YuQqiu30kTWzBmLyQ6nvBb2DGaq5DSwljI6VnaZGHSEYYKt0 ofTqpKG6hELIeQH6eCLKQ==
X-UI-Out-Filterresults: notjunk:1;
Archived-At: http://mailarchive.ietf.org/arch/msg/websec/O3rRqPE1AqaXCQlDL9muGARNUHg
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:56:35 -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)

Best regards, Julian