Files
papers/lux-trust-fabric.tex
zeekayandHanzo Dev 3d3c0f18fa papers: Lux Trust Fabric — post-quantum attestation and confidential I/O
The architecture that places physical entropy, device identity, attestation and
confidential I/O in one stack, and the two decisions that make it work.

The first is where the post-quantum gap actually sits. Lux already verifies
attestation evidence on chain (LP-127), already releases keys against it in the
KMS, and now specifies the entropy underneath (LP-187). What it does not have
is an attester whose identity is post-quantum: the vendor chains it consumes —
Intel DCAP, ARM CCA, Nitro, AMD KDS — are ECDSA, because the roots in that
silicon are ECDSA. A session key lives minutes and a measurement lives for a
job, but a device identity is fused at manufacture and cannot be rotated, so it
has the longest horizon and the least ability to change. That is the one place
an add-on card cannot reach, which is why the product is a licensable block
rather than a card, and why the card exists to make the block credible.

The second is the performance split. Post-quantum cryptography establishes
trust — identity, firmware authentication, evidence, session establishment —
and symmetric cryptography moves data. Stated as a rule rather than an
optimisation: no post-quantum operation on a per-packet, per-DMA or
per-cache-line path. An architecture that breaks it will be measured, found
slow, and the result blamed on post-quantum cryptography rather than on where
it was put.

States the boundaries plainly, because blurring them is how attestation
architectures lose the people who evaluate them carefully: a discrete card
cannot attest an opaque neighbour on the same bus; entropy is not remotely
verifiable and health tests are all a device can honestly attest about it; and
node-local entropy never decides a consensus outcome peers must reproduce.

Specifies no new evidence format and no new device protocol — EAT for evidence,
SPDM for transport, upstream rather than forked. Privacy is designed in: the
identity a device presents is separate from the identity it holds, and default
evidence carries properties rather than identifiers, because a relying party
needs to decide about a key and cannot be made to forget a serial number.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-26 15:25:23 -07:00

479 lines
20 KiB
TeX

