diff --git a/RoT/Protocol/Challenge_Protocol.md b/RoT/Protocol/Challenge_Protocol.md index 727e0b8..6ba60d5 100644 --- a/RoT/Protocol/Challenge_Protocol.md +++ b/RoT/Protocol/Challenge_Protocol.md @@ -1,3788 +1,6009 @@ -![](media/image1.png){width="6.0in" height="4.6365387139107614in"} + + + +
>>>>> gd2md-html alert: ERRORs: 0; WARNINGs: 0; ALERTS: 13.
+Links to alert messages:
alert1 +alert2 +alert3 +alert4 +alert5 +alert6 +alert7 +alert8 +alert9 +alert10 +alert11 +alert12 +alert13 + +>>>>> PLEASE check and correct alert issues and delete this message and the inline alerts.
>>>>> gd2md-html alert: inline image link here (to images/image1.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
Date + | +Description + | +
28-08-2017 + | +V0.01 - Initial Draft + | +
28-09-2017 + | +V0.02 - Add References section + | +
28-10-2017 + | +V0.03 - Move message exchange from protocol to register based + | +
02-12-2018 + | +V0.04 – Add MCTP Support and update session + | +
04-30-2018 + | +V0.05 – Incorporate Supplier feedback + | +
10-15-2018 + | +V0.06 – Update Authentication flow. Change measurement to PMR and attestation integration. + | +
01-10-2019 + | +V0.07 – Change PMR naming to PM due to static requirements on extension. + | +
02-15-2019 + | +V0.08 – Add Firmware Recovery image update commands. Clarify Error Response + | +
06-26-2019 + | +V0.09 – Add Reset Configuration command. Identify commands subject to the cryptographic timeout. + | +
08-05-2019 + | +V0.10 – Update Cerberus-defined MCTP message definition. + | +
10-21-2019 + | +V0.11 – Add detail on Mfg pairing for devices. Add commands to get RIoT, chip, and host reset information. + | +
12-27-2019 + | +V0.12 – Clarification regarding required and optional commands. + | +
03-17-2020 + | +V0.13 – Add commands to get manifest platform IDs and PMR measured data. Update unseal and device capabilities commands. Clarifications around command packet format. Add log formats. + | +
04-30-2020 + | +V0.14 – Update format of several commands, add extended update status. Clarifications around certificates. Add details about encrypted messages. + | +
05-22-2020 + | +V0.15 – Add unseal ECDH seed parameters. Define a range of reserved commands. + | +
08-19-2020 + | +V1.00 – Update session establishment and secure device binding. Add back Rq bit. + | +
>>>>> gd2md-html alert: inline image link here (to images/image2.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image3.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image4.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image5.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image6.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image7.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
Field Name + | +Description + | +Field Size + | +
Medium-Specific Header + | +This represents the header for the protocol that encapsulates MCTP packets over a physical medium + | +Variable + | +
Medium-Specific Trailer + | +This represents the trailer fields for the protocol that encapsulates MCTP packets over a physical medium + | +Variable + | +
MCTP Transport Header + | +Provides version and addressing for the packet. + | +32 bits + | +
RSVD + | +Reserved + | +4 bits + | +
Header Version + | +Header Version Identifies the format of physical framing and data integrity. + | +4 bits + | +
Destination Endpoint Id + | +The EID to the endpoint to receive the MCTP packet. + | +8 bits + | +
Source Endpoint Id + | +The EID of the originator of the MCTP packet + | +8 bits + | +
SOM + | +Start of Message is set to true (1b) for the first packet of a message. + | +1 bit + | +
EOM + | +End of Message is set to true (1b) for the last packet of a message. + | +1 bit + | +
Pkt Seq# + | +Packet Sequence Number for messages that span multiple packets. Increments modulo 4 on each successive packet up through the packet contained the EOM flag set. + | +2 bits + | +
Message Tag + | +Combined with Source Endpoint Id and TO field to identify unique message at MCTP transport layer.
+ +For messages that are split up into multiple packets, the TO and Message Tag bits remain the same for all packets from the SOM to the EOM. + |
+ 3 bits + | +
TO + | +Tag Owner bit identifies whether the message tag was originated by the endpoint that is the source of the message or by the endpoint that is the destination of the message. MCTP message types use this for Request/Response messages. + | +1 bit + | +
Message body + | +Payload of the MCTP message, can span multiple MCTP packets + | +Variable + | +
IC + | +MCTP Integrity check bit
+ +0 = No MCTP message integrity + +1 = MCTP message integrity check is present + |
+ 1 bit + | +
Message Type + | +Defines the type of payload within the MCTP message header and data. Message type codes are defined in the MCTP ID and Codes + | +7 bits + | +
Message header + | +Header data for the message type. + | +Variable + | +
Message Data + | +Data for the message defined by the message type + | +Variable + | +
MCTP Packet Payload + | +Payload of the message body carried in the packet. Limited by the transfer unit size. Review MCTP Base Specification for further details. + | +Variable + | +
Message Integrity Check + | +Message type specific integrity check over the contest of the message body + | +Variable + | +
Message Header + | +Byte + | ++ | +
Request Data + | +1:2 + | +PCI/PCIe Vendor ID. The MCTP Vendor Id formatted per 00h Vendor ID format offset. + | +
+ | +3:N + | +Vendor-Defined Message Body. 0 to N bytes. + | +
Response Data + | +1:2 + | +PCI/PCIe Vendor ID, the value is formatted per 00h Vendor ID offset + | +
+ | +3:M + | +Vendor-Defined Message Body. 0 to M bytes + | +
Method + | +Use + | +
X509v3, DER encoding + | +Certificate format + | +
ECDSA, NIST P256, secp256r1 curve, uncompressed point + | +Digital signing of Certificate + | +
SHA256 + | +Hash algorithm + | +
>>>>> gd2md-html alert: inline image link here (to images/image8.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image9.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image10.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
Field Name + | +Description + | +
IC + | +(MCTP integrity check bit) Indicates whether the MCTP message is covered
+ +by an overall MCTP message payload integrity check + |
+
Message Type + | +Indicates MCTP Vendor defined message + | +
MCTP PCI Vendor + | +Id for PCI Vendor. Cerberus messages use the Microsoft PCI ID of 0x1414. + | +
Request Type + | +This field indicates what type of request is contained in the message. Messages defined in this specification shall have this bit set to 0. Setting this bit to 1 provides a mechanism, aside from different vendor IDs, to support a device-specific command set. Devices that don’t have any additional command support will return an error if this bit is 1. + | +
Crypt + | +Message Payload and Command are encrypted + | +
Command + | +The command ID for command to execute + | +
Msg Integrity Check + | +This field represents the optional presence of a message type-specific integrity check over the contents of the message body. If present (indicated by IC bit) the Message integrity check field is carried in the last bytes of the message body + | +
+0 + | ++1 + | ++2 + | ++3 + | +||||||||||||||||||||||||||||
7 + | +6 + | +5 + | +4 + | +3 + | +2 + | +1 + | +0 + | +7 + | +6 + | +5 + | +4 + | +3 + | +2 + | +1 + | +0 + | +7 + | +6 + | +5 + | +4 + | +3 + | +2 + | +1 + | +0 + | +7 + | +6 + | +5 + | +4 + | +3 + | +2 + | +1 + | +0 + | +
MCTP Rsvd + | +Header Version + | +Destination Endpoint ID + | +Source Endpoint ID + | +S \ +O \ +M + | +E \ +O \ +M + | +Pkt Seq # + | +TO + | +Msg \ +Tag + | +|||||||||||||||||||||||
I \ +C + | +Msg Type = 7E + | +MCTP PCI Vendor ID = 0x1414 + | +Rq + | +Rsvd + | +Crypt + | +Reserved + | +|||||||||||||||||||||||||
Command + | +Message Payload + | +
I \ +C + | +Msg Type = 7E + | +MCTP PCI Vendor ID = 0x1414 + | +Rq + | +Rsvd + | +Crypt + | +Reserved + | +|
Command + | +Message Payload + | +||||||
GCM Tag + | +Initialization Vector + | +
Type + | +Description + | +
1 + | +Accepted inside or outside session. + | +
2 + | +Authentication and session setup commands. + | +
3 + | +Session required commands, obfuscated by session encryption or KDF, message body content is normally scrambled. + | +
8xh + | +Any of the other command types, but the command uses the timeout allowed for Cryptographic commands. + | +
Message Name + | +Type + | +Command + | +R/O/M + | +Description + | +
ERROR + | +01h + | +7Fh + | +R + | +Status Response message. + | +
Firmware Version + | +01h + | +01h + | +R + | +Retrieve firmware version information + | +
Device Capabilities + | +01h + | +02h + | +R + | +Retrieves Device Capabilities + | +
Device Id + | +01h + | +03h + | +R + | +Retrieves Device Id + | +
Device Information + | +01h + | +04h + | +R + | +Retrieves device information + | +
Export CSR + | +01h + | +20h + | +R + | +Exports CSR for device keys + | +
Import Certificate + | +81h + | +21h + | +R + | +Imports CA signed Certificate + | +
Get Certificate State + | +01h + | +22h + | +R + | +Checks the state of the signed Certificate chain + | +
GET DIGESTS + | +82h + | +81h + | +R + | +PA-RoT retrieves session information + | +
GET CERTIFICATE + | +02h + | +82h + | +R + | +PA-RoT sets session variables based on Session Query + | +
CHALLENGE + | +82h + | +83h + | +R + | +PA-RoT retrieves and verifies AC-RoT certificate + | +
Key Exchange + | +82h + | +84h + | +O1 + | +Exchange pre-master session keys and mfg device pairing key + | +
Session Sync + | +83h + | +85h + | +O1 + | +Check status of a secure session + | +
Get Log Info + | +01h + | +4Fh + | +O + | +Get Log Information + | +
Get Log + | +01h + | +50h + | +O + | +Retrieve debug, attestation and tamper log + | +
Clear Log + | +01h + | +51h + | +O + | +Clear log information + | +
Get Attestation Data + | +01h + | +52h + | +O2 + | +Retrieve raw data for an entry in the attestation log + | +
Get Host State + | +01h + | +40h + | +O + | +Get reset state of the host processor + | +
Get PFM Id + | +01h + | +59h + | +O + | +Get PFM Information + | +
Get PFM Supported + | +01h + | +5Ah + | +O + | +Retrieve the PFM + | +
Prepare PFM + | +01h + | +5Bh + | +O + | +Prepare PFM payload on PA-RoT + | +
Update PFM + | +01h + | +5Ch + | +O + | +Set the PFM + | +
Activate PFM + | +01h + | +5Dh + | +O + | +Force Activation of supplied PFM + | +
Get CFM Id + | +01h + | +5Eh + | +M + | +Get Component Manifest Information + | +
Prepare CFM + | +01h + | +5Fh + | +M + | +Prepare Component Manifest Update + | +
Update CFM + | +01h + | +60h + | +M + | +Update Component Manifest + | +
Activate CFM + | +01h + | +61h + | +M + | +Activate Component Firmware Manifest Update + | +
Get CFM Supported + | +01h + | +8Dh + | +M + | +Retrieve supported CFM IDs + | +
Get PCD Id + | +01h + | +62h + | +M + | +Get Platform Configuration Data Information + | +
Prepare PCD + | +01h + | +63h + | +M + | +Prepare Platform Configuration Data Update + | +
Update PCD + | +01h + | +64h + | +M + | +Update Platform Configuration Data + | +
Activate PCD + | +01h + | +65h + | +M + | +Activate Platform Configuration Data Update + | +
Prepare Firmware Update + | +01h + | +66h + | +O + | +Prepare for receiving firmware image + | +
Update Firmware + | +01h + | +67h + | +O + | +Firmware update payload + | +
Update Status + | +01h + | +68h + | +M3 + | +Firmware, PFM/CFM/PCD update status + | +
Extended Update Status + | +01h + | +8Eh + | +M3 + | +Firmware, PFM/CFM/PCD extended status + | +
Activate Firmware Update + | +01h + | +69h + | +O + | +Activate received FW update + | +
Reset Configuration + | +81h + | +6Ah + | +O + | +Reset configuration to default state + | +
Get Config IDs + | +81h + | +70h + | +M4 + | +Get manifest IDs and signed digest of request nonce and response ids. + | +
Recovery Firmware + | +01h + | +71h + | +O + | +Restore Firmware Index using backup. + | +
Prepare Recovery Image + | +01h + | +72h + | +O + | +Prepare storage for Recovery Image + | +
Update Recovery Image + | +01h + | +73h + | +O + | +Updates the Recover image + | +
Activate Recovery Image + | +01h + | +74h + | +O + | +Activate the received Recovery image + | +
Get Recovery Image Id + | +01h + | +75h + | +O + | +Get Recovery firmware information + | +
Platform Measurement Register + | +81h + | +80h + | +O + | +Returns the Platform Measurement + | +
Update Platform Measurement Register + | +83h + | +86h + | +O + | +Extends Platform Measurements + | +
Reset Counter + | +01h + | +87h + | +R + | +Reset Counter + | +
Unseal Message + | +81h + | +89h + | +O + | +Unseal attestation challenges. + | +
Unseal Message Result + | +01h + | +8Ah + | +O + | +Get unsealing status and result + | +
Unsupported Commands + | ++ | +F0h – FFh + | ++ | +Reserved commands that must be rejected by the device + | +
Payload + | +Description + | +
1 + | +Error Code + | +
2:5 + | +Error Data + | +
Error Code + | +Value + | +Description + | +Data + | +
No Error + | +0h + | +Success [Reserved in USB Type C
+ +Authentication Specification] + |
+ 00h + | +
Invalid Request + | +01h + | +Invalidated data in the request + | +00h + | +
Busy + | +03h + | +Device cannot response as it is busy processing other commands + | +00h + | +
Unspecified + | +04h + | +Unspecified error occurred + | +Vendor defined + | +
Reserved + | +05h-EFh + | +Reserved + | +Reserved + | +
Invalid Checksum + | +F0h + | +Invalid checksum + | +Checksum + | +
Out of Order Message + | +F1h + | +EOM before SOM + | +00h + | +
Authentication + | +F2h + | +Authentication not established + | +00h + | +
Out of Sequence Window + | +F3h + | +Message received out of Sequence Window + | +00h + | +
Invalid Packet Length + | +F4h + | +Packet received with unexpected size + | +Packet Length + | +
Message Overflow + | +F5h + | +Message exceeded maximum length + | +Message Length + | +
Payload + | +Description + | +
1 + | +Area Index:
+ +00h = Entire Firmware + +01h = RIoT Core + +Additional indexes are firmware specific + |
+
Payload + | +Description + | +
1:32 + | +Firmware Version Number ASCII Formatted + | +
+Payload + | +Description + | +
1:2 + | +Maximum Message Payload Size + | +
3:4 + | +Maximum Packet Payload Size + | +
5 + | +Mode:
+ +[7:6] + + + 00 = AC-RoT + + + 01 = PA-RoT + + + 10 = External + + + 11 = Reserved + + [5:4] Master/Slave + + + 00 = Unknown + + + 01 = Master + + + 10 = Slave + + + 11 = both master and slave + +[3] Reserved + +[2:0] Security + + + 000 = None + + + 001 = Hash/KDF + + + 010 = Authentication [Certificate Auth] + + + 100 = Confidentiality [AES] + |
+
6 + | +[7] PFM support
+ +[6] Policy Support + +[5] Firmware Protection + +[4-0] Reserved + |
+
7 + | +PK Key Strength:
+ +[7] RSA + +[6] ECDSA + +[5:3] ECC + + + 000: None + + + 001: 160bit + + + 010: 256bit + + + 100: Reserved + +[2:0] RSA: + + + 000: None + + + 001: RSA 2048 + + + 010: RSA 3072 + + + 100: RSA 4096 + |
+
8 + | +Encryption Key Strength:
+ +[7] ECC + +[6:3] Reserved + +[2:0] AES: + + + 000: None + + + 001: 128 bit + + + 010: 256 bit + + + 100: 384 bit + |
+
Payload + | +Description + | +
1:2 + | +Maximum Message Payload Size + | +
3:4 + | +Maximum Packet Payload Size + | +
5 + | +Mode:
+ +[7:6] + + + 00 = AC-RoT + + + 01 = PA-RoT + + + 10 = External + + + 11 = Reserved + + [5:4] Master/Slave + + + 00 = Unknown + + + 01 = Master + + + 10 = Slave + + + 11 = both master and slave + +[3] Reserved + +[2:0] Security + + + 000 = None + + + 001 = Hash/KDF + + + 010 = Authentication [Certificate Auth] + + + 100 = Confidentiality [AES] + |
+
6 + | +[7] PFM support
+ +[6] Policy Support + +[5] Firmware Protection + +[4-0] Reserved + |
+
7 + | +PK Key Strength:
+ +[7] RSA + +[6] ECDSA + +[5:3] ECC + + + 000: None + + + 001: 160bit + + + 010: 256bit + + + 100: Reserved + +[2:0] RSA: + + + 000: None + + + 001: RSA 2048 + + + 010: RSA 3072 + + + 100: RSA 4096 + |
+
8 + | +Encryption Key Strength:
+ +[7] ECC + +[6:3] Reserved + +[2:0] AES: + + + 000: None + + + 001: 128 bit + + + 010: 256 bit + + + 100: 384 bit + |
+
9 + | +Maximum Message timeout: multiple of 10ms + | +
10 + | +Maximum Cryptographic Message timeout: multiple of 100ms + | +
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1:2 + | +Vendor ID; LSB + | +
3:4 + | +Device ID; LSB + | +
5:6 + | +Subsystem Vendor ID; LSB + | +
7:8 + | +Subsystem ID; LSB + | +
Payload + | +Description + | +
1 + | +Information Index:
+ +00h = Unique Chip Identifier + +Additional indexes are firmware specific + |
+
Payload + | +Description + | +
1:N + | +Requested information in binary format + | +
Payload + | +Description + | +
1 + | +Index: Default = 0 + | +
Payload + | +Description + | +
1:N + | +Certificate + | +
Payload + | +Description + | +
1 + | +Index:
+ + 0 = Device Identification Certificate + + 1 = Root CA Certificate + + 2 = Intermediate CA Certificate + +Additional certificate indices are implementation specific. + |
+
2:3 + | +Certificate Length + | +
4:N + | +Certificate + | +
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1 + | +State:
+ + 0 = A valid chain has been provisioned. + + 1 = A valid chain has not been provisioned. + + 2 = The stored chain is being validated. + |
+
2:4 + | +Error details if chain validation has failed. + | +
Payload + | +Description + | +
1 + | +Param1: Slot Number of the target Certificate Chain to read. The value should be 0-7. + | +
2 + | +Key Exchange Algorithm:
+ + + 0 = None + + + 1 = ECDH + |
+
Payload + | +Description + | +
1 + | +Capabilities Field; shall be set to 01 + | +
2 + | +The number of certificate digests returned. Each digest represents a single certificate in the chain, starting from the certificate closest to the root. + | +
3:N + | +Digest[0] 32 byte SHA256 digest of the root Certificate in the Chain + | +
N+ + | +Digest[1] 32 byte SHA256 digest of N Certificate in the Chain + | +
Payload + | +Description + | +
1 + | +Param1: Slot Number of the target Certificate Chain to read. The value should be 0-7. + | +
2 + | +Certificate number. This a 0-based index starting with the root certificate in the chain. + | +
3:4 + | +Offset: offset in bytes from start of the Certificate chain where read request begins. + | +
5:6 + | +Length: number of bytes to read + | +
Payload + | +Description + | +
1 + | +Param1: Slot Number of the target Certificate Chain returned. + | +
2 + | +Certificate number of the returned certificate + | +
3:N + | +Requested contents of target Certificate Chain. See section 4 Certificates. + | +
Payload + | +Description + | +
1 + | +Slot number of the recipient’s Certificate Chain that will be used for Authentication. The value should be 0-7. + | +
2 + | +Reserved + | +
3:35 + | +Random 32 byte nonce chosen by PA-RoT + | +
Payload + | +Description + | +
1 + | +Shall contain the Slot number in the Param1 field of the corresponding CHALLENGE Request + | +
2 + | +Certificate slot mask + | +
3 + | +MinProtocolVersion supported by device + | +
4 + | +MaxProtocolVersion supported by device + | +
5:6 + | +Reserved + | +
7:38 + | +Random number chosen by AC-RoT (RN2) + | +
39 + | +Number of components used to generate the PMR0 measurement + | +
40 + | +Length of each digest in PMR0 (L) + | +
41:40+L + | +Value of Platform Measurement Register 0 (Aggregated Firmware Digest) + | +
41+L:N + | +Signature of combined request and response message payloads. See USB Type C Authentication Protocol for details of request/response signature. + | +
Payload + | +Description + | +
1 + | +Key Type:
+ +0 = Session Key + +1 = Paired Key HMAC + +2 = Delete Session Key (close session) + |
+
2:N + | +Key data. Format is defined by the type of request. + | +
Payload + | +Description + | +
1 + | +Key Type:
+ +0 = Session Key + +1 = Paired Key HMAC + |
+
2:N + | +Response data. Format is defined by the type of request. + | +
Payload + | +Description + | +
1 + | +HMAC Type:
+ +0 = SHA256 + +1 = SHA384 + +2 = SHA512 + +The HMAC type specified in this message applies to all HMAC operations for the established session, including any subsequent pairing messages. + +Since session keys (KS and KM) are 256-bit keys, they will always be generated using SHA256 regardless of the type of HMAC used for key exchange messages. + |
+
2:N + | +ASN.1 DER encoded ECC public key (PKreq) + | +
Payload + | +Description + | +
1 + | +Reserved. Set to 0. + | +
2:3 + | +Key Length + | +
4:N + | +ASN.1 DER encoded ECC public key (PKresp) + | +
N+1:N+2 + | +Signature Length + | +
N+3:M + | +Signature using Alias Key over ephemeral session keys:
+ +SGN(Alias)(PKreq || PKresp) + |
+
M+1:M+2 + | +HMAC Length + | +
M+3:H + | +HMAC of the Alias Key certificate:
+ +HMAC (KM, ASN.1 DER encoded Alias Certificate) + |
+
Payload + | +Description + | +
1:2 + | +Length in bytes of the pairing key + | +
3:N + | +HMAC of the pairing key:
+ +HMAC (KM, KP) + |
+
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1:N + | +HMAC of session key:
+ +HMAC (KM, KS) + |
+
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1:4 + | +Random number (RNreq) + | +
Payload + | +Description + | +
1:N + | +HMAC of the request number:
+ +HMAC (KM, RNreq) + |
+
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1:4 + | +Debug Log (01h) Length in bytes + | +
5:8 + | +Attestation Log (02h) Length in bytes + | +
9:12 + | +Tamper Log (03h) Length in bytes + | +
Log Type + | +Description + | +
1 + | +Debug Log + | +
2 + | +Attestation Log + | +
3 + | +Tamper Log + | +
Payload + | +Description + | +
1 + | +Log Type + | +
2:5 + | +Offset + | +
Payload + | +Description + | +
1:N + | +The contents of the log + | +
Offset + | +Description + | +
1 + | +Log entry start marker:
+ +[7:4]: 0xC + +[3:0]: Header format, 0xB per this specification. + |
+
2:3 + | +Total length of the entry, including the header + | +
4:7 + | +Unique entry identifier + | +
Offset + | +Description + | +
1:7 + | +Log Entry Header + | +
8:11 + | +TCG Event Type + | +
12 + | +Measurement index within a single PMR + | +
13 + | +Index of the PMR for the measurement + | +
14:15 + | +Reserved, set to 0 + | +
16 + | +Number of digests (1) + | +
17:19 + | +Reserved, set to 0 + | +
20:21 + | +Digest algorithm Id (0x0B, SHA256) + | +
22:53 + | +SHA256 digest used to extend the measurement + | +
54:57 + | +Measurement size (32) + | +
58:89 + | +Measurement + | +
Offset + | +Description + | +
1:7 + | +Log Entry Header + | +
8:9 + | +Format of the entry, currently 1 + | +
10 + | +Severity of the entry + | +
11 + | +Identifier for the component that generated the message + | +
12 + | +Identifier for the entry message + | +
13:16 + | +Message specific argument + | +
17:20 + | +Message specific argument + | +
Payload + | +Description + | +
1 + | +Type: 01 or 02 + | +
Payload + | +Description + | +
1 + | +Platform Measurement Register + | +
2 + | +Entry Index + | +
3:6 + | +Offset + | +
Payload + | +Description + | +
1:N + | +The measured data + | +
Payload + | +Description + | +
1 + | +Port Id + | +
Payload + | +Description + | +
1 + | +Host Reset State:
+ +00h – Host is running (out of reset) + +01h – Host is being held in reset + +02h – Host is not being held in reset, but is not running + |
+
Payload + | +Description + | +
1 + | +Port Id + | +
2 + | +PFM Region:
+ +0 = Active + +1 = Pending + |
+
3 (optional) + | +Identifier:
+ +0 = Version Id (default) + +1 = Platform Id + |
+
Payload + | +Description + | +
1 + | +PFM Valid (0 or 1) + | +
2:5 + | +PFM Version Id + | +
Payload + | +Description + | +
1 + | +PFM Valid (0 or 1) + | +
2:N + | +PFM Platform Id as null-terminated ASCII + | +
+Payload + | +Description + | +
1 + | +Port Id + | +
2 + | +PFM Region:
+ +0 = Active + +1 = Pending + |
+
3:6 + | +Offset + | +
Payload + | +Description + | +
1 + | +PFM Valid (0 or 1) + | +
2:5 + | +PFM Version Id + | +
6:N + | +PFM supported FW versions + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2:5 + | +Total size + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2:N + | +PFM Payload + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2 + | +Activation:
+ +0 = Reboot only + +1 = Immediately + |
+
Payload + | +Description + | +
1 + | +CFM Region:
+ +0 = Active + +1 = Pending + |
+
2 (optional) + | +Identifier:
+ +0 = Version Id (default) + +1 = Platform Id + |
+
Payload + | +Description + | +
1 + | +CFM Valid (0 or 1) + | +
2:5 + | +CFM Version Id + | +
Payload + | +Description + | +
1 + | +CFM Valid (0 or 1) + | +
2:N + | +CFM Platform Id as null-terminated ASCII + | +
Payload + | +Description + | +
1:4 + | +Total size + | +
Payload + | +Description + | +
1:N + | +Component Firmware Manifest Payload + | +
Payload + | +Description + | +
1 + | +Activation:
+ +0 = Reboot only + +1 = Immediately + |
+
+Payload + | +Description + | +
1 + | +CFM Region:
+ +0 = Active + +1 = Pending + |
+
2:5 + | +Offset + | +
Payload + | +Description + | +
1 + | +CFM Valid (0 or 1) + | +
2:5 + | +CFM Version Id + | +
6:N + | +CFM supported component IDs + | +
Payload + | +Description + | +
1 (optional) + | +Identifier:
+ +0 = Version Id (default) + +1 = Platform Id + |
+
Payload + | +Description + | +
1 + | +PCD Valid (0 or 1) + | +
2:5 + | +PCD Version Id + | +
Payload + | +Description + | +
1 + | +PCD Valid (0 or 1) + | +
2:N + | +PCD Platform Id as null-terminated ASCII + | +
Payload + | +Description + | +
1:4 + | +Total size + | +
Payload + | +Description + | +
1:N + | +PCD Payload + | +
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +||||||||||||||
1:3 + | +Platform Configuration Data Id + | +||||||||||||||
4:5 + | +Length + | +||||||||||||||
6 + | +Policy Count + | +||||||||||||||
7:N + | +Each AC-RoT has 1 entry. The Configuration Data determines the feature enablement and attestation
+ + + +
|
+ ||||||||||||||
N:N + + | +Signature of payload + + | +
Payload + | +Description + | +
1:4 + | +Total size + | +
Payload + | +Description + | +
1:N + | +Firmware Update payload, header signature. See firmware update specification. + | +
Payload + | +Description + | +
1 + | +Update Type
+ + + 00 = Firmware + + + 01 = Platform Firmware Manifest + + + 02 = Component Firmware Manifest + + + 03 = Platform Configuration Data + + + 04 = Host Firmware + + + 05 = Recovery Firmware + + + 06 = Reset Configuration + |
+
2 + | +Port Id + | +
Payload + | +Description + | +
1:4 + | +Update Status. See firmware update specification for details. + | +
Payload + | +Description + | +
1 + | +Update Type
+ + + 00 = Firmware + + + 01 = Platform Firmware Manifest + + + 02 = Component Firmware Manifest + + + 03 = Configuration Data + + + 04 = Host Firmware + + + 05 = Recovery Firmware + + + 06 = Reset Configuration + |
+
2 + | +Port Id + | +
Payload + | +Description + | +
1:4 + | +Update Status. See firmware update specification for details. + | +
5:8 + | +Expected update bytes remaining. + | +
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1 + | +Type of reset operation to request:
+ +0: Revert the device into the unprotected (bypass) state by erasing all PFMs and CFMs. + +1: Perform a factory reset by removing all configuration. This does not include signed device certificates. + |
+
2:N + | +(Optional) Device-specific authorization token, signed with PFM key. + | +
Payload + | +Description + | +
1:N + | +Device-specific authorization token + | +
Payload + | +Description + | +
1:32 + | +32 byte Nonce + | +
Payload + | +Description + | +
1:32 + | +32 byte Nonce + | +
33 + | +Number of PFMs Ids (P) + | +
34 + | +Number of CFM Ids (C) + | +
35:(P*4 + C*4 + 4) (V’) + | +PFM Version Id[0] - PFM Version Id[N]
+ +CFM Version Id[0] - CFM Version Id[N] + +PCD Version Id + |
+
V’+1:M + | +PFM Platform Id[0] - PFM Platform Id[N], each null terminated
+ +CFM Platform Id[0] - CFM Platform Id[N], each null terminated + +PCD Platform Id, null terminated + |
+
M+1:SGN + | +SGN(pk)(request message nonce + response message payload) + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2 + | +Firmware image to use for recovery:
+ +0: Exit Recovery + +1: Enter Recovery + |
+
Payload + | +Description + | +
1 + | +Port Id + | +
2:5 + | +Total size + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2:N + | +Recovery Image Payload + | +
Payload + | +Description + | +
1 + | +Port Id + | +
Payload + | +Description + | +
1 + | +Port Id + | +
2 (optional) + | +Identifier:
+ +0 = Version Id (default) + +1 = Platform Id + |
+
Payload + | +Description + | +
1:32 + | +Recovery Image Version Id + | +
Payload + | +Description + | +
1:N + | +Recovery Image Platform Id as null-terminated ASCII + | +
Payload + | +Description + | +
1 + | +Platform Measurement Number + | +
2:33 + | +32 byte Nonce + | +
Payload + | +Description + | +
1:32 + | +32 byte Nonce + | +
33 + | +Measurement length (L) + | +
34:33+L + | +Platform Measurement Value + | +
34+L:N + | +SGN(pk)( request message payload + response message payload) + | +
Payload + | +Description + | +
1 + | +Platform Measurement Number + | +
2:N + | +Measurement Extension + | +
Payload + | +Description + | +
1 + | +Reset Counter Type
+ +0 = Local Device + +1 = Protected External Devices (if applicable). These does not include external AC-RoTs that are challenged by the device. + +Other values are implementation specific. + |
+
2 + | +Port Id + | +
Payload + | +Description + | +
1:2 + | +Reset Count + | +
Payload + | +Description + | +
1 + | +[7:5] Reserved
+ +[4:2] HMAC Type: + +000 – SHA256 + +[1:0] Seed Type: + +00 – RSA: Seed is encrypted with an RSA public key + +01 – ECDH: Seed is an ECC public key, ASN.1/DER encoded + |
+
2 + | +Additional Seed Parameters
+ +RSA: + +[7:3] Reserved + +[2:0] Padding Scheme: + +000 – PKCS#1 v1.5 + +001 – OAEP using SHA1 + +010 – OAEP using SHA256 + +ECDH: + +[7:1] Reserved + +[0]: Seed Processing: + +0 – No additional processing. Raw ECDH output is the seed. + +1 – Seed is a SHA256 hash of the ECDH output. + |
+
3:4 + | +Seed Length (S) + | +
5:4+S (S’) + | +Seed + | +
S’+1:S’+2 + | +Cipher Text Length (C) + | +
S’+3:S’+2+C (C’) + | +Cipher Text + | +
C’+1:C’+2 + | +HMAC Length (H) + | +
C’+3:C’+2+H (H’) + | +HMAC + | +
H’+1:H’+64 (P0’) + | +PMR0 Sealing, 0’s to ignore. Unused bytes are first and must be set to 0. + | +
P0’+1:P0’+64 (P1’) + | +PMR1 Sealing, 0’s to ignore. Unused bytes are first and must be set to 0. + | +
P1’+1:P1’+64 (P2’) + | +PMR2 Sealing, 0’s to ignore. Unused bytes are first and must be set to 0. + | +
P2’+1:P2’+64 (P3’) + | +PMR3 Sealing, 0’s to ignore. Unused bytes are first and must be set to 0. + | +
P3’+1:P3’+64 + | +PMR4 Sealing, 0’s to ignore. Unused bytes are first and must be set to 0. + | +
Payload + | +Description + | +
+ | ++ | +
Payload + | +Description + | +
1:4 + | +Unsealing status + | +
Payload + | +Description + | +
1:4 + | +Unsealing status + | +
5:6 + | +Encryption Key Length + | +
7:N + | +Encryption Key + | +
Attribute + | +Description + | +
Description + | +Device Part or Description + | +
Device Type + | +Underlying Device Type of AC-RoT + | +
Remediation Policy + | +Policy(s) defining default remediation actions for integrity failure. + | +
Firmware Version + | +List of firmware versions + | +
Flash Areas/Offsets + | +List of offset and digests, used and unused + | +
Measurement + | +Firmware Measurements + | +
Measurement Algorithm + | +Algorithm used to calculate measurement. + | +
Public Key + | +Public keys in the key manifest + | +
Digest Algorithm + | +Algorithm used to calculate + | +
Signature + | +Firmware signature(s) + | +
>>>>> gd2md-html alert: inline image link here (to images/image11.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image12.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
>>>>> gd2md-html alert: inline image link here (to images/image13.png). Store image on your image server and adjust path/filename/extension if necessary.
(Back to top)(Next alert)
>>>>>
Register Name + | +Command + | +Length + | +R/W + | +Description + | +
Status + | +30h + | +2 + | +R + | +Command Status + | +
Firmware Version + | +32h + | +16 + | +R/W + | +Retrieve firmware version information + | +
Device Id + | +33h + | +8 + | +R + | +Retrieves Device Id + | +
Capabilities + | +34h + | +9 + | +R + | +Retrieves Device Capabilities + | +
Certificate Digest + | +3C + | +32 + | +R + | +SHA256 of Device Id Certificate + | +
Certificate + | +3D + | +4096 + | +R/W + | +Certificate from the AC-Rot + | +
Challenge + | +3E + | +32 + | +W + | +Nonce written by RoT + | +
Platform Configuration Register + | +03h + | +5Eh + | +R + | +Reads firmware measurement, calculated with S Nonce + | +
Payload + | +Description + | +
1 + | +Status:
+ + + 00 = Complete + + + 01 In Progress + + + 02 Error + |
+
2 + | +Error Data or Zero + | +
Payload + | +Description + | +
1:32 + | +Random 32 byte nonce chosen by PA-RoT + | +
Payload + | +Description + | +
1 + | +Length (L) of following hash digest. + | +
2:33 + | +H(Challenge Nonce || H(Firmware Measurement/PMR0)) + | +
34:N + | +Signature of HASH [2:33] + | +