safe interacting enclaves for heterogeneous protected
play

Safe Interacting Enclaves for Heterogeneous Protected Module - PowerPoint PPT Presentation

Safe Interacting Enclaves for Heterogeneous Protected Module Architectures Sten Verbois 29 June 2018 Content 1. Motivation 2. Research Goals 3. Aspects of Using Rust 4. Case Study: Attestation server for VulCAN 5. Demo 1 Motivation


  1. Safe Interacting Enclaves for Heterogeneous Protected Module Architectures Sten Verbois 29 June 2018

  2. Content 1. Motivation 2. Research Goals 3. Aspects of Using Rust 4. Case Study: Attestation server for VulCAN 5. Demo 1

  3. Motivation • When deploying software, you have to trust the platform • Isolation on OS level (e.g. LXC, Docker) is not enough 2

  4. Motivation • Protected Module Architectures provide isolation even from privileged software • Guarantees integrity and confidentiality • Two relevant implementations: – Intel Software Guard Extensions – Sancus • Guarantees only hold when source code does not contain memory corruption bugs – e.g. buffer overflow, use-after-free, ... • Guidelines and best practices are available 3

  5. But... 4

  6. Solutions • Formal verification [1] • Static analysis [2, 3] • Program transformations / Runtime checks [4, 5, 6] • Safe programming language – Good candidate: Rust 5

  7. Motivation (cont.) • Modules require interaction with – untrusted context – other protected modules – other I/O (input devices, actuators) • Interaction with secure components should be secure as well • Case study: securing vehicular communication with VulCAN 6

  8. Research Goals • Specify requirements for setting up secure communication channels between protected modules • Advance the VulCAN design by proposing an attestation server enclave implementation • Use Rust to develop such enclaves with a small TCB while efficiently eliminating memory corruption vulnerabilities 7

  9. Why Rust? • Systems programming language • Zero-cost abstractions • Guarantees memory and thread safety • Optional standard library • Helpful error reporting https://www.rust-lang.org 8

  10. Ownership and Borrowing fn main() { fn borrow(v: & Vec< i32 >) { 1 let mut v = Vec::new(); // ... 2 v.push(1); } // Borrow ends here 3 borrow(&v); // OK, v borrowed 4 v.push(2); fn take(v: Vec< i32 >) { 5 take(v); // ... 6 // - value moved here } 7 v.push(3); // ERROR 8 // ^ value used here after move 9 } 10 Listing 1: Code snippet demonstrating the compiler-enforced ownership mechanism of Rust. 9

  11. Rust enclaves Figure: Developing SGX enclaves in C (left) and Rust (right). 10

  12. Rust enclaves • No Rust Standard Library available • Baidu Rust-SGX SDK implements most of std in Intel SGX SDK – e.g. collections (String, Vector, HashMap), Rust-like file handling for SGX protected fs and Random number generation • Other solutions: Graphene and Haven (Library OS), SCONE (Docker in Intel SGX) 11

  13. Rust enclaves • Near C performance for Spongent / SpongeWrap cryptographic functions C ++ Rust Input length 256-bit 1024-bit 256-bit 1024-bit Avg. cycles 54,368,526 201,213,242 50,396,303 184,812,155 Std. dev. 336,584 9,694,415 504,136 2,175,737 Table: Runtime performance comparison between C++ and Rust. 12

  14. Rust enclaves • Minimal programmer effort – Alternatives: formal verification or exhaustive testing – Porting code from C/C++) to Rust is relatively easy char * input = ...; let input: & [ u8 ] = ...; 1 int inputLeft = inputLength; 2 while (inputLeft) { for block in input.chunks(RATE) { 3 // Use RATE bytes of input // Use ‘block‘ 4 ... ... 5 } 6 input += RATE; 7 inputLeft -= RATE; 8 } 9 Listing 2: Comparison between C (left) and Rust(right) of a common code pattern. 13

  15. VulCAN Case Study: CAN • CAN: Controller Area Network – Broadcast message bus used in vehicular control systems – 1991: First production vehicle from Mercedes-Benz [7] • LeiA [8] & VatiCAN [9] – Authentication between Electronic Control Units (ECUs) – Prevents unauthorised ECUs from performing actions • VulCAN [10]: – Protects against arbitrary code execution on ECUs – Put authentication protocol implementation in PMA 14

  16. VulCAN Case Study Figure: Picture of VulCAN hardware demo from [ ? ]. 15

  17. VulCAN Case Study: Simplified Attestation & Key Distribution Sancus MCU SGX enabled Ping-Pong CAN system Attestation & Key Distribution Sancus MCU Figure: Schematic representation of hardware setup. 16

  18. VulCAN Case Study: Logging Server • Passive logging module • If the log indicates an authenticated message, then it must have been produced by a trusted component in the network • Non-repudiation but no availability • Limited usability 17

  19. VulCAN Case Study: Attestation Server Attestation • Goals – Expected module content ... – ... running on expected platform ... – ... with expected memory layout • Challenge-response • Utilizing module-specific key K PM 18

  20. VulCAN Case Study: Attestation Server Attestation AS PM enclave Randomly generate n ∀ PM n Compute Compute {; n } K PM {; n } K PM {; n } T K PM Compare computed {; n } T K PM with received value Figure: Attestation protocol between AS and each PM . 19

  21. VulCAN Case Study: Attestation Server Key distribution • Goals – Securely deliver connection keys K C to PMs – Proof received ⇒ key successfully installed • Again, encrypt payload with module-specific key K PM 20

  22. VulCAN Case Study: Attestation Server Key distribution AS PM enclave Randomly generate all connection keys K C ∀ PM ∀ K C : PM ∈ C { I D C K C } K PM , ; Compute Decrypt {; M } K C I D C K C , Compute If uninitialized C {; M } K C {; M } T K C Compare computed Install K C {; M } T K C with received value Mark initialized C Figure: Key distribution protocol* between AS and each PM . 21

  23. Questions Thank you for your attention! Questions? 22

  24. References I B. Jacobs, J. Smans, and F. Piessens, “The Verifast program verifier: A tutorial,” Tech. Rep. , 2014. M. Das, S. Lerner, and M. Seigle, “ESP: Path-sensitive program verification in polynomial time,” in ACM Sigplan Notices , vol. 37, pp. 57–68, ACM, 2002. J. Berdine, B. Cook, and S. Ishtiaq, “SLAyer: Memory safety for systems-level code,” in International Conference on Computer Aided Verification , pp. 178–183, Springer, 2011. 23

  25. References II S. Nagarakatte, J. Zhao, M. M. Martin, and S. Zdancewic, “Softbound: Highly compatible and complete spatial memory safety for C,” ACM Sigplan Notices , vol. 44, no. 6, pp. 245–258, 2009. P. Akritidis, M. Costa, M. Castro, and S. Hand, “Baggy Bounds Checking: An Efficient and Backwards-Compatible Defense against Out-of-Bounds Errors.,” in USENIX Security Symposium , pp. 51–66, 2009. K. Serebryany, D. Bruening, A. Potapenko, and D. Vyukov, “Addresssanitizer: A Fast Address Sanity Checker.,” in USENIX Annual Technical Conference , pp. 309–318, 2012. 24

  26. References III Wikipedia, “Can bus — Wikipedia, the free encyclopedia,” 2017. [Online; accessed 09-December-2017]. A.-I. Radu and F. D. Garcia, “Leia: a lightweight authentication protocol for can,” in European Symposium on Research in Computer Security , pp. 283–300, Springer, 2016. S. Nürnberger and C. Rossow, “–vatiCAN–Vetted, Authenticated CAN Bus,” in International Conference on Cryptographic Hardware and Embedded Systems , pp. 106–124, Springer, 2016. 25

  27. References IV J. Van Bulck, J. T. Mühlberg, and F. Piessens, “VulCAN: Efficient component authentication and software isolation for automotive control networks,” in Proceedings of the 33th Annual Computer Security Applications Conference (ACSAC’17) , ACM, 2017. 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend