Method and apparatus to copy protect software programs
First Claim
1. A method, comprising:
- using a processor to read a first unique identification code from a separate identification code provider;
using the processor to read a second identification code from a memory a first time;
comparing the second identification code to a predetermined value that indicates that the memory is not copy protected;
storing the first identification code as the second identification code in the memory in response to the second identification code read the first time being equal to the predetermined value;
using the processor to read the second identification code from the memory a second time;
comparing the second identification code read from the memory the second time to the first identification code;
indicating with the processor, failure to protect the memory in response to the second identification code read from the memory the second time being unequal to the first identification code;
using the processor to read the second identification code from the memory a third time;
comparing the first identification code to the second identification code read from the memory the third time;
allowing the processor to perform instructions contained in the memory if the first identification code matches the second identification code read from the memory the third time; and
performing a security response if the first identification code does not match the second identification code read from the memory the third time.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method are described for securing a configurable system on a chip (CSoC) or other programmable chip design to prevent unauthorized copying. A processor reads instructions from a memory device. The processor reads an identification code from an identification code provider. If no identification code has been previously imprinted on the memory, the processor imprints the provider identification code into the memory. If an identification code is already present, the memory identification code is compared with the provider identification code. If the memory identification code matches with the provider identification code, the processor is allowed to perform the program present on the memory. If the memory identification code does not match with the provider identification code, appropriate security countermeasures are taken. The program and identification code can be further encrypted on the memory for greater security, using the provider identification code as the encryption key.
-
Citations
22 Claims
-
1. A method, comprising:
-
using a processor to read a first unique identification code from a separate identification code provider; using the processor to read a second identification code from a memory a first time; comparing the second identification code to a predetermined value that indicates that the memory is not copy protected; storing the first identification code as the second identification code in the memory in response to the second identification code read the first time being equal to the predetermined value; using the processor to read the second identification code from the memory a second time; comparing the second identification code read from the memory the second time to the first identification code; indicating with the processor, failure to protect the memory in response to the second identification code read from the memory the second time being unequal to the first identification code; using the processor to read the second identification code from the memory a third time; comparing the first identification code to the second identification code read from the memory the third time; allowing the processor to perform instructions contained in the memory if the first identification code matches the second identification code read from the memory the third time; and performing a security response if the first identification code does not match the second identification code read from the memory the third time. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus, comprising:
-
means for using a processor to read a first unique identification code from a separate identification code provider; means for using the processor to read a second identification code from a memory a first time; means for comparing the second identification code to a predetermined value that indicates that the memory is not copy protected; means for storing the first identification code as the second identification code in the memory in response to the second identification code read the first time being equal to the predetermined value; means for using the processor to read the second identification code from the memory a second time; means for comparing the second identification code read from the memory the second time to the first identification code; means for indicating with the processor failure to protect the memory in response to the second identification code read from the memory the second time being unequal to the first identification code; means for using the processor to read the second identification code from the memory a third time; means for comparing the first identification code to the second identification code read from the memory the third time; means for allowing the processor to perform instructions contained in the memory if the first identification code matches the second identification code read from the memory the third time; and means for performing a security response if the first identification code does not match the second identification code read from the memory the third time. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. An apparatus, comprising:
-
a separate identification code provider to provide a first unique identification code; a memory to store an initial value as a second identification code; and a processor configured with code from the memory to read the first unique identification code from the separate identification code provider, read a second identification code from the memory a first time, compare the second identification code to a predetermined value that indicates that the memory is not copy protected, and store the first identification code as the second identification code in the memory in response to the second identification code read the first time being equal to the predetermined value, the processor being further configured with code from the memory to read the second identification code from the memory a second time, compare the first unique identification code with the second unique identification code read a second time, indicate failure to protect the memory in response to the second identification code read from the memory the second time being unequal to the first identification code, the processor being further configured with code from the memory to read the second identification code from the memory a third time, compare the first identification code to the second identification code read the third time, allow further execution of instructions from the memory in response to the first identification code matching the second identification code read the third time, and trigger a security response if the first unique identification code does not match the second identification code read the third time; and a circuit board connecting the processor, the memory, and the separate identification code provider. - View Dependent Claims (18, 19, 20, 21, 22)
-
Specification