[Acme] Entity authenticator URI

Phillip Hallam-Baker <phill@hallambaker.com> Wed, 07 January 2015 15:42 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 876351A90EC; Wed, 7 Jan 2015 07:42:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.277
X-Spam-Level:
X-Spam-Status: No, score=-1.277 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=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 PwRP8elXIaw9; Wed, 7 Jan 2015 07:42:42 -0800 (PST)
Received: from mail-lb0-x22b.google.com (mail-lb0-x22b.google.com [IPv6:2a00:1450:4010:c04::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B00371A8858; Wed, 7 Jan 2015 07:42:41 -0800 (PST)
Received: by mail-lb0-f171.google.com with SMTP id w7so1293711lbi.2; Wed, 07 Jan 2015 07:42:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=+9qVMb5CBGk7/OhUuWcPIS93ykcZ1ZQLCDjPzncn+/U=; b=s15AXaa4DOyUac4wc0Ki4jteP86TeggfBayYZ8ZxIAXKoNfp+cOAn+jJ8N3q0BcMlH 6MjcQNA/BdV5e+HAXWNYbu9X09iTR2GfozFOGazprW//gyPCBrSuKF03HR8j0VJ6M843 lJyXbb+ClegWp+NkIyRJ6uRWfdPNldA8WQgM3yR0wXQN+A3yUwyp8mOGbc2ybsM956IY /dsyyy6PCwp0D/CjV50WshQP1/gJW68Z1yhy/tySdXho4076Y44XDpweZ1T2dfmyn832 RkFMOGylR6/XNlPmXGsUeadp9tZGhi4XpgT1ttO57CN8cpaL11EGR5LmFMmR2wzH0Hfd +GWg==
MIME-Version: 1.0
X-Received: by 10.112.209.40 with SMTP id mj8mr5538602lbc.49.1420645358125; Wed, 07 Jan 2015 07:42:38 -0800 (PST)
Sender: hallam@gmail.com
Received: by 10.112.19.42 with HTTP; Wed, 7 Jan 2015 07:42:38 -0800 (PST)
Date: Wed, 07 Jan 2015 10:42:38 -0500
X-Google-Sender-Auth: dKvR4vzKju3XJYefbjRN3tPxwH8
Message-ID: <CAMm+Lwh1TWaaNMJ4wXQFih+1EbZ0f8kLuYxyB_ak4fGHCjS9Lg@mail.gmail.com>
From: Phillip Hallam-Baker <phill@hallambaker.com>
To: "dns-privacy@ietf.org" <dns-privacy@ietf.org>, "acme@ietf.org" <acme@ietf.org>
Content-Type: multipart/alternative; boundary="001a11c26218ec4a8e050c11c545"
Archived-At: http://mailarchive.ietf.org/arch/msg/acme/FYgmkvUiqWb4RoJfFtG11D9oLJc
Subject: [Acme] Entity authenticator URI
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Jan 2015 15:42:45 -0000

Right now I am working on three separate projects: end-to-end secure email
(EndyMail *), private DNS (DPRIV) and PKI cert lifecycle management (DPRIV).

A building block that would be tremendously useful in all three areas is a
uri that combines an account or service identifier and authenticator for
that entity. This would be a generalization of the 'strong email address'
concept I introduced last year:

draft-hallambaker-prismproof-key-01


First, what the URI would be, next how it solves real world problems in the
three application areas.

The simplest URI would simply be either a base64URI or Base32 encoding of a
kerberos ticket, a public key or a digest of a public key. In many
applications we do not need to identify the service provider or account
holder but we do need to determine that they are the same party we
contacted earlier.

So using the digest key identifier scheme, our URI might be:

TBS::ABAHEA-BI4AAJ-6ACOXQA-A7AHPD-KAHDAES-NZACVA-HGWMAJ-DAA

[Note that the algorithm is encoded into the key identifier digest already
so an external algorithm ID isn't needed. But we can add to taste.]

This scheme is obviously and pathetically unworkable for RSA2408 keys but
256 bit ECC keys would be practical.


A digest alone isn't very useful unless there is a way to resolve it to the
key. But this isn't much of a problem as in many cases we can pass the key
in band in a protocol.

We could have an argument as to whether we need to have tickets, keys and
key digests, but they all have uses. Keys and digests are really useful for
establishing long term secrets. Tickets are much better for short term
interactions with a single host.


We can add in an account identifier:

TBS:alice@example.com:ABAHEA-BI4AAJ-6ACOXQA-A7AHPD-KAHDAES-NZACVA-HGWMAJ-DAA


We can also add in a service identifier using the SRV prefix convention:

TBS:_acme._tcp.example.com:
ABAHEA-BI4AAJ-6ACOXQA-A7AHPD-KAHDAES-NZACVA-HGWMAJ-DAA


The important thing here is that we now have some identifiers that can be
used to establish the foundation of trust relationships that don't depend
on external parties to resolve. And that is really useful when working at
the level of DPRIV or ACME.

Lets say you decide to use a confidential DNS service provided by Comodo
for public (i.e. anonymous) use.


For DPRIV, the initial contact with the DNS service would be via legacy DNS
and TLS using the Web PKI (hopefully requiring an EV cert). That contact
can then establish a number of host/protocol combinations, each of which is
represented by a service URI.

Since this is a DNS client protocol, the service identifier might have an
IP address rather than a DNS name but any other service would be a DNS name.

The choice of using tickets or public keys as the authentication basis can
be left to deployment choice. If I am binding a $965 iPhone to a DNS
service for its service life then I probably want a public key. If I am
binding a lightbulb to my home network hub then I probably want a ticket as
the thing probably can't usefully rekey (i.e. it could do the math but
would leak its key in doing so).

Connecting to a private service there would be two entity URIs, one for the
service, the other for the user. So when I bind my machine to the corporate
Comodo network I can get access to the internal DNS service that will
provide resolution for internal services.


The way I would use this in Acme is that I would have the (Web) host
generate a public/private keypair that would be used to identify that
machine for cert issue and for no other purpose. I now have an identifier
that I can put in a CA database or the config file of an LRA.