Skip to content

Commit ff86a0e

Browse files
committed
Add initial content for Device Trust Anchor Management.
1 parent 2859ee4 commit ff86a0e

File tree

9 files changed

+4706
-0
lines changed

9 files changed

+4706
-0
lines changed

.github/workflows/deploy_pages.yml

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Deploy specifications to GitHub pages
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
permissions:
7+
contents: read
8+
pages: write
9+
id-token: write
10+
11+
concurrency:
12+
group: "pages"
13+
cancel-in-progress: false
14+
15+
defaults:
16+
run:
17+
shell: bash
18+
jobs:
19+
# Upload Device Trust Anchor Management spec
20+
device-trust-anchor-management-spec:
21+
runs-on: ubuntu-latest
22+
container:
23+
image: ghcr.io/trustedcomputinggroup/pandoc:latest
24+
name: Render Device Trust Anchor Management HTML
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v3
28+
with:
29+
fetch-depth: 0
30+
fetch-tags: true
31+
32+
- name: Checkout Template dependencies
33+
uses: actions/checkout@v3
34+
with:
35+
fetch-depth: 0
36+
fetch-tags: true
37+
repository: "opencomputeproject/ocp-spec-tools"
38+
# The underlying tex and templates assume this exists under the "extra" folder.
39+
path: "doc/ocp_lock/extra"
40+
41+
- name: Render Device Trust Anchor Management HTML
42+
run: |
43+
# Need to trust directory in the docker container.
44+
chown -R $(id -u):$(id -g) $PWD
45+
46+
# Publish pages for `main`
47+
GIT_REFS=()
48+
GIT_REFS+=("main")
49+
50+
for ref in "${GIT_REFS[@]}"; do
51+
echo "Building git ref $ref"
52+
53+
git reset --hard $ref
54+
55+
pushd specifications/device-trust-anchor-management
56+
57+
if [[ "${ref}" == "main" ]]; then
58+
# Label the current spec version.
59+
commit_hash=$(git rev-parse --short HEAD)
60+
sed -i -r "/^---$/,/^---$/s/(version: .*)/\1 (Git commit ${commit_hash})/g" lock_spec.ocp
61+
fi
62+
63+
/usr/bin/build.sh \
64+
--crossref=tcg \
65+
--csl extra/ocp-pandoc-resources/ieee.csl \
66+
--nogitversion \
67+
--template_html extra/ocp-pandoc-resources/html/ocp.html.template \
68+
--html_stylesheet extra/ocp-pandoc-resources/html/style.css \
69+
--html_stylesheet extra/ocp-pandoc-resources/html/github-markdown.css \
70+
--html spec.html spec.ocp
71+
72+
popd
73+
74+
trimmed_ref="HEAD"
75+
76+
mkdir -p "gh-pages/device-trust-anchor-management/${trimmed_ref}"
77+
cp specifications/device-trust-anchor-management/spec.html "gh-pages/device-trust-anchor-management/${trimmed_ref}/index.html"
78+
echo "Added webpage device-trust-anchor-management/${trimmed_ref}/index.html"
79+
done
80+
81+
- name: Upload artifacts for device-trust-anchor-management spec
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: device-trust-anchor-management
85+
path: gh-pages
86+
87+
deploy:
88+
environment:
89+
name: github-pages
90+
url: ${{ steps.deployment.outputs.page_url }}
91+
runs-on: ubuntu-latest
92+
needs: [device-trust-anchor-management-spec]
93+
steps:
94+
- name: Download index artifacts
95+
uses: actions/download-artifact@v4
96+
with:
97+
name: index
98+
path: gh-pages
99+
- name: Download device-trust-anchor-management artifacts
100+
uses: actions/download-artifact@v4
101+
with:
102+
name: device-trust-anchor-management
103+
path: gh-pages
104+
- name: Upload static files as artifact
105+
uses: actions/upload-pages-artifact@v3
106+
with:
107+
path: "gh-pages"
108+
- name: Deploy to GitHub Pages
109+
id: deployment
110+
uses: actions/deploy-pages@v4

specifications/device-trust-anchor-management/bibliography.yaml

Whitespace-only changes.

specifications/device-trust-anchor-management/diagrams/compromised_vendor_pki.drawio.svg

Lines changed: 637 additions & 0 deletions
Loading

specifications/device-trust-anchor-management/diagrams/device_cert_hierarchy.drawio.svg

Lines changed: 605 additions & 0 deletions
Loading

specifications/device-trust-anchor-management/diagrams/identity_key_derivation.drawio.svg

Lines changed: 1027 additions & 0 deletions
Loading

specifications/device-trust-anchor-management/diagrams/operator_anchor_point.drawio.svg

Lines changed: 777 additions & 0 deletions
Loading

specifications/device-trust-anchor-management/diagrams/tenant_anchor_point.drawio.svg

Lines changed: 1150 additions & 0 deletions
Loading

specifications/device-trust-anchor-management/spec.html

