IP Library › Granted Patent US 11,403,407
Granted Patent B2
US 11,403,407 · App. 16/334,060 · Granted Aug 2, 2022

Oblivious outsourcing of file storage

Inventor: Meilof Geert Veeningen (Eindhoven, NL)
Assignee: KONINKLIJKE PHILIPS N.V.
G06F21/602G06F16/00G06F16/13G06F16/182G06F16/2246G06F21/6218H04L9/0819H04L9/0894H04L9/3213H04L67/42
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,403,407
App. No.
16/334,060
Granted
Aug 2, 2022
Kind
B2
Abstract

Various embodiments described herein relate to a system for providing file access while keeping both the accessing client and storage server from gaining any information about file contents or access patterns which they are not authorized to obtain. According to various embodiments, a key server instructs the storage server to retrieve a list of files, shuffle and re-encrypt the files in the list, and then send the list to the client. According to some embodiments, the key server also provides the client with information used to access the requested file from the list, re-encrypts the files in the lists again, reshuffles the list, and transmits the list back to the storage server to be recommitted to storage.

Claims (92)

1. A method performed by a key server for facilitating access to a file by a client device and other parties, the method comprising:

receiving, from the client device, an indication of a requested file;

identifying an ordered grouping of files to which the requested file belongs on a storage server;

determining an index of the requested file within the grouping, wherein the index is suitable to locate the requested file within the ordered grouping after the ordered grouping has been shuffled according to a permutation;

determining an instruction for the storage server to perform an obfuscating operation, wherein the determining the instruction includes identifying the permutation to be used to shuffle the ordered grouping;

transmitting the instruction for the storage sever to perform the obfuscating operation to the storage server;

instructing the storage server to transmit the grouping of files to the client device; wherein the instructing includes the permutation to be used to shuffle the ordered grouping: and

transmitting the index to the client device.

2. The method of claim 1 , wherein each file in the grouping of files is encrypted, the method further comprising:

determining an encryption key to be used in decrypting the requested file; and

transmitting the encryption key to the client device.

3. The method of claim 2 , wherein:

the instruction for the storage server to perform an obfuscating operation comprises a re-encryption token,

determining the instruction for the storage server to perform an obfuscating operation comprising generating the re-encryption token to be applied to re-encrypt the requested file,

wherein the encryption key is suitable to decrypt the requested file after the requested file has been re-encrypted according to the re-encryption token wherein generating a re-encryption token comprises generating a set of re-encryption tokens to be applied to re-encrypt respective files within the ordered grouping of files.

4. The method of claim 2 , further comprising:

generating a re-encryption token to be applied to re-encrypt the requested file; and

transmitting the re-encryption token to the client device.

5. The method of claim 1 , further comprising:

retrieving a master encryption key previously stored for the requested file;

transforming the master encryption key based on the re-encryption token; and

storing the transformed master encryption key for the requested file.

6. The method of claim 1 , further comprising:

identifying a permutation to be used to shuffle the ordered grouping; and

transmitting the permutation to the client device.

7. The method of claim 1 , further comprising:

selecting a new grouping of files for the requested file at random;

identifying a new location of the requested file within a data structure including a plurality of overlapping groupings, wherein the new location belongs to both the ordered grouping of files and the new grouping of files; and

storing the new location for the requested file,

wherein the permutation defines a new order for the ordered grouping of files that includes the requested file at position corresponding to the new location.

8. A method performed by a storage server, the method comprising:

receiving, from a key server, an identification of a grouping of files and an instruction to perform an obfuscating operation on the grouping of files, wherein the grouping of files is an ordered grouping of files and wherein the instruction to perform the obfuscating operation includes a permutation of the ordered grouping of files;

retrieving the grouping of files from a data store of the storage server;

performing the obfuscating operation on the grouping of files, which includes shuffling the ordered grouping of files according to the permutation; and

transmitting the grouping of files to a client device.

9. The method of claim 8 , wherein:

the data store includes a tree data structure storing a plurality of files,

the identification of the grouping of files is an identification of a leaf node of the tree data structure, and

