An Open-Source SPDM Implementation for Secure Device Communication

 
An opensource SPDM
implementation for secure
device communication
 
Jiewen Yao, Principal Engineer, Intel
Xiaoyu Ruan, Principal Engineer, Intel
 
Jiewen Yao
 
Jiewen Yao
 is a principal engineer
in the Intel Architecture, Graphics,
and Software Group. He has been
engaged as a firmware developer
for over 15 years. He is a member
of the UEFI Security sub team, and
the TCG PC Client sub working
group.
He is the creator of the open
source SPDMcode project.
 
Xiauyu Ruan
 
Xiaoyu Ruan
 is a principal
engineer in the Security
Architecture and Engineering
group at Intel.  He has 17 years of
experience in cryptography and
security architecture and
implementation on embedded
systems.
He is a co-author of DMTF SPDM
specifications.
 
Part I - SPDM
 
4
 
SPDM
 
5
 
DSP0274 Secure Protocol and Data Model Specification
Part of Distributed Management Task Force (DMTF) Platform
Management Components Intercommunication (PMCI)
SPDM1.0 (Dec 2019) – Device authentication and measurement
SPDM1.1 (July 2020) – Device session key establishment and
secure communication (session)
SPDM1.2 (WIP, ETA Q2 2021) – See later slide for candidate
features
Adoption: DMTF, PCI/CXL, MIPI, USB, TCG, …
 
SPDM 1.0
 
6
Device
Measurement
Collection /
Attestation
Device
Authentication
Device
Identification
 
* source: SPDM 1.0 specification
 
SPDM 1.1
Diffie-Hellman (DH) based
Key Exchange +
(Mutual) Authentication
Pre-Shared Key (PSK)
based Key Exchange
 
or
 
7
 
* source: SPDM 1.1 specification
 
SPDM 1.2 Candidate Features
 
8
 
* source: OCP tech week 2020
 
Transport Layer Binding
 
9
SPDM Message
DMTF
SPDM over MCTP
DMTF
MCTP over SMBus
PCI
Data Object
Exchange (DOE)
USB
Control Transfer
SMBus Device
PCI Device
USB Device
 
TCG SPDM support
 
10
 
Described in 
TCG PC Client Platform Firmware Profile Specification
(Draft public review)
Device measurement (hardware/firmware) –> TPM
PCR2 (EV_EFI_SPDM_FIRMWARE_BLOB)
Device measurement (hardware/firmware configuration) -> TPM
PCR3 (EV_EFI_SPDM_FIRMWARE_CONFIG)
 
Part II - 
SPDMcode
 
11
 
SPDMcode
 
12
 
An open-source SPDM sample implementation (requester or responder).
It is BSD licence.
It is written in C language.
It includes a fake SPDM requester and responder in OS.
It can dump/trace the SPDM message flow.
SPDM Responder
Device
SPDM Requester
Device
 
SPDMcode
 design
 
13
SpdmRequesterLib
SpdmCommonLib
SpdmResponderLib
SpdmSecured
MessageLib
SpdmTransportXXXLib
SPDMcode
SpdmDeviceIo
 
DSP0274 SPDM
 
DSP0277 Secured Message
 
DSP0275 SPDM Over MCTP
PCI DOE Message
 
DSP0237 MCTP Over SMBus
PCI DOE mailbox
 
Security Policy
Crypto Engine (Key, RNG, …)
Device RoT
Measurement
Crypto Engine
Crypto Engine
SpdmDevice
SecreteLib
SpdmDevice
SecreteLib
 
Feature
 
14
 
Implemented SPDM 1.0 and 1.1.
Support openssl/embedtls/3
rd
PartyCryptoLib as crypto engine
Support algos defined in SPDM. (SHA/SHA3,
RSASSA/RSAPSS/ECDSA, FFDHE/ECDHE, AES-GCM/CHACHA20-
POLY1305)
Programming Context :No heap, no global variable.
Execution Context: Link as OS Application, UEFI Driver, BMC
module, etc.
Build in Windows (VS2019/Clang), Linux (GCC/Clang).
 
Additional work for 
SPDMcode
 consumer
 
15
 
Link a crypto library (maybe hardware accelerator)
Protect the private key
Provision the public certificate
Support random number seed and random number generator
Put 
SPDMcode
 in a protected execution environment
to prevent local attack or side channel attack, etc.
Provide transport layer send/receive function.
Implement proxy to handle device measurement
e.g. extend to TPM PCR or attestation
Support the different use case for SPDM secure session
e.g. PCI express key programming, link encryption setup.
 
 
Size
 
16
 
Demo (init connection)
 
17
 
Demo (challeng/auth)
 
18
 
Demo (session creation)
 
19
 
Demo (secured message)
 
20
 
SpdmDump tool
 
21
 
Similar to ssldump.
Assuming there is PCAP file available for all SPDM transation
Sample provided by SPDM responder emu or SPDM requester emu.
Parse PCAP file and dump all SPDM transation in OS.
Support different mode (default, quite, all)
Support different transport layer
MCTP or PCI_DOE
Support known SPDM vendor defined message dump.
IDE_KM
Support secured message dump
Need user input --psk or --dhe_secret.
 
 
SpdmDump – SPDM over MCTP
 
22
 
SpdmDump – SPDM over PCI_DOE
 
23
 
SpdmDump – Secured SPDM
 
24
 
SpdmDump – dump all mode
 
25
 
Summary
 
26
 
SPDM specification
It is well adopted in multiple standard orgnizations.
SPDM can be used to authenticate device and collect measurement.
SPDM session can be used for secure communication between devices.
SPDMcode
It is an open source SPDM sample implementation.
It is BSD license and written in C.
It helps you learn SPDM and create SPDM capable devices.
SpdmDump tool can help you analyse SPDM transaction.
 
Reference
 
27
 
SPDM Specification
DSP0274 - Security Protocol and Data Model (SPDM) Specification
DSP0275 - Security Protocol & Data Model (SPDM) over MCTP Binding Specification
DSP0276 - Secured MCTP Messages over MCTP Binding Specification
DSP0277 - Secured Messages using SPDM Specification
DSP2058 - Security Protocol and Data Model (SPDM) Architecture White Paper
https://www.dmtf.org/standards/pmci
TCG SPDM Support
TCG PC Client Platform Firmware Profile Specification (Draft for review)
https://trustedcomputinggroup.org/wp-content/uploads/TCG_PCClient_PFP_r1p05_v22_02dec2020.pdf
PCI Support
ECR PCI Component Measurement and Authentication (CMA)
ECR PCI  Data Object Exchange (DOE)
ECR PCI Integrity and Data Encryption (IDE)
https://pcisig.com/specifications/review-zone
USB Support
USB Authentication Specification
https://www.usb.org/document-library/usb-authentication-specification-rev-10-ecn-and-errata-through-january-7-2019
 
Reference
 
28
 
SPDMcode
 pre-production code / document
https://github.com/jyao1/openspdm
SpdmDump tool:
https://github.com/jyao1/openspdm/tree/master/Tool/SpdmDump
 
EDKII pre-production code for device security
https://github.com/jyao1/edk2/tree/DeviceSecurity
 
 
 
Question
 
29
Slide Note
Embed
Share

This article introduces an open-source SPDM (Secure Protocol and Data Model) implementation for secure device communication, developed by Jiewen Yao and Xiaoyu Ruan, Principal Engineers at Intel. SPDM aims to enhance device security through protocols for device authentication, session key establishment, and secure communication. The SPDM project includes specifications for device identification, authentication, attestation, key exchange methods, and candidate features for managing certificate chains, event authentication, and TCG DICE support. It is designed to be adopted by organizations like DMTF, PCI/CXL, MIPI, USB, and TCG for improved device security.

  • SPDM
  • Secure Communication
  • Device Security
  • Open Source
  • Intel

