Data verification method
AssigneeTrusted Logic
InventorsAlexandre Frey, Gilles Peskine
Life of this patent
Estimating the term…
Abstract
(EN)An electronic system (1) comprises a trusted processor (2), a trusted cache memory (3) and a mass storage memory (4). The data are stored in the mass storage memory (4), where the memories are divided into blocks, each block is identified by an address and the data are addressed via a verification tree. The verification tree is a tree structure comprising nodes where descendent nodes are attached to a root node and each node stores the address of the block containing each of its child nodes and a digest value of each block. A method for the verification of the data of such an electronic system comprises access to searched data at the same time reporting the corruption of data if a calculated digest is different from the current digest value.
Claims13
A method for verification of data of an electronic system comprising a trusted processor, a trusted cache memory and a mass storage memory, where the data are stored in the mass storage memory, the memories are divided into blocks, each block is identified by an address, the data are addressed via a verification tree, the verification tree is a tree structure comprising nodes where descendent nodes are attached to a root node and each node stores the address of the block containing each descendent node of the node and a digest value of each block storing such descendent node,
- the method, which maintains a current digest value, comprises access to searched data by:
- a) initialising a current node at the root node by initialising the current digest value as the value of a reference digest of the block containing the root node,
- b) loading the block containing the current node in the trusted cache memory,
- c) calculating a digest value of the loaded block,
- d) reporting corruption of data if the calculated digest is different from the current digest value and stopping access to the data searched,
- e) sending back the current node if the current node contains the searched data and stopping the step for access to the searched data,
- f) determining the child node from which a sub-tree containing the data is derived,
- g) assigning the value of the digest of the child node stored in the current node as the current digest, the child node becoming the current node,
- h) looping to the loading step b).
A method for verification of data of an electronic system comprising a trusted processor, a trusted cache memory and a mass storage memory, where the data are stored in the mass storage memory, the memories are divided into blocks, each block is identified by an address, the data are addressed via a verification tree, the verification tree is a tree structure comprising nodes where descendent nodes are attached to a root node and each node stores the address of the block containing each of descendent node and a digest value of each block, the method, which maintains a current digest value, comprises a modification of a block by:
- a) reading the content of the block to be modified and located in the mass storage memory and transferring the block to be modified to the trusted memory without verifying integrity of the block,
- b) calculating a digest value of the content of the block read,
- c) modifying the content of the block,
- d) calculating a digest value of the modified content of the block,
- e) writing the content of the modified block in the mass storage memory without overwriting the previous content of the block,
- f.) if the block does not contain the root node, in a parent block containing the parent node of the block, replacing the digest value of the parent block with the calculated digest value.
A non-transitory storage medium storing a computer program comprising program code instructions that make a programmable processor execute steps of the data verification method when the said program is executed by the programmable processor, wherein the program comprises instructions to cause the programmable processor to execute a method, which maintains a current digest value, comprising access searched data by:
- a) initialising a current node at the root node by initialising the current digest value as the value of a reference digest of the block containing the root node,
- b) loading the block containing the current node in the trusted cache memory,
- c) calculating a digest of the loaded block,
- d) reporting corruption of data if the calculated digest is different from the current digest value and stopping access to the data searched,
- e) sending back the current node if the current node contains the searched data and stopping the step for access to the searched data,
- f) determining the child node from which a sub-tree containing the data is derived,
- g) assigning the value of the digest of the child node stored in the current node as the current digest, the child node becoming the current node
- h) looping to the loading step b).
An electronic system comprising a trusted processor, a trusted cache memory and a mass storage memory, where the trusted processor and the trusted cache memory are located in a trusted core, the mass storage memory is located in an unsecure environment, and where the processor has been programmed through instructions stored in non-transitory memory to cause the trusted processor to execute instructions of a method, which maintains a current digest value, to access searched data by:
- a) initializing a current node at the root node by initialising the current digest value at the value of a reference digest of the block containing the root node,
- b) loading the block containing the current node in the trusted cache memory,
- c) calculating the digest of the loaded block,
- d) reporting the corruption of data if the calculated digest is different from the current digest value and stopping access to the data searched,
- e) sending back the current node if the current node contains the searched data and stopping the step for access to the searched data,
- f) determining the child node from which a sub-tree containing the data is derived, assigning the value of the digest of the child node stored in the current node at the current digest, the child node becoming the current node looping to the loading step.
Dependencies are inferred from the claim text.