An abstract interpretation-based framework for software watermarking

Software watermarking consists in the intentional embedding of indelible stegosignatures or watermarks into the subject software and extraction of the stegosignatures embedded in the stegoprograms for purposes such as intellectual property protection. We introduce the novel concept of abstract software watermarking. The basic idea is that the watermark is hidden in the program code in such a way that it can only be extracted by an abstract interpretation of the (maybe non-standard) concrete semantics of this code. This static analysis-based approach allows the watermark to be recovered even if only a small part of the program code is present and does not even need that code to be executed. We illustrate the technique by a simple abstract watermarking protocol for methods of Java™ classes. The concept applies equally well to any other kind of software (including hardware originally specified by software).

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

[2]  Laurie J. Hendren,et al.  Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C , 1996, POPL '96.

[3]  Katsuro Inoue,et al.  A practical method for watermarking Java programs , 2000, Proceedings 24th Annual International Computer Software and Applications Conference. COMPSAC2000.

[4]  Patrick Cousot,et al.  Invariance proof methods and analysis techniques for parallel programs , 1984 .

[5]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[6]  Thomas W. Reps,et al.  Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation , 1995, TAPSOFT.

[7]  Christian S. Collberg,et al.  Software watermarking: models and dynamic embeddings , 1999, POPL '99.

[8]  M. Guttman,et al.  Analysis of site-directed mutagenesis constructs by capillary electrophoresis using linear polymer sieving matrices. , 2003, Journal of chromatography. A.

[9]  Krishnaswamy Palsberg,et al.  A Functional Taxonomy for Software Watermarking , 2002 .

[10]  Jens Palsberg,et al.  Experience with software watermarking , 2000, Proceedings 16th Annual Computer Security Applications Conference (ACSAC'00).

[11]  Genevieve Arboit,et al.  A Method for Watermarking Java Programs via Opaque Predicates , 2002 .

[12]  Clark Thomborson,et al.  Manufacturing cheap, resilient, and stealthy opaque constructs , 1998, POPL '98.

[13]  Christian S. Collberg,et al.  Watermarking, Tamper-Proofing, and Obfuscation-Tools for Software Protection , 2002, IEEE Trans. Software Eng..

[14]  N. S. Barnett,et al.  Private communication , 1969 .

[15]  Christian S. Collberg,et al.  Breaking abstractions and unstructuring data structures , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[16]  James R. Gosler,et al.  Software Protection: Myth or Reality? , 1985, CRYPTO.

[17]  Reinhard Wilhelm,et al.  Shape Analysis , 2000, CC.

[18]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[19]  Philippe Granger Static analysis of arithmetical congruences , 1989 .

[20]  Jean-Jacques Quisquater,et al.  Robust Object Watermarking: Application to Code , 1999, Information Hiding.

[21]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .