SYSTEMS AND METHODS FOR AUTHENTICATING AND PROTECTING THE INTEGRITY OF DATA STREAMS AND OTHER DATA
First Claim
1. A system for securely evaluating authenticity of software, comprising:
- a protected processing environment comprising;
a processor,non-volatile memory,volatile memory,a tamper-resistant barrier, anda root verification key stored in a manner that is resistant to tampering;
a storage medium storing a data block, said data block at least in part including executable instructions;
a storage location storing a signed root check value and two or more check values, said signed root check value and two or more check values being in a hierarchy of check values, each of said check values having been derived at least in part from a sub-block of said data block or from a plurality of check values in the hierarchy of check values;
input verification logic, said input verification logic protected against tampering, said input verification logic operable to;
authenticate said signed root check value at least in part using said root verification key,verify the integrity of said two or more check values at least in part using the authenticated root check value or a verified check value in the hierarchy of check values,verify the integrity of a sub-block of said data block using at least one of said verified check values, andrelease said sub-block of said data block for execution based at least in part on the result of said authentication and verification steps; and
one or more storage locations configured to store said authenticated root check value and said two or more verified check values in a manner that is resistant to tampering.
3 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for enabling a recipient of a cryptographically-signed electronic communication to verify the authenticity of the communication on-the-fly using a signed chain of check values, the chain being constructed from the original content of the communication, and each check value in the chain being at least partially dependent on the signed root of the chain and a portion of the communication. Fault tolerance can be provided by including error-check values in the communication that enable a decoding device to maintain the chain'"'"'s security in the face of communication errors. In one embodiment, systems and methods are provided for enabling secure quasi-random access to a content file by constructing a hierarchy of hash values from the file, the hierarchy deriving its security in a manner similar to that used by the above-described chain. The hierarchy culminates with a signed hash that can be used to verify the integrity of other hash values in the hierarchy, and these other hash values can, in turn, be used to efficiently verify the authenticity of arbitrary portions of the content file.
-
Citations
18 Claims
-
1. A system for securely evaluating authenticity of software, comprising:
-
a protected processing environment comprising; a processor, non-volatile memory, volatile memory, a tamper-resistant barrier, and a root verification key stored in a manner that is resistant to tampering; a storage medium storing a data block, said data block at least in part including executable instructions; a storage location storing a signed root check value and two or more check values, said signed root check value and two or more check values being in a hierarchy of check values, each of said check values having been derived at least in part from a sub-block of said data block or from a plurality of check values in the hierarchy of check values; input verification logic, said input verification logic protected against tampering, said input verification logic operable to; authenticate said signed root check value at least in part using said root verification key, verify the integrity of said two or more check values at least in part using the authenticated root check value or a verified check value in the hierarchy of check values, verify the integrity of a sub-block of said data block using at least one of said verified check values, and release said sub-block of said data block for execution based at least in part on the result of said authentication and verification steps; and one or more storage locations configured to store said authenticated root check value and said two or more verified check values in a manner that is resistant to tampering. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for securely and dynamically authenticating software for execution using a protected processing environment, comprising:
-
identifying or locating a data block for execution, said data block at least in part including executable instructions; loading a signed root check value into a tamper resistant processing environment, said signed root check value having been derived from two or more check values, said signed root check value and said two or more check values being in a hierarchy of check values, each check value having been derived at least in part from an uncorrupted sub-block of said data block or other check values in said hierarchy of check values; authenticating said signed root check value at least in part using a root verification key and input verification logic, said input verification logic and root verification key protected against tampering; loading a sub-block of said data block into said tamper resistant processing environment; calculating a first sub-block check value using said input verification logic, said first sub-block check value at least in part derived from said loaded sub-block; identifying or locating a portion of said hierarchy of check values to be loaded and verified; loading said portion of said hierarchy of check values into said tamper resistant execution environment; verifying the integrity of one or more of the loaded check values using said input verification logic, said integrity verification being determined by calculating a hash of one or more of the loaded check values and comparing the calculated hash to either the authenticated root check value or a previously verified check value in the hierarchy of check values; verifying the integrity of said loaded sub-block using said input verification logic, said integrity being determined by comparing said calculated first sub-block check value to a verified check value from said hierarchy of check values; and releasing said loaded sub-block for execution at least in part based on the results of said verifying and authentication steps; wherein said authenticated root check value and said one or more verified check values are stored in a tamper resistant manner. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
Specification