23.11.2013 Views

Obfuscation of Abstract Data-Types - Rowan

Obfuscation of Abstract Data-Types - Rowan

Obfuscation of Abstract Data-Types - Rowan

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Preliminaries<br />

Homer: “All right brain, you don’t like me and I don’t like you.<br />

But let’s just do this and I can get back to killing you<br />

with beer.”<br />

The Simpsons — The Front (1993)<br />

In this thesis, we consider the obfuscation <strong>of</strong> programs. “To Obfuscate”<br />

means “To cast into darkness or shadow; to cloud, obscure”. From a Computer<br />

Science perspective, an obfuscation is a behaviour-preserving program transformation<br />

whose aim is to make a program “harder to understand”. <strong>Obfuscation</strong>s<br />

are applied to a program to make reverse engineering <strong>of</strong> the program more difficult.<br />

Two concerns about an obfuscation are whether it preserves behaviour<br />

(i.e. it is correct) and the degree to which it maintains efficiency.<br />

Example<br />

As an example <strong>of</strong> obfuscation, consider the program in Figure 1. The method<br />

start takes an integer value array as input and the array is returned from the<br />

method. But what does this method do to the elements <strong>of</strong> the array? The<br />

obfuscation was achieved by using some <strong>of</strong> the methods outlined in this thesis.<br />

Aims <strong>of</strong> the thesis<br />

The current view <strong>of</strong> obfuscation (in particular, the paper by Collberg et al. [10])<br />

concentrates on object-oriented programs. In [10], obfuscations for constructs<br />

such as loops, arrays and methods are stated informally: without pro<strong>of</strong>s <strong>of</strong><br />

correctness. Constructing pro<strong>of</strong>s <strong>of</strong> correctness for imperative obfuscations is a<br />

challenging task.<br />

We <strong>of</strong>fer an alternative approach based on data refinement and functional<br />

programming. We want our approach to have the following objectives:<br />

• to yield pro<strong>of</strong>s <strong>of</strong> correctness (or even yield derivations) <strong>of</strong> all our obfuscations<br />

• to use simple, established refinement techniques, leaving the ingenuity for<br />

obfuscation<br />

• to generalise obfuscations to make obfuscations more applicable.<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!