Patent ID: 8005227

Claim:
A method of performing encrypted data storage operations in a data storage system, comprising: generating a plurality of wrapped keys by a key server; maintaining a central data structure containing a plurality of wrapped key entries, each wrapped key entry being uniquely associated with a corresponding one of a plurality of encryption endpoints at which the encrypted data storage operations are performed, each wrapped key entry including: (A) a wrapped key of the plurality of wrapped keys with data items encrypted together according to a key encryption operation specific to the associated encryption endpoint, the data items of the wrapped key including: (i) a data encryption key, (ii) storage object information identifying storage data to be encrypted using the data encryption key, and (iii) a key identifier uniquely associated with the data encryption key, (B) a hash value, the hash value being computed from the key identifier prior to being encrypted together with storage object information and key identifier into the wrapped key, wherein maintaining the central data structure comprises requesting and receiving the wrapped keys from the key server; distributing, to each of the encryption endpoints, the wrapped keys of the associated wrapped key entries; at each of the encryption endpoints: (i) decrypting each of the wrapped keys distributed thereto, the decrypting using the key encryption operation of the encryption endpoint, so as to obtain the data encryption key, the storage object information and the key identifier of each of the wrapped keys in non-encrypted form, and (ii) maintaining a local data structure including a plurality of unwrapped key entries each including the data encryption key, the storage object information and the key identifier in non-encrypted form from the corresponding wrapped key, and (iii) performing the encrypted data storage operations using the unwrapped key entries; and performing a verification operation including: (A) computing a first hash value at each of the encryption endpoints, the first hash value being computed from the respective key identifiers of one or more of the plurality of unwrapped key entries of the local data structure, (B) obtaining a plurality of second hash values, each second hash value being obtained from the-respective hash values of one or more of the plurality of wrapped key entries of the central data structure for the associated encryption endpoint, and (C) comparing each first hash value to a corresponding one of the plurality of second hash values to determine whether the first hash value matches the corresponding one of the plurality of second hash values.