Re: [websec] Stephen Farrell's Discuss on draft-ietf-websec-key-pinning-19: (with DISCUSS and COMMENT)

Barry Leiba <barryleiba@computer.org> Wed, 08 October 2014 15:56 UTC

Return-Path: <barryleiba@gmail.com>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C8E311A0301; Wed, 8 Oct 2014 08:56:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.278
X-Spam-Level:
X-Spam-Status: No, score=-1.278 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=no
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 iVUJ2-ctsugo; Wed, 8 Oct 2014 08:56:14 -0700 (PDT)
Received: from mail-la0-x22d.google.com (mail-la0-x22d.google.com [IPv6:2a00:1450:4010:c03::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DD30D1A1BA4; Wed, 8 Oct 2014 08:56:13 -0700 (PDT)
Received: by mail-la0-f45.google.com with SMTP id q1so8818935lam.18 for <multiple recipients>; Wed, 08 Oct 2014 08:56:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=xQwonGaogqXx4CQe6JuLDBN91zAJr1zuvTeqfxsSBoM=; b=Loy/+QcCISTdOrs1NmrW34XBqI+6KHqx5m6a7nEY5Z7MlDlZsa89QaBV4rxTexmtNN 908YIoOaf3SH/BZhvNZF8o88H1GIDyQpMlrKygIYCDt1kDVkD0Pu3UB1IpvnCzp9PUDr zXhM/AJwHJKszGbklW+9bDe1iww/HXJoqHIQXlZ9vnP0jMibPG7bTNfhQebswVmUUSd3 bCDbQQLGCQPP+YLotKL0T6FQnImBa9e6pRx75Di2WyOqPy+3TB6gQ92MzQAcCmlko9lo +MVAic6Jr9N9fy06TjyaTXmLwqxZte5wktwVlacFPCePD0HETpWasdFkcY8QiVfPSJPu yi2Q==
MIME-Version: 1.0
X-Received: by 10.112.54.130 with SMTP id j2mr11667917lbp.41.1412783772001; Wed, 08 Oct 2014 08:56:12 -0700 (PDT)
Sender: barryleiba@gmail.com
Received: by 10.152.8.103 with HTTP; Wed, 8 Oct 2014 08:56:11 -0700 (PDT)
In-Reply-To: <53FB0AB1.1090109@cs.tcd.ie>
References: <20140807110710.18212.14741.idtracker@ietfa.amsl.com> <CACvaWvZooQ2r6hzBAWy-MHvrc62dMaH8kakEvEEFEG-Eg3fZMw@mail.gmail.com> <53FB0AB1.1090109@cs.tcd.ie>
Date: Wed, 08 Oct 2014 11:56:11 -0400
X-Google-Sender-Auth: AJPuVc_9tvHpJOSIL_R6LWYOupA
Message-ID: <CALaySJJW681ttDqpLsJDJAwRPZZY0jjSaY1wO33zzwQiNvNyKQ@mail.gmail.com>
From: Barry Leiba <barryleiba@computer.org>
To: Stephen Farrell <stephen.farrell@cs.tcd.ie>
Content-Type: text/plain; charset="ISO-8859-1"
Archived-At: http://mailarchive.ietf.org/arch/msg/websec/XAEzEXmKU84VukRpb6luCqFQeIY
Cc: "websec-chairs@tools.ietf.org" <websec-chairs@tools.ietf.org>, draft-ietf-websec-key-pinning@tools.ietf.org, "<websec@ietf.org>" <websec@ietf.org>, Ryan Sleevi <sleevi@google.com>, The IESG <iesg@ietf.org>
Subject: Re: [websec] Stephen Farrell's Discuss on draft-ietf-websec-key-pinning-19: (with DISCUSS and COMMENT)
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: Wed, 08 Oct 2014 15:56:17 -0000

Hi, Stephen.  Can you retrieve context and see if version -21
resolves your issues (and restart the discussion if not)?  Thanks.

Barry

On Mon, Aug 25, 2014 at 6:06 AM, Stephen Farrell
<stephen.farrell@cs.tcd.ie> wrote:
>
> Hi Ryan,
>
> Thanks for the thorough response. A few bis'n'pieces below but
> I'll clear once you've posted the update, so no need to keep on
> chatting if you prefer that. (I'm happy to keep chatting too of
> course.)
>
> On 25/08/14 06:51, Ryan Sleevi wrote:
>> On Thu, Aug 7, 2014 at 4:07 AM, Stephen Farrell <stephen.farrell@cs.tcd.ie>
>> wrote:
>>
>>> Stephen Farrell has entered the following ballot position for
>>> draft-ietf-websec-key-pinning-19: Discuss
>>>
>>> When responding, please keep the subject line intact and reply to all
>>> email addresses included in the To and CC lines. (Feel free to cut this
>>> introductory paragraph, however.)
>>>
>>>
>>> Please refer to http://www.ietf.org/iesg/statement/discuss-criteria.html
>>> for more information about IESG DISCUSS and COMMENT positions.
>>>
>>>
>>> The document, along with other ballot positions, can be found here:
>>> http://datatracker.ietf.org/doc/draft-ietf-websec-key-pinning/
>>>
>>>
>>>
>>> ----------------------------------------------------------------------
>>> DISCUSS:
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> Good doc. Two things I'd like to check before moving to a yes
>>> ballot:
>>>
>>> (1) 2.1 - Can a simple-directive start with "pin-"?  Seems like
>>> yes it can, but then the ABNF is ambiguous about the RHS of the
>>> "=" I think, is that right? Its no big deal since valid values
>>> will parse anyway, so only an issue if you ever care about
>>> simple-directive vs. pin-directive. Ah - does the last para of
>>> 2.1 mean that this distinction is needed really?
>>>
>>
>>>From the ABNF, yes, it does many any simple-directive can start with "pin-".
>>
>> I suspect the solution is to remove pin-directive entirely from the ABNF,
>> as it's not necessary, and purely specify in terms of directives. The
>> concept of a "pin-directive" can be explained via prose, which would be
>> consistent to how HTTPbis restructured most of the header processing.
>>
>
> Grand. That'll fix it.
>
>>
>>>
>>> (2) 2.1.3 says that "If the scheme in the report-uri is one
>>> that uses TLS (e.g.  HTTPS), UAs MUST perform Pinning
>>> Validation when the host in the report-uri is a Known Pinned
>>> Host;" That's generally ok, however, I think it may break for
>>> alt-svc, where TLS is used but https is not, or if TCPINC
>>> decided on a TLS based solution then some coder might get it
>>> wrong. I think a simple re-statement in terms of http vs. https
>>> URIs should fix this. I realise that neither alt-svc nor TCPINC
>>> existed when this work started, but since they now do it'd pay
>>> to think about them and I don't recall seeing that on the
>>> websec list (apologies if I'm wrong there).  The IFF in 2.5
>>> also seems related.  2.2 has same issues about alt-svc and
>>> TCPINC. I do see that you only say "e.g. TLS" here but
>>> wonder nonetheless, e.g. would 2.2.1 cover an alt-svc case
>>> or not?
>>>
>>
>> The suggested solution - being explicit that it applies to HTTPS - equally
>> suffers from the risk of error being seen for alt-svc, in that it fails to
>> account for schemes such as wss://, for which pinning also should apply.
>
> Fair enough.
>
>>
>> I realize this is probably something you may not agree with, but I think
>> the language choice here - that of "secure transport" - is already
>> sufficient to exclude such proposals as alt-svc, which only provide
>> encryption. That is, both in practice and intent, alt-svc is not considered
>> to be a "secure transport" (which is as much evident by the lack of secure
>> cookies)
>>
>> For example, with respect to 2.5, the second bullet point describes the
>> connection as "authenticated", which alt-svc is not.
>
> You're right that I do think some more clarity would be good. Isn't
> the fact that we both think coders are likely to make mistakes here
> a good indicator of that?
>
> I'd suggest adding something like:
>
>    Note that only server-authenticated TLS or mutually-authenticated
>    TLS are considered "secure transports" for the purposes of this
>    specification. In particular, any form of unauthenticated TLS such
>    as use of *ANON* ciphersuites or opportunistic security for HTTP
>    URIs (as in [1]) do not count as "secure transports".
>
>    [1] https://tools.ietf.org/html/draft-ietf-httpbis-http2-encryption
>
> I'm sure that's probably broken and needs fixing but some explicit
> text would be good. (Nonetheless, since we've discussed it, I will
> move to a Yes even if you don't add stuff for this.)
>
>>
>>
>>>
>>>
>>> ----------------------------------------------------------------------
>>> COMMENT:
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> abstract and elswhere: SubjectPublicKeyInfo doesn't usually
>>> have spaces between the terms. No big deal. After the abstract
>>> would a ref to 5280 be right for SPKI as well?
>>>
>>
>> Sure.
>>
>>
>>>
>>> general: I think emphasising the backup pin requirement in the
>>> intro would be good. It's a little hidden now and would be a
>>> surprise to some I bet.
>>>
>>> 2.1 - pin-directive has the literal "pin-" but later you say
>>> (in bullet #3) that directive names are case insensitive.  Does
>>> that apply to "pin-" as well or not?
>>>
>>
>> It should. The above proposed removal of the ABNF for pin-directive should
>> remedy this.
>>
>>
>>>
>>> 2.1 - has some typos: reistry and hahs
>>>
>>> 2.1 - "Known Pinned Host" would be a fine term to define in a
>>> section 1.1 that was renamed via s/Requirements
>>> Language/Terminology/
>>>
>>> 2.1.1 - max-age is really defined against the time of reception
>>> and not (in principle) from when its emitted?  I know that
>>> makes no difference now, but with a sufficient latency (e.g.
>>> Earth->Mars, min 4 mins, max 20 mins, and yes my DTN heritage
>>> is showing:-) it could, just about. I think to be pedantically
>>> correct, max-age ought be defined versus the time of emission
>>> and not receipt.
>>>
>>
>> I don't see how this reasonably can be accomplished, short of requiring
>> that the Date header ( http://tools.ietf.org/html/rfc7231#section-7.1.1.2 )
>> be present, which does not seem desirable.
>
> No, I don't think such a change would be needed. You only need
> to re-define max-age as an offset from the time of reception.
> For the current web that's close enough to the time of emission
> that all's well. It'd only make a difference for a DTN-like web.
> But, that last of course means that almost nobody cares, so I'll
> stop now:-)
>
> Cheers,
> S.
>
>
>>
>>
>>>
>>> 2.1.2 - uses the term "Pinned Host" which is not the same as
>>> the previously used "Known Pinned Host" - is the distinction
>>> meant to be significant or is that a typo?
>>>
>>
>> Typo, although the difference is significant enough to provide
>> clarification, in as much as it applies to PKP-RO (which doesn't note the
>> pins, as discussed elsewhere)
>>
>>
>>>
>>> 2.1.3/section 4 - shouldn't the potential DoS issues be
>>> discussed for cases where report-uri != same-origin? E.g.  if
>>> busy-site.example.net (is hacked and) sets report-uri to
>>> victim.example.com (maybe with some HTML/JS that generates
>>> loads of queries to the victimj) that'd be like getting /.'d I
>>> think that's maybe worth noting in the security considerations
>>> or in 2.1.3 where you (quite properly) say to rate-limit
>>> reporting. If you'd rather not say why though, that's ok too.
>>>
>>>
>> Sure.
>>
>