Systems and methods to secure personally identifiable information
A method implemented in a computing system hosting a three-dimensional virtual reality world. The computer system collects personally identifiable information of users of accounts, where each account in the accounts is identified by an account identifier and each data field of personally identifiable information of each account is identified by a data field identifier. The system uses a script function to generate an encryption key from the global key, the account identifier, and the data field identifier specifically for the content of the data field of the personally identifiable information of the respective account. Different encryption keys are used for different data fields and different accounts. Encrypted content of a data field is stored at a random location; and the identification of the random location is stored in a device, database or system, separate from where the encrypted contents of the data fields of the accounts are stored.
1 . A method, comprising:
storing a global key;
generating an encryption key from the global key, an account identifier, and a data field identifier for a content of a respective data field of personally identifiable information of a respective account;
determining a storage location for the respective data field, wherein the storage location is stored in the database in an encrypted form; and
storing the storage location separate from encrypted contents;
wherein the encryption key is not stored in the computer system.
2 . The method of claim 1 , wherein the storage location is stored in a database separate from a data storage of the encrypted contents of the personally identifiable information of the accounts.
3 . The method of claim 2 , wherein the storage location is encrypted using the encryption key and stored in the database.
4 . The method of claim 2 , wherein generating the encryption key is performed using a resource-intensive password-based key derivation function.
5 . The method of claim 4 , wherein the resource-intensive password-based key derivation function is a scrypt function.
6 . The method of claim 5 , wherein the global key is stored and controlled by a key master.
7 . The method of claim 6 , wherein access to the database is controlled by the key master.
8 . A computer system, comprising:
a key master;
a server system;
a first data storage device controlled by the server system and storing:
a three-dimensional model;
avatar models; and
a second data storage device controlled by the key master and storing:
a location database;
a global key;
wherein the key master generates an encryption key from the global key, an account identifier, and a data field identifier for a content of a respective data field of the personally identifiable information of the respective account;
wherein presence of the encryption key in the computer system is transient.
9 . The computer system of claim 8 , wherein the server system queries the key master for the encryption key using the account identifier, and the data field identifier to obtain the encryption key and identification of a storage location.
10 . The computer system of claim 9 , wherein the identification of the storage location is encrypted using the encryption key for storage in the location database.
11 . The computer system of claim 9 , wherein generating of the encryption key is performed using a resource-intensive password-based key derivation function.
12 . The computer system of claim 11 , wherein the resource-intensive password-based key derivation function is a scrypt function.
13 . A non-transitory computer storage medium storing instructions which, when executed on a computer system, cause the computer system to perform a method, the method comprising:
storing a global key;
generating an encryption key from the global key, an account identifier, and a data field identifier for a content of a respective data field of personally identifiable information of a respective account;
determining a storage location for the respective data field, wherein the storage location is stored in the database in an encrypted form; and
storing the storage location separate from encrypted contents;
wherein the encryption key is not stored in the computer system.
14 . The non-transitory computer storage medium of claim 13 , wherein the method further comprises:
encrypting the content using the encryption key to generate encrypted content of the respective data field; and
storing the encrypted content at the storage location identified by determining the storage location.
15 . The non-transitory computer storage medium of claim 14 , wherein the encryption key is generated using a scrypt function.
16 . The non-transitory computer storage medium of claim 15 , wherein the encrypted contents of personally identifiable information of the accounts are stored in a data storage device that has no information revealing association of encrypted contents of different fields of personally identifiable information as being associated with one account.