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

Yoav Nir <ynir@checkpoint.com> Sun, 11 August 2013 21:29 UTC

Return-Path: <ynir@checkpoint.com>
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 7796E11E8123 for <websec@ietfa.amsl.com>; Sun, 11 Aug 2013 14:29:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.906
X-Spam-Level:
X-Spam-Status: No, score=-9.906 tagged_above=-999 required=5 tests=[AWL=-0.547, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, SARE_LWSHORTT=1.24]
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 C0x2OlcNwJwB for <websec@ietfa.amsl.com>; Sun, 11 Aug 2013 14:28:58 -0700 (PDT)
Received: from smtp.checkpoint.com (smtp.checkpoint.com [194.29.34.68]) by ietfa.amsl.com (Postfix) with ESMTP id 643EE21F9C34 for <websec@ietf.org>; Sun, 11 Aug 2013 14:22:02 -0700 (PDT)
Received: from DAG-EX10.ad.checkpoint.com ([194.29.34.150]) by smtp.checkpoint.com (8.13.8/8.13.8) with ESMTP id r7BLLwCB023722; Mon, 12 Aug 2013 00:21:58 +0300
X-CheckPoint: {52080076-19-1B221DC2-1FFFF}
Received: from IL-EX10.ad.checkpoint.com ([169.254.2.105]) by DAG-EX10.ad.checkpoint.com ([169.254.3.223]) with mapi id 14.02.0342.003; Mon, 12 Aug 2013 00:21:57 +0300
From: Yoav Nir <ynir@checkpoint.com>
To: Trevor Perrin <trevp@trevp.net>
Thread-Topic: [websec] #58: Should we pin only SPKI, or also names
Thread-Index: AQHOjHagv3/BmvZ4wU6WrbkIw+Bd/ZmAXZOAgAADk4CAAHu6gIAIRDGAgAJ+5gCAA6qMgIAAd7oAgABIiACAACPEgIAAAuAAgAALc4CAAAwRAIAAHX2A
Date: Sun, 11 Aug 2013 21:21:57 +0000
Message-ID: <E0BA0FA1-8792-4F3D-BCB2-A8F0B8CEE6CD@checkpoint.com>
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> <520776C0.9080202@gondrom.org> <CAGZ8ZG1s2gCUZiYaj4q=+S_9M8apRPPura5YU_n8aiW9QcoQZQ@mail.gmail.com> <5207D199.9000207@gondrom.org> <CAGZ8ZG3vnt4LZR01Gnj6oofRB3AOEjcT7OCULMVG0O4W=9HDbA@mail.gmail.com> <9B14206B-5B73-4F91-9F54-3A2F651F768F@checkpoint.com> <CAGZ8ZG3qo5MhwPRfcy+POPZE7rpFG2qH2def_tgSwap+QvAf=g@mail.gmail.com>
In-Reply-To: <CAGZ8ZG3qo5MhwPRfcy+POPZE7rpFG2qH2def_tgSwap+QvAf=g@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [172.31.20.158]
x-kse-antivirus-interceptor-info: scan successful
x-kse-antivirus-info: Clean
x-cpdlp: 111869e40d3a3f30a482a3282fe24a3049d2b2b18e
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <88AC540F92E3514F84685E4646198C05@ad.checkpoint.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: IETF WebSec WG <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: Sun, 11 Aug 2013 21:29:03 -0000

Hi

All comments below are made as an individual.

On Aug 11, 2013, at 10:36 PM, Trevor Perrin <trevp@trevp.net>
 wrote:

> On Sun, Aug 11, 2013 at 11:53 AM, Yoav Nir <ynir@checkpoint.com> wrote:
>> 
>> If I advertise a CAA record for my domain with the FQDN "instantssl.com", then InstartSSL will issue me a certificate, probably in an automated process. If instead, I say "comodo.com", this might be flagged, but probably authorized in the end. If it says "Kommodo", eventually a human is going to look at it and decide what the intent was, perhaps with a question by email.
>> 
>> In key pinning, this decision is entirely for a computer to make. So the browser will need to untangle the mess of domain names that certificate vendors own due to mergers, acquisitions, and simple branding. Worse - without a centrally-maintained list different browsers might untangle it differently, and administrators will have to guess what works.
> 
> CAs would tell browser vendors what names to use, and which keys those
> correspond to.  I don't think browser vendors should try to infer this
> on their own, as you're implying.
> 
> Having some sort of clearinghouse that aggregates info from CAs and
> makes it available to browser vendors might be useful.  But this is
> security-relevant info, so browser vendors might also prefer to query
> this from CAs themselves.

There is a third party here. The web site administrators need to set one of those strings in the key pinning data, so they should be able to obtain the correct strings. There may be only 3 browsers and half a dozen CAs that would want to experiment with this, but there may be a lot more web sites. The CAs could add it to their websites: "use 'ca.example.com' for RFC 7xxx key pinning". But I think we will get some pushback in either IETF last call or in IESG review if we try to kick it down the road.

> So there are design decisions here that I'm arguing can be kicked down
> the road.  In the short term (say the next year), we would be lucky if
> 3 browsers and a half dozen CAs wanted to experiment with this.  This
> is small enough that it can be coordinated manually.

Experimentation is tricky. A pin is matched if one of the keys match, so if use the example from the draft:

   Public-Key-Pins: max-age=2592000;
       pin-sha1="4n972HfV354KP560yw4uqe/baXc=";
       pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ="

The next time the UA connect it will check that the completed server cert chain has either of those pins somewhere in the chain.  Now let's replace the second pin with a named one. Assume that I have a certificate matching the first pin, but my next certificate is going to be from ca.example.com:

   Public-Key-Pins: max-age=2592000;
       pin-sha1="4n972HfV354KP560yw4uqe/baXc=";
       pin-named="ca.example.com"

When the UA connects again, the new certificate is there. The first pin no longer matches, so we need the browser to be able to verify that the new certificate matches ca.example.com. Once that is in some web sites, you can't stop the experiment. You'd have to go to each and every website that uses this pin and remove it. 

> If named pinning proves useful and lots of other CAs and browsers want
> to sign up, a more scaleable process can be designed then.

If I was assigned to do the SecDir review on this, I would push back on this.

Yoav