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 the verification of the data of an electronic system (1) comprising a trusted processor (2), a trusted cache memory (3) and a mass storage memory (4), where the data are stored in the mass storage memory (4), 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 its child nodes and a digest value of each block,
- the method comprises involves access (A0 or A1) to searched data (Dr) by:
- a) initialising (S1) a current node at the root node by initialising the current digest value (Ec) at the value of a reference digest (Eref) of the block containing the root node,
- b) loading (S2) the block (B) containing the current node (Nc) in the trusted cache memory (3),
- c) calculating (S3) the digest (E) of the loaded block,
- d) reporting (S4, S5) 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 (S6, S7) the current node if the current node (Nc) contains the searched data (Dr) and stopping the step for access to the searched data,
- f) determining (S8) the child node (Nf) from which a sub-tree containing the data is derived, g) assigning (S9) the value of the digest (Ef) of the child node (Nf) stored in the current node (Nc) at the current digest (Ec), the child node (Nf) becoming the current node (Nc), h) looping to the loading step b) (S2).
A method for the verification of the data of an electronic system (1) comprising a trusted processor (2), a trusted cache memory (3) and a mass storage memory (4), where the data are stored in the mass storage memory (4), 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 its child nodes and a digest value of each block, the method involves a modification (MA0) of a block by:
- a) reading (S31) the content of the block (B) located in the mass storage memory (4) and transferring it to the trusted memory (3) without verifying its integrity,
- b) calculating (S32) the digest value of the content of the block read (E[B]),
- c) modifying (S33) the content of the block (Bmod),
- d) calculating (S34) the digest value of the modified content of the block (E[Bmod]),
- e) writing (S35) the content of the modified block (Bmod) in the mass storage memory (4) without overwriting the previous content of the block (B),
- f.) if the block does not contain the root node (S36), in a parent block containing the parent node of the block, replacing (S37) the digest value of the parent block (E[B]) with the calculated digest value (E[Bmod]),
- g) if the block contains the root node (S36), verifying (S38) that the initial digest of the block (E[B]) is equal to the reference digest of the root block (Eref[Br]) and that the initial digest of each other block crossed is equal to the digest found in the parent node of the said block, then storing (S44) the calculated digest value of the root block (E[Bmod]) in the trusted memory (3) as the new value of the reference digest of the block (Eref[Br]).
A non-transitory storage medium storing a computer program comprising program code instructions that make a programmable processor (4) execute the steps of the data verification method, when the said program is executed by the programmable processor (4), wherein the program comprises instructions to cause the programmable processor to execute a method comprising access (A0 to A1) to searched data (Dr) by:
- a) initialising (S1) a current node at the root node by initialising the current digest value (Ec) at the value of a reference digest (Eref) of the block containing the root node,
- b) loading (S2) the block (B) containing the current node (Nc) in the trusted cache memory (3),
- c) calculating (S3) the digest (E) of the loaded block,
- d) reporting (S4, S5) 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 (S6, S7) the current node if the current node (Nc) contains the searched data (Dr) and stopping the step for access to the searched data,
- f) determining (S8) the child node (Nf) from which a sub-tree containing the data is derived, g) assigning (S9) the value of the digest (Ef) of the child node (Nf) stored in the current node (Nc) at the current digest (Ec), the child node (Nf) becoming the current node (Nc), h) looping to the loading step b) (S2).
An electronic system (1) comprising a trusted processor (2), a trusted cache memory (3) and a mass storage memory (4), where the trusted processor (2) and the trusted cache memory (3) are located in a trusted core (5), the mass storage memory (4) is located in an unsecure environment (6), and where the processor has been programmed through instructions stored in non-transitory memory to execute instructions to access (A0 or A1) to searched data (Dr) by:
- the method comprises involves access (A0 or A1) to searched data (Dr) by:
- a) initialising (S1) a current node at the root node by initialising the current digest value (Ec) at the value of a reference digest (Eref) of the block containing the root node,
- b) loading (S2) the block (B) containing the current node (Nc) in the trusted cache memory (3),
- c) calculating (S3) the digest (E) of the loaded block,
- d) reporting (S4, S5) 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 (S6, S7) the current node if the current node (Nc) contains the searched data (Dr) and stopping the step for access to the searched data,
- f) determining (S8) the child node (Nf) from which a sub-tree containing the data is derived, g) assigning (S9) the value of the digest (Ef) of the child node (Nf) stored in the current node (Nc) at the current digest (Ec), the child node (Nf) becoming the current node (Nc), h) looping to the loading step b) (S2).
Dependencies are inferred from the claim text.