Re: [lamps] Advertising S/MIME capabilities in a certificate?

Jim Schaad <ietf@augustcellars.com> Wed, 27 November 2019 03:17 UTC

Return-Path: <ietf@augustcellars.com>
X-Original-To: spasm@ietfa.amsl.com
Delivered-To: spasm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A2A6F120130 for <spasm@ietfa.amsl.com>; Tue, 26 Nov 2019 19:17:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham 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 kIwpi7CaDXBx for <spasm@ietfa.amsl.com>; Tue, 26 Nov 2019 19:17:44 -0800 (PST)
Received: from mail2.augustcellars.com (augustcellars.com [50.45.239.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 218021200F7 for <spasm@ietf.org>; Tue, 26 Nov 2019 19:17:44 -0800 (PST)
Received: from Jude (73.180.8.170) by mail2.augustcellars.com (192.168.0.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 26 Nov 2019 19:17:35 -0800
From: Jim Schaad <ietf@augustcellars.com>
To: 'Daniel Kahn Gillmor' <dkg@fifthhorseman.net>, 'LAMPS WG' <spasm@ietf.org>
References: <87blt4i2ye.fsf@fifthhorseman.net> <053201d5a34b$56e34fb0$04a9ef10$@augustcellars.com> <877e3ngnza.fsf@fifthhorseman.net> <066401d5a493$fb5c5de0$f21519a0$@augustcellars.com> <87o8wyfdjv.fsf@fifthhorseman.net>
In-Reply-To: <87o8wyfdjv.fsf@fifthhorseman.net>
Date: Tue, 26 Nov 2019 19:17:34 -0800
Message-ID: <069701d5a4d1$37c95840$a75c08c0$@augustcellars.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQGeosGC3qsIgYx4CoUCMbtvh/u2RQH0/VjAAdEyrxECRSVgxwG9FCpDp84PALA=
Content-Language: en-us
X-Originating-IP: [73.180.8.170]
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/Hki9qcg8_tDQq8n-EDxjmhn8vFM>
Subject: Re: [lamps] Advertising S/MIME capabilities in a certificate?
X-BeenThere: spasm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is a venue for discussion of doing Some Pkix And SMime \(spasm\) work." <spasm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spasm>, <mailto:spasm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm/>
List-Post: <mailto:spasm@ietf.org>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spasm>, <mailto:spasm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Nov 2019 03:17:49 -0000


-----Original Message-----
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net> 
Sent: Tuesday, November 26, 2019 3:01 PM
To: Jim Schaad <ietf@augustcellars.com>; 'LAMPS WG' <spasm@ietf.org>
Subject: RE: [lamps] Advertising S/MIME capabilities in a certificate?

On Tue 2019-11-26 11:59:13 -0800, Jim Schaad wrote:
>  [ re: multiple layers of sequences ]
> Welcome the structure of a Signed Attribute.  There are two different 
> things that are causing the wrapping.  The signed attribute definition 
> and the SMIMECapabilities definition.  In section 2.5.2 it stays that 
> there can only be one item in the outer sequence so there are not 
> multiple sequences defined.  If this was not done then a merge method 
> of trying to figure out priorities would have had to be defined.
> Making it be a single sequence makes prioritization easier to defined.

OK, thanks for the pointer and the hint, i hadn't really understood that from reading §2.5.2 the first time, but i see how it can be read that way now :)

Are there any examples?  An example certificate would be really nice to have as a demonstration!

[JLS] I am not aware of one.  As Stefan was at Microsoft at the time, I assume that they may have issued some, but it would be easy to just create a template with the extension in it so that no special work would be needed on the client side to generate or for the server to decide if to include it.

draft-dkg-lamps-samples uses certtool (from GnuTLS) to create its example certificates, but it looks like certtool can't currently generate the right extensions in the certificate.  I've opened
https://gitlab.com/gnutls/gnutls/issues/863 to ask for such an extension.

If anyone knows of another implementation that supports these capability extensions, please let me know so that i can record it in that feature request, as GnuTLS upstream likes to know what other implementations provide it (presumably for interop testing)

> [ re: juggling capabilities discovered in certificates and messages ] 
> That should potentially have been thought about in RFC 4262.  The 
> algorithm for RFC 8551 is always replace.  If I was implementing this 
> I would either define it as the message replaces the certificate or 
> the certificate replaces the message.  At this point I would not know 
> which way I would go as I have not thought it through.  First guess is 
> that the certificate always wins.

Hm, that's interesting -- if certificate always wins, then it becomes impossible for a client with any capabilities in the cert to announce new capabilities based on a software upgrade.  right?

I was thinking that a union of the capabilities between the certificate and the most-recently-received signed message would make the most sense from a deployment perspective, but i agree that it would be good to have that documented.

[JLS] I think that this depends on who you believe should be able to control things.   A company will want to restrict what is to be used even if the client is advertising that it can do additional things.  The company would be more than willing to re-issue new certificates as needed if the set of algorithms is changing.  On the other hand an individual is much more likely to just use messages to send capabilities and not assume that people are going to be able to find certificates from some type of "global" repository in order to find out what capabilities exist.

Jim


     --dkg