Re: What ASN.1 got right

Nico Williams <> Tue, 02 March 2021 23:49 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7A1C13A1485 for <>; Tue, 2 Mar 2021 15:49:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.119
X-Spam-Status: No, score=-2.119 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id kLpSIOm9om1I for <>; Tue, 2 Mar 2021 15:49:35 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 41EAB3A1484 for <>; Tue, 2 Mar 2021 15:49:35 -0800 (PST)
X-Sender-Id: dreamhost|x-authsender|
Received: from (localhost []) by (Postfix) with ESMTP id 199C5342933; Tue, 2 Mar 2021 23:49:34 +0000 (UTC)
Received: from (100-96-11-30.trex.outbound.svc.cluster.local []) (Authenticated sender: dreamhost) by (Postfix) with ESMTPA id 9CBF5342881; Tue, 2 Mar 2021 23:49:33 +0000 (UTC)
X-Sender-Id: dreamhost|x-authsender|
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384) by (trex/6.0.2); Tue, 02 Mar 2021 23:49:34 +0000
X-MC-Relay: Good
X-MailChannels-SenderId: dreamhost|x-authsender|
X-MailChannels-Auth-Id: dreamhost
X-Share-Attack: 16d31f942d5ead5a_1614728973911_607915660
X-MC-Loop-Signature: 1614728973911:2104654035
X-MC-Ingress-Time: 1614728973910
Received: from (localhost []) by (Postfix) with ESMTP id 590297E6D9; Tue, 2 Mar 2021 15:49:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed;; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to;; bh=WbeVaGgcvI4pL0 uXkXdQmvHNA5g=; b=wGSUhhJkAheL3ltlJ4zGwI2GLxxQl8MS2HmbLdYky3GIhU LrYMzy29taWZuGmQU93NKOnbtY4CSqI/TXCIpF0r85rQdd6bAeBOyGoamCK3LJQo OELCHDWGHDnt4DGdfyNb+IRQJf7cM2bRo2sqbrdaETXc6SZRCznEmjNg8jgDY=
Received: from localhost (unknown []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: by (Postfix) with ESMTPSA id 6ACBC7E3D1; Tue, 2 Mar 2021 15:49:31 -0800 (PST)
Date: Tue, 2 Mar 2021 17:49:29 -0600
X-DH-BACKEND: pdx1-sub0-mail-a14
From: Nico Williams <>
To: Michael Thomas <>
Cc: Phillip Hallam-Baker <>, IETF Discussion Mailing List <>
Subject: Re: What ASN.1 got right
Message-ID: <20210302234928.GX30153@localhost>
References: <> <> <> <20210302183901.GV30153@localhost> <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.9.4 (2018-02-28)
Archived-At: <>
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 02 Mar 2021 23:49:37 -0000

On Tue, Mar 02, 2021 at 03:23:24PM -0800, Michael Thomas wrote:
> So I just looked up ssh certificates which I think somebody mentioned. This
> is a prime example of throwing needless complexity at a problem. If you just
> added the user's public keys to, say, an LDAP repo, you get the scaling they

In the 80s the naive assumption was made that we'd have "white pages" --
directories -- where we could do such lookups.  I think that's what you
have in mind since you refer to an "LDAP repo".

That did not work, and cannot work because it has privacy issues, at
least when you do lookups _by name_.

Now, maybe you have something different in mind.

The authenticating party presents a directory name, a public key, and a
signature, and the RP looks up the key in the directory to get a name?

That might not have privacy issues, but it still requires online infra
that someone has to pay for, and that RPs need to contact (so they need
to do async I/O, naturally).  More things to break.

And, of course, LDAP is insanely complex and brings X.500 naming right
back into the picture completely unnecessarily (along with ASN.1,

> claim to be solving for, and avoid all of the needless complexity of issuing
> certs and installing them on the client. The client ssh doesn't need to do
> anything different as bonus. With LDAP you get the added bonus that it can

The client is also a relying party though, since it has to authenticate
the server.

> dish out attributes for things like roles and permissions, which would be a
> giant headache if it had to be done with reissued certs every time your role
> or permission changed.

Certificates are infinitely easier.  Now, you mention "the needless
complexity of issuing certs and installing them on the [authenticating
party]".  But that's not so complex.  You can run an online CA that
issues short-lived client certificates based on a longer-lived
credential, and that and "installing" the certificates (and private
keys) are purely internal details that users shouldn't need to know.
That works for corporate networks, but it should work for a home network
too.  For a Mesh-like scheme you're really going to need long-lived
(forever) device public keys and revoke them only in the sense of
removing the public keys from Alice's other devices, and there is a
directory in Mesh case, but it's purely local (just Alice's devices,
which should be few enough that the whole thing scales fine).

> I'm trying to think of major things that use public key authentication.
> There's TLS with certs, DKIM using raw public keys, and SSH mainly using raw
> public keys. Am I missing anything else that is widely deployed? DNSsec and
> BGP are still pretty skimpy from what I can tell.

Kerberos, with PKINIT.  Mosh?  But note that SSH, TLS, and Kerberos (or,
rather, GSS-API) covers... a lot of protocols -- practically all
Internet protocols.