Download as pdf
Download as pdf
You are on page 1of 88

Tr usted Computing

Security from the ground up

Danny Fuller ton 2011/11/04

Why I used to hate TC

Palladium

a chip soldered to our motherboard

all of your actions had to be approved by Microsoft

I was some kind of frustrated liberal punk...

theres no way Ive could accept this

Ive decided to fight this however Ive could:

tell everyone how this would affect us

swore to never buy a motherboard with this chip

and learn about it

How I came to love TC

Trusted Computing != Palladium

it has very interesting security properties

breaks the status quo


Hackfest 2010 Broken by Design

No comments on the background

well, Im still a liberal punk but *paranoiac* too

What went wr ong?

My guess:

Trusted Computing is a disruptive innovation


I just didn't understood the technology

What is it?

P r otection objectives

High : software based attack Medium : open case Low : sophisticated local attack

The basic idea

We cannot trust the entire platform

but only a very small part of it

and build a chain of trust

Root of Trust for Measurements + Trusted Platform Module

Not entirely true since we have to trust the MLE, and the hardware.

Core Root Of Trust for Measurements

CPU

MCH

Memory

ICH

TPM

BIOS

Bios Boot Block

Tr usted P latfor m Module

Typical TPM
secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Orchestrator: receive request and dispatch


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Implement the specs: validation, execute request, respond


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Create good random data for symmetric, asymmetric, nonce


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Securely create RSA key pairs: public, private


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

RSA encryption, decryption, signature, verification


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Authorization values, HMAC, etc


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Keep track of internal state: sessions, etc


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Power cycle resistant memory


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Enforce users choice


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

at purchase time, TPMs are not operational

Root of all storage keys


secure I/O processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

created when owner activate the TPM

used to create secure key trees

provide, virtually, unlimited secure storage

inside the TPM

Storage Root Key

Storage Key User1

Storage Key User2

outside the TPM

Binding Key

Binding Key

Signing Key

Signing Key

The actual structure is malleable and can be very different.

TCG specifications assertion


Secured I/O Processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK) Endorsement Key (EK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Platform Configuration Registers (PRC)

endorsement certificate sign by the TPM manufacturer

uniquely identify the platform

privacy concerns

well yes but no

EK is only used in conjunction with something else

Some kind of privacy protector


Secured I/O Processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

mutual trust of the CA signed AIK satisfy challenger


privacy CA

EK

you

AIK

challenger

Privacy

What if collusion arise?


privacy CA

EK

you

AIK

challenger

Privacy

Direct Anonymous Attestation (DAA)

Zero Knowledge Proof

Store system measurements: SHA-1 hash


Secured I/O Processor
Execution engine Prog Code Opt-in Random Number Generator RSA key generator RSA engine SHA1 hash engine

persistent memory
Opt-in Storage Root Key (SRK)

volatile memory
Loaded Keys Attestation Identity Keys (AIK)

Endorsement Key (EK)

Platform Configuration Registers (PRC)

Static Root of Trust for Measurements (SRTM)

Launch time measurements


CRTM

1
3

BIOS ROM

BIOS FLASH

Boot Loader

OS Kernel

2
PCR 0 PCR 1

TPM

PCR 2 PCR 3 PCR 4

measurement:
store measurement: pass execution:

Boot process and PCRs attribution not accurate (highly simplified).

one PCR can be used to measure multiple elements

TPM_Extend()

PCR = hash( old value, new value )


0x0000 0xAAAA 0xBBBB 0xCCCC = = = = boot() hash( 0x0000, 0x1111 ) hash( 0xAAAA, 0x2222 ) hash( 0xBBBB, 0x3333 )

TPM doesnt act upon PCRs

PCRs are stored whether theyre bad or good

Dynamic Root of Trust for Measurements (DRTM)

Late launch measurements

CPU OS Kernel MCH


SMX

Memory

ICH

TPM

PCR 17

PCR 19

PCR 18

store measurement: measurement: pass execution:

Process not accurate (highly simplified).

Late launch measurements


SMX

CPU OS Kernel MCH

Memory

ICH

TPM

PCR 17

PCR 19

PCR 18

store measurement: measurement: pass execution:

Process not accurate (highly simplified).

Late launch measurements


SMX

CPU OS Kernel MCH

Memory

ICH

TPM

PCR 17

PCR 19

PCR 18

store measurement: measurement: pass execution:

Process not accurate (highly simplified).

Secur ity Enhancements

Measurements RTM Root of Trust for Measurement CRTM + TPM (SRTM) || SMX + TPM (DRTM)

Sealed stor age

TPM_Seal(): Encrypt data to a specific environment


PCR X: f56b7e4d5e065214afa5cc8b86897d7a4cbffb14 PCR Y: 7cb06027e87e7d848d8576d8fef5f76256f41cee PCR Z: 38464bf083d958b53580c63c01e56707fd043588

TPM
data encrypted data

TPM_Unseal(): Decrypt if a specific environment is active


PCR X: f56b7e4d5e065214afa5cc8b86897d7a4cbffb14 PCR Y: 7cb06027e87e7d848d8576d8fef5f76256f41cee PCR Z: 38464bf083d958b53580c63c01e56707fd043588

PCR x PCR y PCR z

TPM
encrypted data data

Detect malware Keylogger / Meterpreter / KonBoot Rootkits (user/kernel, MBR, BIOS)


Protect data Keys, BitLocker, etc

manipulate confidential db TPM_unseal db key erase db key

DRTM measurement

Attack Surface

block I/O

unblock I/O

Time

manipulate confidential db TPM_unseal db key erase db key

DRTM measurement

Attack Surface

block I/O

unblock I/O

attack Time

Remote Attestation

TPM_Quote(): Sign PCRs with AIK

PCR x
PCR y PCR z

Attestation
RSA engine
PCR x PCR y PCR z

TPM

AIK

AIK signature

Strong Network Access Control (NAC) Trusted Network Connect

assess the security of a kiosk with your mobile device

Conclusion

a TPM is a passive device

it cannot take over your platform by itself

at this point, theres no battle about keeping our freedom / rights

Trusted Computing is a tool

nothing else

and its about time we start using it

Thanks!

You might also like