Course Presentation

Presenter Course title
Christian Collberg Intellectual property protection of software
Jack Davidson Software security via lightweight process virtualization
Roberto Giacobazzi
Theory and practice of code attack: Semantics, analysis and code transformation
Yuan Xiang Gu
Software security patterns, direct attack analysis and protection techniques
Bjorn De Sutter
Software Protection Techniques against Hardware-Based Attacks on Software

Christian Collberg (University of Arizona, USA)

collbergCourse title:
Intellectual property protection of SW: The Practice and Theory of Software Protection

In this part of the course we will study ways to protect programs from software piracy, tampering, and reverse engineering. We will study practical software-based protection algorithms, the theoretical limits of such protection, as well has hardware-based solutions. In the course we will learn what methods bad guys use to extract secrets from programs and what methods good guys use to protect these secrets. The techniques studied in software protection are known as code obfuscation, software watermarking,  tamperproofing, and birthmarking. Software watermarking is used to trace software pirates, code obfuscation is used to make it more difficult to reverse engineer a program, tamperproofing is used to make it harder to modify a program, and birthmarking is used to detect code theft. These techniques are commonly used to protect cryptographic primitives in digital rights management (DRM) software, to prevent the removal of license checks, to hide secret algorithms and protocols in programs such as Skype, and to detect cheating in computer science programming assignments.

In this class we will study parts of the book:
Surreptitious Software
by Christian Collberg and Jasvir Nagra,
pp 816, Addison-Wesley Professional, 2009.

Jack Davidson (University of Virginia, USA)

davidsonCourse title:
Software Security via Lightweight Process Virtualization

Computing is increasingly ubiquitous. It is used in many areas of daily life, from cellular telephones, managing health and financial records, e-commerce, and electronic voting, to name a few. Users of these various computing platforms demand high quality, undisrupted service, and privacy and security of their personal information. Beyond personal use, much of society’s critical infrastructure is also controlled by complex software systems. Unfortunately, because of its complexity, it is difficult to build software that is impervious from attack by malicious adversaries. Indeed, every day there are reports of intrusions and security breaches that result in financial loss and disclosure of confidential or proprietary information. A promising approach for providing protection of software from a wide variety of attacks is the use of lightweight process virtualization via software dynamic translation. This course will introduce students to the concept of software dynamic translation, discuss its efficient implementation, and describe its use to protect software from various types of attacks. To introduce students to the power and utility of software dynamic translation, the course will include several hands-on exercises where the student implements a protection scheme using software dynamic translation.

Roberto Giacobazzi (Università degli Studi di Verona, Italy)

giacobazziCourse title:
Theory and practice of code attack: Semantics, analysis and code transformation

In this course we will study systematic and automatic methods for code attack and reverse engineering. We will introduce static and dynamic program analysis as basic tools for understanding what programs do and for making reverse engineering. Most known attack methods based on control/data-flow analysis, profiling, tracing, emulation, disassembly and decompilation will be presented as suitable abstractions of an interpreter. Obfuscation and watermarking will be then discussed as methods for making these abstract interpreters incomplete when acting on the modified (obfuscated or watermaked) code, i.e. failing to extract hidden information. Systematic methods for making abstract interpreters incomplete will be discussed together with concrete examples and challenging future research directions. The result is a unifying and comprehensive view of SW protection strategies which provides both a theoretical bases for most of the known attack and defense methods and a perspective for the design of new algorithm for surreptitious software. The class will consists of lectures and hands-on exercises. Slides will be distributed to the course attendees.

Yuan Xiang Gu (Irdeto, Canada)

guCourse title:
Software security patterns, direct attack analysis and protection techniques

The consumer electronics industry is entering a new age. The advanced technology and products, rapid demand on media digitalization, the continuously falling prices of consumer electronics together with increasing disposable income from emerging markets (such as China, India and other quick growth regions)  are spurring growth in the consumer electronics market in a speed and the scope that has never been seen before. Many of consumer electronics products rely on software applications to function. Almost all consumer electronics devices require functioning in a non-protected environment. People can directly access these devices for different purposes that range from good (e.g., to get needed services) to bad (e.g., to hack the devices). As a result, computer applications increasingly execute in hostile environments. Hand-held devices (such as portable media players, smart phones), home networking (such as set-top boxes, media players, PCs) and web-based environments permit attackers to deploy substantial time and resources. Therefore, the protection of legitimate software against attacks is becoming an arms race. Moreover, increasing hardware performance and increasingly sophisticated attack tools favor illicit intruders. How can a distributor of software be sure that the software is robust and resistant to attack? Frequently, the platform and software are well known to an attacker who has time, resources, tools and all the experts on the web at his disposal. This attack landscape is often termed a white-box environment, where all the content is in plain sight - the opposite of a black-box environment (in the other words, a trusted and protected environment). Therefore, preventing or stopping direct and automated attacks to software systems is becoming one of the most demanding security challenges. This course describes and discusses direct software attack scenarios and security patterns that are abstracted from many application domains in terms of use cases, vulnerability and threat analysis, and security solutions. Also, we detail certain currently marketed software protection technologies as a guide to the state of the art.

Bjorn De Sutter (Ghent University, Belgium)

bjornCourse title:
Software Protection Techniques against Hardware-Based Attacks on Software

In this short course, we will study hardware-based attacks on software and software-based defense mechanisms against those attacks. A first category of attacks we will study are side-channel attacks. Such attacks observe hardware behavior (power consumption, execution time, cache behavior, ... ) of processors running sensitive software to extract sensitive information from that software. A second category are hardware tampering techniques, such as controlled power glitches or laser light attacks to modify the behavior of running software such that the software starts exposing sensitive information. For both types of attacks, software transformations will be discussed that mitigate the leaking of sensitive information.