TCG TPM2 Software Stack & Embedded Linux
Philip Tricca philip.b.tricca@intel.com
TCG TPM2 Software Stack & Embedded Linux Philip Tricca - - PowerPoint PPT Presentation
TCG TPM2 Software Stack & Embedded Linux Philip Tricca philip.b.tricca@intel.com Agenda Background Security basics Terms TPM basics What it is / what it does Why this matters / specific features TPM Software Stack
Philip Tricca philip.b.tricca@intel.com
Background
TPM basics
TPM Software Stack
There is no magic, there are no silver bullets
maintenance
system”, only secure enough
enough”
Using the TPM does not a secure system make
tractable
A process by which we identify, enumerate, prioritize & document
Please do?
Classic security concepts:
Use the TPM2 to build systems that implement these principles
Documented in TPM Rev 2.0 Part-1: Architecture
shielded location
I/O Asymmetric Engine(s) Hash Engine(s) Symmetric Engine(s) Mgmt Operations Authorization Volatile Memory
Random # Generation Non-Volatile Memory
Key Generation Power Mgmt Execution Engine
Small Crypto Engine
protection
reporting
IP block Apps
Discrete IP Block (a chip) BUS
I/O Protected Capability Shielded Location … … … …
Integrated IP Block
I/O
Protected Capability Shielded Location
… … … … IP block
OS
Platform Configuration Register (PCR) & the “Extend” operation
specs
Platform Firmware
RTM
Option ROMs
OS
Reset PCR Boot Loader
App App App
PCR[0]: 0x…. PCR[1]: 0x…. PCR[23]: 0x….
System API (SYS)
TPM2 commands
– file IO – crypto – heap – external library dependency
Enhanced SAPI (ESYS)
Commands
utility functions
functions for sessions
Feature API (FAPI)
reduced application code size by offering static libraries
TPM Access Broker and Resource Manager (TABRM)
TPM Command Transmission Interface (TCTI)
IPC
TPM2 software stack System API & TCTI specification
– Abstraction to hide details of IPC mechanism – libtcti-device & libtcti-socket – Adds flexibility missing from 1.2 TSS
– Serialize C structures to TPM command buffers – One-to-one mapping to TPM commands (all 100+) – Minimal external dependencies: libc – Suitable for highly embedded applications / UEFI Application SAPI TCTI Tss2_Sys_XXX
TPM2 ResourceMgr TCTI Access Broker IPC Backend Resource Manager
IPC / Transport
Application SAPI TCTI Tss2_Sys_XXX
TPM2 TSS Components: w/ resourcemgr
Application SAPI TCTI Tss2_Sys_XXX Application SAPI TCTI Tss2_Sys_XXX Application SAPI TCTI Tss2_Sys_XXX
TPM requires RNG for key creation, nonce generation.
Use TPM2 policy authentication as access control on TPM protected object
The presentation of verifiable evidence of software state to a remote party
Attestations are simple cryptographic operations over data (sign)
Attester Appraiser TPM Nonce + PCRs selection Quote (nonce, PCRs, AIK Pub)
Intel implementing TCG TSS as Open Source
My personal OSS work
Many thanks for contributions to materials:
& Everyone who’s contributed code / answered questions on GitHub!
Threat Modeling: Designing for Security – Adam Shostack
Trusted Platforms UEFI, PI and TCG-based firmware
Open Security Training Trusted Computing Module:
Davide Guerri TPM2.0 talk @ FOSDEM
TPM RNG linux howto:
destroy secrets
adoption
Several documented over last ~10 years