Lines changed: 248 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
title: "Device Trust Anchor Management"
3+
version: 0.1
4+
type: BASE
5+
project: Security
6+
authors: [(See Acknowledgements section)]
7+
bibliography: bibliography.yaml
8+
...
9+
---
10+
11+
\currenttemplateversion
12+
13+
---
14+
15+
\tableofcontents
16+
17+
\listoffigures
18+
19+
\listoftables
20+
21+
---
22+
23+
<!-- Will bring this in when it's an actual contribution.
24+
25+
# License
26+
27+
## Open Web Foundation (OWF) CLA
28+
29+
Contributions to this Specification are made under the terms and conditions set forth in **Modified Open Web Foundation Agreement 0.9 (OWFa 0.9)**. (As of October 16, 2024) (“Contribution License”) by:
30+
31+
- TODO: fill in
32+
33+
Usage of this Specification is governed by the terms and conditions set forth in **Modified OWFa 0.9 Final Specification Agreement (FSA)** (As of October 16, 2024) **(“Specification License”)**.
34+
35+
You can review the applicable Specification License(s) referenced above by the contributors to this Specification on the OCP website at <https://www.opencompute.org/contributions/templates-agreements>.
36+
37+
For actual executed copies of either agreement, please contact OCP directly.
38+
39+
NOTWITHSTANDING THE FOREGOING LICENSES, THIS SPECIFICATION IS PROVIDED BY OCP "AS IS" AND OCP EXPRESSLY DISCLAIMS ANY WARRANTIES (EXPRESS, IMPLIED, OR OTHERWISE), INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, OR TITLE, RELATED TO THE SPECIFICATION. NOTICE IS HEREBY GIVEN, THAT OTHER RIGHTS NOT GRANTED AS SET FORTH ABOVE, INCLUDING WITHOUT LIMITATION, RIGHTS OF THIRD PARTIES WHO DID NOT EXECUTE THE ABOVE LICENSES, MAY BE IMPLICATED BY THE IMPLEMENTATION OF OR COMPLIANCE WITH THIS SPECIFICATION. OCP IS NOT RESPONSIBLE FOR IDENTIFYING RIGHTS FOR WHICH A LICENSE MAY BE REQUIRED IN ORDER TO IMPLEMENT THIS SPECIFICATION. THE ENTIRE RISK AS TO IMPLEMENTING OR OTHERWISE USING THE SPECIFICATION IS ASSUMED BY YOU. IN NO EVENT WILL OCP BE LIABLE TO YOU FOR ANY MONETARY DAMAGES WITH RESPECT TO ANY CLAIMS RELATED TO, OR ARISING OUT OF YOUR USE OF THIS SPECIFICATION, INCLUDING BUT NOT LIMITED TO ANY LIABILITY FOR LOST PROFITS OR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, SPECIAL OR PUNITIVE DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS SPECIFICATION, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND EVEN IF OCP HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40+
41+
-->
42+
43+
<!---
44+
THE UPDATED DEFAULT CONTRIBUTOR LICENSE AGREEMENT (CLA) IS [OWFa 0.9](https://146a55aca6f00848c565-a7635525d40ac1c70300198708936b4e.ssl.cf1.rackcdn.com/images/ed0befaf86bee2568ad720ff4a9a554d1f4260f7.pdf).
45+
PLEASE VERIFY THE CORRECT CLA/FSA IS USED AND EXECUTED FOR THIS CONTRIBUTION.
46+
-->
47+
48+
# Acknowledgements
49+
50+
The Contributors of this Specification would like to acknowledge the following:
51+
52+
- Fabrizio D Amato (AMD)
53+
- Steven Bellock (Nvidia)
54+
- Jeff Andersen (Google)
55+
- Brett Henning (Broadcom)
56+
57+
<!---
58+
Please describe how this Specification complies with the OCP tenets.
59+
A full explanation of the OCP core tenets can be seen [here](https://146a55aca6f00848c565-a7635525d40ac1c70300198708936b4e.ssl.cf1.rackcdn.com/images/bf648bb75091907147e76846cad590f402660d2e.pdf).
60+
-->
61+
62+
<!-- Will bring this in when it's an actual contribution.
63+
64+
# Compliance with OCP Tenets
65+
66+
## Openness
67+
68+
This specification is open-source.
69+
70+
## Efficiency
71+
72+
This specification allows device owners to efficiently configure attestation trust anchors.
73+
74+
## Impact
75+
76+
This specification unblocks key identity use-cases.
77+
78+
## Scale
79+
80+
This specification is applicable to a wide range of devices that support SPDM.
81+
82+
## Sustainability
83+
84+
This specification does not impact sustainability.
85+
86+
# Base specification
87+
88+
-->
89+
90+
## Introduction
91+
92+
In a data center environment, hardware roots of trust leverage device identity keys to attest to their current configuration. Verifiers ensure that the device emitting the attestation is authentic, before going on to evaluate the attested claims against a policy.
93+
94+
In a simple case, such as the one illustrated in @fig:device-cert-hierarchy, a device ships with an identity keypair that is endorsed by the device vendor. Verifiers ensure that the key which signed a given attestation chains back to a known vendor trust anchor via the vendor's PKI.
95+
96+
![Device certificate hierarchy](./diagrams/device_cert_hierarchy.drawio.svg){#fig:device-cert-hierarchy}
97+
98+
The security of this scheme relies on the ongoing security of the vendor's PKI. @fig:compromised-vendor-pki illustrates the risk of a vendor PKI compromise.
99+
100+
![Vendor PKI compromise](./diagrams/compromised_vendor_pki.drawio.svg){#fig:compromised-vendor-pki}
101+
102+
To mitigate the risk of a vendor's PKI becoming compromised, a device owner can issue their own certificate for the device's identity upon receipt of the device. This owner certificate chains back to the owner's own PKI, rather than the vendor's. Verifiers can verify attestations against the owner's PKI, and thus be insulated from a compromise of the vendor's PKI.
103+
104+
Note that in this document, a "device owner" refers to an entity that relies on the device's authenticity. The term bears no relation to the concept of device ownership transfer.
105+
106+
@fig:operator-anchor-point illustrates the case of a data center operator acting as the device owner and issuing a certificate for the device's identity.
107+
108+
![Operator PKI anchor point](./diagrams/operator_anchor_point.drawio.svg){#fig:operator-anchor-point}
109+
110+
Devices often support a hierarchy of identity keys, derived from a number of inputs. @fig:identity-key-derivation illustrates how identity keys are derived in Caliptra. Other devices may have different identity layering schemes.
111+
112+
![Identity key derivation](./diagrams/identity_key_derivation.drawio.svg){#fig:identity-key-derivation}
113+
114+
Note: see the Caliptra [specification](https://github.com/chipsalliance/Caliptra/blob/main/doc/caliptra_1x/Caliptra.md#ldevid-key) for commentary on the utility of LDevID and field entropy.
115+
116+
The owner may select different keys in the identity hierarchy for which to issue a certificate. The choice of key will determine two useful aspects for the certificate:
117+
118+
- Properties that are implicitly attested by way of the issued certificate
119+
- Mechanisms for performing implicit certificate disablement.
120+
121+
In the example illustrated in @fig:identity-key-derivation, the owner has issued a certificate for the LDevID keypair. A device wielding an identity key endorsed by this certificate implicitly attests that its field entropy fuse bank contains the same entropy that was programmed when the owner's identity certificate was issued. The certificate will be implicitly disabled if this entropy changes, as the derived LDevID keypair will change.
122+
123+
A separate owner may wish to have different attestation and disablement properties. Such an owner can issue their identity certificate, for example, over the FMC Alias certificate.
124+
125+
Note that a device may have multiple simultaneous owners. Consider the case of a data center operator that deploys a device, and a tenant that leases the device. This arrangement is illustrated in @fig:tenant-anchor-point.
126+
127+
![Tenant PKI anchor point](./diagrams/tenant_anchor_point.drawio.svg){#fig:tenant-anchor-point}
128+
129+
In this example, a device wielding an identity key endorsed by the tenant's certificate implicitly attests that its owner configuration and FMC hash are the same as was present on the device when the owner's identity certificate was issued. The certificate will be implicitly disabled if either of these values change.
130+
131+
Note: "certificate disablement" is not the same as certificate revocation or expiration. A certificate that was disabled by virtue of an identity key derivation input changing will become re-enabled if that input reverts to its prior value. Owners wishing to permanently revoke an identity certificate must therefore use a separate mechansim, such as a CRL.
132+
133+
In the example illustrated in @fig:tenant-anchor-point, the identity hierarchy contains multiple PKI anchor points, each targeting a different location in the device's internal key hierarchy. The location of each PKI anchor point is based on each device owner's certificate issuance policy. As each owner may request an attestation from the device, an attestation destined for a given owner must chain back to that owner's preferred trust anchor.
134+
135+
While each identity certificate issued by a given owner PKI could be distributed to that owner's attestation verifier through a number of means, the most tractable method in many cases is for the device to cache each of its owner's identity certificates locally, and serve a selected identity certificate along with each attestation statement. Each owner must be able to request a different PKI anchor point on a per-attestation-request basis.
136+
137+
This specification describes the following aspects of device trust anchor management:
138+
139+
- Discovering the set of identity keypairs supported by a device, along with each keypair's respective derivation inputs.
140+
- Obtaining a certificate signing request for a selected keypair from the device.
141+
- Issuing and provisioning an identity certificate to the device.
142+
- Requesting a given identity certificate when obtaining an attestation statement from the device.
143+
144+
## Discovering device identity keypairs
145+
146+
## Obtaining a certificate signing request
147+
148+
## Issuing and provisioning an identity certificate
149+
150+
## Requesting an identity certificate during attestation
151+
152+
## Confidential compute considerations

0 commit comments

Comments
 (0)