Re: [saag] post-X509 cryptographic identities

Phillip Hallam-Baker <phill@hallambaker.com> Fri, 14 February 2020 22:47 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: saag@ietfa.amsl.com
Delivered-To: saag@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 859721201B7 for <saag@ietfa.amsl.com>; Fri, 14 Feb 2020 14:47:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.399
X-Spam-Level:
X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, 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, URIBL_BLOCKED=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 ouhxn1p5yz9f for <saag@ietfa.amsl.com>; Fri, 14 Feb 2020 14:47:44 -0800 (PST)
Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) (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 C1C1D1201DE for <saag@ietf.org>; Fri, 14 Feb 2020 14:47:44 -0800 (PST)
Received: by mail-oi1-f170.google.com with SMTP id d62so10947607oia.11 for <saag@ietf.org>; Fri, 14 Feb 2020 14:47:44 -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=J/rhOyamhj8m0v+Z1BEIMtoO8IqHt7z4x06To1+IsX4=; b=nnXfdzagJDF9b798Jq8+ArvVFohIxQr4tQ2yGbZxC1dQWtdkX3mWzXkHusRxKzHnAV OMJ6eKBSSCNbg72KNVhwAloqIYZgVA0Ve4TAiJiSQpfGn6mBilK1Bi204NJAuWSDCzoe /iRResdPzZoX9xkqQ5moR60ks3BQ4heBttcXdwP2Axm26h19mS0lYV+nTw9SI08eDB24 lD9GWLZsVrzyZug6H79UyJYaOINQmm1T1eU3x3BJXI4K9ahqjFcakfiswgHwCbx1IHc7 5AvIEA3Zbw76OBCv7ys3k5zZgg66OBuxPsAfOtylwKU5BsstyNUTtOsQF82eI61vfa44 lvEQ==
X-Gm-Message-State: APjAAAUfwFtTxFiHLpUJfYGnZoZsWVXz0AeA/4hz3oYAloHNWyn90aJ2 tvDEM9HDMWmt64VVPmTGsUGPMHVDiH7hkmc2Cao=
X-Google-Smtp-Source: APXvYqzvHECApCJzppKLmAF1laIg3Dw8IApJ6jNBkAs1DQmko+q+bAj4qA4RkyIch/+hDENKPNebU8FVJrCtyERlFJY=
X-Received: by 2002:aca:ccce:: with SMTP id c197mr3339400oig.31.1581720462948; Fri, 14 Feb 2020 14:47:42 -0800 (PST)
MIME-Version: 1.0
References: <alpine.DEB.2.20.2002131443470.25433@grey.csi.cam.ac.uk> <20200213171324.GP18021@localhost> <d3d01f1f-5784-da84-1c59-e636d349bd2a@netmagic.com> <20200213175626.GR18021@localhost> <65357327-e2d7-89cc-221e-ed8ac2875048@netmagic.com> <A91F5BD6-BFBA-4BA7-9158-3F41A8F0F7D9@gmail.com> <20200213191952.GS18021@localhost> <9FEBBD2A-3578-436A-92E3-192CADC9FA8B@gmail.com> <20200213205158.GT18021@localhost> <CAMm+LwhAXWbVL=j3Cek_Sf9eK-aKsQgZ+Gsh55nP3nvur_JSEQ@mail.gmail.com> <20200214211255.GZ18021@localhost>
In-Reply-To: <20200214211255.GZ18021@localhost>
From: Phillip Hallam-Baker <phill@hallambaker.com>
Date: Fri, 14 Feb 2020 17:47:31 -0500
Message-ID: <CAMm+Lwgr3JaqZ3zpJDJCaoaoMghJeLo8owyo1qgysUZV1u-Ktw@mail.gmail.com>
To: Nico Williams <nico@cryptonector.com>
Cc: IETF SAAG <saag@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005401bf059e90fe14"
Archived-At: <https://mailarchive.ietf.org/arch/msg/saag/1uR3zDXPC8kOF4h_8jmxo1n9WPI>
Subject: Re: [saag] post-X509 cryptographic identities
X-BeenThere: saag@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Security Area Advisory Group <saag.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/saag>, <mailto:saag-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/saag/>
List-Post: <mailto:saag@ietf.org>
List-Help: <mailto:saag-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/saag>, <mailto:saag-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Feb 2020 22:47:48 -0000

On Fri, Feb 14, 2020 at 4:13 PM Nico Williams <nico@cryptonector.com> wrote:

> On Fri, Feb 14, 2020 at 02:44:53PM -0500, Phillip Hallam-Baker wrote:
> > The approach I tried to take in Shen in the 90s and have revisited with
> the
> > Mesh is to make every individual the apex of their own trust hierarchy.
> [...]
>
> Yes, but that way lies TOFU.  That's fine for many things, but not all
> things.  You could argue the inverse is also true, that rooted naming
> and trust are fine for many things, but not all things -- I would agree
> with that.
>

No, it doesn't have to be that way. Alice is her own trust apex but she can
decide to delegate.

Alice might decide to delegate trust to the ICANN DNSSEC root and Mozilla
CA root store. So she has pretty much the standard trust config we have
today. The only difference being she can change it.

Bob can pick and choose his trust providers. So he decides to only trust
certs issued by the ten major CAs and ignore all the others.

Carol might decide to outsource picking trust roots to Symantec, like she
does her AV needs.

Doug might pick the Mozilla CA root store minus some CAs he considers
dodgy. And instead of trusting the ICANN DNSSEC root, only trust four or
five domains.


Being the apex of trust means you have control, including the ability to
delegate that control as you choose.



> >
>  My
> > original hope was we could do something of the sort with PKIX. But X.509
> is
> > simply too complex for most organizations to manage let alone
> individuals.
>
> I'm curious about this.  Are you referring here to the use of ASN.1/DER
> and the ASN.1 types in RFC5280, or are you referring to semantics, or
> something else?
>

The idea was people would be able to edit their own trust stores in a
meaningful way. But never worked out how to make it tractable.




> > DNSSEC cannot meet my security needs because it insists all trust flows
> > from one point. If I am designing an embedded system, I want to be able
> to
> > specify the roots of trust.
>
> Thanks for expanding on that.  I can agree with mesh-like trust and
> naming for this, but for many things we'll still need a rooted trust
> system like DNSSEC.
>

Depends on the purpose. If I am running a SCADA system for a chemical
plant, it would make every sense to decouple from ICANN and instead bind to
the dozen or so domains of interest directly.

Or I can use ICANN as an introducer or ICANN plus additional credentialing.

I would like to see two persistent naming schemes established. One for
essentially randomized names and the other for curated names. I don't want
my names to expire, that is the key thing.

> Syntax is the least important part of PKI but it is a part of the puzzle.
> > Why oh why do people think canonicalization is relevant? If you want to
> be
> > able to verify a signature, you have to keep the original bits that were
> > signed. End of story.
>
> See below.
>
> > That said, XML is better than ASN.1 DER because it isn't completely
> stupid.
> > JSON is better as a data serialization than XML because it is designed to
> > be a data serialization not a document markup. Requiring elements be
> > presented in a particular order and schema validation are bogus.
>
> BER/DER/CER, and all TLV ERs are idiotic, yes.  JSON is OK.  The rest of
> what you say in this paragraph, not so much.
>
> BTW, Heimdal's ASN.1 compiler lets you name types whose encodings have
> to be saved in a `_save` structure field by the decoder.  It's very
> nice, and, for PKIX, essential.  General purpose JSON decoders however
> generally don't decode to a schema the way decoders compiled from an
> ASN.1 module do, so it's harder to add a "save this part as encoded for
> later signature verification" feature -- not impossible, but not widely
> available either.  So one has to resort to base64-encoding the JSON
> texts to be signed/encrypted and then sending those as strings in other
> (possibly JSON) documents (e.g., JWT).  (In Kerberos we do the moral
> equivalent and wrap things to be signed/encrypted in OCTET STRINGs.)
>

Yup, it is currently painful and right now I am Base64 encoding everything
when using JSON. But I also have a binary encoding option, JSON-B. That is
simply JSON with the option of encoding a binary blob as a base64 string or
as a length-data production.

I have not fully worked out how to integrate this into a schema generator
but I think the key part is to decide on an envelope format and use it
consistently.

Right now, I have schema fields like:

Struct DareEnvelope EnvelopedProfileMesh

What I would prefer is

Struct DareEnvelope<ProfileMesh> EnvelopedProfileMesh

So the serializer/deserializer can generate the necessary static methods
for encoding/decoding the field.