Re: [Emu] [lamps] EAP/EMU recommendations for client cert validation logic

Ryan Sleevi <ryan-ietf@sleevi.com> Sat, 18 January 2020 16:17 UTC

Return-Path: <ryan.sleevi@gmail.com>
X-Original-To: emu@ietfa.amsl.com
Delivered-To: emu@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C9639120077; Sat, 18 Jan 2020 08:17:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.4
X-Spam-Level:
X-Spam-Status: No, score=-1.4 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L1l8T_ka2WM1; Sat, 18 Jan 2020 08:17:45 -0800 (PST)
Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 25C4912002F; Sat, 18 Jan 2020 08:17:45 -0800 (PST)
Received: by mail-ed1-f65.google.com with SMTP id cy15so25329999edb.4; Sat, 18 Jan 2020 08:17:45 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lT6yHtPjjLheuHqornadbl2oGZ2zL94f63Ha/2IZT+4=; b=lKCu9Jh1zAuXN4+xhtNz7M1ENapmDr8CtPta7J69KxrZU43+bkm1rDxwtlo5YNgiol CLLTf+7C0sM/fxFi6o6Z2+UUTG+WRFNKWAgy2Y9HgQettkKgQsEY8l3TPNiRqWVqlwCl tXQcmEunuDEJu0Z7STFha07b2m8l3KpfbYeZtRvbAMJlrq7l+/ek8TtXPqD1WlRMJqIk VUbcvik2ySDUjqHwwpoLl6eOvw/sv76c+YyRkEjxP850/k88nP/akXz6Ed1HglIpCm2J VDEKbFYWE7wIh7AkUWaqaILVVhQZX1KgtzIM1nNWFLnqmf/YjZeZ2XA2uovCh7++zZAO ehmw==
X-Gm-Message-State: APjAAAXH/T8VPDuQ5IAZreVIcyQAV4mXzAmJnWpFxJHAu+YANDlsva1f Y56VUfVF0isThU92qtjluey8Ruvx
X-Google-Smtp-Source: APXvYqxblYRX2IOsYdnSAK6pVMpj0FPvWUsLlyGPLp6a6ulbQJG2ghYGVdfJzC05QKEs2iC2SEuwAw==
X-Received: by 2002:aa7:c2cb:: with SMTP id m11mr9947793edp.89.1579364263375; Sat, 18 Jan 2020 08:17:43 -0800 (PST)
Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com. [209.85.221.49]) by smtp.gmail.com with ESMTPSA id g4sm1111332edl.6.2020.01.18.08.17.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 18 Jan 2020 08:17:42 -0800 (PST)
Received: by mail-wr1-f49.google.com with SMTP id z3so25485917wru.3; Sat, 18 Jan 2020 08:17:42 -0800 (PST)
X-Received: by 2002:a5d:51cc:: with SMTP id n12mr9260026wrv.177.1579364261719; Sat, 18 Jan 2020 08:17:41 -0800 (PST)
MIME-Version: 1.0
References: <B2989B0E-8B6B-4B7A-B871-AF520310B3FC@deployingradius.com> <CAErg=HG06ZpiRUYogiVwoJPsZDsjzAVvO0B4=K=PE7aAHe44rA@mail.gmail.com> <6CEB4C89-B749-4A65-A25A-A12830ED8A62@deployingradius.com> <CAErg=HFPCYKgUEXHaOC0sQECYaVmt0TZXe-uDrKzFiNSAcdckg@mail.gmail.com> <00453E78-D991-4B4D-A138-5788FACC47C2@deployingradius.com> <CAErg=HFYQpfqTE9==TzGo795ZiuNBGVMqWuXS6GJ2DV0nGxPzA@mail.gmail.com> <316CC74D-667B-4A1E-AD48-A702DF705423@deployingradius.com> <6191.1578513600@localhost> <CB67C090-4D6A-4586-AD7C-99A29EF5D92D@deployingradius.com> <CAOgPGoDADPY125Bf7mbPCpEVkwVF=YmbG9wAN0S-WyCWg27BCw@mail.gmail.com> <20200116040715.GC80030@kduck.mit.edu> <CAErg=HHwLOw9sL2=nGca5MuuyiV2Zghrp6prR7SqLJAvfCLmjA@mail.gmail.com> <B3A03277-C176-4E63-ADB3-70133E2ABA46@deployingradius.com> <MN2PR11MB3901D1B17802F2DACCC8966CDB300@MN2PR11MB3901.namprd11.prod.outlook.com> <CAErg=HE0XDbhuibtky5VhvZYUnQxDitLSEuf4uzXnuByNQN+4Q@mail.gmail.com> <55CE7F32-B5DE-44F5-AE06-72BE12FA05FF@deployingradius.com> <CAErg=HH8LjqMR37Ek1uK12uCDj4N89Ot=Fm_PLOBdeXsv3sdpw@mail.gmail.com> <7F591857-4B7B-41BD-B101-6C40BE527644@deployingradius.com>
In-Reply-To: <7F591857-4B7B-41BD-B101-6C40BE527644@deployingradius.com>
From: Ryan Sleevi <ryan-ietf@sleevi.com>
Date: Sat, 18 Jan 2020 11:10:13 -0500
X-Gmail-Original-Message-ID: <CAErg=HF9SQCmP9hi8SP-EstyYL-qVLWMeitP2AHc3T6ZWZM4vQ@mail.gmail.com>
Message-ID: <CAErg=HF9SQCmP9hi8SP-EstyYL-qVLWMeitP2AHc3T6ZWZM4vQ@mail.gmail.com>
To: Alan DeKok <aland@deployingradius.com>
Cc: Benjamin Kaduk <kaduk@mit.edu>, EMU WG <emu@ietf.org>, Joseph Salowey <joe@salowey.net>, Michael Richardson <mcr+ietf@sandelman.ca>, "Owen Friel (ofriel)" <ofriel@cisco.com>, Ryan Sleevi <ryan-ietf@sleevi.com>, "spasm@ietf.org" <spasm@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000ca778b059c6c65a1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/emu/fWM9uvLSKW6b8s0jSGqHJXNH5xI>
Subject: Re: [Emu] [lamps] EAP/EMU recommendations for client cert validation logic
X-BeenThere: emu@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "EAP Methods Update \(EMU\)" <emu.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emu>, <mailto:emu-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emu/>
List-Post: <mailto:emu@ietf.org>
List-Help: <mailto:emu-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emu>, <mailto:emu-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Jan 2020 16:17:48 -0000

