Re: [websec] Issue 53 - Key pinning should clarify status of pin validation with private trust anchors

Yoav Nir <> Tue, 05 March 2013 11:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id BD1EC21F86BC for <>; Tue, 5 Mar 2013 03:18:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -10.299
X-Spam-Status: No, score=-10.299 tagged_above=-999 required=5 tests=[AWL=0.301, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Ju3VKyUfj3TT for <>; Tue, 5 Mar 2013 03:18:01 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id AA69221F86A1 for <>; Tue, 5 Mar 2013 03:18:00 -0800 (PST)
Received: from ([]) by (8.13.8/8.13.8) with ESMTP id r25BHuSD004131; Tue, 5 Mar 2013 13:17:56 +0200
X-CheckPoint: {5135D40D-0-1B221DC2-2FFFF}
Received: from ([]) by ([]) with mapi id 14.02.0342.003; Tue, 5 Mar 2013 13:17:56 +0200
From: Yoav Nir <>
To: Daniel Kahn Gillmor <>
Thread-Topic: [websec] Issue 53 - Key pinning should clarify status of pin validation with private trust anchors
Thread-Index: AQHOGTxpue254jfRf0afSx12uHk+Q5iWw9kAgAAOW4A=
Date: Tue, 5 Mar 2013 11:17:55 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
x-kse-antivirus-interceptor-info: scan successful
x-kse-antivirus-info: Clean
Content-Type: text/plain; charset="us-ascii"
Content-ID: <>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "<>" <>
Subject: Re: [websec] Issue 53 - Key pinning should clarify status of pin validation with private trust anchors
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 05 Mar 2013 11:18:05 -0000

On Mar 5, 2013, at 12:26 PM, Daniel Kahn Gillmor <>

> On 03/04/2013 07:57 PM, Ryan Sleevi wrote:
>> As discussed during Atlanta, the way that pinning is currently implemented
>> within Google Chrome, pinning is only enforced as it relates to so-called
>> "public trust anchors" (eg: those shipped by default as part of a browser
>> or OS installation, not those installed by a user).
> Sorry -- i wasn't in Atlanta, so i don't know the context or background
> for this.  Can you explain more?
> Consider the case where pre-loaded trust anchor ("trusted root
> certificate authority") X certified my web server's EE certificate with
> pubkey Y, and i published a pin on Y and my backup pubkey Z (but no pin
> on X).
> Are you saying that if i switch my server to use Z, and it is certified
> by some non-(pre)loaded trust anchor (or it is self-signed), then Google
> Chrome will not respect the pinning and the connection will fail?

Hi Daniel

Not respecting the pinning means that the connection will not fail.

Suppose the trust anchor store that comes with the OS on which Chrome is installed comes with two CAs: Verisign and StartCom. 

My computer also has another CA called BigCorpCA.

Suppose some website, such as has published a pin for Verisign.

Chrome will accept a certificate from Verisign, because it fits the pin
Chrome will accept a certificate from BigCorpCA, because it was added by the user (or by someone who has enough power over the user to install CAs on their computer)
Chrome will not accept a certificate from StartCom, because it goes against the PIN.

I can guess that the reason they do this is so that Chrome doesn't block on certificates from TLS proxies, that are becoming increasingly common.

Yoav (with no hats)