\documentclass[11pt,a4paper]{article}
\usepackage{shared/luxcover}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{float}
\usepackage{array}
\usepackage{tabularx}
\input{shared/lstlang}
\hypersetup{colorlinks=true,linkcolor=black,citecolor=blue,urlcolor=blue}
\lstset{basicstyle=\ttfamily\scriptsize,breaklines=true,frame=single,numbers=none}
\newtheorem{principle}{Principle}
\newtheorem{definition}{Definition}[section]
\title{Lux Trust Fabric\\
Open Post-Quantum Attestation, Physical Entropy, and Confidential I/O}
\author{Lux Industries, Inc.}
\begin{document}
\maketitle
\begin{abstract}
A workload crossing a modern accelerator touches a network interface, a host
CPU, a device interconnect, device memory, and often a second accelerator.
Securing any one of those is not securing the path. This paper describes an
architecture in which a relying party establishes cryptographic confidence in
the hardware, firmware, and workload that will process its data \emph{before}
releasing that data --- and then pays almost nothing for it thereafter.
The organising decision is a split. Post-quantum cryptography establishes
trust: device identity, firmware authentication, attestation evidence, and
session establishment. Symmetric cryptography moves data: after a session is
established, the hot path is AES-GCM at line rate with no post-quantum
operation per packet, per DMA, or per cache line.
We describe two hardware blocks. \textbf{Lux Entropy} is an open entropy source
specified in LP-187. \textbf{Lux Attest} is a silicon root of trust providing
measured boot, a post-quantum device identity, signed evidence, and the key
establishment that opens a confidential I/O session.
We are precise about what already exists in Lux, what is missing, and what
neither can do. The missing piece is not a better random number generator. It
is an open post-quantum attester that an OEM can license and place inside its
own silicon.
\end{abstract}
\tableofcontents
\newpage
\section{What is already true}
This is not a greenfield proposal, and the parts already in place determine
what is worth building.
\begin{itemize}
\item \textbf{Entropy is specified.} LP-187 defines the entropy source: a
characterised noise source, startup and continuous health tests, a vetted
conditioner, and a combiner under which adding a source cannot weaken the
result.
\item \textbf{On-chain verification exists.} LP-127 implements attestation
verification as EVM precompiles, consuming NVIDIA NVTrust GPU evidence, TPM~2.0
quotes, and compute attestations, with no dependency on a vendor cloud service.
\item \textbf{Attestation-bound key release exists.} The KMS release path
verifies composite evidence against pinned vendor roots, binds a
freshly-generated nonce, and returns a wrapped key that only the attested
environment can decrypt. The pattern this paper generalises is already running.
\item \textbf{Vendor evidence is classical.} The verification chains in use ---
Intel DCAP for SGX, ARM CCA, AWS Nitro, AMD KDS --- are ECDSA over P-256 and
P-384, because the roots of trust in that silicon are ECDSA.
\end{itemize}
The last point is the gap, and its shape decides the strategy.
\section{Where the post-quantum gap actually is}
A session key lives for minutes. A workload measurement matters for the
duration of a job. A \emph{device identity} is minted during manufacture and
must remain trustworthy for as long as the silicon is deployed --- a decade or
more in datacenter and far longer in industrial and aerospace equipment.
Of everything in an attestation chain, the device identity has the longest
horizon and the least ability to be rotated: it is fused into the part. It is
therefore exactly the wrong thing to leave classical, and exactly the hardest
thing to change later, because changing it means changing silicon.
\begin{principle}
The post-quantum problem in confidential computing is not the data path. It is
the device root, because the device root is the one key in the system that
cannot be rotated.
\end{principle}
This has a direct consequence for what Lux should build. An add-on card cannot
fix a root of trust that is fused into somebody else's die. The product that
addresses the gap is a \emph{licensable block that goes inside the die}, and
everything else --- development boards, PCIe cards, verifiers --- exists to make
that block credible, testable, and adopted.
\section{The performance split}
The objection to post-quantum cryptography in an accelerator path is
throughput, and it is a fair objection if PQC is placed on the data path. It
does not belong there.
\begin{principle}[Control plane, data plane]
Use post-quantum cryptography to establish trust. Use hardware-accelerated
symmetric cryptography to move data.
\end{principle}
\subsection{Slow path}
Runs at boot, device admission, workload launch, migration, key rotation, and
policy-defined revalidation --- events measured in seconds to hours:
\begin{lstlisting}
measured boot firmware and configuration digests
ML-DSA sign and verify evidence, authenticate firmware
ML-KEM establish a shared secret with the relying party
certificate validation walk the identity chain to a pinned root
policy evaluation decide whether this environment may receive keys
\end{lstlisting}
\subsection{Hot path}
Runs continuously, at interconnect and memory bandwidth:
\begin{lstlisting}
AES-256-GCM device link and network transport
memory encryption device-attached memory
authenticated DMA host to device transfers
\end{lstlisting}
\subsection{Why the split holds}
Let $C_{\mathrm{PQ}}$ be the cost of one attestation and session establishment,
and $n$ the number of data operations performed under the resulting session.
The amortised cost per operation is
\[
\frac{C_{\mathrm{PQ}}}{n} + c_{\mathrm{sym}} .
\]
For a workload session covering seconds of accelerator time, $n$ is in the
billions to trillions, so the first term vanishes and the steady-state cost is
the symmetric term alone --- which is already paid by any encrypted-memory or
encrypted-link deployment.
The design consequence is a hard rule rather than an optimisation: \textbf{no
post-quantum operation may appear on a per-packet, per-DMA, or per-cache-line
path.} An architecture that violates it will be measured, found slow, and
rejected, and the measurement will be blamed on post-quantum cryptography
rather than on where it was put.
\section{Architecture}
Five layers, deliberately separable. A deployment may adopt any without the
others.
\begin{lstlisting}
WORKLOAD IDENTITY container / VM / model / kernel measurement
ATTESTATION evidence, policy, verification (LP-127 verifies)
CONFIDENTIAL I/O session establishment, then symmetric transport
ROOT OF TRUST measured boot, device identity, key vault (Lux Attest)
ENTROPY noise source, health tests, conditioning (LP-187)
\end{lstlisting}
Separability is a requirement, not a convenience. Lux Entropy is useful to a
deployment with no attester. Lux Attest is useful with a conventional entropy
source. And neither is required by Lux Network consensus --- a point developed
in \S\ref{sec:consensus}.
\section{Lux Attest}
Lux Attest is an embeddable root of trust. Its function is to turn immutable
silicon state into signed evidence and a key nobody else holds.
\begin{lstlisting}
immutable boot ROM measurement registers ML-DSA sign / verify
unique device secret monotonic counters ML-KEM encapsulation
protected key vault lifecycle controller SHA-3 / SHAKE
measured boot secure mailbox AES-256-GCM
firmware authentication DICE derivation DRBG + entropy interface
rollback protection SPDM endpoint confidential-I/O key derivation
\end{lstlisting}
\subsection{Identity derivation}
A unique device secret is established at manufacture and is never readable by
software after derivation. Identities descend from it by measurement, so each
stage is bound to the state of the stage below:
\begin{lstlisting}
physical entropy -> unique device secret -> IDevID
-> LDevID (firmware-bound)
-> runtime alias
-> workload attestation key
\end{lstlisting}
Keys are held as protected handles. The secret itself leaves the vault at no
point in this chain, and a compromise of a later stage does not yield an
earlier one.
\subsection{Dual identity during migration}
A device shipping before every verifier in its ecosystem understands
post-quantum signatures carries both a classical and an ML-DSA identity, and
signs evidence with both. A verifier checks whichever it supports; a verifier
that supports both gains post-quantum assurance immediately. The classical half
is retired by policy, without changing silicon.
This is the only practical migration for a part with a ten-year life, and it is
why the block must ship before the ecosystem is ready rather than after.
\section{What can honestly be attested}
This distinction is the one most often blurred in this field, and blurring it
is how attestation architectures lose the trust of the people who evaluate them
carefully.
\subsection{A discrete card}
A PCIe card carrying Lux Attest can attest itself: its own firmware, its own
configuration, the keys it holds, sensors it directly controls, and I/O that
passes through it.
It cannot attest the internal execution state of an opaque accelerator on the
same bus. No amount of cryptography grants a device visibility into a
neighbour that does not report to it. A vendor claiming otherwise is selling a
measurement of something else.
\subsection{An integrated block}
A Lux Attest block inside a vendor's SoC, participating in that vendor's boot
and measurement architecture, can attest what that architecture measures:
security-processor firmware, accelerator firmware and microcode, confidential
mode, the workload loader, the workload image, the model manifest, and the
runtime configuration.
That is the product. The discrete card is how developers reach it.
\section{Evidence and transport}
Lux specifies no new evidence format and no new device protocol. Two existing
ecosystems already fit.
\textbf{Evidence} uses the IETF RATS Entity Attestation Token. EAT's nested
token model matches a heterogeneous machine directly: a system token containing
CPU, per-accelerator, fabric, interface, and workload tokens, evaluated as a
whole rather than device by device. A verifier that trusts one device in
isolation has verified one device.
\textbf{Device transport} uses DMTF SPDM, whose recent revisions negotiate
ML-KEM, ML-DSA, and SLH-DSA. A post-quantum Lux device is therefore reachable
by existing tooling without a proprietary Lux attestation transport, and the
work is upstream contribution rather than a fork.
\begin{principle}
Own the implementation, the IP, the performance, and the tooling. Do not
attempt to own the wire formats. An architecture that requires everyone to
adopt a new format has chosen its own ceiling.
\end{principle}
\section{Confidential I/O}
Once a host environment and an accelerator have attested to each other, the
established secret keys the link:
\begin{lstlisting}
attest (ML-DSA evidence) once per admission
establish (ML-KEM) once per session
derive symmetric keys once per session
-------------------
encrypted link (AES-256-GCM) every transaction thereafter
\end{lstlisting}
On PCIe this is IDE for link protection with TDISP for assigning a device
interface to a trusted environment; the same shape applies to CXL, to
accelerator fabrics, and to the network.
The property worth stating plainly: \textbf{ML-KEM does not encrypt a DMA
transaction.} It establishes the session under which hardware AES encrypts
every DMA transaction. Conflating the two is what makes people believe
post-quantum confidential computing is unaffordable.
\subsection{Attestation-bound sessions}
The same construction applied to the network changes what a connection means.
A conventional session establishes that the peer holds a private key. An
attested session establishes that the peer \emph{is a specific workload
measurement running on an approved device in a confidential mode}, because the
session key was released only against evidence to that effect.
Authorisation then attaches to what is running rather than to where it is
running --- a measurement rather than an address.
\section{Key release}
The pattern already implemented in the Lux KMS generalises: evidence is
verified against pinned roots with a fresh nonce bound in, policy is evaluated,
and a wrapped key is returned that only the attested environment can unwrap.
Lux Network is useful here as a coordination layer and nowhere else. K-Chain
gates release; a chain may carry approved firmware roots, endorsements,
revocations, and policy versions. Confidential evidence does not go on chain;
commitments and public policy material do. The verifier is not on the critical
compute path, and no blockchain round trip occurs inside a workload.
\section{Privacy}\label{sec:privacy}
Attestation is a tracking mechanism unless it is designed not to be. A
permanent hardware identifier presented to every relying party is a
correlation key across every service a machine touches.
\begin{definition}[Presentation identity]
The identity a device presents to a relying party is distinct from the identity
that device holds. The former is ephemeral or relying-party-specific; the
latter never leaves the vault.
\end{definition}
Default evidence should carry properties rather than identifiers:
\begin{lstlisting}
approved device class true
firmware policy approved
confidential mode enabled
debug disabled
workload measurement <digest>
freshness <nonce>
\end{lstlisting}
rather than a serial number, a device UUID, a manufacturing lot, or a
topology. The relying party needs to decide whether to release a key. It does
not need to know which machine it is talking to, and once it knows, it can
never be made to forget.
Selective disclosure --- proving membership of an approved class without
identifying the member --- can be added above the silicon by anonymous
credentials or zero-knowledge predicates, with no change to the root of trust.
Designing the evidence around properties from the start is what leaves that
door open.
\section{Consensus separation}\label{sec:consensus}
One rule is architectural and not negotiable.
\begin{principle}
Node-local entropy never determines a consensus outcome that peers must
independently reproduce.
\end{principle}
Lux samples committees from a seed fixed before the current block existed: the
previously finalised block, the pinned signer set, the epoch. The seed is
public, identical for every verifier, and beyond any proposer's influence. A
locally drawn value has none of those properties --- it is known to one node,
unverifiable by the rest, and can be redrawn until the outcome suits.
Physical entropy belongs to secrets: device identities, ML-DSA and ML-KEM key
material, threshold dealing, session establishment, provisioning. Where an
application genuinely needs public randomness, it comes from a threshold
protocol whose output is verifiable because it is a signature --- not because a
remote party can somehow observe physics inside another machine.
\section{What this architecture does not claim}
\begin{itemize}
\item \textbf{Entropy is not remotely verifiable.} Lux Attest can attest that
an entropy source passed its defined health tests. It cannot prove to a remote
party that an unknown physical process was quantum. Remote certification of
quantumness requires a device-independent construction, which is a different
and much harder thing.
\item \textbf{A card cannot attest its neighbours.} See \S6.
\item \textbf{Standards conformance is an assessment.} Citing SP 800-90B means
publishing a min-entropy claim and the analysis behind it.
\item \textbf{Attestation is not correctness.} It establishes what is running,
not that what is running is right. It reduces the question of trusting an
operator to the question of trusting a measurement and a policy.
\end{itemize}
\section{Assurance levels}
Explicit levels make ``confidential by default'' measurable rather than a
slogan, and let a customer state what they have.
\begin{center}
\begin{tabular}{@{}ll@{}}
\toprule
Level & Established \\
\midrule
L0 & Software cryptography, platform CSPRNG, software measurements \\
L1 & Hardware identity and measured boot \\
L2 & L1 with a health-tested physical entropy source \\
L3 & L2 with a trusted execution environment and encrypted device memory \\
L4 & L3 with confidential I/O across the device interconnect \\
L5 & L4 across CPU, accelerators, and interfaces, with attested workload identity \\
\bottomrule
\end{tabular}
\end{center}
\section{Build sequence}
Each step is usable on its own and creates the credibility for the next. The
order matters more than the schedule.
\begin{enumerate}
\item \textbf{FPGA Lux Attest.} The root of trust in reconfigurable logic:
measured boot, DICE derivation, key vault, ML-DSA identity. Something a
developer can run and an engineer can read.
\item \textbf{PCIe Lux Trust development card.} Lux Attest with Lux Entropy on
a card, exposing SPDM and an open SDK. Honest about attesting itself.
\item \textbf{Open SPDM and EAT verifier.} The other half. A verifier nobody
can run is a claim; interoperability is demonstrated by two independent
implementations, and this one composes with LP-127 on chain.
\item \textbf{Root-of-trust compatible RTL.} Align with the open datacenter
root-of-trust ecosystem rather than replacing it, so an OEM evaluates a
familiar block with post-quantum identity and an entropy interface added.
\item \textbf{Hardened IP.} The licensable product: hardened macros, tamper
protection, a certified entropy source, secure manufacturing, and the
validation an OEM requires.
\end{enumerate}
Starting at step five is starting with a leading-edge ASIC nobody has evaluated.
Starting at step one produces something developers use while the case for step
five is being made.
\section{The proposition to a silicon vendor}
Not \emph{buy our random number generator}.
\begin{quote}
Add a standards-compatible post-quantum trust domain to every accelerator ---
device identity, measured boot, firmware authentication, attestation, session
establishment, and confidential-I/O key control --- without placing
post-quantum cryptography anywhere on the performance-critical path.
\end{quote}
The vendor keeps its architecture, memory encryption, firmware, execution
environment, driver, and fabric. Lux supplies the trust domain underneath, and
the open implementation is what makes the block evaluable before it is
licensed.
\section{Open by construction}
The specifications, firmware, drivers, libraries, SPDM and EAT integrations,
entropy drivers, FPGA targets, reference boards, test vectors, and verification
tooling are published.
This is not generosity. A root of trust nobody can inspect is a root of trust
nobody has reason to trust, and an entropy source whose construction is secret
cannot be assessed at all. The commercial product is hardened macros, tamper
resistance, a certified source, secure manufacturing, validation, and lifecycle
integration --- none of which is threatened by publishing the architecture, and
all of which is easier to sell once the architecture has been read.
\section{Conclusion}
The stack Lux already has verifies attestation evidence on chain, releases keys
against it, and specifies the entropy underneath. What it does not have is an
attester whose identity is post-quantum, and that gap sits in the one place an
add-on product cannot reach: the root fused into somebody else's silicon.
Lux Attest is that block. Lux Entropy feeds it. Confidential I/O turns a
successful attestation into an encrypted link at symmetric speed, and key
release turns verified state into authorisation.
\begin{lstlisting}
entropy -> identity -> measurement -> attestation
-> authorisation -> key release
-> confidential I/O
\end{lstlisting}
Any workload, any accelerator, post-quantum trust establishment, symmetric-speed
data, and a set of claims narrow enough to be true.
\end{document}