Towards a theory of software protection and simulation by oblivious RAMs

Oded Goldreich

1987 · 511 citations · 8 references

Concepts

TL;DR

Software protection is a critical issue, yet it has received little theoretical analysis; the challenge is to execute programs efficiently while preventing adversaries from learning program details, a problem that reduces to simulating RAM on an oblivious RAM. This work proposes a theoretical framework for software protection by formulating the problem of learning a program from its execution and presenting an efficient execution method that hides all observable behavior assuming one‑way permutations. The authors define an oblivious RAM as a probabilistic RAM whose memory‑access pattern is input‑independent and provide an online simulation that maps t steps of any RAM with m cells to fewer than t·me steps on an oblivious RAM with 2m cells, where e>0 is arbitrary. The simulation achieves an overhead of less than t·me steps, demonstrating that efficient oblivious execution is possible with only a linear‑time multiplicative factor.

Abstract

Software protection is one of the most important issues concerning computer practice. There exist many heuristics and ad-hoc methods for protection, but the problem as a whole has not received the theoretical treatment it deserves. In this paper, we make the first steps towards a theoretic treatment of software protection: First, we distill and formulate the key problem of learning about a program from its execution. Second, assuming the existence of one-way permutations, we present an efficient way of executing programs such that it is infeasible to learn anything about the program by monitoring its executions. How can one efficiently execute programs without allowing an adversary, monitoring the execution, to learn anything about the program? Traditional cryptographic techniques can be applied to keep the contents of the memory unknown throughout the execution, but are not applicable to the problem of hiding the access pattern. The problem of hiding the access pattern efficiently corresponds to efficient simulation of Random Access Machines (RAM) on an oblivious RAM. We define an oblivious RAM to be a (probabilistic) RAM for which (the distribution of) the memory access pattern is independent of the input. We present an (on-line) simulation of t steps of an arbitrary RAM with m memory cells, by less than t·me steps of an oblivious RAM with 2m memory cells, where e>0 is an arbitrary constant.

References

8