Programming Research Group
Research Report RR-04-09
Obfuscating Set Representations
Stephen Drape
May 2004, 26pp.
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. Two concerns about an obfuscation are whether it preserves behaviour
and how much it changes efficiency.
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 consider and study a type of sets and implementation of its operations
using functional lists. An imperative obfuscation --- array splitting --- is adapted and
applied to the set operations. We will see that these particular obfuscations make little
difference to efficiency of the operations.
Constructing obfuscations for imperative programs usually requires expensive program analysis,
but our method allows us to derive functional obfuscations directly. Whilst establishing the
correctness of imperative obfuscations can be a challenging task, our approach enables this
to be achieved easily.
To date obfuscation has been an area largely untouched by the formal method approach to program
correctness. We have begun to evaluate how a more mathematical view contributes to the study of
obfuscating imperative programs.
This paper is available as a 292,056 bytes ps file.
|