PAGURUS: Low-Overhead Dynamic Information Flow Tracking on Loosely Coupled Accelerators
Luca Piccolboni, Giuseppe Di Guglielmo and Luca P. Carloni
Columbia University, NY, USA
ACM/IEEE CODES+ISSS 2018, Turin, Italy
PAGURUS: Low-Overhead Dynamic Information Flow Tracking on Loosely - - PowerPoint PPT Presentation
ACM/IEEE CODES+ISSS 2018, Turin, Italy PAGURUS: Low-Overhead Dynamic Information Flow Tracking on Loosely Coupled Accelerators Luca Piccolboni, Giuseppe Di Guglielmo and Luca P. Carloni Columbia University, NY, USA Systems-on-Chip (SoCs) Are
ACM/IEEE CODES+ISSS 2018, Turin, Italy
ACM/IEEE CODES + ISSS 2018, Turin, Italy 2 / 16
AXI
APB
ACM/IEEE CODES + ISSS 2018, Turin, Italy 3 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 3 / 16
can be used to call a malicious function
ACM/IEEE CODES + ISSS 2018, Turin, Italy 3 / 16
1 1 1 1 1
ACM/IEEE CODES + ISSS 2018, Turin, Italy 4 / 16
AXI APB
ACM/IEEE CODES + ISSS 2018, Turin, Italy 5 / 16
Loosely Coupled Accelerator #1
Loosely Coupled Accelerator #2
AXI APB
ACM/IEEE CODES + ISSS 2018, Turin, Italy 6 / 16
1 1 1 1
1
ACM/IEEE CODES + ISSS 2018, Turin, Italy 6 / 16
1
can be used to call a malicious function
ACM/IEEE CODES + ISSS 2018, Turin, Italy 7 / 16
DIFT Shell
ACM/IEEE CODES + ISSS 2018, Turin, Italy 7 / 16 AXI
APB
DIFT Shell
Loosely Coupled Accelerator #1 Loosely Coupled Accelerator #2
ACM/IEEE CODES + ISSS 2018, Turin, Italy 7 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 8 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 8 / 16
main memory
value #1
value #2 value #3
tag #1 tag #2 tag #3
tags
ACM/IEEE CODES + ISSS 2018, Turin, Italy 8 / 16
main memory
value #1
tag #1 tag #3
value #2 value #3 tag #2
ACM/IEEE CODES + ISSS 2018, Turin, Italy 8 / 16
main memory
value #1
tag #1 tag #3 value #2 value #3 tag #2
(tag offset = 1)
ACM/IEEE CODES + ISSS 2018, Turin, Italy 9 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 9 / 16
Loosely Coupled
main memory
register #1 register #2 register #K
configuration reg #1
…
reg #K private local memory / scratchpad
bank bank bank bank
ACM/IEEE CODES + ISSS 2018, Turin, Italy 9 / 16 Loosely Coupled
main memory
input
compute
burst length
configuration
…
load input
val val val
configuration reg #1
…
reg #K private local memory / scratchpad
bank bank bank bank
ACM/IEEE CODES + ISSS 2018, Turin, Italy 9 / 16 Loosely Coupled
main memory load compute load input
configuration load input
val val val val val val
configuration reg #1
…
reg #K private local memory / scratchpad
bank bank bank bank
ACM/IEEE CODES + ISSS 2018, Turin, Italy 9 / 16 Loosely Coupled
main memory load store
burst length
store output
load load input
val val val val val val
compute load input
val val val
configuration reg #1
…
reg #K private local memory / scratchpad
bank bank bank bank
ACM/IEEE CODES + ISSS 2018, Turin, Italy 10 / 16
DIFT Shell
Accelerator Loosely Coupled
ACM/IEEE CODES + ISSS 2018, Turin, Italy 10 / 16
main memory
register #1 register #2 register #K
shell configuration
dst_tag src_tag
Accelerator Loosely Coupled
DIFT Shell
ACM/IEEE CODES + ISSS 2018, Turin, Italy 10 / 16
shell configuration main memory
input src_tag src_tag
shell load logic
DIFT_exception!
val val val tag val tag
Accelerator
dst_tag src_tag
burst length
Loosely Coupled
DIFT Shell
ACM/IEEE CODES + ISSS 2018, Turin, Italy 10 / 16
shell configuration main memory shell load logic shell store logic
val val val tag val tag
dst_tag dst_tag val tag val tag
dst_tag src_tag
Accelerator
burst length
Loosely Coupled
DIFT Shell
ACM/IEEE CODES + ISSS 2018, Turin, Italy 11 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 11 / 16
main memory
input value #1 src_tag value #2 value #3
ACM/IEEE CODES + ISSS 2018, Turin, Italy 11 / 16
main memory
input value #1 [overwritten] src_tag [overwritten] value #2 [overwritten] value #3 [overwritten] value #1
Loosely Coupled
DIFT Shell val tag val val
ACM/IEEE CODES + ISSS 2018, Turin, Italy 11 / 16
main memory
input value #1 [overwritten] src_tag [overwritten] value #2 [overwritten] value #3 [overwritten]
Loosely Coupled
DIFT Shell val tag val val value #1
DIFT_exception!
ACM/IEEE CODES + ISSS 2018, Turin, Italy 12 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy 12 / 16
13 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
13 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
13 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
13 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
13 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
14 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
Loosely Coupled
+ Shell
Network-on-Chip
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes) 0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
medium small
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes) 0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
medium
small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes) 0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
medium
small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes) 0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
medium
small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes) 0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
medium
small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes)
0.00% 0.02% 0.04% 0.06% 0.08% 0.10% 0.12% 0.14%
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes)
0.0% 0.1% 0.2% 0.3% 0.4% 0.5%
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0.0% 0.2% 0.4% 0.6% 0.8% 1.0% 1.2% 1.4% 1.6%
medium
small
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes)
0.00% 0.02% 0.04% 0.06% 0.08% 0.10% 0.12% 0.14%
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 information leakage (%) burst size (bytes)
0.0% 0.2% 0.4% 0.6% 0.8% 1.0% 1.2% 1.4% 1.6%
0% 20% 40% 60% 80% 100% 26 27 28 29 210 211 212 213 burst size (bytes)
0.0% 0.1% 0.2% 0.3% 0.4% 0.5%
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
medium
small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 26 27 28 29 210 211 212 213
gray - large
normalized execution time burst size (bytes)
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - medium
normalized execution time burst size (bytes) 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - small
normalized execution time burst size (bytes)
20 26 212 no tags
medium small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 26 27 28 29 210 211 212 213
gray - large
normalized execution time burst size (bytes)
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - medium
normalized execution time burst size (bytes) 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - small
normalized execution time burst size (bytes)
20 26 212 no tags
medium small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 26 27 28 29 210 211 212 213
gray - large
normalized execution time burst size (bytes)
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - medium
normalized execution time burst size (bytes) 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - small
normalized execution time burst size (bytes)
20 26 212 no tags
medium small
14 / 16 ACM/IEEE CODES + ISSS 2018, Turin, Italy
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 26 27 28 29 210 211 212 213
gray - large
normalized execution time burst size (bytes)
1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - small
normalized execution time burst size (bytes) 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 26 27 28 29 210 211 212 213
gray - medium
normalized execution time burst size (bytes)
20 26 212 no tags
medium small
15 / 16
ACM/IEEE CODES + ISSS 2018, Turin, Italy
ACM/IEEE CODES + ISSS 2018, Turin, Italy