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 interface port for translating command messages into response messages using the data stored in the memory. The processor further comprises a memory manager, for logically segmenting the memory storing the data into at least one protected segment, and for controlling access to the protected segment.
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 a 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.
Claim 2
Independent Claim
104 words
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 a 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.
Claim 3
Dependent Claim
128 words
The method of claim 1 , further comprising the steps of: (a) storing the encrypted first software segment and the second software segment in a host computer communicatively coupled to a second hardware key comprising a second hardware key processor and a second hardware key memory having the first encryption key stored therein; (b) transmitting the encrypted first software segment to the second hardware key; (c) decrypting the encrypted first software segment using the first encryption key to produce flint software segment instructions; (d) storing the first software segment instructions in a secure portion of the second hardware key memory; (e) performing the first software segment instructions by the second hardware key processor to produce a response message; and (f) transmitting the response message to the host computer.
Claim 4
Dependent Claim
18 words
The method of claim 2 , wherein the response message is encrypted before transmission to the host computer.
Claim 5
Dependent Claim
66 words
The method of claim 1 further comprising the steps of: (a) transmitting the encrypted first software segment from the first hardware key to a second hardware key, the second hardware key comprising a second hardware key processor and a second hardware key memory having a secure segment with the first encryption key stored therein; and (b) storing the encrypted first software segment in the secure segment.
Claim 6
Dependent Claim
111 words
The method of claim 1 , further comprising the steps of: (a) storing the second software segment in a host computer communicatively coupled to a second hardware key comprising a second hardware key processor and a second hardware key memory having the first encryption key securely stored therein; (b) decrypting the encrypted first software segment using the first encryption key to produce first software segment instructions; (c) storing the first software segment instructions in a secure portion of the second hardware key memory; (d) performing the first software segment instructions by the second hardware key processor to produce a response message; and (e) transmitting the response message to the host computer.