SESSION ID: #RSAC
Daniel Moghimi
MEMJAM: A FALSE DEPENDENCY ATTACK AGAINST CONSTANT-TIME CRYPTO IMPLEMENTATIONS IN SGX
CRYP-T07
Ph.D. Student Worcester Polytechnic Institute @danielmgmi
ATTACK AGAINST CONSTANT-TIME CRYPTO IMPLEMENTATIONS IN SGX Daniel - - PowerPoint PPT Presentation
#RSAC SESSION ID: CRYP-T07 MEMJAM: A FALSE DEPENDENCY ATTACK AGAINST CONSTANT-TIME CRYPTO IMPLEMENTATIONS IN SGX Daniel Moghimi Ph.D. Student Worcester Polytechnic Institute @danielmgmi MemJam: A False Dependency Attack against
SESSION ID: #RSAC
Daniel Moghimi
CRYP-T07
Ph.D. Student Worcester Polytechnic Institute @danielmgmi
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 3
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
4
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
IF 5
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
IF IF ID 6
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
IF IF ID EX ID IF 7
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
IF IF ID EX ID IF WB EX ID IF 8
add %ebx, %eax sub %eax, %edx xor %ecx, %ecx add %eax, %edi sub %ecx, %edi
1 2 3 4 5 IF ID EX WB
Instruction Fetch Instruction Decode Execute Write Back
IF IF ID EX ID IF WB EX ID IF EX EX ID IF WB ID WB EX EX WB WB 9
add %ebx, %eax xor %ecx, %ecx sub %eax, %edx mov $100, %edx sub %edx, %ecx
1 2 3 4 5
FD
10
add %ebx, %eax xor %ecx, %ecx sub %eax, %edx mov $100, %edx sub %edx, %ecx
1 2 3 4 5
FD
add %ebx, %eax xor %ecx, %ecx sub %eax, %edx mov $100, %bat sub %bat, %ecx
1 2 3 4 5
Register Renaming
11
mov %eax, (%ebx) mov (%ecx), %edx
Load Store
Execute
Load
Execute
Store
Dependent?
Yes
12
Core HT – Thread A HT – Thread B Load 0xFECD1
13
Core HT – Thread A HT – Thread B Load 0xFECD1 Load 0xFECD2 Load 0xFECD3 Load 0xFECD4 Load 0xFECD5 Load 0xFECD6 Load 0xFECD7 Load 0xFECD8
14
Core HT – Thread A HT – Thread B Load 0xFECD1 Load 0xFECD2 Load 0xFECD3 Load 0xFECD4 Load 0xFECD5 Load 0xFECD6 Load 0xFECD7 Load 0xFECD8 Execute & Time
15
Core HT – Thread A HT – Thread B Load 0xFECD1 Load 0xFECD2 Load 0xFECD3 Load 0xFECD4 Load 0xFECD5 Load 0xFECD6 Load 0xFECD7 Load 0xFECD8 Execute & Time Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF Store 0x12ABCDEF
16
Core HT – Thread A HT – Thread B Load 0xFECD1 Load 0xFECD2 Load 0xFECD3 Load 0xFECD4 Load 0xFECD5 Load 0xFECD6 Load 0xFECD7 Load 0xFECD8 Execute & Time Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200 Store 0x12ABC200
17
Core HT – Thread A HT – Thread B Load 0xFECD1 Load 0xFECD2 Load 0xFECD3 Load 0xFECD4 Load 0xFECD5 Load 0xFECD6 Load 0xFECD7 Load 0xFECD8 Execute & Time Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC Store 0x12ABC
18
19
Least 12 bits (Virtual Address = Physical Address) Rest of the bits (Virtual != Physical)
20
Least 12 bits (Virtual Address = Physical Address) Rest of the bits (Virtual != Physical) L1 Cache Attacks
21
Least 12 bits (Virtual Address = Physical Address) Rest of the bits (Virtual != Physical) L1 Cache Attacks L2/LLC Cache Attacks
22
Least 12 bits (Virtual Address = Physical Address) Rest of the bits (Virtual != Physical) L1 Cache Attacks L2/LLC Cache Attacks
2015 – Irazoqui – S $ A 2014 – Yarom – Flush+Reload
2005 – Percival – Cache Missing for Fun 2006 – Osvik – Cache attacks
23
Least 12 bits (Virtual Address = Physical Address) Rest of the bits (Virtual != Physical) L1 Cache Attacks L2/LLC Cache Attacks
CPU
Core HT HT Core HT HT Encryption Service
24
CPU
Core HT HT Core HT HT Encryption Service
25
CPU
Core HT HT Core HT HT Encryption Service
26
CPU
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute
27
CPU
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute
28
CPU
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute Execute Again
29
CPU
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute Execute Again
30
CPU
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute Execute Again Higher time if there are more number of 4K conflicts
31
32
LINE 2 A LINE 2 B LINE 2 C LINE 2 D 64 Bytes 4 Cache Lines S-Box Lookup
33
LINE 2 A LINE 2 B LINE 2 C LINE 2 D 64 Bytes 4 Cache Lines S-Box Lookup A B C
Local Buffer
D
34
LINE 2 A LINE 2 B LINE 2 C LINE 2 D 64 Bytes 4 Cache Lines S-Box Lookup A B C
Local Buffer
D B
35
LINE 2 LINE 2 LINE 2 LINE 2 64 Bytes 4 Cache Lines
36
LINE 2 LINE 2 LINE 2 LINE 2 64 Bytes 4 Cache Lines
37
LINE 2 LINE 2 LINE 2 LINE 2 64 Bytes 4 Cache Lines
38
LINE 2 64 Bytes 4 Cache Lines
39
LINE 2 64 Bytes 4 Cache Lines
40
41
42
CPU
Intel SGX Enclave
Core HT HT Core HT HT Encryption Service
load compute load load compute load compute load load
Execute Execute Again Higher time if there are more number of 4K conflicts
43
44
45
46
47
48
49