retrieving the grouping of files comprises retrieving files stored on the tree between a root node and the identified leaf node of the tree data structure.

10. The method of claim 8 , further comprising:

receiving a modified version of the grouping of files from the client device; and

storing the modified version of the grouping of files in the data store in place of the grouping of files.

11. The method of claim 8 , wherein:

the respective files within the grouping of files are encrypted,

the instruction to perform an obfuscating operation comprises a set of re-encryption tokens, and

performing the obfuscating operation comprises re-encrypting respective files within the grouping of files based on corresponding re-encryption tokens of the set of re-encryption tokens.

12. A method performed by a client device for accessing a file, the method comprising:

requesting, from a key server, access to a requested file;

receiving, from a storage server, an ordered grouping of files;

receiving, from the key server, an index and an instruction to perform an obfuscating operation, wherein the instruction to perform the obfuscating operation includes a permutation of the ordered grouping of files;

retrieving the requested file from the ordered grouping of files at a location specified by the index;

performing the obfuscating operation on the ordered grouping of files, wherein performing the obfuscating operation includes shuffling the ordered grouping of files according to the permutation; and

transmitting the obfuscated ordered grouping of files to the storage server.

13. The method of claim 12 , wherein the requested file is encrypted in the ordered grouping of files, the method further comprising:

receiving, from the key server, an encryption key; and

decrypting the requested file using the encryption key.

14. The method of claim 12 , wherein:

the instruction to perform an obfuscating operation comprises a set of re-encryption tokens, and

performing the obfuscating operation comprises re-encrypting respective files within the ordered grouping of files based on corresponding re-encryption tokens of the set of re-encryption tokens.

15. The method of claim 12 , further comprising:

obtaining a modified version of the requested file; and

inserting the modified version of the requested file into the ordered grouping prior to performing the obfuscating operation.

16. A key server for facilitating access to a file by a client device and other parties, the key server comprising:

a communication interface;

a memory; and

a processor in communication with the communication interface and memory, the processor being configured to:

receive, from the client device, an indication of a requested file;

identify an ordered grouping of files to which the requested file belongs on a storage server;

determine an index of the requested file within the grouping;

determine an instruction for the storage server to perform an obfuscating operation, wherein the instruction to perform the obfuscating operation includes a permutation of the ordered grouping of files and a shuffling of the ordered grouping of files according to the permutation;

transmit the instruction for the storage server to perform an obfuscating operation to the storage server;

instructing the storage server to transmit the grouping of files to the client device; and

transmit the index to the client device.

17. A storage server comprising:

a communication interface;

a memory; and

a processor in communication with the communication interface and memory, the processor being configured to:

receive, from a key server, an identification of a grouping of files and an instruction to perform an obfuscating operation on the grouping of files, wherein the instruction to perform the obfuscating operation includes a permutation of an ordered grouping of files and a shuffling of the ordered grouping of files according to the permutation;

retrieve the grouping of files from a data store of the storage server;

perform the obfuscating operation on the grouping of files; and

transmit the grouping of files to a client device.

18. A client device for accessing a file, the client device comprising:

a communication interface;

a memory; and

a processor in communication with the communication interface and memory, the processor being configured to:

request, from a key server, access to a requested file;

receive, from a storage server, an ordered grouping of files;

receive, from the key server, an index and an instruction to perform an obfuscating operation, wherein the instruction to perform the obfuscating operation includes a permutation of the ordered grouping of files and a shuffling of the ordered grouping of files according to the permutation;

retrieving the requested file from the ordered grouping of files at a location specified by the index;

perform the obfuscating operation on the ordered grouping of files; and

transmit the obfuscated ordered grouping of files to the storage server.

19. A non-transitory machine-readable medium encoded with instructions for perform the method according to claim 1 .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2019
From: VEENINGEN, MEILOF GEERT
To: KONINKLIJKE PHILIPS N.V.
Reel/Frame 048620/0595 →
Continuity (2)
Provisional Application 62396502 · Sep 19, 2016
Related Publication 20190272379A1 · Sep 5, 2019