How to generate cryptographically strong sequences of pseudo-random bits
SIAM Journal on Computing
Pseudo-random permutation generators and cryptographic composition
STOC '86 Proceedings of the eighteenth annual ACM symposium on Theory of computing
An efficient probabilistic public key encryption scheme which hides all partial information
Proceedings of CRYPTO 84 on Advances in cryptology
RSA and Rabin functions: certain parts are as hard as the whole
SIAM Journal on Computing - Special issue on cryptography
Relations Among Complexity Measures
Journal of the ACM (JACM)
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
STOC '83 Proceedings of the fifteenth annual ACM symposium on Theory of computing
PROTECTING EXTERNALLY SUPPLIED SOFTWARE IN SMALL COMPUTERS
PROTECTING EXTERNALLY SUPPLIED SOFTWARE IN SMALL COMPUTERS
Theory and application of trapdoor functions
SFCS '82 Proceedings of the 23rd Annual Symposium on Foundations of Computer Science
How To Construct Randolli Functions
SFCS '84 Proceedings of the 25th Annual Symposium onFoundations of Computer Science, 1984
Sorting networks and their applications
AFIPS '68 (Spring) Proceedings of the April 30--May 2, 1968, spring joint computer conference
ABYSS: An Architecture for Software Protection
IEEE Transactions on Software Engineering
Digital signets: self-enforcing protection of digital information (preliminary version)
STOC '96 Proceedings of the twenty-eighth annual ACM symposium on Theory of computing
A Secure Electronic Software Distribution (ESD) Protocol Based on PKC
EC-WEB '00 Proceedings of the First International Conference on Electronic Commerce and Web Technologies
From non-adaptive to adaptive pseudorandom functions
TCC'12 Proceedings of the 9th international conference on Theory of Cryptography
Hardness preserving reductions via cuckoo hashing
TCC'13 Proceedings of the 10th theory of cryptography conference on Theory of Cryptography
Hi-index | 0.00 |
Software protection is one of the most important issues concerning computer practice. The problem is to sell programs that can be executed by the buyer, yet cannot be duplicated and/or distributed by him to other users. There exist many heuristics and ad-hoc methods for protection, but the problem as a whole did not receive 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, we present an efficient way of executing programs (i.e. a interpreter) such that it is infeasible to learn anything about the program by monitoring its executions. A scheme that protects against duplication follows.How can one efficiently execute programs without allowing an adversary, monitoring the execution, to learn anything about the program ? Current cryptographic techniques can be applied to keep the contents of the memory unknow throughout the execution, but are not applicable to the problem of hiding the access pattern. Hiding the access pattern efficiently is the essence of our solution. We show how to implement (on-line and in an "oblivious manner") t fetch instructions to a memory of size m by making less than t驴m驴 actual accesses, for every fixed 驴0.