@@ -2494,6 +2494,7 @@ Empty body.
2494
2494
The Seal/Unseal flow is described in the Cerberus Attestation Integration
2495
2495
specification.
2496
2496
2497
+
2497
2498
# Platform Active RoT (PA-RoT)
2498
2499
2499
2500
The PA-RoT is responsible for challenging the AC-RoT’s and collecting their
@@ -2535,24 +2536,18 @@ level and persistent storage level.
2535
2536
The following table lists the attributes stored in the PFM for each Active
2536
2537
component:
2537
2538
2538
-
2539
- Table 98 PFM Attributes
2540
-
2541
-
2542
- <table > <tr > <td ><strong >Attribute</strong > </td >
2543
- <td ><strong >Description</strong > </td > </tr > <tr > <td >Description </td >
2544
- <td >Device Part or Description </td > </tr > <tr > <td >Device Type </td >
2545
- <td >Underlying Device Type of AC-RoT </td > </tr > <tr > <td >Remediation Policy
2546
- </td > <td >Policy(s) defining default remediation actions for integrity failure.
2547
- </td > </tr > <tr > <td >Firmware Version </td > <td >List of firmware versions </td >
2548
- </tr > <tr > <td >Flash Areas/Offsets </td > <td >List of offset and digests, used
2549
- and unused </td > </tr > <tr > <td >Measurement </td > <td >Firmware Measurements
2550
- </td > </tr > <tr > <td >Measurement Algorithm </td > <td >Algorithm used to calculate
2551
- measurement. </td > </tr > <tr > <td >Public Key </td > <td >Public keys in the key
2552
- manifest </td > </tr > <tr > <td >Digest Algorithm </td > <td >Algorithm used to
2553
- calculate </td > </tr > <tr > <td >Signature </td > <td >Firmware signature(s) </td >
2554
- </tr > </table >
2555
-
2539
+ | Attribute | Description |
2540
+ | -----------------------| ---------------------------------------------|
2541
+ | Description | Device Part or Description |
2542
+ | Device Type | Underlying Device Type of AC-RoT |
2543
+ | Remediation Policy | Remediation actions for integrity failure. |
2544
+ | Firmware Version | List of firmware versions |
2545
+ | Flash Areas/Offsets | List of offset and digests, used and unused |
2546
+ | Measurement | Firmware Measurements |
2547
+ | Measurement Algorithm | Algorithm used to calculate measurement. |
2548
+ | Public Key | Public keys in the key manifest. |
2549
+ | Digest Algorithm | Algorithm used to calculate. |
2550
+ | Signature | Firmware signature(s) |
2556
2551
2557
2552
The PA-RoT actively takes measurements of flash from platform firmware, the PFM
2558
2553
provides metadata that instructs the RoT on measurement and signature
@@ -2571,6 +2566,7 @@ Note: The PA-RoT and AC-RoT enforce secure boot and only permit the download of
2571
2566
digitally signed and unrevoked firmware. A PFM or CFM mismatch can only occur
2572
2567
when firmware integrity is brought into question.
2573
2568
2569
+
2574
2570
## RoT External Communication interface
2575
2571
2576
2572
The PA-RoT connects to the platform through, either SPI, QSPI depending on the
@@ -2582,21 +2578,7 @@ all AC-RoTs in the platform. The BMC bridges the PA-RoT to the Rack Manager,
2582
2578
which in-turn bridges the rack to the Datacenter management network. The
2583
2579
interface into the PA-RoT is as follows:
2584
2580
2585
-
2586
- Figure 12 External Communication Interface
2587
-
2588
-
2589
-
2590
-
2591
- <p id =" gdcalert11 " ><span style =" color : red ; font-weight : bold " >>>>>>
2592
- gd2md-html alert: inline image link here (to images/image11.png). Store image on
2593
- your image server and adjust path/filename/extension if necessary.
2594
- </span ><br >(<a href =" # " >Back to top</a >)(<a href =" #gdcalert12 " >Next
2595
- alert</a >)<br ><span style =" color : red ; font-weight : bold " >>>>>> </span ></p >
2596
-
2597
-
2598
- ![ alt_text] ( images/image11.png " image_tooltip ")
2599
-
2581
+ > TODO: figure 12
2600
2582
2601
2583
The Datacenter Management (DCM) software can communicate with the PA-RoT
2602
2584
Out-Of-Band (OOB) through the Rack Manager. The Rack Manager allows tunneling
@@ -2606,6 +2588,7 @@ authenticated and encrypted. The Datacenter Management Software can collect
2606
2588
the RFM measurements and other challenge data over this secure channel. Secure
2607
2589
updates are also possible over this channel.
2608
2590
2591
+
2609
2592
## Host Interface
2610
2593
2611
2594
The host can communicate with the PA-RoT and AC-RoTs through the BMC host
@@ -2624,6 +2607,7 @@ status and make a determination on the remediation.
2624
2607
2625
2608
The OOB communication to Cerberus requires TLS and Certificate Authentication.
2626
2609
2610
+
2627
2611
# Legacy Interface
2628
2612
2629
2613
The legacy interface is defined for backward combability with devices that do
@@ -2634,6 +2618,7 @@ structures will closely match that of the MCTP protocol version. Legacy
2634
2618
interfaces to no support session based authentication but permit signed
2635
2619
measurements.
2636
2620
2621
+
2637
2622
## Protocol Format
2638
2623
2639
2624
The legacy protocol leverages the SMBus Write/Read Word and Block commands.
@@ -2648,6 +2633,7 @@ repeated start and finally a slave address read. The master keeps clocking as
2648
2633
the slaves responds with the selected data. The command code byte can be
2649
2634
considered register space.
2650
2635
2636
+
2651
2637
### PEC Handling
2652
2638
2653
2639
An SMBus legacy protocol implementation may leverage the 8bit SMBus Packet Error
@@ -2661,6 +2647,7 @@ carried the incorrect PEC value or drop the data for the transaction and any
2661
2647
further transactions (read or write) until the next valid read or write Start
2662
2648
transaction is received.
2663
2649
2650
+
2664
2651
### Message Splitting
2665
2652
2666
2653
The protocol supports Write Block and Read Block commands. Standard SMBus
@@ -2676,6 +2663,7 @@ entire message. Each segment includes decrementing packet number that
2676
2663
sequentially identifies the part of the overall message. To stay within the
2677
2664
protocol length each message segment must be no longer than 255 bytes.
2678
2665
2666
+
2679
2667
### Payload Format
2680
2668
2681
2669
The payload portions of the SMBus Write and Read blocks will encapsulate the
@@ -2688,6 +2676,7 @@ The data blocks of the Write and Read commands will encapsulate the message
2688
2676
payload. The encapsulated payload includes a uint16 register offset and data
2689
2677
section.
2690
2678
2679
+
2691
2680
### Register Format
2692
2681
2693
2682
The SMBUS command byte indexes the register, while additional writes offsets
@@ -2703,179 +2692,118 @@ writes can be performed by writing the seal register to the zero offset.
2703
2692
The following diagram depicts register read access flow for a large register
2704
2693
space:
2705
2694
2706
-
2707
- Figure 14 Register Read Flow
2708
-
2709
-
2710
-
2711
- <p id =" gdcalert12 " ><span style =" color : red ; font-weight : bold " >>>>>>
2712
- gd2md-html alert: inline image link here (to images/image12.png). Store image on
2713
- your image server and adjust path/filename/extension if necessary.
2714
- </span ><br >(<a href =" # " >Back to top</a >)(<a href =" #gdcalert13 " >Next
2715
- alert</a >)<br ><span style =" color : red ; font-weight : bold " >>>>>> </span ></p >
2716
-
2717
-
2718
- ![ alt_text] ( images/image12.png " image_tooltip ")
2719
-
2695
+ > TODO: Figure 14
2720
2696
2721
2697
The following diagram depicts register write access flow for a large register
2722
2698
space, with required seal (update complete bit):
2723
2699
2700
+ > TODO: Figure 15
2724
2701
2725
- Figure 15 Register Write Flow
2726
-
2727
-
2728
-
2729
- <p id =" gdcalert13 " ><span style =" color : red ; font-weight : bold " >>>>>>
2730
- gd2md-html alert: inline image link here (to images/image13.png). Store image on
2731
- your image server and adjust path/filename/extension if necessary.
2732
- </span ><br >(<a href =" # " >Back to top</a >)(<a href =" #gdcalert14 " >Next
2733
- alert</a >)<br ><span style =" color : red ; font-weight : bold " >>>>>> </span ></p >
2734
-
2735
-
2736
- ![ alt_text] ( images/image13.png " image_tooltip ")
2737
2702
2738
2703
### Legacy Active Component RoT Commands
2739
2704
2740
2705
The following table describes the commands accepted by the Active Component RoT.
2741
2706
All commands are master initiated. The command number is not representative of
2742
2707
a contiguous memory space, but an index to the respective register
2743
2708
2744
- Table 99 Commands
2745
-
2746
-
2747
- <table > <tr > <td ><strong >Register Name</strong > </td >
2748
- <td ><strong >Command</strong > </td > <td ><strong >Length</strong > </td >
2749
- <td ><strong >R/W</strong > </td > <td ><strong >Description</strong > </td > </tr > <tr >
2750
- <td >Status </td > <td >0x30 </td > <td >2 </td > <td >R </td > <td >Command Status </td >
2751
- </tr > <tr > <td >Firmware Version </td > <td >0x32 </td > <td >16 </td > <td >R/W </td >
2752
- <td >Retrieve firmware version information </td > </tr > <tr > <td >Device Id </td >
2753
- <td >0x33 </td > <td >8 </td > <td >R </td > <td >Retrieves Device Id </td > </tr > <tr >
2754
- <td >Capabilities </td > <td >0x34 </td > <td >9 </td > <td >R </td > <td >Retrieves
2755
- Device Capabilities </td > </tr > <tr > <td >Certificate Digest </td > <td >3C </td >
2756
- <td >32 </td > <td >R </td > <td >SHA256 of Device Id Certificate </td > </tr > <tr >
2757
- <td >Certificate </td > <td >3D </td > <td >4096 </td > <td >R/W </td > <td >Certificate
2758
- from the AC-Rot </td > </tr > <tr > <td >Challenge </td > <td >3E </td > <td >32 </td >
2759
- <td >W </td > <td >Nonce written by RoT </td > </tr > <tr > <td >Platform Configuration
2760
- Register </td > <td >0x03 </td > <td >0x5e </td > <td >R </td > <td >Reads firmware
2761
- measurement, calculated with S Nonce </td > </tr > </table >
2709
+ | Register Name | Command | Length | R/W | Description |
2710
+ | ---------------------------------| ---------| --------| -----| -----------------------------------------------------|
2711
+ | Status | 0x30 | 2 | R | Command Status |
2712
+ | Firmware Version | 0x32 | 16 | R/W | Retrieve firmware version information |
2713
+ | Device Id | 0x33 | 8 | R | Retrieves Device Id |
2714
+ | Capabilities | 0x34 | 9 | R | Retrieves Device Capabilities |
2715
+ | Certificate Digest | 0x3c | 32 | R | SHA256 of Device Id Certificate |
2716
+ | Certificate | 0x3d | 4096 | R/W | Certificate from the AC-Rot |
2717
+ | Challenge | 0x3e | 32 | W | Nonce written by RoT |
2718
+ | Platform Configuration Register | 0x03 | 0x5e | R | Reads firmware measurement, calculated with S Nonce |
2719
+
2762
2720
2763
2721
### Legacy Command Format
2764
2722
2765
2723
The following section describes the register format for AC-RoT that do not
2766
2724
implement SMBUS and comply with the legacy measurement exchange protocol.
2767
2725
2768
-
2769
-
2770
- 1. Status
2726
+ #### Status
2771
2727
2772
2728
The SMBUS read command reads detailed information on error status. The status
2773
2729
register is issued between writing the challenge nonce and reading the
2774
2730
Measurement. The delay time for deriving the Measurement must comply with the
2775
2731
Capabilities command.
2776
2732
2733
+ | Payload | Description |
2734
+ | ---------| -----------------------------------------------------------|
2735
+ | 1 | Status: 0x00 = Complete, 0x01 = In Progress, 0x02 = Error |
2736
+ | 2 | Error Data or Zero |
2777
2737
2778
- Table 100 Status Register
2779
-
2780
-
2781
- <table > <tr > <td ><strong >Payload</strong > </td > <td ><strong >Description</strong >
2782
- </td > </tr > <tr > <td >1 </td > <td >Status: <p >
2783
-
2784
- 00 = Complete <p>
2785
-
2786
- 01 In Progress <p>
2787
-
2788
- 02 Error </td> </tr> <tr> <td>2 </td> <td>Error Data or Zero </td> </tr>
2789
- </table>
2790
-
2791
-
2792
-
2738
+ <!-- NOTE: all of the table references below are broken and ened to be replaced
2739
+ with proper anchor links. -->
2793
2740
2794
- 2. Firmware Version
2741
+ #### Firmware Version
2795
2742
2796
2743
The SMBUS write command payload sets the index. The subsequent SMBUS read
2797
2744
command reads the response. For register payload description see response:
2798
2745
Table 11 Firmware Version Response
2799
2746
2747
+ #### Device Id
2800
2748
2749
+ The SMBUS read command reads the response. For register payload
2750
+ description see response: Table 1 Field Definitions.
2801
2751
2802
- 3. Device Id
2803
-
2804
- The SMBUS read command reads the response. For register payload
2805
- description see response: Table 1 Field Definitions
2806
-
2807
- 4. Device Capabilities
2808
-
2809
- The SMBUS read command reads the response. For register payload
2810
- description see response:
2752
+ #### Device Capabilities
2811
2753
2754
+ The SMBUS read command reads the response. For register payload description see
2755
+ response: Table 13 Device Capabilities Response
2812
2756
2813
- Table 13 Device Capabilities Response
2814
-
2815
- 5. Certificate Digest
2757
+ #### Certificate Digest
2816
2758
2817
2759
The SMBUS read command reads the response. For register payload description
2818
- see response: Table 24 GET DIGEST Response
2760
+ see response: Table 24 ` GET DIGEST ` Response
2819
2761
2820
2762
The PA-Rot will use the digest to determine if it has the certificate already
2821
2763
cached. Unlike MCTP, only the Alias and Device Id cert is supported.
2822
2764
Therefore, it must be CA signed by a mutually trusted CA, as the CA Public Cert
2823
2765
is not present
2824
2766
2825
-
2826
-
2827
- 6. Certificate
2767
+ #### Certificate
2828
2768
2829
2769
The SMBUS write command writes the offset into the register space. For register
2830
- payload description see response: Table 26 GET CERTIFICATE Response
2831
-
2770
+ payload description see response: Table 26 ` GET CERTIFICATE ` Response
2832
2771
2833
- #### Unlike MCTP, only the Alias and Device Id cert is supported. Therefore,
2772
+ Unlike MCTP, only the Alias and Device Id certificates are supported. Therefore,
2834
2773
it must be CA signed by mutually trusted CA, as the CA Public Cert is not
2835
2774
present in the reduced challenge
2836
2775
2837
2776
The SMBUS write command writes a nonce for measurement freshness.
2838
2777
2778
+ | Payload | Description |
2779
+ | ---------| ---------------------------------------|
2780
+ | 1:32 | Random 32 byte nonce chosen by PA-RoT |
2839
2781
2840
- Table 101 Challenge Register
2841
-
2842
-
2843
- <table > <tr > <td ><strong >Payload</strong > </td > <td ><strong >Description</strong >
2844
- </td > </tr > <tr > <td >1:32 </td > <td >Random 32 byte nonce chosen by PA-RoT </td >
2845
- </tr > </table >
2846
-
2847
-
2848
-
2849
-
2850
- 7. Measurement
2782
+ #### Measurement
2851
2783
2852
2784
The SMBUS read command that reads the signed measurement with the nonce from the
2853
2785
hallenge above. The PA-RoT must poll the Status register for completion after
2854
2786
issuing the Challenge and before reading the Measurement.
2855
2787
2788
+ | Payload | Description |
2789
+ | ---------| --------------------------------------|
2790
+ | 1 | Length (L) of following hash digest. |
2791
+ | 2:33 | ` H(Challenge Nonce ** H(PMR0)) ` |
2792
+ | 34: N | Signature of HASH [ 2:33] |
2856
2793
2857
- Table 102 Measurement Register
2858
-
2859
-
2860
- <table > <tr > <td ><strong >Payload</strong > </td > <td ><strong >Description</strong >
2861
- </td > </tr > <tr > <td >1 </td > <td >Length (L) of following hash digest. </td >
2862
- </tr > <tr > <td >2:33 </td > <td >H(Challenge Nonce || H(Firmware Measurement/PMR0))
2863
- </td > </tr > <tr > <td >34:N </td > <td >Signature of HASH [2:33] </td > </tr >
2864
- </table >
2865
2794
2866
2795
# References
2867
- 1. DICE Architecture
2868
- [https://trustedcomputinggroup.org/work-groups/dice-architectures](https://trustedcomputinggroup.org/work-groups/dice-architectures)
2869
- 2. RIoT
2870
- [https://www.microsoft.com/en-us/research/publication/riot-a-foundation-for-trust-in-the-internet-of-things](https://www.microsoft.com/en-us/research/publication/riot-a-foundation-for-trust-in-the-internet-of-things)
2871
- 3. DICE and RIoT Keys and Certificates
2872
- [https://www.microsoft.com/en-us/research/publication/device-identity-dice-riot-keys-certificates](https://www.microsoft.com/en-us/research/publication/device-identity-dice-riot-keys-certificates)
2873
- 4. USB Type C Authentication Specification
2874
- [http://www.usb.org/developers/docs/](http://www.usb.org/developers/docs/)
2875
- 5. PCIe Device Security Enhancements specification
2876
- [https://www.intel.com/content/www/us/en/io/pci-express/pcie-device-security-enhancements-spec.html](https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fio%2Fpci-express%2Fpcie-device-security-enhancements-spec.html&data=02%7C01%7Cbryankel%40microsoft.com%7C6b6c323d9f5a430b6e2308d5c00880fc%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636626065116355800&sdata=Kebb47PfKoWc8jO1KHCDCxMriLH5gHncp3lCqyT6WAo%3D&reserved=0)
2877
- 6. **NIST Special Publication 800-108 ** Recommendation for Key Derivation
2878
- Using Pseudorandom Functions.
2879
- [http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-108.pdf](http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-108.pdf)
2880
- 7. TCG PC Client Platform Firmware Profile Specification** **
2881
- [https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification](https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification)
2796
+ 1 . DICE Architecture
2797
+ < https://trustedcomputinggroup.org/work-groups/dice-architectures >
2798
+ 2 . RIoT
2799
+ < https://www.microsoft.com/en-us/research/publication/riot-a-foundation-for-trust-in-the-internet-of-things >
2800
+ 3 . DICE and RIoT Keys and Certificates
2801
+ < https://www.microsoft.com/en-us/research/publication/device-identity-dice-riot-keys-certificates >
2802
+ 4 . USB Type C Authentication Specification
2803
+ < http://www.usb.org/developers/docs >
2804
+ 5 . PCIe Device Security Enhancements specification
2805
+ < https://www.intel.com/content/www/us/en/io/pci-express/pcie-device-security-enhancements-spec.html >
2806
+ 6 . NIST Special Publication 800-108 - Recommendation for Key Derivation Using Pseudorandom Functions.
2807
+ < http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-108.pdf >
2808
+ 7 . TCG PC Client Platform Firmware Profile Specification
2809
+ < https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification >
0 commit comments