Re: [websec] [saag] Pinning

Jeffrey Hutzelman <> Sat, 11 August 2012 22:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D0F5A21F8510; Sat, 11 Aug 2012 15:18:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -106.599
X-Spam-Status: No, score=-106.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id hPqkBM2-prfs; Sat, 11 Aug 2012 15:18:25 -0700 (PDT)
Received: from (SMTP02.SRV.CS.CMU.EDU []) by (Postfix) with ESMTP id 2120321F84D6; Sat, 11 Aug 2012 15:18:25 -0700 (PDT)
Received: from [] ( []) (authenticated bits=0) by (8.13.6/8.13.6) with ESMTP id q7BMIIL8021870 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 11 Aug 2012 18:18:19 -0400 (EDT)
From: Jeffrey Hutzelman <>
To: Chris Palmer <>
In-Reply-To: <>
References: <> <> <> <> <>
Content-Type: text/plain; charset="UTF-8"
Date: Sat, 11 Aug 2012 18:18:18 -0400
Message-ID: <>
Mime-Version: 1.0
X-Mailer: Evolution 2.30.3
Content-Transfer-Encoding: 7bit
X-Scanned-By: mimedefang-cmuscs on
X-Mailman-Approved-At: Mon, 13 Aug 2012 00:42:15 -0700
Cc: Chris Evans <>,,,, Moxie Marlinspike <>,
Subject: Re: [websec] [saag] Pinning
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: Sat, 11 Aug 2012 22:18:25 -0000

On Fri, 2012-08-10 at 15:20 -0700, Chris Palmer wrote:

> * It's not clear that SMTP over TLS is very beneficial, because you
> can't stop delivery due to pin validation failure (or really even
> regular old X.509 failure).

That depends.  Key pinning may not be very interesting for accepting
coming mail from unknown sources, but it may be very interesting when
TLS is used for communication between cooperating components of an
enterprise mail system, or with an outsourced anti-smap or anti-virus or
backup MX service.  And of course, it's also interesting when TLS is
used to protect authenticated mail submission services -- a user sending
outgoing mail via his ISP probably doesn't want to tell his username and
password to just anyone.

> * SSH already has PKP.

Well, no.  Certainly, SSH clients making a leap-of-faith connection to a
previously unknown host will generally remember that host's public key.
And yes, once a host's public key is known, clients will generally
reject a host that presents a public key other than the one known for
that host.  But then, web browsers do the same thing for leap-of-faith
connections to web servers, when a server has a self-signed certificate
or one signed by an unknown CA.  But while this behavior is common, it
is not required by any standard, not something I'd expect an SSH client
to do when an X.509 certificate is used, and not the same thing as key

So in fact, if this gets done at the application layer, it likely will
eventually have to happen for SSH, too.

I would really rather not see a proliferation of application-layer
extensions to handle pinning of the long-term keys used for TLS.  While
I haven't participated in previous discussion on this question, I think
that in the long run this is much better handled at the TLS layer.

That said, there may be a benefit to solving the problem for HTTP at the
HTTP layer, _if_ doing so allows us to get something deployed more
quickly than a TLS-layer solution.

-- Jeff