System Security Overview with an Emphasis on Security Issues for Storage and Emerging NVM (Part 2)
Byoungyoung Lee (이병영) byoungyoung@snu.ac.kr Seoul National University
1
System Security Overview with an Emphasis on Security Issues for - - PowerPoint PPT Presentation
System Security Overview with an Emphasis on Security Issues for Storage and Emerging NVM (Part 2) Byoungyoung Lee ( ) byoungyoung@snu.ac.kr Seoul National University 1 Outline Part1. Bugs in File Systems Semantic inconsistency
Byoungyoung Lee (이병영) byoungyoung@snu.ac.kr Seoul National University
1
Semantic inconsistency inference Fuzzing
Ransomware Cold boot attacks Side-channels
2
3
4
5
Semantic inconsistency inference Fuzzing
Ransomware Cold boot attacks Side-channels
6
7
“FlashGuard: Data recovery [CCS 17]”
8
9
9
9
9
Traditional security solutions does not work
9
Traditional security solutions does not work Need low-level solutions at the disk layer
10
Semantic inconsistency inference Fuzzing
Ransomware Cold boot attacks Side-channels
11
12
13
13
Trusted
13
Trusted Untrusted
13
Trusted Untrusted Encrypted data
13
Trusted Untrusted Encryption key Encrypted data
13
Trusted Untrusted Encryption key Encrypted data
13
Trusted Untrusted Encryption key Encrypted data
14
15
“Lest We Remember: Cold Boot Attacks on Encryption Keys [USENIX Security 08]”
16
Trusted Untrusted Encryption key Encrypted data
16
Trusted Untrusted Encryption key Encrypted data
17
17
18
CPU Registers CPU Cache Random access memory Flash / Hard drives Trusted Untrusted
19
Semantic inconsistency inference Fuzzing
Ransomware Cold boot attacks Side-channels
20
21
“Any attack based on information gained from the implementation of a computer system, rather than weaknesses in the implemented algorithm itself (e.g. cryptanalysis and software bugs)” “Timing information, power consumption, electromagnetic leaks or even sound can provide an extra source of information, which can be exploited.”
22
22
22
23
23
Cache miss
23
Cache miss Request
23
Cache miss Request Response
23
Cache miss Request Response i
23
Cache miss Request Response i Cache hit
23
Cache miss Request Response i Cache hit
DRAM access, slow
23
Cache miss Request Response i Cache hit
DRAM access, slow No DRAM access, much faster
24
Shared memory Attacker Victim cached
Shared memory
Fast if victim accessed data, slow otherwise cached
24
Shared memory Attacker Victim
Shared memory
Fast if victim accessed data, slow otherwise
24
Shared memory Attacker Victim
Shared memory
Fast if victim accessed data, slow otherwise flush
24
Shared memory Attacker Victim Fast if victim accessed data, slow otherwise flush
24
Shared memory Attacker Victim access Fast if victim accessed data, slow otherwise
24
Shared memory Attacker Victim
Shared memory
access Fast if victim accessed data, slow otherwise
24
Shared memory Attacker Victim
Shared memory
access Fast if victim accessed data, slow otherwise
25
26
26
26
Fetching a kernel address. Should not be allowed.
26
Fetching a kernel address. Should not be allowed. Permission checks will be done later
26
Fetching a kernel address. Should not be allowed. Permission checks will be done later
26
Fetching a kernel address. Should not be allowed. Permission checks will be done later kernel's data value will be stored in array, which can be retrieved using flush+reload
27
All of these are about memory access
28
29
SGX CPU Cache MEE
29
SGX CPU Cache MEE
Only CPU is trusted All the rest are untrusted
29
SGX CPU Cache MEE Any data leaving CPU is encrypted by Memory Encryption Engine (MEE)
Only CPU is trusted All the rest are untrusted
30
SGX CPU Cache MEE
30
SGX CPU Cache MEE Bus snooping: Access patterns are still visible
30
SGX CPU Cache MEE Bus snooping: Access patterns are still visible Monitor syscalls: Access patterns are still visible
30
SGX CPU Cache MEE Bus snooping: Access patterns are still visible Monitor syscalls: Access patterns are still visible Cache side channels
31
Client Server Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry)
31
Client Server Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Request: C
31
Client Server Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Request: C Response: Ek(Apple)
31
Client Server Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Request: C Response: Ek(Apple) Server learns client asked for “C” How to make client’s query private?
32
Client Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
32
Client Request: A,B,C,D,…,G Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
32
Client Request: A,B,C,D,…,G Response: Ek(Bluberry), Ek(Tomato), …, Ek(Cherry) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
32
Client Request: A,B,C,D,…,G Response: Ek(Bluberry), Ek(Tomato), …, Ek(Cherry) Secure but too much overhead Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
33
Client Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
33
Client Request: A,C Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
33
Client Request: A,C Response: Ek(Blueberry), Ek(Apple) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
33
Client Request: A,C Response: Ek(Blueberry), Ek(Apple) Provides k-1 ambiguity
Limited security guarantees
Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
34
Client Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
34
Client Request: A,C,D Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle Write-back: A: Ek(Apple), C: Ek(Banana) D: Ek(Blueberry)
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle Write-back: A: Ek(Apple), C: Ek(Banana) D: Ek(Blueberry) Ek(Apple)
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle Write-back: A: Ek(Apple), C: Ek(Banana) D: Ek(Blueberry) Ek(Apple) Ek(Banana)
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle Write-back: A: Ek(Apple), C: Ek(Banana) D: Ek(Blueberry) Ek(Blueberry) Ek(Apple) Ek(Banana)
34
Client Request: A,C,D Response: Ek(Blueberry), Ek(Apple) Ek(Banana) Key Value A Ek(Blueberry) B Ek(Tomato) C Ek(Apple) D Ek(Banana) E Ek(Orange) F Ek(Mango) G Ek(Cherry) Server Shuffle Write-back: A: Ek(Apple), C: Ek(Banana) D: Ek(Blueberry) Ek(Blueberry) Ek(Apple) Ek(Banana) Key-Value mapping always changes
35
ORAM Client ORAM Server
Position Map Stash
35
ORAM Client ORAM Server
Position Map Stash
Tree-like data structures
36
SGX CPU Cache MEE
36
SGX CPU Cache MEE Bus snooping: Access patterns are still visible
36
SGX CPU Cache MEE Bus snooping: Access patterns are still visible Monitor syscalls: Access patterns are still visible
36
SGX CPU Cache MEE Bus snooping: Access patterns are still visible Monitor syscalls: Access patterns are still visible Cache side channels
37
SGX CPU Cache
ORAM Server ORAM Client
ObfusMem [ISCA 17], SDIMM [HPCA 18]
37
SGX CPU Cache Patterns are secured using ORAM protocols
ORAM Server ORAM Client
ObfusMem [ISCA 17], SDIMM [HPCA 18]
37
SGX CPU Cache Patterns are secured using ORAM protocols
ORAM Server ORAM Client
ObfusMem [ISCA 17], SDIMM [HPCA 18]
38
SGX CPU Cache MEE Bus snooping InvisiMem [ISCA 17]
Note: SGX only encrypts values in data bus
38
SGX CPU Cache MEE Bus snooping InvisiMem [ISCA 17]
Note: SGX only encrypts values in data bus
38
SGX CPU Cache MEE Bus snooping InvisiMem [ISCA 17]
Note: SGX only encrypts values in data bus
38
SGX CPU Cache MEE Bus snooping InvisiMem [ISCA 17]
Note: SGX only encrypts values in data bus
38
SGX CPU Cache MEE Bus snooping InvisiMem [ISCA 17]
Note: SGX only encrypts values in data bus
39
SGX CPU Cache Patterns are secured using ORAM protocols
ORAM Client ORAM Server
Obliviate [NDSS 18]
39
SGX CPU Cache Patterns are secured using ORAM protocols
ORAM Client ORAM Server
Obliviate [NDSS 18]
39
SGX CPU Cache Patterns are secured using ORAM protocols
ORAM Client ORAM Server
Obliviate [NDSS 18]
Program
Obliviate
Enclave Application
Disk
40
Trusted Proxy
Program
1. FS Syscall interceptor Obliviate
Enclave Application
Disk
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues Obliviate
Enclave Application
Disk
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues
Untrusted Service
Obliviate
Enclave Application
Disk
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues
Trusted Service
Untrusted Service
Obliviate
Enclave Application
Disk
the gap between FS and ORAM
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues
Trusted Service
Untrusted Service
ORAM client FS Metadata
Metadata Handling Obliviate
Enclave Application
Disk
the gap between FS and ORAM
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues
Trusted Service
Untrusted Service
ORAM client FS Metadata
f4
T1 T2
f3 f2
ORAM Server
Metadata Handling Obliviate
Enclave Application
Disk
(s) outside Enclave
the gap between FS and ORAM
40
Untrusted Proxy
Trusted Proxy
Program
1. FS Syscall interceptor
Queues
Trusted Service
Untrusted Service
ORAM client FS Metadata
f4
T1 T2
f3 f2
ORAM Server
Metadata Handling Obliviate
Enclave Application
Disk
(s) outside Enclave
the gap between FS and ORAM
40
(Init) load all files into ORAM Tree(s)
41
이병영 서울대학교 전기정보공학부 byoungyoung@snu.ac.kr
42