Encoding Watermark Numbers as Reducible Permutation Graphs using Self-inverting Permutations

Several graph theoretic watermark methods have been proposed to encode numbers as graph structures in software watermarking environments. In this paper, we propose an efficient and easily implementable codec system for encoding watermark numbers as reducible permutation flow-graphs and, thus, we extend the class of graphs used in such a watermarking environment. More precisely, we present an algorithm for encoding a watermark number $w$ as a self-inverting permutation $\pi^*$, an algorithm for encoding the self-inverting permutation $\pi^*$ into a reducible permutation graph $F[\pi^*]$ whose structure resembles the structure of real program graphs, as well as decoding algorithms which extract the permutation $\pi^*$ from the reducible permutation graph $F[\pi^*]$ and the number $w$ from $\pi^*$. Both the encoding and the decoding process takes time and space linear in the length of the binary representation of $w$. The two main components of our proposed codec system, i.e., the self-inverting permutation $\pi^*$ and the reducible permutation graph $F[\pi^*]$, incorporate the binary representation of the watermark~$w$ in their structure and possess important structural properties, which make our system resilient to attacks; to this end, we experimentally evaluated our system under edge modification attacks on the graph $F[\pi^*]$ and the results show that we can detect such attacks with high probability.

[1]  Stavros D. Nikolopoulos,et al.  Encoding watermark integers as self-inverting permutations , 2010, CompSysTech '10.

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

[3]  M. Golumbic Algorithmic graph theory and perfect graphs , 1980 .

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

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

[6]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[7]  Stavros D. Nikolopoulos,et al.  An Efficient Graph Codec System for Software Watermarking , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference Workshops.

[8]  Zhang Li A Survey on Software Watermarking , 2003 .

[9]  Akito Monden,et al.  Design and evaluation of birthmarks for detecting theft of java programs , 2004, IASTED Conf. on Software Engineering.

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

[11]  Christian S. Collberg,et al.  Software watermarking via opaque predicates: Implementation, analysis, and attacks , 2006, Electron. Commer. Res..

[12]  Stavros D. Nikolopoulos,et al.  A dynamic watermarking model for embedding reducible permutation graphs into software , 2013, 2013 International Conference on Security and Cryptography (SECRYPT).

[13]  Fei-Yue Wang,et al.  A Survey of Software Watermarking , 2005, ISI.

[14]  Elisa Bertino,et al.  On the Properties of Non-Media Digital Watermarking: A Review of State of the Art Techniques , 2016, IEEE Access.

[15]  Christian S. Collberg,et al.  Dynamic graph-based software fingerprinting , 2007, TOPL.

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

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

[18]  Jayme Luiz Szwarcfiter,et al.  Towards a Provably Resilient Scheme for Graph-Based Watermarking , 2013, WG.

[19]  Ingemar J. Cox,et al.  A Secure, Robust Watermark for Multimedia , 1996, Information Hiding.

[20]  Roberto Giacobazzi,et al.  Hiding Information in Completeness Holes: New Perspectives in Code Obfuscation and Watermarking , 2008, 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods.

[21]  Jeffrey D. Ullman,et al.  Characterizations of Reducible Flow Graphs , 1974, JACM.

[22]  Roberto Giacobazzi,et al.  Maximal incompleteness as obfuscation potency , 2016, Formal Aspects of Computing.

[23]  Michael Stepp,et al.  More on graph theoretic software watermarks: Implementation, analysis, and attacks , 2009, Inf. Softw. Technol..

[24]  Stavros D. Nikolopoulos,et al.  Graph-structured Watermarking using Bitonic Sequences of Self-inverting Permutations , 2016, PCI.

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

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

[27]  Jeffrey D. Ullman,et al.  Flow Graph Reducibility , 1972, SIAM J. Comput..

[28]  Christian S. Collberg,et al.  Error-correcting graphs for software watermarking , 2003 .