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.
- 2. A method as claimed in claim 1, 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.
- 3. A method as claimed in claim 1, wherein said data element is stored within a program executable of said software program.
- 4. A method as claimed in claim 1, wherein said data element is stored as an external dataset with respect to said software program.
- 5. A method as claimed in claim 4, wherein said external dataset is accessible locally with respect to said user.
- 6. A method as claimed in claim 4, wherein said external dataset is accessible remotely with respect to said user via a network.
- 7. A method as claimed in claim 4, further comprising the step of updating said selected data element in said external dataset without changing the code of said software program.
- 8. A method as claimed in claim 1, 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.
- 9. A method as claimed in claim 8, wherein said activation code is locked to a hash of a unique hardware identifier associated with said user's computer.
- 10. A method as claimed in claim 1, wherein said distributing step comprises providing an encoded serial number with said license to use said software program, and said decryption 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 only to those users having an unactivated said serial number.
- 11. A method as claimed in claim 1, 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.
- 12. A method as claimed in claim 1, 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.
- 13. 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.
- 14. A method as claimed in claim 13, further comprising the steps of:
hiding the functionality of said selected data element during runtime of said software program by not providing an error message if said license is invalid; and operating said software program such that said selected data element appears to be decrypted but contains invalid data if said license is invalid.
- 15. 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.
- 16. A method as recited in claim 15, wherein said functionalities provide a range of programmatic execution control ranging from coarse control of said software program to fine control of a specific function provided by said software program.
- 17. A method as recited in claim 16, wherein said functionalities for said range of programmatic execution control comprise different datasets stored in respective encrypted buffers.
- 18. A method as recited in claim 17, wherein said respective encrypted buffers are each provided with a unique instance tag as part of the cryptographic process to generate keys therefor.
- 19. A method as recited in claim 15, wherein said functionalities provide a fully licensed version of said software program and a trialware version of said software program.
- 20. A method as recited in claim 19, wherein said functionalities for said fully licensed version and said trialware version comprises datasets stored in respective encrypted buffers.
- 21. A method as recited in claim 20, wherein said respective encrypted buffers are each provided with a unique instance tag as part of the cryptographic process to generate keys therefor.
- 22. A method as recited in claim 15, wherein said functionalities comprise a basic mode of operation and at least one other mode of increased functionality.
- 23. A method as recited in claim 15, wherein said functionalities correspond to respective ones of multiple versions of a data element associated with said software program.
- 24. A method as recited in claim 23, wherein said encrypting step comprises individually encrypting each of said multiple versions of said data element with a key specific to a different license, and said providing step further comprises the step of sending the different said encrypted data elements to said user along with said software application.
- 25. A method as recited in claim 15, wherein at least one of said functionalities has a data element which comprises usable data that supports any of usable, viewable and executable forms of content.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] Related subject matter is disclosed and claimed in co-pending U.S. patent application Ser. No. 10/126,973, filed by Shannon Byrne et al on Apr. 22, 2002; and in co-pending U.S. patent application Ser. No. 10/126,974, filed by Shannon Byrne et al on Apr. 22, 2002; all of said applications being expressly incorporated herein by reference.