+32 9 264 98 54 (phone)
+32 9 264 35 94 (fax)
System Software Lab
Computing Systems Lab (CSL)
Electronics and Information Systems (ELIS) department
Sint Pietersnieuwstraat 41
Modern trends in software engineering, including component-based design, scripting, virtualization, just-in-time compilation and adaptive resource management complicate the use of effective program obfuscation techniques. These trends mainly contribute to the fact that more and more applications are distributed in bytecode languages such as Java and CLI. Contradictory to what has been achieved for binary code, where the possibilities for applying obfuscating transformations are immense, the possibilities for obfuscating bytecode are however rather limited. Java classes, for example, must adhere to a set of strict rules and must expose a lot of information about their interfaces to the virtual machine. This leads to two important problems involving IP protection:
- the global decomposition of software into modules and the interaction between those modules is relatively easy to determine, even after obfuscation
- components can be easily identified and isolated and their interfaces are well documented in code, which makes them vulnerable to code lifting and code injection attacks
The principle problem concerning bytecode obfuscation is that the run-time platform requires a significant amount of meta-information to be available at runtime, which means that most of the design decision made during software development are reflected in the bytcode, and can therefore be easily retrieved.
The strategic goals of the PhD proposal encompass
- the development of effective obfuscation techniques for software distributed in bytecode form, and
- the decoupling of IP-security and source code, thereby increasing programmer productivity.
The first type of obfuscation techniques will work on a syntax level and will primarily try to hide the interfaces between different components. These techniques form a first line of defense, making sure that it is difficult to identify and isolate the different software components, thereby hindering possible code injection and code lifting attacks. A second kind of techniques will focus on the semantic level. Their goals are to ensure that the internal workings of the different software components, which previously communicated only through a clean set of interfaces, are more dependent on each other when the final product is to be distributed. These techniques form a second line of defense against software attacks, ensuring that both lifted components and newly injected components will not work correctly. These transformations will be developed in a program transformation tool, such that they can be applied automatically. As such, productivity programmers will no longer have to be concerned with the non-functional aspects involved in software development. Instead they will only have to focus on functional aspects while still being able to use most or all available software engineering techniques. A fundamental issue in using languages that compile to bytecode is that some language constructs more than others restrict the application of obfuscation techniques. Therefore, we will also investigate to what extent the different constructs (design patterns, garbage collection, reflection, class loaders, virtual method calls, dynamic type checking, ...) affect the potential strength of obfuscation techniques. Based on this study, we will make the necessary adjustments to the java language and the virtual machine so that the limiting factors can be resolved and obfuscation can be maximized.
His research will be on global obfuscation techniques for Java applications.
Publications to Appear
- Christophe Foket, Bjorn De Sutter and Koen De Bosschere Pushing Java type obfuscation to the limit IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING, Vol. 11(6), pp. 553-567 (2014)
- Christophe Foket, Bjorn De Sutter, Bart Coppens and Koen De Bosschere A novel obfuscation : class hierarchy flattening Foundations and Practice of Security, Proceedings, Vol. 7743, pp. 194-210 (2013)
- Christophe Foket Kwantificeerbare programmadiversificatie a.d.h.v. machine learning technieken Afstudeerwerk FEA, UGent, pp. (2009)