Abstract
In this paper, we present a brief survey on software watermarking methods that explains the prospects and constraints of most software watermarking algorithms. We introduce a detailed classification of the existing software watermarking techniques, the associated attack models, along with a review of the current software watermarking tools. The reader can find a clear research path on software watermarking from 1996 to till date. We also critically analyzed the strength and weakness of the existing watermarking schemes and explored the research gaps where the future researchers can concentrate.
Similar content being viewed by others
References
Alitavoli M, Joafshani M, Erfanian A (2013) A novel watermarking method for java programs. In: Proceedings of the 28th Annual ACM Symposium on Applied Computing SAC '13. ACM, New York, NY, USA, pp 1013–1018
Arboit G (2002) A method for watermarking java programs via opaque predicates. ACM, Montreal, Canada, pp 102–110
Balachandran V, Keong NW, Emmanuel S (2014) Function level control flow obfuscation for software security. In: Eighth International Conference on Complex, Intelligent and Software Intensive Systems. IEEE, pp 133–140
Bento L, Boccardo D, Machado R, de Sá VGP, Szwarcfiter JL, Duque de Caxias R (2004) A randomized graph-based scheme for software watermarking. In: Information and Computater Systems Security. ACM, pp 30–41
Bentoa LM, Boccardob DR, Machadob RC, de Sáa VGP, Szwarcfitera JL (2014) Full characterization of a class of graphs tailored for software wateramrking. submitt J Comput Syst Sci
Bhattacharya S, Cortesi A (2010) Zero-knowledge software watermarking for c programs. In: Advances in communication, network, and computing, IEEE Computer Society, p 282–286
Chan PP, Hui LC, Yiu SM (2013) Heap graph based software theft detection. IEEE Transactions on Information Forensics and Security 8(1):101–110
Chen J, Dai S, Chen J (2016) An improved software watermarking scheme based on ppct encoding. In: Computational intelligence and design. IEEE, pp 341–344
Chen J, Li K, Wen W, Chen W, Yan C (2017a) Software watermarking for java program based on method name encoding. In: Advanced intelligent systems and informatics, Springer, pp 865–874
Chen Z, Jia C, Xu D (2017b) Hidden path: dynamic software watermarking based on control flow obfuscation. In: Computational science and engineering (CSE) and embedded and ubiquitous computing (EUC), vol. 2, IEEE, p. 443–450
Chen Z, Wang Z, Jia C (2017c) Semantic-integrated software watermarking with tamper-proofing. Multimed Tools Appl 77(9):11159–11178
Chionis I, Chroni M, Nikolopoulos SD (2013) A dynamic watermarking model for embedding reducible permutation graphs into software. In: Security and Cryptography (SECRYPT), IEEE, p 1–12
Chionis I, Chroni M, Nikolopoulos SD (2013) Evaluating the waterrpg software watermarking model on java application programs. In: Informatics, ACM, p 144–151
Chionis I, Chroni M, Nikolopoulos SD (2014) Waterrpg: a graph-based dynamic watermarking model for software protection. arXiv:1403.6658
Chroni M, Nikolopoulos SD (2010) Encoding watermark integers as self-inverting permutations. In: Computer systems and technologies, ACM, p 125–130
Chroni M, Nikolopoulos SD (2011) Efficient encoding of watermark numbers as reducible permutation graphs. arXiv: 1110.1194
Chroni M, Nikolopoulos SD (2011) Encoding watermark numbers as cographs using self-inverting permutations. In: Computer systems and technologies, ACM, p 142–148
Chroni M, Nikolopoulos SD (2012) An efficient graph codec system for software watermarking. In: Computer software and applications, IEEE, p 595–600
Chroni M, Nikolopoulos SD (2012) An embedding graph-based model for software watermarking. In: Intelligent information hiding and multimedia signal processing, IEEE, p 261–264
Claudiu C (1999) Static software watermarking pp. 2–4
Cohen A, Holmgren J, Vaikuntanathan V (2015) Publicly verifiable software watermarking. IACR Cryptology 2015:373
Collberg C, Carter E, Debray S, Huntwork A, Linn C, Stepp M (2004) Dynamic path-based software watermarking. Programming Language Design and Implementation 39:107–118
Collberg C, Huntwork A, Carter E, Townsend G, Stepp M (2009) More on graph theoretic software watermarks: implementation, analysis, and attacks. Inform Softw Technol 51(1):56–67
Collberg C, Jha S, Tomko D, Wang H (2004) Uwstego: a general architecture for software watermarking. Tech. rep
Collberg C, Kobourov S, Carter E, Thomborson C (2003) Error-correcting graphs for software watermarking. In: Graph theoretic concepts in computer science, Springer, p 156–167
Collberg C, Myles G, Huntwork A (2003) Sandmark-a tool for software protection research. IEEE Secur Priv 99(4):40–49
Collberg C, Sahoo TR (2005) Software watermarking in the frequency domain: implementation, analysis, and attacks. J Comput Secur 13(5):721–755
Collberg C, Thomborson C (1998) On the limits of software watermarking. CS Dept, Auckland Univ, Tech. rep
Collberg C, Thomborson C (1999) Software watermarking: models and dynamic embeddings. In: Principles of programming lang., ACM, New york, p 311–324
Collberg C, Thomborson C, Low D (1998) Manufacturing cheap, resilient, and stealthy opaque constructs. In: Principles of programming lang., ACM, p 184–196
Collberg CS, Thomborson C (2002) Watermarking, tamper-proffing, and obfuscation: tools for software protection. IEEE Trans Softw Eng 28:735–746
Collberg CS, Thomborson C, Townsend GM (2007) Dynamic graph-based software fingerprinting. ACM Trans Program Lang Syst (TOPLAS) 29(6):35
Cousot P, Cousot R (2004) An abstract interpretation-based framework for software watermarking. In: Principles of programming languages, ACM, p 173–185
Cox IJ, Miller ML, Bloom JA (2000) Watermarking applications and their properties. In: Information technology: coding and computing, IEEE, p 6–10
Curran D, Cinneide M.O, Hurley N, Silvestre G (2004) Dependency in software watermarking. In: Information and communication technologies: from theory to applications, IEEE, p 311–324
Curran D, Hurley N, Cinneide MO (2003) Securing java through software watermarking. In: Principles and practice of programming in Java, ACM, p 145–148
Dalla Preda M, Giacobazzi R, Visentini E (2008) Hiding software watermarks in loop structures. In: Static analysis, Springer, p 174–188
Davidson R, Myhrvold N (1996) Method and system for generating and auditing a signature for a computer program. US Patent 5,559,884
El-Khalil R, Keromytis AD (2004) Hydan: hiding information in program binaries. In: Lopez J, Qing S, Okamoto E (eds) Information and communications security. ICICS 2004. Lecture notes in computer science, vol 3269. Springer, Berlin, Heidelberg, pp 187–199
Fallis A (2013) Dynamic software watermarking by alering the numeric results of the program. J Chem Inform Modeling 53:1689–1699
Gil J, Gorovoy A, Itai A (2006) Software fingerprinting. In: Information technology: research and education, p 69–73
Gupta G, Pieprzyk J (2006) A low-cost attack on branch-based software watermarking schemes. In: Digital watermarking, Springer, p 282–293
Gupta G, Pieprzyk J (2007) Software watermarking resilient to debugging attacks. J Multimed 2(2):10–16
Hamilton J, Danicic S (2011) A survey of static software watermarking. In: World congress on internet security, IEEE, p 100–107
He Y (2002) Tamperproofing a software watermark by encoding constants. Master’s thesis CS Dept, Auckland Univ
Hopper N, Molnar D, Wagner D (2007) From weak to strong watermarking. In: Theory of cryptography, Springer, p 362–382
Jiang Z, Zhong R, Zheng B (2009) A software watermarking method based on public-key cryptography and graph coloring. In: Genetic and evolutionary computing, Springer, p 433–437
Jianqi Z, YanHeng L, KeXin Y (2009) A novel dynamic graph software watermark scheme. In: Education Technology and Comp. Sci., vol. 3, pp. 775–780. IEEE
Kamel I, Albluwi Q (2009) A robust software watermarking for copyright protection. Comput Secur 28(6):395–409
Ke-xin Y, Ke Y, Jian-qi Z (2009) A robust dynamic software watermarking. In: Information technology and computer science, vol. 1, IEEE, p 15–18
Kumar K, Kehar V, Kaur P (2015) A comparative analysis of static java bytecode software watermarking algorithms. African J Comput ICT 8(4):201–208
Liu F, Lu B, Luo X (2006) A chaos-based robust software watermarking. In: Information security practice and experience, Springer, p 355–366
Luo YX, Cheng JH, Fang DY (2008) Dynamic graph watermark algorithm based on the threshold scheme. In: Information science and engineering, ISISE’08, vol. 2, IEEE, p 689–693
Ma H, Lu K, Ma X, Zhang H, Jia C, Gao D (2015) Software watermarking using return-oriented programming. In: Information, computer and communications security, ACM, p 369–380
Madou M, Anckaert B, De Sutter B, De Bosschere K (2005) Hybrid static-dynamic attacks against software protection mechanisms. In: Digital rights management, ACM, p 75–82
Mishra A, Kumar R, Chakrabarti P (2008) A method-based whole-program watermarking scheme for java class files. J Artic
Monden A, Iida H, Matsumoto K, Torii K, Inoue K (2000) A practical method for watermarking java programs. In: 24th international computer software and applications conference, pp 191–197, October 25–28, 2000
Mpanti A, Nikolopoulos SD (2016) Graph-structured watermarking using bitonic sequences of self-inverting permutations. In: Informatics, ACM, p 131–136
Myles G, Collberg C (2004) Software watermarking through register allocation: implementation, analysis, and attacks. In: Lim JI, Lee DH (eds) Information security and cryptology - ICISC 2003. ICISC 2003. Lecture notes in computer science, vol 2971. Springer, Berlin, Heidelberg, pp 274–293
Myles G, Collberg C (2006) Software watermarking via opaque predicates: implementation, analysis, and attacks. Elec Commerce Res 6(2):155–171
Myles G, Collberg C, Heidepriem Z, Navabi A (2005) The evaluation of two software watermarking algorithms. Softw Pract Exp 35(10):923–938
Myles G, Jin H (2005) Self-validating branch-based software watermarking. In: Info. hiding, Springer, p 342–356
Nagra J, Thomborson C (2004) Threading software watermarks. In: Info. hiding, Springer, p 208–223
Nagra J, Thomborson C, Collberg C (2002) A functional taxonomy for software watermarking. In: Australian computer science communications, vol. 24, Australian Computer Society, Inc, p 177–186
Nazir S, Shahzad S, Riza LS (2017) Birthmark-based software classification using rough sets. Arabian J Sci Eng 42(2):859–871
Nystrom NJ (1998) Bytecode level analysis and optimization of java classes. Master’s thesis
Palsberg J, Krishnaswamy S, Kwon M, Ma D, Shao Q, Zhang Y (2000) Experience with software watermarking. In: Computer security applications. IEEE, pp 308–316
Patel SJ, Pattewar TM (2014) Software birthmark based theft detection of javascript programs using agglomerative clustering and frequent subgraph mining. In: Embedded systems (ICES), IEEE, p 63–68
Pieprzyk J (1999) Fingerprints for copyright software protection. In: Information security. ISW 1999. Lecture Notes in Computer Science, vol 1729. Springer, Berlin, Heidelberg, pp 178–190
Preda MD, Pasqua M (2017) Software watermarking: a semantics-based approach. Electron Notes Theoretical Comput Sci 331:71–85
Qu G, Potkonjak M (1998) Analysis of watermarking techniques for graph coloring problem. In: Computer-aided design, ACM, p 190–193
Qu G, Potkonjak M (1999) Hiding signatures in graph coloring solutions. In: Info. Hiding, vol. 1768, pp. 348–367. Springer
Qu G, Potkonjak M (2000) Fingerprinting intellectual property using constraint-addition. In: Annual design automation, ACM, p 587–592
Sha Z, Jiang H, Xuan A (2009) Software watermarking algorithm by coefficients of equation. In: Genetic and evolutionary computing, Springer, p 410–413
Sharma B, Agarwal R, Singh R (2012) An efficient software watermark by equation reordering and fdos. In: Soft computing for Prob. Sol., Springer, p 735–745
Shirali-Shahreza M, Shirali-Shahreza S (2008) Software watermarking by equation reordering. In: Information and communication technologies: from theory to applications, IEEE, p 1–4
Sion R, Atallah M, Prabhakar S (2002) On watermarking numeric sets. In: Digital watermarking, Springer, p 130–146
Stern JP, Hachez G, Koeune F, Quisquater JJ (2000) Robust object watermarking: application to code. In: Info. hiding, Springer, p 368–378
Tamada H, Okamoto K, Nakamura M, Monden A, Matsumoto Ki (2004) Dynamic software birthmarks to detect the theft of windows applications. In: Future software technology, vol. 20
Thaker S (2004) Software watermarking via assembly code transformations. Ph.D. thesis, S. J. S. University
Thomborson C, Nagra J, Somaraju R, He C (2004) Tamper-proofing software watermarks. In: Proceedings of the second workshop on Australasian information security, data mining and web intelligence, and software internationalisation, vol. 32. pp 27–36
Tian Z, Zheng Q, Liu T, Fan M, Zhuang E, Yang Z (2015) Software plagiarism detection with birthmarks based on dynamic key instruction sequences. IEEE Trans Softw Eng 41(12):1217–1235
Venkatesan R, Vazirani V, Sinha S (2001) A graph theoretic approach to software watermarking. In: Info. hiding, vol. 2137, Springer, p 157–168
Wang Y, Gong D, Lu B, Xiang F, Liu F (2018) Exception handling-based dynamic software watermarking. IEEE Access 6:8882–8889
Xu G, Xiang G (2012) A method of software watermarking. In: Systems and Informatics, IEEE, p 1791–1795
Yong W, Yixian Y (2004) A software watermark database scheme based on ppct. CIHW, 2004
Yu Z, Wang C, Thomborson C, Wang J, Lian S, Vasilakos AV (2012) A novel watermarking method for software protection in the cloud. Softw Prac Exp 42(4):409–430
Zaidi SJH, Wang H (2010) On the analysis of software watermarking. In: Software technology and engineering, IEEE, vol. 1, p 1–26
Zeng Y, Liu F, Luo X, Yang C (2010) Robust software watermarking scheme based on obfuscated interpretation. In: Multimedia information networking and security (MINES), IEEE, p 671–675
Zeng Y, Liu F, Luo X, Yang C (2011) Software watermarking through obfuscated interpretation: implementation and analysis. J Multimed 6(4):329–340
Zhu J, Wei Q, Xiao J, Wang Y (2009) A fragile software watermarking algorithm for content authentication. In: Information, computing and telecommunication, IEEE, p 391–394
Zhu W (2007) Informed recognition in software watermarking. In: Intelligence and security informatics, Springer, p 257–261
Zhu W, Thomborson C (2006) Extraction in software watermarking. In: Multimedia and security, ACM, p 175–181
Zhu W, Thomborson C (2006) Recognition in software watermarking. In: Contents protection and security, MCPS ’06, ACM, p 29–36
Zhu W, Thomborson C, Wang FY (2005) A survey of software watermarking. In: Intelligence and security informatics, Springer, p 454–458
Zhu WF (2007) Concepts and techniques in software watermarking and obfuscation. Ph.D. thesis, ResearchSpace@ Auckland
Zong N, Jia C (2015) Software watermarking using support vector machines. In: Computer software and applications, vol. 2, IEEE, p 533–542
Acknowledgements
This work was supported in part by the TCS Research Fellowship Award, granted to Ayan Dey and TEQIP Phase-III project of the University of Calcutta.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Dey, A., Bhattacharya, S. & Chaki, N. Software Watermarking: Progress and Challenges. INAE Lett 4, 65–75 (2019). https://doi.org/10.1007/s41403-018-0058-8
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s41403-018-0058-8