Programming Research Group
Research Report RR-04-12
The Matrix Obfuscated
Stephen Drape
June 2004, 36pp.
Abstract
An obfuscation is a program transformation whose aim is to make a program "harder to understand"
so that reverse engineering of that program becomes more difficult.
This paper considers a fresh approach to obfuscation by considering the operations of a data-type,
which we model as functional programs. Obfuscation is mainly applied to object-oriented programs
and we can view an object as a data-type and methods as the operations. We study matrices and the
implementation of some operations using functional lists.
Constructing obfuscations for imperative programs usually requires expensive program analysis, but our
method allows us to derive obfuscations directly. Whilst establishing the correctness of imperative
obfuscations can be a challenging task, our approach enables this to be achieved easily. Our derivations
are aided by taking advantage of standard functional programming results such as fold fusion.
To date obfuscation has been an area largely untouched by the formal method approach to program correctness.
Formal methods allow us to establish a framework that provides support for the obfuscation of matrix data-types
which exploit properties of matrices.
This paper is available as a 494,050 bytes ps file.
|