Re: [certid] section 4.6 rewrite (aka: Bad certificate handling)

"Jim Schaad" <ietf@augustcellars.com> Tue, 05 October 2010 07:09 UTC

Return-Path: <ietf@augustcellars.com>
X-Original-To: certid@core3.amsl.com
Delivered-To: certid@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 77DAF3A6DF2 for <certid@core3.amsl.com>; Tue, 5 Oct 2010 00:09:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.949
X-Spam-Level:
X-Spam-Status: No, score=-1.949 tagged_above=-999 required=5 tests=[AWL=0.650, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h9wFajoMSOyT for <certid@core3.amsl.com>; Tue, 5 Oct 2010 00:09:55 -0700 (PDT)
Received: from smtp1.pacifier.net (smtp1.pacifier.net [64.255.237.171]) by core3.amsl.com (Postfix) with ESMTP id E4A273A6CC4 for <certid@ietf.org>; Tue, 5 Oct 2010 00:09:55 -0700 (PDT)
Received: from TITUS (pool-96-225-201-121.ptldor.dsl-w.verizon.net [96.225.201.121]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jimsch@nwlink.com) by smtp1.pacifier.net (Postfix) with ESMTP id EA8156EF67; Tue, 5 Oct 2010 00:10:51 -0700 (PDT)
From: "Jim Schaad" <ietf@augustcellars.com>
To: <mrex@sap.com>
References: <00a601cb610a$dc119c60$9434d520$@augustcellars.com> from "Jim Schaad" at Sep 30, 10 06:49:16 pm <201010041928.o94JSwa7017455@fs4113.wdf.sap.corp>
In-Reply-To: <201010041928.o94JSwa7017455@fs4113.wdf.sap.corp>
Date: Tue, 5 Oct 2010 00:19:00 -0700
Message-ID: <015d01cb645d$95c4f440$c14edcc0$@augustcellars.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQFDY/W4FwyIqkLueZXYHgdRSAu7YZRB78Yg
Content-Language: en-us
Cc: certid@ietf.org
Subject: Re: [certid] section 4.6 rewrite (aka: Bad certificate handling)
X-BeenThere: certid@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Representation and verification of identity in certificates <certid.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/certid>
List-Post: <mailto:certid@ietf.org>
List-Help: <mailto:certid-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 05 Oct 2010 07:09:57 -0000

> -----Original Message-----
> From: Martin Rex [mailto:mrex@sap.com]
> Sent: Monday, October 04, 2010 12:29 PM
> To: Jim Schaad
> Cc: mrex@sap.com; matt@mattmccutchen.net; stpeter@stpeter.im;
> certid@ietf.org
> Subject: Re: [certid] section 4.6 rewrite (aka: Bad certificate handling)
> 
> I wrote about two issues:
> 
>  (1) lack of rationale why the cert chain should be cached
>      rather than only the server certificate

Ok - I will work through a more explicit example of how I would look at
things.

I look upon section 4.6.2 (and follows) to be analogous to the user adding
an additional SAN to a certificate that states that one or more of the
reference identifiers is being bound to a certificate.  As an advanced user,
I may still wish some correct path validation to occur.

Example:

Given that I have a certificate for the web site ietf.russ.housely.org and
it changes to two different CAs - one operated by Tim Polk (a government
employee and thus containing a number of name constraints to avoid being
court marshaled and shot) and one operated by Sean Turner (those contractors
will work with anybody).  However the address of the website that I typed in
is ietf.russ.housley.org.  The reference and presented names do not match.
If the presented name was correctly in the certificate the path to the Tim
Polk CA would fail validation.  I may decide that I will accept the
certificate only if it continues to validate to the Sean Turner CA on the
assumption that he might be more on the ball about looking for such
desrepances and getting them resolved, however I might look at the
certificate in question and decide that the typo was a certificate issuing
problem (having called and gotten a SHA-512 hash from Russ) and that I will
currently accept the lack of a name match.  

Here is a circumstance where I have made the decisions of implicitly adding
the SAN based on the path used to validate the certificate.  Thus if I get a
different valid path (because maybe Sean revoked the certificate) I want to
be re-informed that the basis of my decision has been altered.

NOTE: This is not a trust decision - this is only a decision on the name
mapping issue.

> 
>  (2) support for server certs that do not succeed certificate
>      path validation to one of the (pre-)configured trust anchors

This is from the abstract of the document in question:

"This document specifies best current practices for
   representing and verifying the identity of application services in
   such interactions."

As you see the document is about how to do name comparisons.  If you believe
a document on trust , path validation and pinning are needed I would
strongly suggest that you write such a draft.

jim

> 
> 
> You did not provide any arguments for (1) and inappropriately dismiss (2)
for
> the scope of the current document.
> 
> I think that (1) is seriously underspecified.  With the existing matching
> procedure, caching the entire cert chain does NOT make any sense at all
(and
> does not provide security benefit).
> 
> 
> Jim Schaad wrote:
> >
> > There is no need to remember that path validation has passed or failed
> > - by definition it has passed or you would never even get here.  The
> > document does not "permit" the case of using a certificate if path
> > validation has failed.
> 
> The previous document (rfc-2818) certainly did allow arbitrary certs and
left
> the notion when a server cert is acceptable completely out-of-scope (it
does
> NOT say PKIX certificate path validation anywhere):
> 
>  http://tools.ietf.org/html/rfc2818#section-3.1
> 
>    If the client has external information as to the expected identity of
>    the server, the hostname check MAY be omitted. (For instance, a
>    client may be connecting to a machine whose address and hostname are
>    dynamic but the client knows the certificate that the server will
>    present.)
> 
> This document here sensibly explains why you may want to allow server
certs
> that do not chain to pre-trusted roots:
> 
>  http://www.w3.org/TR/wsc-ui/#selfsignedcerts
> 
> 
> >
> > This document makes absolutely no statements about ever doing anything
> > positive with untrusted certificates.  If the certificate is untrusted
> > - i.e. fails path validation -- then all bets are off and the document
> > does not apply in any way.  After all if you don't trust the
> > certificate why would you believe anything that the certificate says
> > about the identity that is associated with the certificate.  This is a
> > complete non-issue for the document.
> 
> If this documents engages at all into discussion when a server cert is
> valid/acceptable for performing server-id-check, then it should _not_
limit the
> scope to trust anchors preconfigured by software distributors.
> The current wording about NAGGING end users when the server cert does not
> map to a pre-configured trust anchor and offering the "pinning"
> of server-certs to advanced users only is inappropriate for an IETF
specification.
> The W3C spec is much more reasonable in that respect.
> 
> 
> >
> > >
> > > Pinning server certs protects you from attackers that manage to get
> > > a cert issued from any of the CAs operating under any of your
> > > (pre-)trusted roots.  Performing certificate path validation even
> > > for "pinned" certs protects you from missing revocations.
> >
> > Remember this only discussing the case of being unable to complete the
> > logic dealing with comparing the reference and the presented names.
> > This is not dealing any cases where path validation either fails or is
not
> performed.
> > Thus the idea of pinning a certificate that passes (or does not pass
> > validation) is not part of the concepts we are discussing here.
> 
> 
> The document discusses the situation of a "cached server cert", without
going
> into details about why the certificate was cached, what meta-information
was
> cached along with it (giving more context to the decision to cache/pin the
> server certificate), and it talks about how to perform server-id-check
when a
> cached/pinned certificate exists.
> 
> The current description is artificially limited to be applicable to the
pre-
> configured commercial CA trust anchors, and doesn't even mention that it
is
> crippled like this, and that there be other more sensible and more secure
> reasons for caching/pinning certs that require a different "override"
strategy or
> more fine-grained control over server certificate caching/pinning.
> 
> 
> 
> Pinning of EE server certs (no matter whether self-signed, from untrusted
CAs,
> or from "common TLS PKI") interferes with server cert rollover.
Security-wise,
> pinning the server cert (effectively pinning the servers public key) is
certainly
> the strongest of all because it cuts most of the points-of-failures
completely out
> of the loop.
> 
> A "pinning" of server certs from CA-hierarchies (trusted AND untrusted)
that
> allows hidden key/cert-rollover might be useful to the public at large --
which
> does neither care nor understand the technical details.
> There, the server-cert issuing CA cert would be pinned along with a set of
> client-applied constraints like the host or DNS domain to which this
pinning
> applies and whether a server-id-check should still be performed on the
server
> cert.
> 
> Allowing organizations to run their own CAs makes IMHO a lot of sense (and
> several companies are doing it already).  Having to make every CA from
some
> other organization a full-blown trust anchor is just as bad as an unduly
> requiring for any such organizational CAs to get signed by a
pre-configured
> commercial trust anchor.
> 
> 
> ISO specified the ASN.1 OIDs so that they can lease "OID arcs" on a
subscription
> basis to organizations for a significant recurring premium so that they
can rake
> in extra revenues.
> Fortunately, IANA has been giving out OID arcs under SNMP private
enterprises
> for free, and OIDs from that OID space is used heavily for non-SNMP
purposes.
> :)
> 
> 
> The existing "TLS PKI", which, for the server identity matching keys off
the
> existing DNS space and DNS delegations, represents close to zero value to
the
> IETF community and the public at large.  From a technical perspective,
both
> offer comparable security, so I can understand the motivations behind
trying to
> move to DNSSEC-based distribution of trust.
> 
> Technically, the existing TLS PKI scheme of matching DNS delegations for
> server endpoint identification in combination with the complete mind-block
for
> past encounters with a peer has always been a primitive
"better-than-nothing"
> approach to security.
> Limiting acceptable certs to those distributed by the DNS domain admin
himself
> though DNSSEC signed zones would give those DNS admins some of the control
> back that they're entitled to have (about assignments and use of DNS
domain
> names), something which is very ill-designed in the existing "TLS PKI".
> 
> 
> -Martin