On Sat, Jan 18, 2020 at 9:43 AM Alan DeKok <aland@deployingradius.com>
wrote:

> On Jan 18, 2020, at 8:55 AM, Ryan Sleevi <ryan-ietf@sleevi.com> wrote:
> > Um, no. I largely didn’t respond to Michael’s email because it missed
> the mark rather substantially,
>
>   In what way?


Which CAs (plural) are you referring to? The CertSign example given - the
stronger of the restrictive CPSes - uses a cert from a CA not subject to
these (or any) requirements. That is, it’s an untrusted root.

Certificates from other services were examined, but without a similar
analysis of the issuing CA, which is the point. You can’t claim multiple
CAs, when there was a smattering of examples without any evidence of an
analysis of the relevant CP/CPS.

If the point was a singular CA seeming to violate their CP/CPS (that is,
DigiCert), then yes, absolutely, you can go submit a CA problem report and
the CA is obligated to respond in 24 hours with their analysis to your
problem report. It’s the same procedure if, for example, you ever handled a
private key for a certificate issued by DigiCert and had not had a
background check conducted and/or conducted a background check on anyone
you have access to.

> and I suspect folks still haven’t actually read the CP/CPSes or done the
> work.
>
>   Those policies can best be described as "opaque".  There is no clear
> statement that "using certs with id-kp-serverAuth in non-WWW protocols is
> grounds for revocation".


I whole heartedly agree! To continue to connect it back to the original
discussion, so that thread is not lost: if your use case (for example,
EAP-TLS) wants to allow subjectivity and flexibility in how statements like
this are interpreted, then you have to make sure other stakeholders are not
also involved. That’s all.

Obviously, CAs can (and do) paint themselves in corners of absurdity, much
in the same way specs can end up with internal contradictions and
inconsistencies. In order to untangle those bits, everyone has to agree.
And it’s easier to get agreement among just two or three than it is around
two dozen, especially when contracts and agreements are involved.

As it ties back to the original discussion, it’s not _just_ agreements on
the CP/CPS you need to worry about, but things like profiles and transition
timelines and acceptable practices. The more stakeholders you continually
add, the harder it is to find agreement or interoperability. The joy of PKI
is that the solution is simple: disparate policies, enshrined by disparate
hierarchies, since multiple policies for a single hierarchy doesn’t work in
practice.

The IETF has defined id-kp-serverAuth as "TLS WWW", *and* suggested it's
> use in non-WWW protocols.  This is a conflict that the IETF has to fix.


Agreed.

However, and this is where it’s messy: the IETF getting its house in order
here does not resolve conflicts Once and For All. That’s because, for
better or worse, the certificatePolicies extension doesn’t work, and so EKU
has (and this was debated in PKIX even before 5280 replaced 3280) become
synonymous with policy, at least by implementors.

The best analogy I can think of is comparing to the X.501 DN attributes.
X.501 defines their syntax, and tries to define the semantics, but in the
absence of the global DIT, what a given attribute means and how it’s
validated depends on the context and issues. That is, the value of an
Organization field, or an OrganizationIdentifier, is going to depend on
which PKI it is used in. The same is true for EKU, for better or for worse.

  If everyone finds it useful to violate CA policies, then we need to find
> a way to fix that.  I suggest that fixing CA policies is likely simpler
> than fixing millions (or billions) of implementations.


Oh, I agree whole heartedly there.

  I'm fixated on the EKU because it is a concrete example to pin an
> argument on.  We can have a vague discussion about generic policies, but
> that would be unproductive.


The entire point is the generic policies being why it’s important to
separate things, and why it’s problematic to just assume one cert can or
should work everywhere. What you’re calling unproductive is the essence and
totality of the message, and perhaps that’s why I similarly find it
unproductive to fixate on the single field and ignore the overall point.

  Where can I get a certificate with id-kp-eapOverLAN?  Or where can I get
> a cert designed for use with STMP, XMPP, etc.?


https://wiki.xmpp.org/web/XMPP_Server_Certificates
https://xmpp.org/about/xsf/records/proposals/intermediate-certificate-authority

  If the answer is "nowhere", then that's a problem.  The CAs have
> neglected their responsibilities to the customers.


This is the problem with ignoring the broader message. “The CAs” is a term
without useful meaning. Everyone can be a CA. You can be a CA. I can be a
CA. Anyone who wants can issue certificates. There’s no set of entities
blessed in some special power which only they can mint certificates, and
thus their choices not to do so somehow be a sign of neglect.

If you mean “The CAs” as the organizations operating key material in
certain root stores, then many (most?) will happily issue you whatever
certificates you want, from a hierarchy dedicated to your needs. I don’t
even need to provide advertising links, just pick your favorite vendor and
ask them about “private” or “enterprise” CA offerings.

Want id-kp-eapOverLan? Sure, plenty will happily do that for you, for a
price. Don’t like the price? Run your own CA and issue them yourself.
There’s zero cost, and plenty of open-source tools to make “run your own
CA” be a single line on a command-shell.

Now, it may be that when you CAs, what you mean is “I can’t get a
certificate from the set of organizations that operate private keys/trust
anchors, trusted for this purpose in a default install of my operating
system / browser / insert X here, and which chains to that public key”.
That is, you can’t get one of these certs chaining to the same root. Some
might, but you’re right, that’s much more rare. And that’s a feature, not a
bug or neglect, because you should be using separate hierarchies if you
have different needs.

If you’re willing to accept id-kp-serverAuth, and willing to accept that
the interpretations and expectations will be dictated by the root store(s)
recognizing that EKU, that as a Subscriber the timelines for changes will
be dictated by those root stores, that as a Relying Party the profile will
be dictated by those root stores, then yes, by all means, go ahead with
that. Just know that, as a Subscriber and/or as a Relying Party, you can’t
complain when things change, if profiles are made incompatible, or if
things change too soon.

I’m not saying you absolutely cannot and should not use id-kp-serverAuth
issued by CAs in common root stores. You just have to be aware that it’s
specifying your needs as “I’ll have 100 of whatever Ryan orders for gears”,
and being prepared to accept that and make it work.