SOFTWARE PROTECTION DEVICE AND METHOD
First Claim
1. An apparatus for protecting software comprising a plurality of instructions executable on a computer, comprising:
- (a) communicating means coupled to the computer for receiving command messages and providing response messages to the computer;
(b) a memory for storing data used in translating command messages into response messages enabling execution of the software on the computer, the memory comprising a plurality of storage locations;
(c) a processor coupled to the communicating means and the memory, the processor comprising (i) means for interpreting command messages to generate processor commands;
(ii) a translator for generating response messages from processor commands; and
(iii) a memory manager comprising means for logically segmenting the memory into at least one protected segment and for controlling access to the protected segment, the controlling means comprising an instruction mapper for 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.
137 Citations
22 Claims
-
1. An apparatus for protecting software comprising a plurality of instructions executable on a computer, comprising:
-
(a) communicating means coupled to the computer for receiving command messages and providing response messages to the computer;
(b) a memory for storing data used in translating command messages into response messages enabling execution of the software on the computer, the memory comprising a plurality of storage locations;
(c) a processor coupled to the communicating means and the memory, the processor comprising (i) means for interpreting command messages to generate processor commands;
(ii) a translator for generating response messages from processor commands; and
(iii) a memory manager comprising means for logically segmenting the memory into at least one protected segment and for controlling access to the protected segment, the controlling means comprising an instruction mapper for 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. A method of securing software executable on a computer, comprising the steps of:
-
(a) segmenting the software into a first and a second software segment;
(b) 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;
(c) encrypting the first software segment using the first encryption key and the first hardware key processor; and
(d) receiving an encrypted first software segment from the first hardware key. - View Dependent Claims (15, 16, 17, 18)
-
-
19. A method of protecting software executable by a computer from unauthorized access by a client, comprising the steps of:
-
(a) receiving an access request message in a hardware key communicatively coupled to the computer, the hardware key comprising a processor and a memory comprising a protected memory segment for storing license data therein, the license data comprising the number of clients permitted to use the software;
(b) determining the number of clients using the software;
(c) computing the difference between the number of clients currently using the software and the number of clients permitted to use the software using the processor; and
(d) transmitting an access granted message to the computer when the number of clients currently using the software is less than the number of clients permitted to use the software. - View Dependent Claims (20)
-
-
21. A method of protecting software executable on a computer, comprising the steps of:
-
(a) receiving a command message generated by the executable software in the computer in a hardware key, the hardware key comprising (i) communicating means coupled to the computer for receiving command messages and providing response messages to the host computer;
(ii) a memory for storing data used in translating command messages into response messages enabling execution of the software on the host computer the memory comprising a plurality of storage locations;
(iii) a processor coupled to the communicating means and the memory, the processor comprising means for interpreting command messages to generate processor command functions;
a translator for generating response messages from processor commands; and
a memory manager comprising means for logically segmenting the memory into at least one protected segment and for controlling access to the protected segment, the controlling means comprising an instruction mapper for selectively mapping processor command functions to the memory storage locations external to the protected segment;
(b) generating a response message from the command message and the data stored in the hardware key; and
(c) transmitting a response message from the hardware key to the computer
-
-
22. The method of claim 23 wherein the software comprises an encrypted segment and a plaintext segment and the step of generating a response message from the command message and the data stored in the hardware key comprises the steps of:
-
(a) receiving the encrypted segment in the hardware key;
(b) decrypting the encrypted segment with a software key stored in the protected segment to produce plaintext instructions;
(c) performing the plaintext instructions to generate response messages; and
(d) transmitting the response messages to the host computer.
-
Specification