Re: [Iot-onboarding] what can pinned-domain-cert actually pin?

Michael Richardson <mcr+ietf@sandelman.ca> Tue, 27 August 2019 19:21 UTC

Return-Path: <mcr+ietf@sandelman.ca>
X-Original-To: iot-onboarding@ietfa.amsl.com
Delivered-To: iot-onboarding@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B7FC9120827 for <iot-onboarding@ietfa.amsl.com>; Tue, 27 Aug 2019 12:21:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 k8amrtm6VVtf for <iot-onboarding@ietfa.amsl.com>; Tue, 27 Aug 2019 12:21:48 -0700 (PDT)
Received: from tuna.sandelman.ca (tuna.sandelman.ca [IPv6:2607:f0b0:f:3:216:3eff:fe7c:d1f3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 63005120838 for <iot-onboarding@ietf.org>; Tue, 27 Aug 2019 12:21:48 -0700 (PDT)
Received: from sandelman.ca (obiwan.sandelman.ca [IPv6:2607:f0b0:f:2::247]) by tuna.sandelman.ca (Postfix) with ESMTP id 26B8A3818E; Tue, 27 Aug 2019 15:20:38 -0400 (EDT)
Received: from localhost (localhost [IPv6:::1]) by sandelman.ca (Postfix) with ESMTP id E8D2C8F1; Tue, 27 Aug 2019 15:21:45 -0400 (EDT)
From: Michael Richardson <mcr+ietf@sandelman.ca>
To: Kent Watsen <kent+ietf@watsen.net>
cc: iot-onboarding@ietf.org
In-Reply-To: <0100016cd46359e7-8c844438-dc7a-45df-9868-ba0957bcc89f-000000@email.amazonses.com>
References: <2693.1566923418@localhost> <0100016cd46359e7-8c844438-dc7a-45df-9868-ba0957bcc89f-000000@email.amazonses.com>
X-Mailer: MH-E 8.6; nmh 1.7+dev; GNU Emacs 24.5.1
X-Face: $\n1pF)h^`}$H>Hk{L"x@)JS7<%Az}5RyS@k9X%29-lHB$Ti.V>2bi.~ehC0; <'$9xN5Ub# z!G,p`nR&p7Fz@^UXIn156S8.~^@MJ*mMsD7=QFeq%AL4m<nPbLgmtKK-5dC@#:k
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature"
Date: Tue, 27 Aug 2019 15:21:45 -0400
Message-ID: <12738.1566933705@localhost>
Archived-At: <https://mailarchive.ietf.org/arch/msg/iot-onboarding/rc0oo5Q0K27y7lfVMdAO06VAR5E>
Subject: Re: [Iot-onboarding] what can pinned-domain-cert actually pin?
X-BeenThere: iot-onboarding@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of IoT onboarding mechanisms <iot-onboarding.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/iot-onboarding>, <mailto:iot-onboarding-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/iot-onboarding/>
List-Post: <mailto:iot-onboarding@ietf.org>
List-Help: <mailto:iot-onboarding-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/iot-onboarding>, <mailto:iot-onboarding-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 27 Aug 2019 19:21:51 -0000

Kent Watsen <kent+ietf@watsen.net> wrote:
    > The "private CA roll-over" scenario you mention is side-stepped by
    > enabling the Owner Certificate to itself be a partial chain (i.e.,
    > total-chain = partial-root-chain + partial-owner-cert-chain), hence the
    > partial-root-chain part can be protected by some offline HSM while
    > signing (e.g., annually) some middle-level CAs that are used to sign
    > the actual Owner Cert EE cert.

i.e. adding a layer of indirection solves the problem in the classic way.

    > Separately in SZTP, there is the notion the device dynamically (during
    > bootstrap) receiving the TA for a bootstrap server it it being
    > redirected to.  In this case, the bootstrap servers are presenting a
    > TLS-based service (specifically, HTTPS), and so EE certs MAY have a
    > public root TA.  It was discussed at one point that the TA cert may
    > expire and thus wouldn't it be better to enable the TA to be expressed
    > as a 2-tuple [ <long-lived TA cert (MAY be a public CA)>, <name of some
    > 'subject' matter in the TA-issued CA cert>].  But this became
    > complicated and, instead, we opted for introducing alerts/alarms for
    > when certificates are nearing expiration.

When certificates, or when vouchers?

    > Part of what made it complicated is that one can imagine an
    > organization obtaining a single top-level organization-wide commercial
    > CA certificate that it uses for a variety of reasons, only one of which
    > is to sign vouchers.

These organization-wide commerical CA certificates seem impossible to obtain
today.  At least, I haven't found a CA willing to sell that anymore, and I
would love to be told I'm wrong.

    > Thus, in such cases, the 2-tuple becomes a
    > 3-tuple (and perhaps even an N-tuple), e.g.: [ <long-lived TA cert (MAY
    > be a public CA)>, <name of some 'subject' matter in the TA-issued CA
    > cert>, <name of some 'subject' matter in the voucher-issuer's cert>].

    > Related, though not exactly, I regret that RFC 8366 states that the
    > pinned-domain-cert value is a single X.509 cert, as opposed to a
    > potential chain of certs.  One reason is so as to simplify support for
    > path-validations, as not all libraries support partial-chain
    > validation.

A revision could change it from single item to an array of items.
That would be relatively easy to figure out in code, but I'm not entirely
sure I understand the use case.  Are these independant anchors, or are the
intended to be related.

-- 
]               Never tell me the odds!                 | ipv6 mesh networks [
]   Michael Richardson, Sandelman Software Works        |    IoT architect   [
]     mcr@sandelman.ca  http://www.sandelman.ca/        |   ruby on rails    [