Creating Transformations for Matrix Obfuscation

There are many programming situations where it would be convenient to conceal the meaning of code, or the meaning of certain variables. This can be achieved through program transformations which are grouped under the term obfuscation . Obfuscation is one of a number of techniques that can be employed to protect sensitive areas of code. This paper presents obfuscation methods for the purpose of concealing the meaning of matrices by changing the pattern of the elements. We give two separate methods: one which, through splitting a matrix, changes its size and shape, and one which, through a change of basis in a ring of polynomials, changes the values of the matrix and any patterns formed by these. Furthermore, the paper illustrates how matrices can be used in order to obfuscate a scalar value. This is an improvement on previous methods for matrix obfuscation because we will provide a range of techniques which can be used in concert. This paper considers obfuscations as data refinements. Thus we consider obfuscations at a more abstract level without worrying about implementation issues. For our obfuscations, we can construct proofs of correctness easily. We show how the refinement approach enables us to generalise and combine existing obfuscations. We then evaluate our methods by considering how our obfuscations perform under certain relevant program analysis-based attacks.

[1]  Stephen Drape,et al.  Obfuscation of abstract data-types , 2004 .

[2]  M. Zettler,et al.  Robustness analysis of polynomials with polynomial parameter dependency using Bernstein expansion , 1998, IEEE Trans. Autom. Control..

[3]  Amit Sahai,et al.  On the (im)possibility of obfuscating programs , 2001, JACM.

[4]  Kai Engelhardt,et al.  Data Refinement: Model-Oriented Proof Methods and their Comparison , 1998 .

[5]  Karl Nickel,et al.  Interval Mathematics 1985 , 1986, Lecture Notes in Computer Science.

[6]  Julie Berchtold The Bernstein Basis in Set-Theoretic Geometric Modelling , 2000 .

[7]  Stephen Drape,et al.  Specifying Imperative Data Obfuscations , 2007, ISC.

[8]  Willem-Paul de Roever,et al.  Data Refinement by Willem-Paul de Roever , 1998 .

[9]  Aggelos Kiayias,et al.  Self Protecting Pirates and Black-Box Traitor Tracing , 2001, CRYPTO.

[10]  Rida T. Farouki,et al.  Algorithms for polynomials in Bernstein form , 1988, Comput. Aided Geom. Des..

[11]  Richard P. Brent,et al.  Recent technical reports , 1977, SIGA.

[12]  Christian S. Collberg,et al.  A Taxonomy of Obfuscating Transformations , 1997 .

[13]  Irina Voiculescu,et al.  Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms , 2009 .

[14]  Willem-Paul de Roever,et al.  Data Refinement: Theory , 1998 .

[15]  Charles R. Johnson,et al.  Matrix analysis , 1985, Statistical Inference for Engineers and Data Scientists.

[16]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2011, SIGP.

[17]  Stephen Drape Generalising the array split obfuscation , 2007, Inf. Sci..

[18]  Jürgen Garloff Convergent Bounds for the Range of Multivariate Polynomials , 1985, Interval Mathematics.

[19]  Stephen Drape,et al.  Slicing obfuscations: design, correctness, and evaluation , 2007, DRM '07.