night (used to be an associate professor) Muhammad Abdul Wahab Contact : @Mabdulwahabp 3rd year PhD student at IETR, France Presentation (after my talk!), links, etc : https://github.com/pcotret/34c3-trustzone-is-not-enough Pascal Cotret Trustzone is not enough December 30, 2017 1 / 41
Technology, Building a Secure System using TrustZone Technology + Console Security - Switch, Homebrew on the Horizon (day2 talk) Pascal Cotret Trustzone is not enough December 30, 2017 3 / 41
Technology, Building a Secure System using TrustZone Technology + Console Security - Switch, Homebrew on the Horizon (day2 talk) ⇒ This talk is something complementary :) Pascal Cotret Trustzone is not enough December 30, 2017 3 / 41
the transfer of information from an information container c1 to c2 in a given process P. c1 − → P c2 Pascal Cotret Trustzone is not enough December 30, 2017 6 / 41
the transfer of information from an information container c1 to c2 in a given process P. c1 − → P c2 Example int a, b, w, x; a = 11; b = 5; w = a * 2; x = b + 1; Pascal Cotret Trustzone is not enough December 30, 2017 6 / 41
C OS level Laminar HiStar kBlare 1 1. Jacob Zimmermann, Ludovic Mé, and Christophe Bidan. Introducing Reference Flow Control for Detecting Intrusion Symptoms at the OS Level. In : RAID 2002. Pascal Cotret Trustzone is not enough December 30, 2017 13 / 41
C OS level Laminar HiStar kBlare 1 Low level Raksha (Kannan et al.) Flexitaint (Venkataramani et al.) Flexcore (Deng et al.) PAU (Heo et al.) www.blare-ids.org 1. Jacob Zimmermann, Ludovic Mé, and Christophe Bidan. Introducing Reference Flow Control for Detecting Intrusion Symptoms at the OS Level. In : RAID 2002. Pascal Cotret Trustzone is not enough December 30, 2017 13 / 41
2. Hari Kannan, Michael Dalton, and Christos ozyrakis. Decoupling dynamic information flow tracking with a dedicated coprocessor. In : Dependable Systems & Networks, 2009. IEEE. 2009, pp. 105-114. Pascal Cotret Trustzone is not enough December 30, 2017 15 / 41
attacks detected (from 300% to 3700%) HW-assisted In-core DIFT Low overhead (<10%) Invasive modifications Few security policies Dedicated CPU for DIFT Low overhead (<10%) Wasting resources Few modifications to CPU Energy consumption (x 2) Flexible security policies Communication Low overhead (<10%) between CPU and DIFT Dedicated DIFT Coprocessor CPU not modified Coprocessor Pascal Cotret Trustzone is not enough December 30, 2017 16 / 41
compared to overall DIFT execution time overhead Source : Heo et al. 3 “Instrumentation is the transformation of a program into its own measurement tool” Implementing an LLVM-based Dynamic Binary Instrumentation framework (day2 #34C3) 3. Ingoo Heo et al. Implementing an Application-Specific Instruction-Set Processor for System-Level Dynamic Program Analysis Engines. In : ACM TODAES. 20.4 (2015), p. 53. Pascal Cotret Trustzone is not enough December 30, 2017 17 / 41
it represents the major portion of overall DIFT execution time overhead Lack of security of DIFT coprocessor No existing work targets ARM-based SoCs (related work implementations on softcores) Additional challenges Limited visibility Frequency gap between CPU and DIFT coprocessor Communication interface, . . . Pascal Cotret Trustzone is not enough December 30, 2017 18 / 41
PFT Decoder AXI BRAM ARMHEx Coprocessor trace Processing System (PS) Programmable Logic (ARMHEx) EMIO interface TRF Config control interrupt AXI GP 32 MB DDR Memory (used by Linux OS) Tag dependencies Tag space Heap and Stack (coprocessor) Buffer AXI GP Pascal Cotret Trustzone is not enough December 30, 2017 20 / 41
tracing FIGURE – ARM Coresight components in Zynq SoC Source : ARM CoreSight components TRM Pascal Cotret Trustzone is not enough December 30, 2017 23 / 41
tracing FIGURE – ARM Coresight components in Zynq SoC Source : ARM CoreSight components TRM Pascal Cotret Trustzone is not enough December 30, 2017 23 / 41
code) Branch Broadcast 4 (i) MOV PC, LR (ii) ADD R1, R2, R3 (iii) B 0x8084 4. Linux driver for PTM patched to support Branch broadcast feature. Link of the commit on the Github page Pascal Cotret Trustzone is not enough December 30, 2017 24 / 41
code) Branch Broadcast 4 Context ID comparator CycleAccurate tracing Timestamping (i) MOV PC, LR (ii) ADD R1, R2, R3 (iii) B 0x8084 4. Linux driver for PTM patched to support Branch broadcast feature. Link of the commit on the Github page Pascal Cotret Trustzone is not enough December 30, 2017 24 / 41
#4] r1 ← mem (r2 + 4) Two possible strategies 1 Recover all memory address through instrumentation 2 Recover only register-relative memory address through instrumentation Pascal Cotret Trustzone is not enough December 30, 2017 29 / 41
PFT Decoder AXI BRAM ARMHEx Coprocessor trace Processing System (PS) Programmable Logic (ARMHEx) EMIO interface TRF Config control interrupt AXI GP 32 MB DDR Memory (used by Linux OS) Tag dependencies Tag space Heap and Stack (coprocessor) Buffer AXI GP Pascal Cotret Trustzone is not enough December 30, 2017 32 / 41
non-intrusive (dedicated HW module that works in parallel) 2 Configuration of CoreSight components (TPIU used 5) Communication overhead is only due to instrumentation 5. Linux driver for TPIU has been patched Pascal Cotret Trustzone is not enough December 30, 2017 35 / 41
1.75 2 Related work Strategy 1 Strategy 2 Normalized Execution Time Original Program Host instrument 53.7% 24.6% 5.37% -90% -53% FIGURE – Average execution time of MiBench benchmark for different strategies Pascal Cotret Trustzone is not enough December 30, 2017 36 / 41
70 bitcount susan jpeg dijkstra patricia blowfish rijndael sha CRC32 FFT stringsearch Percentage of instructions instrumented Related work instrumentation Our strategy 1 Our strategy 2 FIGURE – Number of instrumented instructions Pascal Cotret Trustzone is not enough December 30, 2017 37 / 41
Execution Trace Ctrl signals DIFT-related data CoreSight components Memory (used by Linux OS) Trusted area Instrumented data ARMHEx Coprocessor Secure Pascal Cotret Trustzone is not enough December 30, 2017 38 / 41
Execution Trace Ctrl signals DIFT-related data CoreSight components Memory (used by Linux OS) Trusted area Instrumented data ARMHEx Coprocessor Secure Unauthorized access Pascal Cotret Trustzone is not enough December 30, 2017 38 / 41
work Approaches Kannan Deng Heo ARMHEx Hardcore portability No No Yes Yes Main CPU Softcore Softcore Softcore Hardcore Communication overhead N/A N/A 60% 5.4% Area overhead 6.4% 14.8% 14.47% 0.47% Area (Gate Counts) N/A N/A 256177 128496 Power overhead N/A 6.3% 24% 16% Max frequency N/A 256 MHz N/A 250 MHz Isolation No No No Yes Pascal Cotret Trustzone is not enough December 30, 2017 39 / 41
(Program Flow) Non-intrusive tracing → Negligible performance overhead Reduced communication time overhead Improve software security Future perspectives Combine Low-level and OS-level DIFT Extend DIFT on multicore CPU Take use of other debug components for security Intel Processor Trace STM (TI) Pascal Cotret Trustzone is not enough December 30, 2017 41 / 41
#34C3 Many thanks to: Muhammad Abdul Wahab (IETR, FR) Mounir Nasr Allah (INRIA CIDRE, FR) https://github.com/pcotret/34c3-trustzone-is-not-enough Guillaume Hiet (INRIA CIDRE, FR) Vianney Lapôtre (UBS, FR) Guy Gogniat (UBS, FR)