[Rats] EAT claims for composite and layered attestation

Laurence Lundblade <lgl@island-resort.com> Fri, 02 April 2021 18:51 UTC

Return-Path: <lgl@island-resort.com>
X-Original-To: rats@ietfa.amsl.com
Delivered-To: rats@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 8A8D63A14D4 for <rats@ietfa.amsl.com>; Fri, 2 Apr 2021 11:51:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.917
X-Spam-Status: No, score=-1.917 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id eQkhRIkOH8PB for <rats@ietfa.amsl.com>; Fri, 2 Apr 2021 11:51:22 -0700 (PDT)
Received: from p3plsmtpa11-07.prod.phx3.secureserver.net (p3plsmtpa11-07.prod.phx3.secureserver.net []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BC2183A14DA for <rats@ietf.org>; Fri, 2 Apr 2021 11:51:22 -0700 (PDT)
Received: from [] ([]) by :SMTPAUTH: with ESMTPA id SOt7lU0tRLcOOSOt7ldIUs; Fri, 02 Apr 2021 11:51:22 -0700
X-CMAE-Analysis: v=2.4 cv=MPKlJOVl c=1 sm=1 tr=0 ts=606767aa a=t2DvPg6iSvRzsOFYbaV4uQ==:117 a=t2DvPg6iSvRzsOFYbaV4uQ==:17 a=0XtbOteLAAAA:20 a=27d2k64SjbNfgLyNeG4A:9 a=uMLmavLyEPhCuLtk:21 a=lw7W-CgLy3YcBcOZ:21 a=QEXdDO2ut3YA:10 a=_9qXMEKOb1Bsr0Vk:21 a=DCr90z9m9BXmMHoh:21 a=1IzIhhdTkgc46DIc:21 a=_W_S_7VecoQA:10 a=WQnItmPV2fbdzLaCP6-h:22 a=pHzHmUro8NiASowvMSCR:22 a=Ew2E2A-JSTLzCXPT_086:22
X-SECURESERVER-ACCT: lgl@island-resort.com
From: Laurence Lundblade <lgl@island-resort.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_32A36169-CB55-4922-B1A6-564B5F54B677"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\))
Message-Id: <9A7D356D-23EE-4E84-8682-E6E8C81E78E2@island-resort.com>
Date: Fri, 2 Apr 2021 11:51:20 -0700
To: rats@ietf.org
X-Mailer: Apple Mail (2.3445.104.17)
X-CMAE-Envelope: MS4xfIQSUcea0wJYtc7k5lJFH0NHMZQXQEpuwuWoDveJkgiXeqir68J430Iul1woGGShLcKjScjPQaposfNBbk8zmKVenWdWl8hO/XZbl04bzGS4FACBpnb2 4dTtSQLlznnF0ZyuaY8ehZvdDQAHeAxJ43GdzzCuHAXZ1Ky+6ZRk0O9SEnF8fpYSIjuBqj0qdXoAkw==
Archived-At: <https://mailarchive.ietf.org/arch/msg/rats/Z929SmwuqTLnCOBNwMm-vMZUdas>
Subject: [Rats] EAT claims for composite and layered attestation
X-BeenThere: rats@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Remote ATtestation procedureS <rats.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rats>, <mailto:rats-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rats/>
List-Post: <mailto:rats@ietf.org>
List-Help: <mailto:rats-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rats>, <mailto:rats-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 02 Apr 2021 18:51:28 -0000

To try to get clarity on architecture for devices with multiple attesting environments, I’ve started thinking about what an EAT would look like for such.

I think composite attestation is straight forward.

In composite attestation, the attesting environments are trusted independently. The verifier will get a separate endorsement for each attesting environment. There’s no claim in one set of attestation evidence that is involved in establishing another, so no special claims are needed.

What is needed is the ability to embed the attestation evidence from one attesting environment in attestation evidence from another. We have that now in EAT with nested tokens in the submodule section.

The distinguishing characteristic of layered attestation is that the trust in attesting environments is NOT independent. One attesting environment plays a role in the verifier coming to trust another.

There is clearly has to be root attesting environment, trust in which is established by the usual way, most likely by an endorsement from the manufacturer.

From there, it seems there are two paths.

In the first one, the root attesting environment can collect evidence about a layered attesting environment, put it in an EAT and send it to the verifier. It is the *verifier* that evaluates and decides on the trust in the layered attesting environment. Probably the evidence about the layered attesting environment appears in EAT as a submodule. The verifier will look at the evidence and decide if the layered attesting environment is trustworthy. It may look at measurements, debug state for the attesting environment. 

To complete, that submodule probably needs to contain the public key of the layered attesting environment. It probably needs to be clearly labeled as the verification key for attestations from that layered attesting environment, so we need to define a new claim for this.

In the second one, the *root attesting environment* is the one that decides whether the layered environment is trustworthy. It can do this however it sees fit. It might just trust it because they are in the same HW running from the same ROM. It might do some staged secure boot. It might do run time integrity checks. 

It then tells the verifier that the layered attesting environment is trustworthy. This basically amounts to the root attesting environment sending an endorsement or the equivalent of an endorsement to the verifier. The root attesting environment might construct the endorsement on the fly or it might have been programmed in a the factory.

Probably this endorsement should be in attestation evidence from the root attesting environment so that the verifier knows that the root attesting environment did the checks it needed to do. That means we need a claim that holds an endorsement like those based on X.509 or to consider some set of attestation evidence that includes a public key to be considered and endorsement.

(I’ve worded this in terms of two layers, the root and a layered attesting environment. I don’t mean to exclude multiple layers, though there’s just one root).

I don’t really know what was intended by layered attestation in the architecture draft. It seems halfway the first path and halfway the second path. Seems just fine to have both paths, but they need to be described distinctly.  I filed an issue <https://github.com/ietf-rats-wg/architecture/issues/293> and a PR <https://github.com/ietf-rats-wg/architecture/pull/294> to try to sort this out in the architecture document. Hopefully, this email helps clarify those.

I’m interested in what the consensus is here before I go off and try to define the EAT claims I’ve mentioned above.