Protecting Software Codes By Guards

Protection of software code against illegitimate modi cations by its users is a pressing issue to many software developers. Many softwarebased 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 paper, we present and explore a methodology that we believe can protect program integrity in a more tamperresilient and exible manner. Our approach is based on a distributed scheme, in which protection and tamper-resistance of program code is achieved, not by a single security module, but by a network of (smaller) security units that work together in the program. These security units, or guards, can be programmed to do certain tasks (checksumming the program code is one example) and a network of them can reinforce the protection of each other by creating mutual-protection. We have implemented a system for automating the process of installing Parts of this research were supported by CERIAS and the Purdue Research Foundation. guards into Win32 executables. 1 Experimental results show that memory space and runtime performance impacts incurred by guards can be kept very low (as explained later in the paper).