Link IDE, Selective IDE, SPDM authentication, encryption algorithms, and TEE integration
IDE (Integrity and Data Encryption) is a PCIe security feature that provides cryptographic protection for PCIe transactions, ensuring data confidentiality and integrity across the PCIe fabric.
| Mode | Description | Use Case |
|---|---|---|
| Link IDE | Encrypts all traffic on a link | Server interconnects, external cables |
| Selective IDE | Encrypts traffic to/from specific devices | TEE device assignment, VM isolation |
Physical/Interposer Attacks:
┌────────┐ ┌────────┐
│ CPU │════════════════════│ Device │
│ │ PCIe Link │ │
└────────┘ ▲ └────────┘
│
┌────┴────┐
│ ATTACKER│ ← Can snoop, modify, inject
│ (probe) │
└─────────┘
Without IDE:
- Attacker can read sensitive data
- Attacker can modify transactions
- Attacker can replay old transactions
With IDE:
- Data encrypted (confidential)
- Modifications detected (MAC check fails)
- Replays detected (sequence check fails)
Link IDE encrypts all TLP traffic on a PCIe link between two directly connected ports. It provides link-level security, re-encrypting at each hop.
┌──────────────────┐ ┌──────────────────┐
│ Port A │ │ Port B │
│ │ │ │
│ TLP ──► Encrypt │═════════│ Decrypt ──► TLP │
│ (AES-GCM)│ Cipher │ (AES-GCM) │
│ │ Text │ │
└──────────────────┘ └──────────────────┘
Key: Unique per link direction (A→B, B→A)
Scope: Single link only (re-encrypt at switch)
Selective IDE provides end-to-end encryption for traffic between specific endpoints, regardless of intermediate hops. Traffic is identified by stream ID and encrypted/decrypted only at endpoints.
┌─────────┐ ┌─────────┐
│ Host │ ┌────────┐ │ Device │
│ TEE │─────│ Switch │───────────────│ (VF) │
│ │ │ │ │ │
└────┬────┘ └────────┘ └────┬────┘
│ │
│ Encrypt Decrypt │
│◄─────────────────────────────────────►│
│ (End-to-End IDE) │
│ │
│ Switch forwards encrypted TLPs │
│ without decryption │
IDE-Protected TLP Structure:
┌──────────────────────────────────────────────────────────┐
│ TLP Header │
│ (Modified for IDE) │
├──────────────────────────────────────────────────────────┤
│ Encrypted Payload │
│ (AES-256-GCM ciphertext) │
├──────────────────────────────────────────────────────────┤
│ MAC Tag │
│ (12 bytes) │
└──────────────────────────────────────────────────────────┘
MAC covers: Header (AAD) + Encrypted payload
SPDM (Security Protocol and Data Model) is a DMTF standard for device authentication and key exchange. PCIe IDE uses SPDM for secure key establishment.
Root Key (Device Certificate)
│
▼
Session Key (SPDM KEY_EXCHANGE)
│
▼
IDE Key (derived for IDE encryption)
│
├──► TX Key (transmit direction)
│
└──► RX Key (receive direction)
TDISP extends IDE to support Trusted Execution Environment (TEE) device assignment, enabling secure attachment of devices to confidential VMs (CVMs).
| State | Description |
|---|---|
| CONFIG_UNLOCKED | Device configuration accessible |
| CONFIG_LOCKED | Configuration locked for TEE use |
| RUN | Device operational, IDE active |
| ERROR | Security error occurred |
| Offset | Register |
|---|---|
| 00h | Extended Capability Header (ID = 0030h) |
| 04h | IDE Capability |
| 08h | IDE Control |
| 0Ch+ | Stream Registers (per stream) |
IDE encryption/decryption adds latency (~10-30ns) and may impact throughput. Hardware acceleration (AES-NI equivalent in device) minimizes overhead.