Multi-module fully abstract compilation (extended abstract)

Marco Patrignani, Dominique Devriese, Frank Piessens · Lirias · 2015

High-level languages like Java or ML support abstraction and data encapsulation through language features such as mod-ules, objects, classes, and/or abstract data types. But traditional compilation does not preserve such abstraction boundaries. At machine code level, there is just a single address-space where all code is readable and all data is read/writable. In other words, the entire high-level program is compiled down into one single protection domain. To a large extent, this is the case because the protection domain granularity of modern execution platforms is very coarse grained: the smallest unit of protection is an operating system process, and most programs are compiled to a single process. For fully safe languages, and if attackers can only provide input to and read output from programs, there is no need to preserve abstraction or protection boundaries after compilation:

Read the paper · More papers on PaperTik