Threading Software Watermarks

We introduce a new dynamic technique for embedding robust software watermarks into a software program using thread contention. We show the technique to be resilient to many semantic-preserving transformations that most existing proposals are susceptible to. We describe the technique for encoding the watermark as a bit string and a scheme for embedding and recognizing the watermark using thread contention. Experimental results with Java bytecode indicate that thread based watermarks have small impact on the size of applications and only a modest effect on their speed.

[1]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[2]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[3]  Robert Muller Computer software protection , 1981 .

[4]  Brad A. Myers,et al.  Taxonomies of visual programming and program visualization , 1990, J. Vis. Lang. Comput..

[5]  David A. Padua,et al.  Issues in the Optimization of Parallel Programs , 1990, ICPP.

[6]  Barbara G. Ryder,et al.  Pointer-induced aliasing: a problem classification , 1991, POPL '91.

[7]  Derrick Grover,et al.  The Protection of Computer Software: Its Technology and Application , 1992 .

[8]  Blaine A. Price,et al.  A taxonomy of software visualization , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[9]  Dirk Grunwald,et al.  Data flow equations for explicitly parallel programs , 1993, PPOPP '93.

[10]  Gruia-Catalin Roman,et al.  A taxonomy of program visualization systems , 1993, Computer.

[11]  Lori A. Clarke,et al.  Data flow analysis for verifying correctness properties of concurrent programs , 1995 .

[12]  Bernhard Steffen,et al.  Parallelism for Free : E cient and Optimal Bitvector Analyses for Parallel Programs , 1996 .

[13]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[14]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[15]  Hector Garcia-Molina,et al.  Building a scalable and accurate copy detection mechanism , 1996, DL '96.

[16]  David Aucsmith,et al.  Tamper Resistant Software: An Implementation , 1996, Information Hiding.

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

[18]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[19]  Jeffrey E. F. Friedl Mastering Regular Expressions , 1997 .

[20]  Todd A. Proebsting,et al.  Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?) , 1997, COOTS.

[21]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[22]  Eugene H. Spafford,et al.  Authorship analysis: identifying the author of a program , 1997, Comput. Secur..

[23]  Christian F. Tschudin,et al.  Protecting Mobile Agents Against Malicious Hosts , 1998, Mobile Agents and Security.

[24]  Christian S. Collberg,et al.  On the Limits of Software Watermarking , 1998 .

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

[26]  Gang Qu,et al.  Analysis of watermarking techniques for graph coloring problem , 1998, 1998 IEEE/ACM International Conference on Computer-Aided Design. Digest of Technical Papers (IEEE Cat. No.98CB36287).

[27]  Jean-Paul M. G. Linnartz,et al.  Some general methods for tampering with watermarks , 1998, IEEE J. Sel. Areas Commun..

[28]  Derek L. Bruening Systematic testing of multithreaded Java programs , 1999 .

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

[30]  Qwhuqhw Duh Qrz Vxiihulqj Iurp Surjudp Wkhiw,et al.  Watermarking Java Programs , 1999 .

[31]  Martin C. Rinard,et al.  Pointer analysis for multithreaded programs , 1999, PLDI '99.

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

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

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

[35]  Bernhard Beckert,et al.  The Approach: Integrating Object-oriented Design and Formal Verification (cid:3) , 2007 .

[36]  Laurie J. Hendren,et al.  Decompiling Java using staged encapsulation , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[37]  Armin Biere,et al.  Applying static analysis to large-scale, multi-threaded Java programs , 2001, Proceedings 2001 Australian Software Engineering Conference.

[38]  Ramarathnam Venkatesan,et al.  A Graph Theoretic Approach to Software Watermarking , 2001, Information Hiding.

[39]  John C. Knight,et al.  A security architecture for survivability mechanisms , 2001 .

[40]  Clark Thomborson,et al.  Software Watermarking: Protective Terminology , 2001 .

[41]  Jack W. Davidson,et al.  Protection of software-based survivability mechanisms , 2001, 2001 International Conference on Dependable Systems and Networks.

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

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

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

[45]  W. Frable Online publication , 2002 .

[46]  Nasir D. Memon,et al.  Preventing Piracy, Reverse Engineering, and Tampering , 2003, Computer.

[47]  John K. Ousterhout,et al.  Why Threads Are A Bad Idea (for most purposes) , 2003 .

[48]  Gael Hachez,et al.  A Comparative Study of Software Protection Tools Suited for E-Commerce with Contributions to Software Watermarking and Smart Cards , 2003 .

[49]  Christian S. Collberg,et al.  Software Watermarking Through Register Allocation: Implementation, Analysis, and Attacks , 2003, ICISC.

[50]  Christian S. Collberg,et al.  Sandmark--A Tool for Software Protection Research , 2003, IEEE Secur. Priv..

[51]  Christian S. Collberg,et al.  A system for graph-based visualization of the evolution of software , 2003, SoftVis '03.

[52]  Neil J. Hurley,et al.  Securing Java through software watermarking , 2003, PPPJ.

[53]  Christian S. Collberg,et al.  Graph Theoretic Software Watermarks: Implementation, Analysis, and Attacks , 2004, Information Hiding.

[54]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[55]  Gregg M. Townsend,et al.  Dynamic Graph-Based Software Watermarking , 2004 .

[56]  Richard N. Taylor,et al.  Complexity of analyzing the synchronization structure of concurrent programs , 1983, Acta Informatica.

[57]  Michael Stepp,et al.  Dynamic path-based software watermarking , 2004, PLDI '04.

[58]  Clark Thomborson,et al.  Tamper-proofing software watermarks , 2004 .

[59]  Patrick Cousot,et al.  An abstract interpretation-based framework for software watermarking , 2004, POPL.

[60]  William Zhu,et al.  Algorithms to Watermark Software Through Register Allocation , 2005, DRMTICS.

[61]  CollbergChristian,et al.  Software watermarking in the frequency domain , 2005 .

[62]  Armand Navabi,et al.  The evaluation of two software watermarking algorithms , 2005, Softw. Pract. Exp..