Uploaded on Sep 20, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. An opensource SPDM implementation for secure device communication Jiewen Yao, Principal Engineer, Intel Xiaoyu Ruan, Principal Engineer, Intel

  2. Jiewen Yao Jiewen Yao is a principal engineer in the Intel Architecture, Graphics, and Software Group. He has been engaged as a firmware developer for over 15 years. He is a member of the UEFI Security sub team, and the TCG PC Client sub working group. He is the creator of the open source SPDMcode project.

  3. Xiauyu Ruan Xiaoyu Ruan is a principal engineer in the Security Architecture and Engineering group at Intel. He has 17 years of experience in cryptography and security architecture and implementation on embedded systems. He is a co-author of DMTF SPDM specifications.

  4. Part I - SPDM 4

  5. SPDM DSP0274 Secure Protocol and Data Model Specification Part of Distributed Management Task Force (DMTF) Platform Management Components Intercommunication (PMCI) SPDM1.0 (Dec 2019) Device authentication and measurement SPDM1.1 (July 2020) Device session key establishment and secure communication (session) SPDM1.2 (WIP, ETA Q2 2021) See later slide for candidate features Adoption: DMTF, PCI/CXL, MIPI, USB, TCG, 5

  6. SPDM 1.0 Device Identification Device Authentication Device Measurement Collection / Attestation 6 * source: SPDM 1.0 specification

  7. SPDM 1.1 Diffie-Hellman (DH) based Key Exchange + (Mutual) Authentication or Pre-Shared Key (PSK) based Key Exchange 7 * source: SPDM 1.1 specification

  8. SPDM 1.2 Candidate Features Feature Description A set of commands to manage certificate chains in slots 1-7. Could include CSR export and slot policies. Set Certificate Mechanism to send asynchronous events, related to SPDM, to a registered listener. Eventing A set of commands to authenticate devices behind non-transparent bridges. Under discussion, does the PA-RoT or intermediate device perform the authentication? Multi-tier Authentication Address the size issue with the current certificate / cert chain. Smaller Certificates Define a mechanism to produce a manifest of expected measurements for a given device, and modifications to the MEASUREMENTS command to report measurements in a way that is compatible with the reference manifest. Measurement Manifests Support the use of TCG DICE throughout SPDM, including in signature generation, Set Certificate, and events. TCG DICE Support Mechanism to cause a device to generate a new set of Device Keys and invalidate all elements that depend on the existing Device Keys. Reprovisioning * source: OCP tech week 2020 8

  9. Transport Layer Binding SPDM Message DMTF SPDM over MCTP PCI USB Data Object Exchange (DOE) Control Transfer DMTF MCTP over SMBus SMBus Device PCI Device USB Device 9

  10. TCG SPDM support Described in TCG PC Client Platform Firmware Profile Specification (Draft public review) Device measurement (hardware/firmware) > TPM PCR2 (EV_EFI_SPDM_FIRMWARE_BLOB) Device measurement (hardware/firmware configuration) -> TPM PCR3 (EV_EFI_SPDM_FIRMWARE_CONFIG) 10

  11. Part II - SPDMcode 11

  12. SPDMcode An open-source SPDM sample implementation (requester or responder). It is BSD licence. It is written in C language. It includes a fake SPDM requester and responder in OS. It can dump/trace the SPDM message flow. 12

  13. SPDMcode design Security Policy Crypto Engine (Key, RNG, ) Device RoT Measurement SPDM Requester Device SPDM Responder Device SpdmDevice SecreteLib SpdmDevice SecreteLib SpdmRequesterLib SpdmCommonLib SpdmResponderLib DSP0274 SPDM SpdmSecured MessageLib DSP0277 Secured Message SPDMcode DSP0275 SPDM Over MCTP PCI DOE Message SpdmTransportXXXLib DSP0237 MCTP Over SMBus PCI DOE mailbox SpdmDeviceIo Crypto Engine Crypto Engine 13

  14. Feature Implemented SPDM 1.0 and 1.1. Support openssl/embedtls/3rdPartyCryptoLib as crypto engine Support algos defined in SPDM. (SHA/SHA3, RSASSA/RSAPSS/ECDSA, FFDHE/ECDHE, AES-GCM/CHACHA20- POLY1305) Programming Context :No heap, no global variable. Execution Context: Link as OS Application, UEFI Driver, BMC module, etc. Build in Windows (VS2019/Clang), Linux (GCC/Clang). 14

  15. Additional work for SPDMcode consumer Link a crypto library (maybe hardware accelerator) Protect the private key Provision the public certificate Support random number seed and random number generator Put SPDMcode in a protected execution environment to prevent local attack or side channel attack, etc. Provide transport layer send/receive function. Implement proxy to handle device measurement e.g. extend to TPM PCR or attestation Support the different use case for SPDM secure session e.g. PCI express key programming, link encryption setup. 15

  16. Size VS2019 (DLL) Requester (K) Responder (K) Raw library, no crypto (X64) 26 29 With mbedtls (X64) 138 141 Raw library, no crypto (IA32) 20 21 With mbedtls (IA32) 110 111 16

  17. Demo (init connection) 17

  18. Demo (challeng/auth) 18

  19. Demo (session creation) 19

  20. Demo (secured message) 20

  21. SpdmDump tool Similar to ssldump. Assuming there is PCAP file available for all SPDM transation Sample provided by SPDM responder emu or SPDM requester emu. Parse PCAP file and dump all SPDM transation in OS. Support different mode (default, quite, all) Support different transport layer MCTP or PCI_DOE Support known SPDM vendor defined message dump. IDE_KM Support secured message dump Need user input --psk or --dhe_secret. 21

  22. SpdmDump SPDM over MCTP 22

  23. SpdmDump SPDM over PCI_DOE 23

  24. SpdmDump Secured SPDM 24

  25. SpdmDump dump all mode 25

  26. Summary SPDM specification It is well adopted in multiple standard orgnizations. SPDM can be used to authenticate device and collect measurement. SPDM session can be used for secure communication between devices. SPDMcode It is an open source SPDM sample implementation. It is BSD license and written in C. It helps you learn SPDM and create SPDM capable devices. SpdmDump tool can help you analyse SPDM transaction. 26

  27. Reference SPDM Specification DSP0274 - Security Protocol and Data Model (SPDM) Specification DSP0275 - Security Protocol & Data Model (SPDM) over MCTP Binding Specification DSP0276 - Secured MCTP Messages over MCTP Binding Specification DSP0277 - Secured Messages using SPDM Specification DSP2058 - Security Protocol and Data Model (SPDM) Architecture White Paper https://www.dmtf.org/standards/pmci TCG SPDM Support TCG PC Client Platform Firmware Profile Specification (Draft for review) https://trustedcomputinggroup.org/wp-content/uploads/TCG_PCClient_PFP_r1p05_v22_02dec2020.pdf PCI Support ECR PCI Component Measurement and Authentication (CMA) ECR PCI Data Object Exchange (DOE) ECR PCI Integrity and Data Encryption (IDE) https://pcisig.com/specifications/review-zone USB Support USB Authentication Specification https://www.usb.org/document-library/usb-authentication-specification-rev-10-ecn-and-errata-through-january-7-2019 27

  28. Reference SPDMcode pre-production code / document https://github.com/jyao1/openspdm SpdmDump tool: https://github.com/jyao1/openspdm/tree/master/Tool/SpdmDump EDKII pre-production code for device security https://github.com/jyao1/edk2/tree/DeviceSecurity 28

  29. Question 29

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#