Almost independent logically integrated license enforcement framework
First Claim
1. A process of converting a computer program to a form resistant to unauthorized use, whereby said resistant form becomes comprised of a client program, communication channel allowed to have a low bandwidth and be infrequently used and a secure program capable of execution in a time substantially less then the client program comprising the steps of:
- (a) providing a level of complexity of said computer program'"'"'s logical conditions such that without knowledge of said logical conditions, determining the logical conditions by a random guess would take prohibitively long time, by means of;
(1) combining the logical conditions of said computer program, including those used to control loop execution, so that they achieve substantial length;
(2) converting recursive functions to iterative loops; and
(3) increasing a number of Boolean variables of said logical conditions in said loops to a sufficiently secure level by means of a loop variable increment procedure (b) providing that said client program contacts said secure program via said communication channel with any desired probability and any of said computer program'"'"'s input data size by means of;
(1) conjunctively adding a random condition controller logical expression to the logical conditions outside of the said computer program loops;
(2) converting loops of said computer program to a form where execution of a considerably small set of controlling steps becomes logically necessary to correctly execute other steps whereby said random condition controller conjunctively added to the logical expressions governing said controlling steps, gets invoked a number of times independent of a number of loop iterations said computer program performs; and
(3) performing a blending procedure on a plurality of said logical conditions containing said random condition controller to provide a resulting expression whereby separating the random condition controller from said resulting expression would require prohibitively long time;
(c) providing means for said program to use input data specific small data packet received from said secure program over said communication channel in order to resume correct execution whereby said client program can execute all instructions of the computer program with an exception of a number of special instructions that is small and independent of an initial input data size whereby said client program will send a small and independent of the initial input data size request and require a small data specific response via said communication channel from said secure program when executing said special instructions whereby said secure program will require an amount of time that is small and independent of initial input data size to generate said data specific response for said client program in case said client program submits said input data with a valid license whereby without knowing said secure program restoring the computer program or otherwise achieving correct execution requires more then a polynomial time.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of automatically transforming a computer program in order to control it'"'"'s execution in compliance with the end user license agreement and concealing the program logic. The method allows even for distributing program'"'"'s source code and still enforcing the license. In particular the execution control allows for managing the period of time and the number of times a particular instance of a program was run as well as for detecting the fact of a simultaneous execution of the same instance by several users. Allows for a very infrequent outside interaction with a secure program such that only a certain percentage of program executions causes outside connection, and no more than a fixed number of times per each such execution independently of the input data size. For each outside interaction allows for an extremely simple and independent of the client input data size secure program processing.
10 Citations
1 Claim
-
1. A process of converting a computer program to a form resistant to unauthorized use, whereby said resistant form becomes comprised of a client program, communication channel allowed to have a low bandwidth and be infrequently used and a secure program capable of execution in a time substantially less then the client program comprising the steps of:
-
(a) providing a level of complexity of said computer program'"'"'s logical conditions such that without knowledge of said logical conditions, determining the logical conditions by a random guess would take prohibitively long time, by means of;
(1) combining the logical conditions of said computer program, including those used to control loop execution, so that they achieve substantial length;
(2) converting recursive functions to iterative loops; and
(3) increasing a number of Boolean variables of said logical conditions in said loops to a sufficiently secure level by means of a loop variable increment procedure (b) providing that said client program contacts said secure program via said communication channel with any desired probability and any of said computer program'"'"'s input data size by means of;
(1) conjunctively adding a random condition controller logical expression to the logical conditions outside of the said computer program loops;
(2) converting loops of said computer program to a form where execution of a considerably small set of controlling steps becomes logically necessary to correctly execute other steps whereby said random condition controller conjunctively added to the logical expressions governing said controlling steps, gets invoked a number of times independent of a number of loop iterations said computer program performs; and
(3) performing a blending procedure on a plurality of said logical conditions containing said random condition controller to provide a resulting expression whereby separating the random condition controller from said resulting expression would require prohibitively long time;
(c) providing means for said program to use input data specific small data packet received from said secure program over said communication channel in order to resume correct execution whereby said client program can execute all instructions of the computer program with an exception of a number of special instructions that is small and independent of an initial input data size whereby said client program will send a small and independent of the initial input data size request and require a small data specific response via said communication channel from said secure program when executing said special instructions whereby said secure program will require an amount of time that is small and independent of initial input data size to generate said data specific response for said client program in case said client program submits said input data with a valid license whereby without knowing said secure program restoring the computer program or otherwise achieving correct execution requires more then a polynomial time.
-
Specification