Tamper Resistance for Software Protection

Protection of software code against illegitimate modifications by its users is a pressing issue to many software developers. Many software-based mechanisms for protecting program code are too weak (e.g., they have single points of failure) or too expensive to apply (e.g., they incur heavy runtime performance penalty to the protected programs). In this thesis, We present and explore a methodology that we believe can protect program integrity in a more tamper-resilient and flexible manner. we describe a dynamic integrity verification mechanism designed to prevent modification of software. The mechanism makes use of multi-blocking encryption technique so that no hash value comparison is needed and if the program was altered, the program will not exit in a traceable way. We also make use of common virus techniques to enhance our security. Our mechanism operates on binaries that can be applied to all PE format files like EXE and DLL. The overhead in runtime execution and program size is reasonable as illustrated by real implementation.

[1]  Dan Boneh,et al.  Architectural support for copy and tamper resistant software , 2000, SIGP.

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

[3]  Christian F. Tschudin,et al.  On Software Protection via Function Hiding , 1998, Information Hiding.

[4]  James R. Larus,et al.  Rewriting executable files to measure program behavior , 1994, Softw. Pract. Exp..

[5]  Ramarathnam Venkatesan,et al.  Oblivious Hashing: A Stealthy Software Integrity Verification Primitive , 2002, Information Hiding.

[6]  Mikhail J. Atallah,et al.  Protecting Software Code by Guards , 2001, Digital Rights Management Workshop.

[7]  Ingrid Schaumüller-Bichl,et al.  A Method of Software Protection Based on the Use of Smart Cards and Cryptographic Techniques , 1985, EUROCRYPT.

[8]  Christian S. Collberg,et al.  Breaking abstractions and unstructuring data structures , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[9]  Amir Herzberg,et al.  Public protection of software , 1985, TOCS.

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

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

[12]  Ernesto Pimentel,et al.  An Efficient Software Protection Scheme , 2001, SEC.

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

[14]  Frederick B. Cohen,et al.  Operating system protection through program evolution , 1993, Comput. Secur..

[15]  George C. Necula,et al.  Safe kernel extensions without run-time checking , 1996, OSDI '96.

[16]  Amit Sahai,et al.  On the (im)possibility of obfuscating programs , 2001, JACM.

[17]  Gregory R. Andrews,et al.  Disassembly of executable code revisited , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[18]  Cristina Cifuentes,et al.  Decompilation of binary programs , 1995, Softw. Pract. Exp..

[19]  Kwangjo Kim,et al.  On the Security of Zhang-Wu-Wang's Forward-Secure Group Signature Scheme in ICICS'03 , 2004 .

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

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

[22]  Cristina Cifuentes,et al.  Recovery of jump table case statements from binary code , 1999, Proceedings Seventh International Workshop on Program Comprehension.

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

[24]  B CohenFrederick Operating system protection through program evolution , 1993 .

[25]  Jean-Paul M. G. Linnartz,et al.  Public watermarks and resistance to tampering , 1997, Proceedings of International Conference on Image Processing.

[26]  Kwangjo Kim,et al.  A Proposed Software Protection Scheme , 2004 .

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

[28]  Robert E. Tarjan,et al.  Dynamic Self-Checking Techniques for Improved Tamper Resistance , 2001, Digital Rights Management Workshop.

[29]  David H. Ackley,et al.  Building diverse computer systems , 1997, Proceedings. The Sixth Workshop on Hot Topics in Operating Systems (Cat. No.97TB100133).

[30]  Yuan Xiang Gu,et al.  THE ENCODER SOLUTION TO IMPLEMENTING TAMPER RESISTANT SOFTWARE , 2001 .

[31]  Stanley Chow,et al.  Tamper resistant software: extending trust into a hostile environment , 2001, MM&Sec '01.

[32]  Manuel Blum,et al.  Checking the correctness of memories , 2005, Algorithmica.

[33]  Yuan Xiang Gu,et al.  An Approach to the Obfuscation of Control-Flow of Sequential Computer Programs , 2001, ISC.

[34]  Jack W. Davidson,et al.  Software Tamper Resistance: Obstructing Static Analysis of Programs , 2000 .

[35]  Oded Goldreich,et al.  Towards a Theory of Software Protection , 1986, CRYPTO.

[36]  Ping Wang,et al.  Tamper Resistant Software Through Dynamic Integrity Checking , 2005 .