Software protection device and method
First Claim
1. A hardware key, communicably coupleable with a computer, for enabling a user to execute software on the computer, the hardware key comprising:
- a memory for storing data used in translating a command message into a response messages to enable execution of the software on the computer, the memory comprising a plurality of storage locations;
a processor coupled to the memory, the processor interpreting the command messages and generating the response message, the processor comprising a memory manager module logically segmenting the memory into at least one protected segment and controlling access to the protected segment by selectively mapping processor commands to the memory storage locations external to the protected segment.
10 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for protecting computer software from unauthorized execution or duplication using a hardware key is disclosed. The apparatus comprises a means for communicating with the computer to receive command messages from the computer in the hardware key and to provide response messages to the computer, a memory for storing data for translating command messages into response messages enabling software execution, and a processor coupled to the communicating means for translating command messages into response messages using the data stored in the memory. The processor further comprises a memory manager, including means for logically segmenting the memory storing the data into at least one protected segment, and a means for controlling access to the protected segment.
84 Citations
32 Claims
-
1. A hardware key, communicably coupleable with a computer, for enabling a user to execute software on the computer, the hardware key comprising:
-
a memory for storing data used in translating a command message into a response messages to enable execution of the software on the computer, the memory comprising a plurality of storage locations;
a processor coupled to the memory, the processor interpreting the command messages and generating the response message, the processor comprising a memory manager module logically segmenting the memory into at least one protected segment and controlling access to the protected segment by selectively mapping processor commands to the memory storage locations external to the protected segment. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method of protecting software executable by a computer from unauthorized access by a user, wherein the software is segmented into a first segment encrypted according to a first encryption key (CC0) and a second software segment (plaintext) comprising the steps of:
-
coupling a hardware key to the computer, executing the second software segment in the computer;
decrypting the first software segment in the hardware key using the first encryption key stored in a secure memory of the hardware key unreadable by the user, wherein the software encryption key is stored in the secure memory in plaintext before the hardware key is supplied to the user;
executing the decrypted software segment to produce a response message transmitting a response message to the computer. - View Dependent Claims (23, 24, 25, 26, 27, 28)
-
-
29. A method of securing software executable on a computer, comprising the steps of:
-
storing an encrypted first software segment and a second software segment in a host computer communicatively coupled to a hardware key comprising a hardware key processor and a second hardware key memory having the first encryption key stored therein;
wherein the encrypted software segment is generated by performing the steps of segmenting the software into a first and a second software segment;
transmitting the first software segment to a first hardware key communicatively coupled to a developer computer, the first hardware key comprising a first hardware key processor and a first hardware key memory, the first hardware key memory having a secure segment with the first encryption key stored therein;
encrypting the first software segment using the first encryption key and the first hardware key processor; and
receiving an encrypted first software segment from the first hardware key;
transmitting the encrypted first software segment to the hardware key;
decrypting the encrypted first software segment using the first encryption key to produce first software segment instructions;
storing the first software segment instructions in a secure portion of the second hardware key memory;
performing the first software segment instructions by the second hardware key processor to produce a response message; and
transmitting the response message to the host computer. - View Dependent Claims (30, 31, 32)
-
Specification