skip to main content
article
Open Access

Dynamic graph-based software fingerprinting

Published:01 October 2007Publication History
Skip Abstract Section

Abstract

Fingerprinting embeds a secret message into a cover message. In media fingerprinting, the secret is usually a copyright notice and the cover a digital image. Fingerprinting an object discourages intellectual property theft, or when such theft has occurred, allows us to prove ownership.

The Software Fingerprinting problem can be described as follows. Embed a structure W into a program P such that: W can be reliably located and extracted from P even after P has been subjected to code transformations such as translation, optimization and obfuscation; W is stealthy; W has a high data rate; embedding W into P does not adversely affect the performance of P; and W has a mathematical property that allows us to argue that its presence in P is the result of deliberate actions.

In this article, we describe a software fingerprinting technique in which a dynamic graph fingerprint is stored in the execution state of a program. Because of the hardness of pointer alias analysis such fingerprints are difficult to attack automatically.

References

  1. BCEL. 2004. jakarta.apache.org/bcel.Google ScholarGoogle Scholar
  2. DynamicJava. 2004. koala.ilog.fr/djava.Google ScholarGoogle Scholar
  3. Ahpah. 2005. Sourceagain. ahpah.com.Google ScholarGoogle Scholar
  4. Albert, D. and Morse, S. 1982. Combating software piracy by encryption and key management. IEEE Comput. 17, 4 (Apr.), 68--73. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Anderson, R. J. and Peticolas, F. A. 1998. On the limits of steganography. IEEE J-SAC 16, 4 (May).Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Arboit, G. 2002. A method for watermarking Java programs via opaque predicates (extended abstract). In Proceedings of the 5th International Conference on Electronic Commerce Research (ICECR-5). citeseer.nj.nec.com/arboit02method.html.Google ScholarGoogle Scholar
  7. Bacon, D. F., Graham, S. L., and Sharp, O. J. 1994. Compiler transformations for high-performance computing. ACM Comput. Surv. 26, 4 (Dec.), 345--420. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Baker, B. S. and Manber, U. 1998. Deducing similarites in Java sources from bytecodes. In Proceedings of the Usenix Annual Technical Conference. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Bender, W., Gruhl, D., Morimoto, N., and Lu, A. 1996. Techniques for data hiding. IBM Syst. J. 35, 3&4, 313--336. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chang, H. and Atallah, M. 2001. Protecting software code by guards. In Security and Privacy in Digital Rights Management, ACM CCS-8 Workshop DRM 2001 (Philadelphia, PA), Lecture Notes in Computer Science, Vol. 2320. Springer Verlag, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Chow, S., Gu, Y., Johnson, H., and Zakharov, V. 2001. An approach to the obfuscation of control-flow of sequential computer programs. In Information Security: Fourth International Conference (ISC 2001), Davida and Frankl, Eds. Lecture Notes in Computer Science, vol. 2200. Springer Verlag, 144--155. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Collberg, C., Carter, E., Kobourov, S., and Thomborson, C. 2003a. Error-correcting graphs. In Proceedings of the Workshop on Graphs in Computer Science (WG'2003).Google ScholarGoogle Scholar
  13. Collberg, C., Myles, G., and Huntwork, A. 2003b. SandMark---A tool for software protection research. IEEE Magazine of Security and Privacy 1, (Aug.). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Collberg, C. and Thomborson, C. 1999. Software watermarking: Models and dynamic embeddings. In Conference Record of POPL '99: The 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Antonio, TX). ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Collberg, C., Thomborson, C., and Low, D. 1997. A taxonomy of obfuscating transformations. Tech. Rep. 148, Department of Computer Science, University of Auckland. July. citeseer.nj.nec.com/collberg97taxonomy.html.Google ScholarGoogle Scholar
  16. Collberg, C., Thomborson, C., and Low, D. 1998a. Breaking abstractions and unstructuring data structures. In Proceeding of the IEEE International Conference on Computer Languages, ICCL'98. (Chicago, IL), IEEE Computer Society Press, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Collberg, C., Thomborson, C., and Low, D. 1998b. Manufacturing cheap, resilient, and stealthy opaque constructs. In Proceedings of the Principles of Programming Languages (POPL'98) (San Diego, CA), ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Compaq. 2004. FreePort Express. hwww.support.compaq.com/amt/tools/migrate-cover.html.Google ScholarGoogle Scholar
  19. Cousot, P. and Cousot, R. 2004. An abstract interpretation-based framework for software watermarking. In Proceedings of the ACM Principles of Programming Languages. ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Craver, S., Memon, N., Yeo, B.-L., and Yeung, M. M. 1998. Resolving rightful ownerships with invisible watermarking techniques: limitations, attacks, and implications. IEEE J. Select. Areas. Commun. 16, 4 (May), 573--586.Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Davidson, R. and Myhrvold, N. 1996a. Method and system for generating and auditing a signature for a computer program. US Patent 5,559,884, Assignee: Microsoft Corporation. www.delphion.com/details?pn=US055598844.Google ScholarGoogle Scholar
  22. Davidson, R. L. and Myhrvold, N. 1996b. Method and system for generating and auditing a signature for a computer program. US Patent 5,559,884. Assignee: Microsoft Corporation.Google ScholarGoogle Scholar
  23. Debray, S., Evans, W., Muth, R., and Sutter, B. D. 2000. Compiler techniques for code compaction. ACM Trans. Prog. Lang. Syst. 22, 2 (Mar.), 378--415. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Debray, S., Muth, R., Watterson, S., and Bosschere, K. D. 2001a. ALTO: A link-time optimizer for the Compaq Alpha. Softw.---Pract. Exp. 31, 67--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Debray, S., Schwarz, B., Andrews, G., and Legendre, M. 2001b. PLTO: A link-time optimizer for the Intel IA-32 architecture. In Proceedings of the 2001 Workshop on Binary Rewriting (WBT-2001).Google ScholarGoogle Scholar
  26. Ghiya, R. and Hendren, L. J. 1996. Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL'96) (St. Petersburg Beach, FL). ACM, New York, 1--15. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Goulden, I. P. and Jackson, D. M. 1983. Combinatorial Enumeration. Wiley, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Halstead, M. H. 1977. Elements of Software Science. Elsevier North-Holland. Amsterdam, The Netherlands. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Harary, F. and Palmer, E. 1973. Graphical Enumeration. Academic Press, New York.Google ScholarGoogle Scholar
  30. Harrison, W. A. and Magel, K. I. 1981. A complexity measure based on nesting level. SIGPLAN Notices 16, 3, 63--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Hauser, R. C. 1995. Using the Internet to decrease software piracy---On anonymous receipts, anonymous ID cards, and anonymous vouchers. In INET'95 The 5th Annual Conference of the Internet Society The Internet: Towards Global Information Infrastructure. Vol. 1. (Honolulu, Hawaii), 199--204.Google ScholarGoogle Scholar
  32. Heffner, K. and Collberg, C. S. 2004. The obfuscation executive. In Information Security, 7th International Conference. Lecture Notes in Computer Science, Vol. 3225. Springer Verlag, New York, 428--440.Google ScholarGoogle Scholar
  33. Henry, S. and Kafura, D. 1981. Software structure metrics based on information flow. IEEE Trans. Softw. Eng. 7, 5 (Sept.), 510--518. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Herzberg, A. and Karmi, G. 1984. On software protection. In Proceedings of the 4th Jerusalem Conference on Information Technology. Jerusalem, Israel.Google ScholarGoogle Scholar
  35. Herzberg, A. and Pinter, S. S. 1987. Public protection of software. ACM Trans. Comput. Syst. 5, 4 (Nov.), 371--393. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Horne, B., Matheson, L., Sheehan, C., and Tarjan, R. E. 2001. Dynamic self-checking techniques for improved tamper resistance. In Security and Privacy in Digital Rights Management, ACM CCS-8 Workshop (DRM 2001). (Philadelphia, PA). Lecture Notes in Computer Science, vol. 2320, Springer Verlag, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. International Planning and Research Corporaation. 2003. Eighth annual BSA global software piracy study. Global.bsa.org/globalstudy.Google ScholarGoogle Scholar
  38. Knuth, D. E. 1997. Fundamental Algorithms, Third ed. The Art of Computer Programming, vol. 1. Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Kundu, S. and Misra, J. 1997. A linear tree partitioning algorithm. SIAM J. Comput. 6, 1 (Mar.), 151--154.Google ScholarGoogle Scholar
  40. Madou, M., Anckaert, B., Sutter, B. D., and Bosschere, K. D. 2005. Hybrid static-dynamic attacks against software protection mechanisms. In DRM '05: Proceedings of the 5th ACM Workshop on Digital Rights Management. ACM, New York, 75--82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Malhotra, Y. 1994. Controlling copyright infringements of intellectual property: the case of computer software. J. Syst. Manage. 45, 6 (June), 32--35. part 1, part 2: No 7, Jul. pp. 12--17.Google ScholarGoogle Scholar
  42. Maude, T. and Maude, D. 1984. Hardware protection against software piracy. Commun. ACM 27, 9 (Sept.), 950--959. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. McCabe, T. J. 1976. A complexity measure. IEEE Trans. Softw. Eng. 2, 4 (Dec.), 308--320. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Monden, A., Iida, H., ichi Matsumoto, K., Torii, K., and Ichisugi, Y. 1998. Watermarking method for computer programs. In Proceedings of the 1998 Symposium on Cyptography and Information Security (SCIS'98 - 9.2A). (In Japanese).Google ScholarGoogle Scholar
  45. Monden, A., Iida, H., Matsumoto, K., Inoue, K., and Torii, K. 2000. A practical method for watermarking Java programs. In Proceedings of the 24th Computer Software and Applications Conference. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Mori, R. and Kawahara, M. 1990. Superdistribution: The concept and the architecture. The Transactions of the IEICE 73, 7 (July). www.virtualschool.edu/mon/ElectronicProperty/MoriSuperdist.html.Google ScholarGoogle Scholar
  47. Moskowitz, S. A. and Cooperman, M. 1996. Method for stega-cipher protection of computer code. US Patent 5,745,569. Assignee: The Dice Company.Google ScholarGoogle Scholar
  48. Munson, J. C. and Kohshgoftaar, T. M. 1993. Measurement of data structure complexity. J. Syst. Softw. 20, 217--225. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Muratani, H. 2001. A collusion-secure fingerprinting code reduced by Chinese remaindering and its random-error resilience. In Information Hiding: 4th International Workshop (IHW 2001). (Pittsburgh, PA), 303--315. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Myles, G. and Collberg, C. 2003. Software watermarking through register allocation: Implementation, analysis, and attacks. In Proceedings of the International Conference on Information Security and Cryptology.Google ScholarGoogle Scholar
  51. Myrvold, W. and Ruskey, F. 2001. Ranking and unranking permutations in linear time. Inf. Proc. Lett. 79, 6 (Sept.), 281--284. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Nagra, J. 2006. Threading software watermarks. Ph.D. dissertation. University of Auckland, Auckland, New Zealand.Google ScholarGoogle Scholar
  53. Nagy-Farkas, D. 2004. The Easter egg archive. www.eeggs.com.Google ScholarGoogle Scholar
  54. Nystrom, N. 2004. BLOAT---The Bytecode-Level Optimizer and Analysis Tool. www.cs. purdue.edu/s3/projects/bloat.Google ScholarGoogle Scholar
  55. Oviedo, E. I. 1980. Control flow, data flow, and program complexity. In Proceedings of IEEE COMPSAC. 146--152.Google ScholarGoogle Scholar
  56. Palsberg, J., Krishnaswamy, S., Kwon, M., Ma, D., Shao, Q., and Zhang, Y. 2000. Experience with software watermarking. In Proceedings of ACSAC'00, 16th Annual Computer Security Applications Conference. 308--316. citeseer.nj.nec.com/323325.html. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Peticolas, F. A., Anderson, R. J., and Kuhn, M. G. 1998. Attacks on copyright marking systems. In Proceedings of the 2nd Workshop on Information Hiding (Portland, OR). Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Petitcolas, F. A. P. 2004. Stirmark 3.1. www.cl.cam.ac.uk/~fapp2/watermarking/stirmark.Google ScholarGoogle Scholar
  59. Pieprzyk, J. 1999. Fingerprints for copyright software protection. In Proceedings of the 2nd International Workshop on Information Security (ISW'99), Lecture Notes in Computer Science, vol. 1729, Springer Verlag, pp. 178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Proebsting, T. A. and Watterson, S. A. 1997. Krakatoa: Decompilation in Java (Does bytecode reveal source?). In Proceedings of the 3rd USENIX Conference on Object-Oriented Technologies and Systems (COOTS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Qu, G. and Potkonjak, M. 1998. Analysis of watermarking techniques for graph coloring problem. In Proceedings of the 1998 IEEE/ACM International Conference on Computer-Aided Design. ACM, New York 190--193. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Ramalingam, G. 1994. The undecidability of aliasing. ACM Trans. Prog. Lang. Syst. 16, 5 (Sept.), 1467--1471. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Sahoo, T. and Collberg, C. 2004. Software watermarking in the frequency domain: Implementation, analysis, and attacks. Tech. Rep. TR04-07, Department of Computer Science, University of Arizona. Mar.Google ScholarGoogle Scholar
  64. Simmel, S. S. and Godard, I. 1994. Metering and Licensing of Resources - Kala's General Purpose Approach. In Technological Strategies for Protecting Intellectual Property in the Networked Multimedia Environment. The Journal of the Interactive Multimedia Association Intellectual Property Project, Coalition for Networked Information. Interactive Multimedia Association, John F. Kennedy School of Government, MIT, Program on Digital Open High-Resolution Systems, 81--110.Google ScholarGoogle Scholar
  65. Stern, J. P., Hachez, G., Koeune, F., and Quisquater, J.-J. 1999. Robust object watermarking: Application to code. In Information Hiding. 368--378. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Thomborson, C., Nagra, J., Somaraju, R., and He, C. 2004. Tamper-proofing software watermarks. In Proceedings of the 2nd Australasian Information Security Workshop (AISW2004), P. Montague and C. Steketee, Eds. Number 32 in CRPIT. ACS, 27--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Venkatesan, R., Vazirani, V., and Sinha, S. 2001. A graph theoretic approach to software watermarking. In Proceedings of the 4th International Information Hiding Workshop (Pittsburgh, PA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Wang, C. 2000. A security architecture for survivability mechanisms. Ph.D. dissertation, University of Virginia, School of Engineering and Applied Science. www.cs.virginia. edu/~survive/pub/wangthesis.pdf. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Dynamic graph-based software fingerprinting

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM Transactions on Programming Languages and Systems
              ACM Transactions on Programming Languages and Systems  Volume 29, Issue 6
              October 2007
              408 pages
              ISSN:0164-0925
              EISSN:1558-4593
              DOI:10.1145/1286821
              Issue’s Table of Contents

              Copyright © 2007 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 1 October 2007
              Published in toplas Volume 29, Issue 6

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader