SECURE IDENTIFICATION of ACTIVELY EXECUTED CODE on a GENERIC TRUSTED COMPONENT
Nuno Neves
UL IEEE/IFIP Conference on Dependable Systems & Networks (DSN’16)
BRUNO VAVALA
CMU / UL
Peter Steenkiste
CMU
GENERIC TRUSTED COMPONENT BRUNO VAVALA CMU / UL Nuno Neves Peter - - PowerPoint PPT Presentation
SECURE IDENTIFICATION of ACTIVELY EXECUTED CODE on a GENERIC TRUSTED COMPONENT BRUNO VAVALA CMU / UL Nuno Neves Peter Steenkiste UL CMU IEEE/IFIP Conference on Dependable Systems & Networks (DSN16) outline Trusted Practical
SECURE IDENTIFICATION of ACTIVELY EXECUTED CODE on a GENERIC TRUSTED COMPONENT
Nuno Neves
UL IEEE/IFIP Conference on Dependable Systems & Networks (DSN’16)
BRUNO VAVALA
CMU / UL
Peter Steenkiste
CMU
Problem definition Identifying Actively Executed Code Practical Analysis Conclusions
Trusted Executions: trends & tradeoffs
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
3
Execute
client untrusted third party
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
secure environment
Load & Identify Outsource Execute Attest Verify
untrusted third party client
4
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
secure environment
Load & Identify Outsource Execute Attest V erify
untrusted third party client
5
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
(TCC authenticates the sender)
(TCC authenticates the recipient)
6
UTP-side client-side
Implementable with:
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
7
Reduced TCB On-demand execution Improved efficiency Richer services in TCB +security +efficiency Now
timeline
Static Root of Trust: a system is able to boot in a verifiable trusted state. [2004] TOCTOU Problem: static measurements do not reflect later changes. [2005-] Dynamic Root
a new robust and verifiable chain of trust
[2008] Fast Trusted Computing: combine slow trusted chips with software
[2010-] Large Trusted Executions: implement large services in the trusted environment. [2011-]
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
Security/Efficiency Tradeoff for Large-Scale Services
8
identify-once- execute-once
identify-once- execute-forever
security efficiency
high high low
Trusted Executions: trends & tradeoffs
Identifying Actively Executed Code Practical Analysis Conclusions Problem definition
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
10
/* SQLite code */ int main () { switch(op) { case SELECT: do_select(); case DELETE: do_delete(); case INSERT: do_insert(); . . case FOOBAR: do_foobar(); }
1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1COMPILE IDENTIFY
source code binary code identity
SQLite
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 111
VERIFIES VOUCHES FOR
executed code attested identity client
SQLite
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
12
identified binary code
1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1> 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1actually executed binary code
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
13
Trusted Executions: trends & tradeoffs
Problem definition Practical Analysis Conclusions Identifying Actively Executed Code
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
Trusted Environment
15
hardware OS TCC untrusted services
trusted service TPM/SGX
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
(TCC authenticates the sender)
(TCC authenticates the recipient)
16
UTP-side client-side
Implementable with:
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
17
/* SQLite code */ int main () { switch(op) { case SELECT: do_select(); case DELETE: do_delete(); case INSERT: do_insert(); . . case FOOBAR: do_foobar(); }
select delete insert foobar
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
18
A B C
hardware OS TCC A B C A B C
code base
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
19
A B C
hardware OS TCC A B C A B C
code base
input, ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
20
A B C
hardware OS TCC A B C A B C
code base
input, ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
21
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
22
A B C
hardware OS TCC A B C A B C
code base
1.id(A) 2.id(B) 3.id(C)
identity table
secure channel
ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
23
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
A —>C
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
24
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
A —>C
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
25
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
A —>C
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
26
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
A —>C
1.id(A) 2.id(B) 3.id(C)
identity table
secure channel
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
27
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
28
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
attested
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
29
A B C
hardware OS TCC A B C A B C
code base
ID’s Tab
attested
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
30
hardware OS TCC A B C
ID’s Tab
attested
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
31
hardware OS TCC A B C
ID’s Tab
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
(see paper for details)
32
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
33
A B C
A B C
code base
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
34
A B C
A B C
code base
A
ID(C)
C
ID(A)
problem
(hash loop)
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
35
A B C
A B C
code base
A
ID(C)
C
ID(A)
1.id(A) 2.id(B) 3.id(C)
identity table
problem
(hash loop)
solution
(ID’s in input table)
A
next: 3
C
next: 1
Trusted Executions: trends & tradeoffs
Problem definition Identifying Actively Executed Code Conclusions Practical Analysis
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
37
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
for single operation (PAL = Piece of Application Logic)
38
300 600 900 1200
PAL0 PALSEL PALINS PALDEL PALSQLITE Code Size (kilobytes)
monolithic SQLite (baseline) multi-PAL SQLite
12 135 90 155 1085 300 600 900 1200
PAL0 PALSEL PALINS PALDEL PALSQLITE Code Size (kilobytes)
monolithic SQLite (baseline) multi-PAL SQLite
12 135 90 155 1085
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
39
(w/ attestation)
30 60 90 120 150
Insert Delete Select Time (milliseconds)
monolithic SQLite (baseline) multi-PAL SQLite
90 106 96 132 134 127
W/ Attestation
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
40 20 40 60 80
Insert Delete Select Time (milliseconds)
monolithic SQLite (baseline) multi-PAL SQLite
35 47 41 75 77 71
W/O Attestation
(w/o attestation)
Trusted Executions: trends & tradeoffs
Problem definition Identifying Actively Executed Code Practical Analysis Conclusions
/ 42 Bruno Vavala - IEEE/IFIP DSN'16
Real-World Service
42
Generic Trusted Component
Our Solution
Nuno Neves
UL IEEE/IFIP Conference on Dependable Systems & Networks (DSN’16)
BRUNO VAVALA
CMU/UL
Peter Steenkiste
CMU
/ 42 Bruno Vavala - IEEE/IFIP DSN'16 47
Efficient Mutually- Authenticated Channels
A C
Untrusted environment (OS+other applications) TCC
auth data
MAC data