Method and apparatus for securing executable programs against copying
First Claim
1. An apparatus for executing a secure program in a computer system, wherein the ability to make workable copies of the secure program from the computer system is inhibited, the apparatus comprising:
- a program memory in which the secure program data is stored in an encrypted form;
a security chip coupled to the program memory, the security chip comprising;
means for decrypting portions of the secure program into a clear portion and a remainder portion;
means for providing the clear portion to memory locations accessible by a processor; and
remainder memory for storing the remainder portion of the secure program, the remainder memory not directly accessible by the processor;
means for requesting subsets of the remainder portion for use by the processor; and
means, within the security chip, for checking that the requested subset is within a valid predetermined set of requested subsets dependent on a stored state for the processor.
1 Assignment
0 Petitions
Accused Products
Abstract
A secure system for executing program code in an insecure environment while making it impossible, or at least impractical, to determine how to copy the program code and associated data is provided. A program memory contains encrypted program data and security circuitry contained within an integrated circuit is provided for decrypting the program data as it is needed by a processor. A portion of the processing steps which would be done by the processor in an insecure system is performed in this secure system within the secure circuitry using portions of the decrypted program data which are not provided to the processor. Program data is parsed it out based on a proper request to the security chip from the processor. A key value stored in volatile memory is used in the decrypting process and the volatile memory is positioned on the integrated circuit such that its contents are lost before a chip peel provides access to the volatile memory.
-
Citations
33 Claims
-
1. An apparatus for executing a secure program in a computer system, wherein the ability to make workable copies of the secure program from the computer system is inhibited, the apparatus comprising:
-
a program memory in which the secure program data is stored in an encrypted form; a security chip coupled to the program memory, the security chip comprising; means for decrypting portions of the secure program into a clear portion and a remainder portion; means for providing the clear portion to memory locations accessible by a processor; and remainder memory for storing the remainder portion of the secure program, the remainder memory not directly accessible by the processor; means for requesting subsets of the remainder portion for use by the processor; and means, within the security chip, for checking that the requested subset is within a valid predetermined set of requested subsets dependent on a stored state for the processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. An apparatus for encrypting program data to prevent unauthorized copying, comprising;
-
a branch separator for extracting branch statements from the program data; a compressor for compressing the extracted branch statements and a remainder of the program data to form compressed data; and an encryptor for encrypting the compressed data.
-
-
20. An apparatus for encrypting program data to prevent unauthorized copying, comprising;
-
a branch separator for extracting branch statements from the program data comprising; means for automatically generating checksum data representing checksums of program data; and means for automatically generating timing information used to assess timing of program data processing; a compressor for compressing the extracted branch statements, a remainder of the program data, the checksum data, and the timing information, to form compressed data; and an encryptor for encrypting the compressed data.
-
-
21. A method of executing a secure program to prevent copying of the secure program in a usable form from information acquired over an insecure processor bus, the usable form being a copy which replaces the functionality of the original, comprising the steps of:
-
accepting a request from a processor over the insecure processor bus for a block of program data, the block of program data including at least one of one or more program instructions or one or more program data elements; decrypting, in a secure manner, the block of program data into a clear portion and a remainder portion; providing the clear portion to the processor over the insecure processor bus; and accepting requests from the processor over the insecure processor bus for elements of the remainder portion; checking that the request is consistent with the state of the processor and previous requests; processing the requests from the processor for elements of the remainder portion; and responding to the requests with request responses, wherein the request responses do not contain enough information content to recreate the remainder portion with substantially less computational effort than required to create said remainder portion. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A method for encrypting a program to prevent unauthorized copying, comprising the steps of:
-
separating program code according to sequences of nonbranch instructions and branch instructions; compressing the nonbranch instructions to form a first set of compressed data; compressing the branch instructions to form a second set of compressed data; and encrypting the first and second sets of compressed data.
-
-
33. An apparatus for executing a secure program in an insecure computer system, wherein the ability to make workable copies of the secure program during execution of the secure program using the insecure computer system is inhibited, a workable copy being a copy which replaces the functionality of the original secure program, the apparatus comprising:
-
a program memory in which the secure program, data is stored in an encrypted form; a security chip coupled between the program memory and adapted to be coupled to a processor over an accessible processor bus, the security chip comprising; means for decrypting portions of the secure program into a clear portion and a remainder portion; means for providing the clear portion to memory locations accessible by the processor; and remainder memory for storing the remainder portion of the secure program, the remainder memory not directly accessible by the processor except via the security chip; means for requesting subsets of the remainder portion for use by the processor; and means, within the, security chip, for checking that the requested subset is within a valid predetermined set of requested subsets given a stored state for the processor.
-
Specification