|
3 | 3 | SPDM OpenPRoT devices shall use SPDM to conduct all attestation operations both |
4 | 4 | with downstream devices (as a requester) and upstream devices (as a responder.) |
5 | 5 | Devices may choose to act as a requester, a responder, or both. All SPDM version |
6 | | -references assume alignment with the most recently released versions of the spec |
7 | | -(i.e. 1.2.1, 1.3.2.) |
8 | | - |
9 | | -1. [OCP Attestation Spec 1.1](https://github.com/google/spdm-accelerator-requirement/blob/main/OCP-Attestation-v1.1.docx.pdf) |
10 | | - Alignment OpenPRoT implementations of SPDM must align with the OCP |
11 | | - Attestation Spec 1.1, linked above. All following sections have taken this |
12 | | - spec into account. Please refer to that specification for details on |
13 | | - specific requirements. |
14 | | -2. Baseline Version OpenPRoT sets a baseline version of SPDM 1.2. |
15 | | -3. Requesters OpenPRoT devices implementing an SPDM requester will implement |
16 | | - support for SPDM 1.2 minimum and may implement SPDM 1.3 and up. The minimum |
17 | | - and maximum supported SPDM versions can be changed if support for other |
18 | | - versions is not necessary. |
19 | | -4. Responders OpenPRoT devices implementing an SPDM responder must implement |
20 | | - support for SPDM 1.2 or higher. Responders may only report (via |
21 | | - `GET_VERSION`) a single supported version of SPDM. |
22 | | -5. Required Commands All requesters and responders shall implement the four (4) |
23 | | - *spec mandatory* SPDM commands: |
24 | | - |
25 | | - * `GET_VERSION` |
26 | | - |
27 | | - * `GET_CAPABILITIES` |
28 | | - |
29 | | - * `NEGOTIATE_ALGORITHMS` |
30 | | - |
31 | | - * `RESPOND_IF_READY` |
32 | | - |
33 | | - All requesters and responders shall implement the following *spec optional* |
34 | | - commands: |
35 | | - |
36 | | - * `GET_DIGESTS` |
37 | | - * `GET_CERTIFICATE` |
38 | | - * `CHALLENGE` |
39 | | - * `GET_MEASUREMENTS` |
40 | | - * `GET_CSR` |
41 | | - * `SET_CERTIFICATE` |
42 | | - * `CHUNK_SEND` |
43 | | - * `CHUNK_GET` |
44 | | - |
45 | | - Requesters and responders may implement the following recommended *spec |
46 | | - optional* commands: |
47 | | - |
48 | | - * Events |
49 | | - * `GET_SUPPORTED_EVENT_TYPES` |
50 | | - * `SUBSCRIBE_EVENT_TYPES` |
51 | | - * `SEND_EVENT` |
52 | | - * Encapsulated requests |
53 | | - * `GET_ENCAPSULATED_REQUEST` |
54 | | - * `DELIVER_ENCAPSULATED_RESPONSE` |
55 | | - * `GET_KEY_PAIR_INFO` |
56 | | - * `SET_KEY_PAIR_INFO` |
57 | | - * `KEY_UPDATE` |
58 | | - * `KEY_EXCHANGE` |
59 | | - * `FINISH` |
60 | | - * `PSK_EXCHANGE` |
61 | | - * `PSK_FINISH` |
62 | | - |
63 | | - All other *spec optional* commands may be implemented as the integrator sees |
64 | | - fit for their use case. |
65 | | - |
66 | | -6. Required Capabilities |
67 | | - |
68 | | - * `CERT_CAP` (required for `GET_CERTIFICATE`) |
69 | | - * `CHAL_CAP` (required for `CHALLENGE`) |
70 | | - * `MEAS_CAP` (required for `GET_MEASUREMENT`) |
71 | | - * `MEAS_FRESH_CAP` |
72 | | - |
73 | | -7. Algorithms The following cryptographic algorithms are accepted for use |
74 | | - within OpenPRoT, but may be further constrained by hardware capabilities. At |
75 | | - a minimum OpenPRoT hardware must support: |
| 6 | +references assume alignment with the most recently released versions of the spec. |
76 | 7 |
|
| 8 | +## OCP Attestation Spec 1.1 Alignment |
| 9 | + |
| 10 | +OpenPRoT implementations of SPDM must align with the |
| 11 | +[OCP Attestation Spec 1.1](https://github.com/google/spdm-accelerator-requirement/blob/main/OCP-Attestation-v1.1.docx.pdf). |
| 12 | +All following sections have taken this spec into account. Please refer to that |
| 13 | +specification for details on specific requirements. |
| 14 | + |
| 15 | +## Baseline Version |
| 16 | + |
| 17 | +OpenPRoT sets a baseline version of SPDM 1.2. |
| 18 | + |
| 19 | +## Requesters |
| 20 | + |
| 21 | +OpenPRoT devices implementing an SPDM requester will implement support for SPDM |
| 22 | +1.2 minimum and may implement SPDM 1.3 and up. The minimum and maximum supported |
| 23 | +SPDM versions can be changed if support for other versions is not necessary. |
| 24 | + |
| 25 | +## Responders |
| 26 | + |
| 27 | +OpenPRoT devices implementing an SPDM responder must implement support for SPDM |
| 28 | +1.2 or higher. Responders may only report (via `GET_VERSION`) a single supported |
| 29 | +version of SPDM. |
| 30 | + |
| 31 | +## Required Commands |
| 32 | + |
| 33 | +All requesters and responders shall implement the four (4) *spec mandatory* SPDM |
| 34 | +commands: |
| 35 | + |
| 36 | +* `GET_VERSION` |
| 37 | +* `GET_CAPABILITIES` |
| 38 | +* `NEGOTIATE_ALGORITHMS` |
| 39 | +* `RESPOND_IF_READY` |
| 40 | + |
| 41 | +All requesters and responders shall implement the following *spec optional* |
| 42 | +commands: |
| 43 | + |
| 44 | +* `GET_DIGESTS` |
| 45 | +* `GET_CERTIFICATE` |
| 46 | +* `CHALLENGE` |
| 47 | +* `GET_MEASUREMENTS` |
| 48 | +* `GET_CSR` |
| 49 | +* `SET_CERTIFICATE` |
| 50 | +* `CHUNK_SEND` |
| 51 | +* `CHUNK_GET` |
| 52 | + |
| 53 | +Requesters and responders may implement the following recommended *spec |
| 54 | +optional* commands: |
| 55 | + |
| 56 | +* Events |
| 57 | + * `GET_SUPPORTED_EVENT_TYPES` |
| 58 | + * `SUBSCRIBE_EVENT_TYPES` |
| 59 | + * `SEND_EVENT` |
| 60 | +* Encapsulated requests |
| 61 | + * `GET_ENCAPSULATED_REQUEST` |
| 62 | + * `DELIVER_ENCAPSULATED_RESPONSE` |
| 63 | +* `GET_KEY_PAIR_INFO` |
| 64 | +* `SET_KEY_PAIR_INFO` |
| 65 | +* `KEY_UPDATE` |
| 66 | +* `KEY_EXCHANGE` |
| 67 | +* `FINISH` |
| 68 | +* `PSK_EXCHANGE` |
| 69 | +* `PSK_FINISH` |
| 70 | + |
| 71 | +All other *spec optional* commands may be implemented as the integrator sees fit |
| 72 | +for their use case. |
| 73 | + |
| 74 | +## Required Capabilities |
| 75 | + |
| 76 | +* `CERT_CAP` (required for `GET_CERTIFICATE`) |
| 77 | +* `CHAL_CAP` (required for `CHALLENGE`) |
| 78 | +* `MEAS_CAP` (required for `GET_MEASUREMENT`) |
| 79 | +* `MEAS_FRESH_CAP` |
| 80 | + |
| 81 | +## Algorithms |
| 82 | + |
| 83 | +The following cryptographic algorithms are accepted for use within OpenPRoT, but |
| 84 | +may be further constrained by hardware capabilities. At a minimum OpenPRoT |
| 85 | +hardware must support: |
| 86 | + |
| 87 | +* `TPM_ALG_ECDSA_ECC_NIST_P384` |
| 88 | +* `TPM_ALG_SHA3_384` |
| 89 | + |
| 90 | +All others are optional and may be used if supported. |
| 91 | + |
| 92 | +* Asymmetric |
| 93 | + * `TPM_ALG_ECDSA_ECC_NIST_P256` |
77 | 94 | * `TPM_ALG_ECDSA_ECC_NIST_P384` |
| 95 | + * `EdDSA ed25519` |
| 96 | + * `EdDSA ed448` |
| 97 | + * `TPM_ALG_SHA_384` |
| 98 | +* Hash |
| 99 | + * `TPM_ALG_SHA_256` |
| 100 | + * `TPM_ALG_SHA_384` |
| 101 | + * `TPM_ALG_SHA_512` |
| 102 | + * `TPM_ALG_SHA3_256` |
78 | 103 | * `TPM_ALG_SHA3_384` |
| 104 | + * `TPM_ALG_SHA3_512` |
| 105 | +* AEAD Cipher |
| 106 | + * `AES-128-GCM` |
| 107 | + * `AES-256-GCM` |
| 108 | + * `CHACHA20_POLY1305` |
| 109 | + |
| 110 | +## Attestation Report Format |
| 111 | + |
| 112 | +Devices will support either RATS EAT (as CWT) or an SPDM evidence manifest TOC |
| 113 | +per the *TCG DICE Concise Evidence for SPDM* specification. |
| 114 | + |
| 115 | +## Measurement block 0xF0 |
79 | 116 |
|
80 | | - All others are optional and may be used if supported. |
81 | | - |
82 | | - * Asymmetric |
83 | | - * `TPM_ALG_RSASSA_2048` |
84 | | - * `TPM_ALG_RSAPSS_2048` |
85 | | - * `TPM_ALG_RSASSA_3072` |
86 | | - * `TPM_ALG_RSAPSS_3072` |
87 | | - * `TPM_ALG_ECDSA_ECC_NIST_P256` |
88 | | - * `TPM_ALG_RSASSA_4096` |
89 | | - * `TPM_ALG_RSAPSS_4096` |
90 | | - * `TPM_ALG_ECDSA_ECC_NIST_P384` |
91 | | - * `EdDSA ed25519` |
92 | | - * `EdDSA ed448` |
93 | | - * `TPM_ALG_SHA_384` |
94 | | - * Hash |
95 | | - * `TPM_ALG_SHA_256` |
96 | | - * `TPM_ALG_SHA_384` |
97 | | - * `TPM_ALG_SHA_512` |
98 | | - * `TPM_ALG_SHA3_256` |
99 | | - * `TPM_ALG_SHA3_384` |
100 | | - * `TPM_ALG_SHA3_512` |
101 | | - * AEAD Cipher |
102 | | - * `AES-128-GCM` |
103 | | - * `AES-256-GCM` |
104 | | - * `CHACHA20_POLY1305` |
105 | | - |
106 | | -8. Attestation Report Format Devices will support either RATS EAT (as CWT) or |
107 | | - an SPDM evidence manifest TOC per the *TCG DICE Concise Evidence for SPDM* |
108 | | - specification. |
109 | | - |
110 | | -9. Measurement block 0xF0 Devices that do not provide a Measurement Manifest |
111 | | - shall locate RATS EAT at SPDM measurement block 0xF0 |
| 117 | +Devices that do not provide a Measurement Manifest shall locate RATS EAT at SPDM |
| 118 | +measurement block 0xF0 |
0 commit comments