Re: [websec] #58: Should we pin only SPKI, or also names

Trevor Perrin <trevp@trevp.net> Wed, 14 August 2013 17:20 UTC

Return-Path: <trevp@trevp.net>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 257B421E80BA for <websec@ietfa.amsl.com>; Wed, 14 Aug 2013 10:20:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.477
X-Spam-Level:
X-Spam-Status: No, score=-2.477 tagged_above=-999 required=5 tests=[AWL=-0.500, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_BACKHAIR_43=1, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2uIC1jeG2-tw for <websec@ietfa.amsl.com>; Wed, 14 Aug 2013 10:20:20 -0700 (PDT)
Received: from mail-wg0-f54.google.com (mail-wg0-f54.google.com [74.125.82.54]) by ietfa.amsl.com (Postfix) with ESMTP id 103D821F9A8C for <websec@ietf.org>; Wed, 14 Aug 2013 10:20:18 -0700 (PDT)
Received: by mail-wg0-f54.google.com with SMTP id e12so7655811wgh.21 for <websec@ietf.org>; Wed, 14 Aug 2013 10:20:18 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=KLOFMsbviYfDlEv9O2pkxFAxZtJIwfncrNkB2s4gg4I=; b=nMc+/GQz9Ts1TVpBdY5TFbNHHaFgECjkIPz9pqxNUuSnLz5Anu/qnM/BQ1jHe5XUDP nbT/WP0m58gQLEQ1Ndi75B3kwmR4w1F11N0/Q6oTinjIX0LhU+xMP89lPVaBgTj4aANz GiY4fidKq9IhD+GZd2SOtYodhaGAyaRRBg/olhx07o3zjTPtWJsmz61cjVGSbJSbCQnI XMTN8pLjjtLbSBbCoo0jyIEP8IL30W82upEWyOtaIPhxh1A3YtWBaegUUIXQZ/m05Myx h352JFsWspvPeO5/EMMwsrK2XZpEf5SPjpzKQE6GmZG+ygUlkokUKtGAQsBjShiUaGRS epww==
X-Gm-Message-State: ALoCoQmy0nzbT6fZR4uMelIfxtX6HxZwZOArjr64/NP78DKIrJKkT1nQOO+LxsPcU0uZhWLT/MF4
MIME-Version: 1.0
X-Received: by 10.180.205.236 with SMTP id lj12mr6558461wic.22.1376500817975; Wed, 14 Aug 2013 10:20:17 -0700 (PDT)
Received: by 10.216.212.9 with HTTP; Wed, 14 Aug 2013 10:20:17 -0700 (PDT)
X-Originating-IP: [166.137.184.39]
In-Reply-To: <5209FF9D.1080208@mozilla.org>
References: <060.be9b0009dc0350ca543f553042673944@trac.tools.ietf.org> <073501ce8c6e$f6c17d90$e44478b0$@digicert.com> <CAMm+LwjdGJC4FHCJ_OAYGRqCGGc0Nz1pLV=yVGK9M9E7drfujQ@mail.gmail.com> <CAOuvq200e9HnPX1w9sZ+e7ipBmdgZdPL5xzKDgcaDpSxz1N=gg@mail.gmail.com> <CAMm+Lwh384YBMXw-BDoxJw+AN4qv8x6GQpF9YK4PW1gQRnadpg@mail.gmail.com> <6125A841-6C85-4858-B37F-C021067F0CFA@checkpoint.com> <2035FF99-A079-4F2F-B4DE-962FE1C1B964@checkpoint.com> <CAOuvq20O9bqHGR-5eKPmasNnWEuNW7ACL7PxM09yoTmmyt1UUg@mail.gmail.com> <CAGZ8ZG2C4uB=4vgH325TWeNW89ne4E_DN0j9ZV0t2AKa1o+x9g@mail.gmail.com> <52089A35.9040103@mozilla.org> <CAGZ8ZG3HUUsQJ63mCqHd_LOq+KSdsVpG7Gibdif5dS4oGLywpA@mail.gmail.com> <52091598.7000306@mozilla.org> <faac23b0797219a618f8ffee1932f7e2.squirrel@webmail.dreamhost.com> <CAGZ8ZG1zRJ3fWsK7+Zd_CWjZKTms_YjAxFWzQ+=yrn_VTW+s4g@mail.gmail.com> <5209FF9D.1080208@mozilla.org>
Date: Wed, 14 Aug 2013 10:20:17 -0700
Message-ID: <CAGZ8ZG3-WgKuRCWSsB8U_Y72J9TYU83tsmY-QZ8=-8bOoxkj+A@mail.gmail.com>
From: Trevor Perrin <trevp@trevp.net>
To: Gervase Markham <gerv@mozilla.org>
Content-Type: text/plain; charset="ISO-8859-1"
Cc: websec <websec@ietf.org>
Subject: Re: [websec] #58: Should we pin only SPKI, or also names
X-BeenThere: websec@ietf.org
X-Mailman-Version: 2.1.12
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, 14 Aug 2013 17:20:26 -0000

On Tue, Aug 13, 2013 at 2:42 AM, Gervase Markham <gerv@mozilla.org> wrote:
> On 13/08/13 07:40, Trevor Perrin wrote:
>> Names are also smaller, and easier to configure, review, and debug
>> than lists of hash values.
>
> Sure. No-one is denying that there are some advantages to using names;
> the question is whether those advantages are worth it given the
> significant downsides.

The only real downside I've heard is that this would be a lot of work
which people don't want to tackle now.

Which is fine, but I hope we can revisit this later.


> In terms of how to proceed, I suggest the wise thing is to define the
> syntax so it is open to being extended with names or other identifiers
> later, but get the standard done without that facility. Then, we don't
> have to let the best be the enemy of the good.

Per current spec, any new directives will be ignored by old browsers.

Do we want the ability for new directives to be somehow marked
"critical", so that an HPKP header is ignored if these new directive
aren't understood?


>>> It's well known and understood that not every user updates their browser
>>> every cycle. Or, when and if pinning is integrated into an OS, they don't
>>> always update their OS. So you will quickly have a situation, very easily
>>> within a few releases, of the name 'Foo CA' ambiguously referring to
>>> multiple different sets of SPKIs.
>>
>> Browsers would need to stop using name->key mappings that aren't
>> current (say, more than 30 days old).
>
> And so HPKP no longer works for those sites in those browsers? That
> doesn't sound great from a security standpoint to me. It also makes
> using names clearly worse for the site than using hashes.

HPKP pins based on stale name<->key mappings would not be applied.  I
think any instantiation of this concept would have to work that way.

A browser that's been somehow cut-off from security updates for a long
time will have other vulnerabilities (preloaded pins will be disabled,
security holes will be unpatched, blacklists and revocation data will
be absent, etc).


> That's rather a big change in the idea to be throwing in as a bullet
> point mid-way through a discussion. Forgive me, but it rather seems like
> you are making this up as you go along rather than having thought it
> through and presented a coherent proposal.

Well, I am.

The hard part of this is what communication / coordination / registry
mechanisms can be set up for CAs to coordinate this with browsers.  I
don't have a good sense of that.


>>> This is independent of mergers - CAs that are issuing new intermediates,
>>> or deprecating old roots, etc.
>>
>> Yes, but either these get tracked by browsers, or they need to be
>> tracked by every website using an affected CA pin.
>
> If the idea of using names is greater simplicity for sites, imposing a
> requirement that they track the goings-on in the CA industry seems not
> to meet that goal.

There's some misunderstanding.

My point is that changes like CAs issuing new intermediates or
deprecating old roots MUST get incorporated into website pins somehow.

Either every website using CA pins has to keep track of these changes
and make these updates (current system).

Or only the browsers have to do this (named pins).

Most of the objections people have been raising come down to: "Pinning
CA keys is hard, CA keys change over time and between root stores, how
could browsers possibly keep track of this..."

Any my counter is:  Yes!  It's hard!  Which is why I'd much rather
have a few browsers keep track of it then ask every website deployer
to do so.


>> I could imagine the former becoming widely used.  Websites could
>> easily see what other websites are doing, discuss and compare which
>> CAs they consider good choices, and test and review their deployments.
>>  CAs would be incentivized to opt-in to this system by making it easy
>> for browsers to pin them, and to provide good security so that
>> websites would choose to include them into pins.
>
> Can't CA's help in the current system?

Of course, and they'll have to.

The question is whether they should be publishing this data for every
pinned website to track, or every browser to track.


> "Here's the set of 3 opaque
> strings you should add to your HPKP header to pin to our consumer roots"
> is not all that much more complex than "Here's a string that looks like
> a domain name you should add to your HPKP header to pin to our consumer
> roots".

I disagree, configuring long lists of random-appearing strings that
require frequent updating is much harder than configuring a few
readable names that almost never change.

But I suppose this is a debate that can be resumed in a year or two
when we've got more experience.


Trevor