Zero-knowledge Software Watermarking for C Programs

This paper proposes a novel method for watermarking C source code by exploiting the programming language features.The key idea of our watermarking scheme is a semantics-preserving program transformation, based on a hidden permutation of local identifiers, followed by another hidden permutation of the functions defined in the source code. This last permutation allows to encrypt the prove of ownership, in the framework of interactive zero-knowledge proof system. The proposed watermarking scheme is invisible to compilers and does not reveal any information about the watermark, its nature and its location into the program, since the zero knowledge proof is independent of the encoding and of the embedding. Finally, we introduce a third party Trusted TimeStamp Service into the system to prevent invertibility/ambiguity attacks. Keywords-Software Watermarking, Semantics-preserving program transformation, Zero-knowledge proof systems.

[1]  Jasvir Nagra,et al.  Threading Software Watermarks , 2004, Information Hiding.

[2]  Stefan Katzenbeisser,et al.  Watermark detection with zero-knowledge disclosure , 2003, Multimedia Systems.

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

[4]  염흥렬,et al.  [서평]「Applied Cryptography」 , 1997 .

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

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

[7]  Oded Goldreich,et al.  Definitions and properties of zero-knowledge proof systems , 1994, Journal of Cryptology.

[8]  Hongxia Jin,et al.  Self-validating Branch-Based Software Watermarking , 2005, Information Hiding.

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

[10]  Agostino Cortesi,et al.  A Generic Distortion Free Watermarking Technique for Relational Databases , 2009, ICISS.

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

[12]  Nasir D. Memon,et al.  Obfuscation of design intent in object-oriented applications , 2003, DRM '03.

[13]  Agostino Cortesi,et al.  A Distortion Free Watermark Framework for Relational Databases , 2009, ICSOFT.

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

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

[16]  Frank Ruskey,et al.  Ranking and unranking permutations in linear time , 2001, Inf. Process. Lett..

[17]  Xiangyu Zhang,et al.  Hiding program slices for software security , 2003, International Symposium on Code Generation and Optimization, 2003. CGO 2003..

[18]  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).

[19]  Stuart Haber,et al.  How to time-stamp a digital document , 1990, Journal of Cryptology.