Patent ID: 7681246

Claim:
A method for ensuring that data generated by a client, comprising a first computing device, and subsequently stored in a persistent storage of the client have not been modified when the data are subsequently accessed for use by the client, the method comprising: the client computing a first digest from the data; the client sending the first digest to a server for signature computation; the server, comprising a second computing device, computing a signature for the first digest by utilizing a secure signing algorithm and a key, the key known only by the server and available for use only by the server; the server sending the signature to the client for storage; the client storing both the signature and the data in the persistent storage of the client; before the stored data being subsequently used by the client, the client computing a second digest from the stored data; the client sending both the second digest and the signature stored in the persistent storage to the server to verify that the stored data has not been changed; the server receiving both the second digest and the signature stored in the persistent storage; the server generating a temporary signature of the second digest by utilizing the secure signing algorithm and the key known only by the server and available for use only by the server; the server comparing the temporary signature to the signature stored in the persistent storage; when the temporary signature is equal to the signature stored in the persistent storage, the server sending a positive result to the client so that, upon receiving the positive result, the client uses the data; when the temporary signature is not equal to the signature stored in the persistent storage, the server sending a negative result to the client so that, upon receiving the negative result, the client does not use the data; wherein the data comprise a plurality of different sets of data, and the method further comprising: obtaining a signer identification (SID) for the client, the SID uniquely indicating the client and not being controlled by an operator of the client; on the server, using the key for computing an intermediate key from a concatenation of an arbitrary value and the SID; sending the intermediate key from the server to the client; using the intermediate key to sign each set of the plurality of different sets of data to produce the signature for the each set of the plurality of different sets of data; and storing the signature, the arbitrary value, and the SID on the persistent storage.