freenode
Kernel & Low-Level

Rust SPDM requester proposed for Linux device authentication

Alistair Francis aims the smallest upstream SPDM stack at untrusted PCIe and related devices, with CMA wired through the TSM path.

Alistair Francis has posted a 21-part series that implements a Security Protocol and Data Model (SPDM) requester in Rust for the Linux kernel, aimed at authenticating and attesting devices the kernel must treat as untrusted until proven otherwise.

SPDM covers authentication, attestation, and key exchange across transports such as PCIe, MCTP, ATA, SCSI, NVMe, and TCP. The DMTF specifications run to roughly 200 to 250 pages. From the kernel’s point of view the device replies are untrusted input from a complex protocol, which makes the parser a natural fit for Rust’s safety model.

The series is deliberately minimal. It can speak enough of the protocol to complete a basic handshake and report a device as authenticated to userspace. It does not yet hand certificates or evidence up, accept a userspace nonce, or cover post-quantum or other advanced SPDM features. Francis notes earlier RFCs already showed those paths are workable, including via a Trusted Security Module (TSM) driver once related infrastructure lands.

Relative to prior C work by Lukas Wunner and earlier RFCs, this version folds PCIe Component Measurement and Authentication (CMA) in as a TSM driver so PCIe can reuse existing TSM probe policy and present a more consistent userspace interface. The library still draws on pieces of that C foundation where needed, but stands alone as an upstream candidate.

Jonathan Cameron has begun reviewing the series, marking several SPDM command and CMA pieces as acceptable from a protocol and PCI standpoint while flagging small cleanups. The immediate goal is a small, reviewable base that other attestation and IDE work can build on.