Internet-Draft | PSA Endorsements | July 2021 |
Fossati, et al. | Expires 13 January 2022 | [Page] |
PSA Endorsements include reference values, cryptographic key material and certification status information that a Verifier needs in order to appraise attestation Evidence produced by a PSA device. This memo defines such PSA Endorsements as a profile of the CoRIM data model.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 13 January 2022.¶
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.¶
PSA Endorsements include reference values, cryptographic key material and certification status information that a Verifier needs in order to appraise attestation Evidence produced by a PSA device [PSA-TOKEN]. This memo defines such PSA Endorsements as a profile of the CoRIM data model [CoRIM].¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The reader is assumed to be familiar with the terms defined in Section 2.1 of [PSA-TOKEN] and in Section 4 of [RATS-ARCH].¶
PSA Endorsements describe an attesting device in terms of the hardware and firmware components that make up its PSA Root of Trust (RoT). This includes the identification and expected state of the device as well as the cryptographic key material needed to verify Evidence signed by the device's PSA RoT. Additionally, PSA Endorsements can include information related to the certification status of the attesting device.¶
There are three basic types of PSA Endorsements:¶
There is also a fourth category of PSA Endorsements:¶
that is used to invalidate previously provisioned Endorsements.¶
Each PSA Endorsement - be it a Reference Value, Attestation Verification Claim or Certification Claim - is associated with an immutable PSA RoT. A PSA Endorsement is associated to its PSA RoT by means of the unique PSA RoT identifier known as Implementation ID (see Section 3.2.2 of [PSA-TOKEN]). Besides, a PSA Endorsement can be associated with a specific instance of a certain PSA RoT - as in the case of Attestation Verification Claims. A PSA Endorsement is associated with a PSA RoT instance by means of the Instance ID (see Section 3.2.1 of [PSA-TOKEN]) and its "parent" Implementation ID.¶
These identifiers are typically found in the subject of a CoMID triple, encoded
in an environment-map
as shown in Figure 1.¶
Reference Values carry measurements and other metadata associated with the updatable firmware in a PSA RoT. When appraising Evidence, the Verifier compares Reference Values against the values found in the Software Components of the PSA token (see Section 3.4.1 of [PSA-TOKEN]).¶
Each measurement is encoded in a measurement-map
of a CoMID
reference-triple-record
. Since a measurement-map
can encode one or more
measurements, a single reference-triple-record
can carry as many measurements
as needed, provided they belong to the same PSA RoT carried in the subject of
the "reference value" triple.¶
The identifier of a measurement is encoded in a psa-refval-id
object as
follows:¶
psa-refval-id = { ? psa.measurement-type => text ? psa.version => text psa.signer-id => psa.hash-type ? psa.measurement-desc => text } psa.hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64 psa.measurement-type = 1 psa.version = 4 psa.signer-id = 5 psa.measurement-desc = 6¶
The semantics of the codepoints in the psa-refval-id
map are equivalent to
those in the psa-software-component
map defined in Section 3.4.1 of
[PSA-TOKEN].¶
In order to support PSA Reference Value identifiers, the
$measured-element-type-choice
CoMID type is extended as follows:¶
tagged-psa-refval-id = #6.TBD(psa-refval-id) $measured-element-type-choice /= tagged-psa-refval-id¶
and automatically bound to the comid.mkey
in the measurement-map
.¶
The raw measurement is encoded in a digests-type
object in the
measurements-value-map
. The digests-type
array MUST contain only one
entry. If multiple digests of the same measured component exist (obtained with
different hash algorithms), a different psa.measurement-desc
MUST be used in
the identifier.¶
The example in Figure 2 shows the PSA Endorsement of type
Reference Value for a firmware measurement associated with Implementation ID
acme-implementation-id-000000001
.¶
An Attestation Verification Claim carries the verification key associated with the Initial Attestation Key (IAK) of a PSA device. When appraising Evidence, the Verifier uses the Implementation ID and Instance ID claims (see Section 3.1) to retrieve the verification key that it must use to check the signature on the Evidence. This allows the Verifier to prove (or disprove) the Attester's claimed identity.¶
Each verification key is provided alongside the corresponding device Instance
and Implementation IDs in an attest-key-triple-record
. Specifically:¶
comid.key
entry in the
verification-key-map
. The IAK public key is encoded as a COSE_Key
according to Section 7 of [RFC8152]. There MUST be only one
verification-key-map
in an identity-triple-record
;¶
comid.keychain
entry MUST NOT be set by a producer and MUST be
ignored by a consumer.¶
The example in Figure 3 shows the PSA Endorsement
of type Attestation Verification Claim carrying a secp256r1 EC public IAK
associated with Instance ID 4ca3...d296
.¶
PSA Certified [PSA-CERTIFIED] defines a certification scheme for the PSA ecosystem. A product - either a hardware component, a software component, or an entire device - that is verified to meet the security criteria established by the PSA Certified scheme is warranted a PSA Certified Security Assurance Certificate (SAC). A SAC contains information about the certification of a certain product (e.g., the target system, the attained certification level, the test lab that conducted the evaluation, etc.), and has a unique Certificate Number.¶
The linkage between a PSA RoT and a related SAC is provided by a Certification Claim, which binds the PSA RoT Implementation ID with the SAC unique Certificate Number. When appraising Evidence, the Verifier can use the Certification Claims associated with the identified Attester as ancillary input to the Appraisal Policy, or to enrich the produced Attestation Result.¶
A Certification Claim is encoded in an psa-cert-triple-record
, which extends
the $$triples-map-extension
socket, as follows:¶
comid.psa-cert-triples = 4 $$triples-map-extension //= ( comid.psa-cert-triples => one-or-more<psa-cert-triple-record> ) psa-cert-triple-record = [ tagged-impl-id-type, psa-cert-num-type ] psa-cert-num-type = text .regexp "[0-9]{13} - [0-9]{5}"¶
tagged-impl-id-type
;¶
psa-cert-num-type
.¶
A single CoMID can carry one or more Certification Claims.¶
The example in Figure 4 shows a Certification Claim for
Certificate Number 1234567890123 - 12345
and Implementation ID
acme-implementation-id-000000001
.¶
The following three "blocklist" claims:¶
are defined with the same syntax but opposite semantics with regards to their "positive" counterparts to allow invalidating previously provisioned endorsements from the acceptable set.¶
TODO¶
TODO¶