Abstract
Common software-protection systems attempt to detect malicious observation and modification of protected applications. Upon tamper detection, anti-hacking code may produce a crash or gradual failure, rendering the application unusable or troublesome. Such a response is designed to complicate attacks, but has also caused problems for developers and end users, particularly when bugs or other problems invoke anti-tampering measures accidentally. To address these issues, an alternative approach is to detect and fix malicious changes. This paper presents a scheme to transform programs into tamper-tolerant versions that use self-correcting operation as a response against attacks. Combining techniques from the fields of fault tolerance and software security, the approach transforms programs via code individualization and redundancy. We also describe security enhancements through error correction, delayed responses and checkpointing. For security analysis, we adapt a graph-based model of attacks and defenses in the context of software tamper-resistance. This helps to estimate the difficulty of breaking our scheme in practical scenarios.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Anckaert, B., Jakubowski, M.H., Venkatesan, R.: Proteus: Virtualization for diversified tamper-resistance. In: DRM 2006: Proceedings of the ACM Workshop on Digital Rights Management, pp. 47–58. ACM Press, New York (2006)
Anckaert, B., Jakubowski, M.H., Venkatesan, R.: Runtime protection via dataflow flattening. In: IARIA SECURWARE 2009 (to appear, 2009)
Anckaert, B., Jakubowski, M.H., Venkatesan, R., De Bosschere, K.: Run-time randomization to mitigate tampering. In: Miyaji, A., Kikuchi, H., Rannenberg, K. (eds.) IWSEC 2007. LNCS, vol. 4752, pp. 153–168. Springer, Heidelberg (2007)
Anckaert, B., De Sutter, B., De Bosschere, K.: Software piracy prevention through diversity. In: DRM 2004: Proceedings of the 4th ACM Workshop on Digital Rights Management, pp. 63–71. ACM Press, New York (2004)
Aucsmith, D.: Tamper resistant software: An implementation. In: Anderson, R. (ed.) IH 1996. LNCS, vol. 1174, pp. 317–333. Springer, Heidelberg (1996)
Avizienis, A.: The methodology of N-version programming. In: Lyu, M.R. (ed.) Software Fault Tolerance,ch. 2, pp. 23–46. Wiley, Chichester (1995)
Barak, B., Goldreich, O., Impagliazzo, R., Rudich, S., Sahai, A., Vadhan, S., Yang, K.: On the (im)possibility of obfuscating programs. In: Kilian, J. (ed.) CRYPTO 2001. LNCS, vol. 2139, pp. 1–18. Springer, Heidelberg (2001)
Bhansali, S., Chen, W.-K., de Jong, S., Edwards, A., Murray, R., Drinić, M., Mihočka, D., Chau, J.: Framework for instruction-level tracing and analysis of program executions. In: VEE 2006: Proceedings of the 2nd international conference on Virtual execution environments, pp. 154–163. ACM, New York (2006)
Chang, H., Atallah, M.J.: Protecting software code by guards. In: Digital Rights Management Workshop, pp. 160–175 (2001)
Chen, Y., Venkatesan, R., Cary, M., Pang, R., Sinha, S., Jakubowski, M.H.: Oblivious hashing: A stealthy software integrity verification primitive. In: Information Hiding 2002, Noordwijkerhout, The Netherlands (October 2002)
Cloakware Corporation. Software Security Suite (2009)
Collberg, C., Thomborson, C., Low, D.: A taxonomy of obfuscating transformations. Technical Report 148, Department of Computer Science, The University of Auckland, New Zealand (July 1997)
Collberg, C., Thomborson, C., Low, D.: Breaking abstractions and unstructuring data structures. In: International Conference on Computer Languages, pp. 28–38 (1998)
Collberg, C., Thomborson, C., Low, D.: Manufacturing cheap, resilient, and stealthy opaque constructs. In: Principles of Programming Languages, POPL 1998, pp. 184–196 (1998)
Dedić, N., Jakubowski, M.H., Venkatesan, R.: A graph game model for software tamper protection. In: Proceedings of the 2007 Information Hiding Workshop (June 2007)
Denning, P.J.: Fault tolerant operating systems. ACM Comput. Surv. 8(4), 359–389 (1976)
Goldwasser, S., Kalai, Y.T.: On the impossibility of obfuscation with auxiliary input. In: FOCS 2005: Proceedings of the 46th IEEE Symposium on Foundations of Computer Science (2005)
Horne, B., Matheson, L.R., Sheehan, C., Tarjan, R.E.: Dynamic self-checking techniques for improved tamper resistance. In: Digital Rights Management Workshop, pp. 141–159 (2001)
Jacob, M., Jakubowski, M.H., Venkatesan, R.: Towards integral binary execution: Implementing oblivious hashing using overlapped instruction encodings. In: 2007 ACM Multimedia and Security Workshop, Dallas, TX (September 2007)
Jakubowski, M.H., Naldurg, P., Patankar, V., Venkatesan, R.: Software integrity checking expressions (ICEs) for robust tamper detection. In: Furon, T., Cayre, F., Doërr, G., Bas, P. (eds.) IH 2007. LNCS, vol. 4567, pp. 96–111. Springer, Heidelberg (2008)
Linden, T.A.: Operating system structures to support security and reliable software. ACM Comput. Surv. 8(4), 409–445 (1976)
Lynn, B., Prabhakaran, M., Sahai, A.: Positive results and techniques for obfuscation. In: Cachin, C., Camenisch, J.L. (eds.) EUROCRYPT 2004. LNCS, vol. 3027, pp. 20–39. Springer, Heidelberg (2004)
Microsoft Corporation. Phoenix compiler framework (2008)
Moon, T.K.: Error Correction Coding: Mathematical Methods and Algorithms. Wiley-Interscience, Hoboken (2005)
Feng, Q., Joseph, T., Yuanyuan, Z., Jagadeesan, S.: Rx: Treating bugs as allergies—a safe method to survive software failures. ACM Trans. Comput. Syst. 25(3), 7 (2007)
Randell, B.: System structure for software fault tolerance. In: Proceedings of the International Conference on Reliable Software, Los Angeles, California, pp. 437–449. ACM, New York (1975)
Randell, B., Lee, P., Treleaven, P.C.: Reliability issues in computing system design. ACM Comput. Surv. 10(2), 123–165 (1978)
Siewiorek, D.P., Swarz, R.S.: Theory and Practice of Reliable System Design. Digital Press, Bedford (1982)
Tan, G., Chen, Y., Jakubowski, M.H.: Delayed and controlled failures in tamper-resistant software. In: Proceedings of the 2006 Information Hiding Workshop (july 2006)
Tyrrell, A.M.: Recovery blocks and algorithm-based fault tolerance. In: EUROMICRO Conference, vol. 0, p. 292 (1996)
Varadarajan, A.V., Venkatesan, R., Rangan, C.P.: Data structures for limited oblivious execution of programs while preserving locality of reference. In: DRM 2007: Proceedings of the 2007 ACM workshop on Digital Rights Management, pp. 63–69. ACM, New York (2007)
Wang, C., Hill, J., Knight, J., Davidson, J.: Software tamper resistance: Obstructing static analysis of programs. Technical Report CS-2000-12, University of Virginia (December 2000)
Wee, H.: On obfuscating point functions. In: STOC 2005: Proceedings of the Thirty-seventh Annual ACM Symposium on Theory of Computing, pp. 523–532. ACM Press, New York (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Jakubowski, M.H., Saw, C.W.(., Venkatesan, R. (2009). Tamper-Tolerant Software: Modeling and Implementation. In: Takagi, T., Mambo, M. (eds) Advances in Information and Computer Security. IWSEC 2009. Lecture Notes in Computer Science, vol 5824. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04846-3_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-04846-3_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-04845-6
Online ISBN: 978-3-642-04846-3
eBook Packages: Computer ScienceComputer Science (R0)