Re: [certid] CN-ID and name constraints

Matt McCutchen <matt@mattmccutchen.net> Fri, 24 September 2010 05:01 UTC

Return-Path: <matt@mattmccutchen.net>
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 CE1FE3A6A7E for <certid@core3.amsl.com>; Thu, 23 Sep 2010 22:01:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.299
X-Spam-Level:
X-Spam-Status: No, score=-2.299 tagged_above=-999 required=5 tests=[AWL=-0.300, BAYES_00=-2.599, J_CHICKENPOX_42=0.6]
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 MG9-+7i05Nub for <certid@core3.amsl.com>; Thu, 23 Sep 2010 22:01:24 -0700 (PDT)
Received: from homiemail-a62.g.dreamhost.com (mx1.spunky.mail.dreamhost.com [208.97.132.47]) by core3.amsl.com (Postfix) with ESMTP id 7B3943A68DF for <certid@ietf.org>; Thu, 23 Sep 2010 22:01:24 -0700 (PDT)
Received: from homiemail-a62.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a62.g.dreamhost.com (Postfix) with ESMTP id 6E87263406F; Thu, 23 Sep 2010 22:01:55 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; c=nofws; d=mattmccutchen.net; h=subject:from :to:cc:in-reply-to:references:content-type:date:message-id :mime-version:content-transfer-encoding; q=dns; s= mattmccutchen.net; b=siiuoAzIsSjP32/Y9VnXb8waizttHfeZAfhVRclJABe hzjQdI9xWNoInXcYXQhouYPeWYM0eXDomhd2t6PHlCPv7n/d0dzULvsAm0yhj/+d inuFkJ90SRPoBAKIqEUTxYKBTHwNpvH3E7cbWxeMeCPLv0UCJ1Dzy3KhSO+XIIDw =
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=mattmccutchen.net; h= subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:content-transfer-encoding; s= mattmccutchen.net; bh=XTobrlGOi849yb8DBThrncTKRTo=; b=MhqRsd/sFi B4Rqylkj0TK5MqL1yPYE0VwjjhvzucEXwXiB9RIIyRidMWoJbwVBHH6BxVaGjhCV gKJAFITwr1WJaCT2CWUsXjnnMvgg/rAj7mqfRr0phLJ5OR725QMLzXxgkMFhBMRc eLKgTLrPwpln8KIFvWHNFlU92D4pufttQ=
Received: from [129.2.249.209] (ml2.student.umd.edu [129.2.249.209]) (Authenticated sender: matt@mattmccutchen.net) by homiemail-a62.g.dreamhost.com (Postfix) with ESMTPA id 1D18863406C; Thu, 23 Sep 2010 22:01:55 -0700 (PDT)
From: Matt McCutchen <matt@mattmccutchen.net>
To: mrex@sap.com
In-Reply-To: <201009240239.o8O2dTQY022491@fs4113.wdf.sap.corp>
References: <201009240239.o8O2dTQY022491@fs4113.wdf.sap.corp>
Content-Type: text/plain; charset="UTF-8"
Date: Fri, 24 Sep 2010 01:01:54 -0400
Message-ID: <1285304514.1939.337.camel@mattlaptop2.local>
Mime-Version: 1.0
X-Mailer: Evolution 2.30.4
Content-Transfer-Encoding: 7bit
Cc: certid@ietf.org
Subject: Re: [certid] CN-ID and name constraints
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: Fri, 24 Sep 2010 05:01:25 -0000

On Fri, 2010-09-24 at 04:39 +0200, Martin Rex wrote:
> Matt McCutchen wrote:
> > 
> > > A CA with name constraints for DNSName SANs (required critical according
> > > to rfc5280, mind you) in its own CA certificate that issues TLS server
> > > certificates without dNSName SANs yields "fubar" on my scorecard.
> > 
> > But if by doing that they can issue certificates that clients will
> > accept for server names the superior CA did not intend, that's a big
> > security problem.
> 
> No, there is absolutely no security problem involved.
> 
> This is a plain and simple liability issue.  If the superior CA
> can not manage the risk appropriately so that the issuing CA will
> not do this, then either the superior CA MUST NOT certify that
> issuing CA, or the clients MUST NOT trust the superior CA.

Name constraints are designed to support secure delegation of the
ability to issue certificates for a portion of the namespace.  Why
wouldn't CAs use them for that purpose?  Just because you said so?

A certificate that violates a name constraint is invalid, and under any
sane contract or legal system, the superior CA will not be liable to
anyone who relies on an invalid certificate.

> Btw. is it completely ridiculous to put Constraints into
> certificates for a resource that is managed aribraritly on a
> first-come, first-served basis such as DNS hostnames and
> think of it as a security feature.

What exact use case do you speak of?  The typical use case is to give
the owner of a DNS zone the ability to issue certificates for names
within that zone that will validate for the duration of the ownership.

> What some entirely fail to understand is that this is about
> a backwards compatibility issue with the installed base,
> and no amount of praying, cursing and issuing of new Specs with
> MUST NOTs in them will change the behaviour of the installed base
> in any way or form.
> 
> New specs affect only new stuff (implementations and CAs),
> and to a very limited amount patches into the installed base,
> under the condition that the change DOES NOT BREAK existing
> productive usage scenarios.

Matching a reference server name against a CN-ID that violates a dNSName
constraint defeats the purpose of name constraints.  With respect to
clients willing to do this, a name constraint is a security no-op.

In general, IETF seeks to make the features that it introduces work as
intended.  So it makes complete sense to me that secure handling of name
constraints would be a condition of conformance to the server-id-check
standard.  Old clients that take a useless interpretation of name
constraints can continue to exist, they just can't claim conformance to
the standard, and that's their problem.

NSS now enforces name constraints on the CN-ID
(https://bugzilla.mozilla.org/show_bug.cgi?id=394919) and remains
backward compatible with the web by virtue of the fact that the public
CAs aren't using name constraints yet.  If the CAs start doing so, all
an inferior CA has to do for things to work is to include a dNSName SAN,
which is a SHOULD anyway.

> NameConstraints are ill-designed to support what some people
> intend to do with them.

In what way are they ill-designed to support secure delegation of the
ability to issue certificates for a portion of the namespace?

> They're specify to constrain only
> name components that are present, not name components that
> are absent.

What do you mean?

> Go kick the PKIX folks if you don't like how it is spec'ed,
> but leave the apps folks alone.  I believe that asking the apps
> folks to regurgitate and re-chew stuff that the PKIX part didn't
> process to someone's satisfaction is an _extremely_ bad idea.

server-id-check is built on PKIX, not vice versa, so server-id-check is
responsible for the security consequences of the CN-ID that it defines
for the name constraints defined by PKIX.  It has the option to solve
the problem or say "this breaks the security of name constraints and we
know it", which would be laughable for a standard.

> As far as Joe Average User is concerned, which of the CAs shipping
> in current Browsers does have the alleged security problem anyway?

None; obviously the CAs won't use a feature that presents a security
problem.  The relevant question is whether they would start using it if
the problem were solved, and that I can't answer.  Those that charge for
each end-entity certificate would certainly charge through the roof to
delegate an entire domain.

> The way they're specified, NameConstraints are not a security feature,
> but rather a means to enforce a business model, because NameConstraints
> can no longer securely if there is more than one trust anchor.
> TLS as used on the internet is approaching 100 seperate trust anchors...

No.  All name constraints do is constrain sub-CAs, and they are secure
for that purpose.  PKIX assumes you trust your trust anchors.  If you
don't, that's a problem that has to be solved by other means.
 
> > The idea is that by including a dNSName SAN, the CA opts out of the
> > backward compatibility.  I don't think anyone issues certificates with
> > both dNSName SAN and CN with the intent that the CN be honored as a
> > server name.
> 
> Well no, this is another absolute nonsense, because again it
> completely ignores the (behaviour of) the installed base.
> The only way to opt out of CN-ID matching is to issue server
> certs entirely without CN AVAs in the subject name.
> Anything else than CN=f.q.d.n or NO CN AVA is non-sensical.

I'm not sure what installed base you are talking about, but the
interpretation I described is stated in RFC 2818 and followed by all
major browsers.  server-id-check is right to choose it.  But this is a
separate issue from name constraints on the CN-ID.

> I'm not aware of a reasonable justification for the existance
> of PolicyConstraints and NameConstraints in certificates other
> than governmental agencies and military would like to use it
> eventually and still be able to procure on the commodity market.

I gave one above.  A public CAs can give a DNS zone owner the ability to
issue certificates within the zone without posing a risk to anyone else.

-- 
Matt