Cryptoprogramming: A Software Tamper Resistant Mechanism Using Runtime Pathway Mappings Willard Thompson, Alec Yasinsac, J. Todd McDonald Department of Computer Science Florida State University Tallahassee, FL 32306, U.S.A. {wthompso, yasinsac, mcdonald} @cs.fsu.edu Abstract Mobile code suffers from the malicious host problem. When an adversary receives code he is able to effectively tamper with the code if he is able to relate the operations of the program with the appropriate context, that is, understanding the semantics of the program. In order to thwart an adversary from effectively tampering with a program he must be given an encrypted version such that he may be able to observe its operations but not understand why those operations are performed. Our notion of encrypting a program in such a way is to semantically alter it. In this paper, we add a White-box dimension called Cryptoprogramming to the Black-box notion of our Semantic Encryption Transformation Scheme. We construct an encrypted program by transforming the runtime logical pathways of the original program into a nonequivalent set of corresponding runtime logical pathways, and yet still allow for easy recoverability of the output of the program. 1 Introduction Mobile code plays a key integral part with advancing the growth of distributed systems. Not only is data a valuable commodity in a distributed system, but also programs, that can traverse a network performing specific operations, have significantly added to the distributed computing paradigm. However, the usage of mobile code has been hampered by the malicious host problem, which has stunted the progress of the utilization of mobile agents and other forms of mobile code. The malicious host problem emanates from the fact that the execution environment of the mobile code has total control, and can, not only invade the privacy of mobile code but affect its integrity as well. Ideally, Alice constructs a mobile program that she wants to run on a remote host Bob, with the intention of attaining the output of that program. It is required that Bob cannot know how the meaning of the program relates with its supposed context in which it runs. However, if Bob is malicious, he could effectively tamper 1 with the code, since Bob is able to visually inspect, statically analyze and dynamically test the code 2 . In order for Alice’s mobile code to survive it needs to be protected, even if Bob understands what the program does via White-box and Black- box exploits. This work was supported in part by the U.S. Army Research Laboratory and U.S. Army Research Office under grant number DAAD19-02-1-0235. The views expressed in this article are those of the author and do not reflect the official policy or position of the United States Air Force, Department of Defense, or the U.S. Government. 1 By effectively tamper (as opposed to blind tamper) we mean that Bob is able to maliciously alter the code for some known benefit. Furthermore, assuming only software mechanisms, it should be intuitive that it is impossible to protect against blind tampering since the execution environment contains the program in its own memory space. 2 In practice, these operations are commonly used in reverse engineering, however, our basis for Crytpoprogramming does not address securing directly against reverse engineering.