Patent ID: 7676840

Claim:
A method for determining whether code provided for execution during a boot-up of an electronic device is authorized, said method comprising the steps of: (a) hashing a predefined portion of the code to produce a first hash value, the code being stored in non-volatile memory, and the code including at least: a digital signature; at least two keys; a boot loader; and an initialization code configured to be executed when initially powering up the electronic device; (b) comparing the first hash value to a stored hash value that is maintained in a circuit component of the electronic device, the circuit component being stored on the electronic device and separate from the non-volatile memory where the code is stored and being configured to perform at least one function of the electronic device other than data storage and boot-up security, to verify that the predefined portion of the code is authorized; (c) when the first hash value equals the stored hash value, executing the predefined portion of the code, and when the first hash value does not equal the stored hash value, terminating the boot-up of the electronic device; (d) wherein executing said predefined portion of the code that was hashed to produce the first hash value carries out the steps of: (i) hashing substantially all of the code to determine a second hash value, the hashing of substantially all of the code being based on a hashing algorithm as defined in the predefined portion of code, such that the hashing algorithm is defined in the predefined portion of code that was previously hashed to produce the first hash value, and wherein hashing substantially all of the code includes hashing the predefined portion of the code, the boot loader, the initialization code, and at least two keys, while abstaining from hashing the digital signature included in the code; and (ii) verifying whether the digital signature that is included in the code matches the second hash value of substantially all of the code, and when the digital signature matches the second hash value, enabling execution of the code, and when the digital signature does not match the second hash value, terminating the boot-up of the electronic device.