System for persistently encrypting critical software data to control the operation of an executable software program
First Claim
1. A method of protecting a software program from piracy comprising the steps of:
- selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content;
encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element;
distributing said selected data element and said software program to said user;
decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and
erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license;
wherein said data element is selected from the group consisting of program data required for at least one of initialization and control of execution of said software program, a proprietary algorithm, and at least one parameter.
5 Assignments
0 Petitions
Accused Products
Abstract
A data encryption/decryption system is provided which maintains in encrypted form one or more critical data elements required by a software program. A user must obtain a license key in order to decrypt the critical data elements before the software program can use them. The data elements can be chosen such that their contents provide a control mechanism for the correct operation of the executable software program. The system allows for the inclusion of different data elements with or within a single version of the software program. The different data elements are encrypted for different license keys to allow for different license options and corresponding levels of control and flexibility in the delivery of the software program.
95 Citations
24 Claims
-
1. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license; wherein said data element is selected from the group consisting of program data required for at least one of initialization and control of execution of said software program, a proprietary algorithm, and at least one parameter. - View Dependent Claims (2)
-
-
3. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license; wherein said data element is stored as an external dataset with respect to said software program. - View Dependent Claims (4, 5, 6)
-
-
7. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license; wherein said decrypting step further comprises the steps of receiving a user request for a key with which to decrypt said selected data element; generating an activation code linked to said key; and providing said activation code to said user; and wherein said activation code is locked to a hash of a unique hardware identifier associated with said user'"'"'s computer. - View Dependent Claims (8, 9)
-
-
10. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license; wherein verification of said valid license causes at least one of programmable switches and application values in said software program to be selectively changed to create a sequence of states that are verified prior to ending operation of said software program if a valid license is not obtained by said user.
-
-
11. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and erasing the decrypted said selected data element after said software program executes correctly such that said selected data element is only available at runtime of said software program and in the presence of said valid license; wherein said software program is configured, upon verification of said valid license, to quit in different places therein in accordance with a plurality of conditions if said user does not obtain a valid license.
-
-
12. A method of protecting a software program from piracy comprising the steps of:
-
selecting at least one data element from said software program for encryption, said data element affecting operation of said software program and comprising usable data that supports any of usable, viewable and executable forms of content; encrypting said selected data element such that a user is required to obtain a valid license to decrypt said selected data element; distributing said selected data element and said software program to said user; decrypting said selected data element during runtime of said software program upon said user obtaining a valid license; and operating said software program sub-optimally if no valid license is obtained by said user and said selected data element is not decrypted. - View Dependent Claims (13)
-
-
14. A method of protecting a software program comprising the steps of:
-
bundling different functionalities in at least one software program that require respective license terms such that they are subject to respective licenses; encrypting each of said functionalities; providing said software program to a user with all of encrypted said functionalities; and decrypting and enabling each of said functionalities whenever said user obtains the corresponding one of said licenses therefor. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
Specification