IP Library Granted Patent US 10,496,631
Granted Patent B2
US 10,496,631 · App. 15/456,436 · Granted Dec 3, 2019

Secure information retrieval and update

Inventors: Christian Tschudin (Basel, CH); David M'Raihi (San Carlos, CA)
Assignee: Symphony Communication Services Holdings LLC
G06F16/2358G06F16/244G06F21/6227G06F21/6254G06F21/6263H04L9/0891H04L9/0894H04L67/1097G06F16/278H04L67/1095
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 10,496,631
App. No.
15/456,436
Granted
Dec 3, 2019
Kind
B2
Abstract

A secure storage module of a client device interacts with a set of secure storage servers to securely store data items of the client on the servers, such that no individual server has the data in readable (non-obfuscated) form. Additionally, the client secure storage module and the servers interact to allow the client device to read a given portion of the original data items from the servers, such that none of the servers can determine which portion of the original data is being requested. Similarly, the interactions of the client secure storage module and the servers allows the client device to update a given portion of the original data on the servers to a new value, such that none of the servers can determine which portion is being updated and that none of the servers can determine either the prior value or new value or the difference between the new value and the prior value.

Claims (90)

1. A computer-implemented method of securely updating data stored over a plurality of servers, the method comprising:

distributing a data item from a source computer to the plurality of servers as a corresponding plurality of obfuscated portions of the data item,

wherein each of the plurality of obfuscated portions includes a subset of content of the data item,

wherein each of the servers stores exactly one of the obfuscated portions, and

wherein the data item and the plurality of obfuscated portions comprise bit matrices of equal size;

identifying, by the source computer, a row of the data item to update from a current value to a new value;

computing an update delta value for the row of the data item based on the current value and the new value;

distributing update messages based on the update delta value to the plurality of servers, the update messages causing the plurality of servers to update the corresponding plurality of obfuscated portions stored by the servers using the update delta value so as to update the current value of the row from the current value to the new value, the update messages collectively indicating the row to update such that the row is not derivable from any given one of the update messages;

distributing a plurality of query vectors to the servers, the query vectors collectively identifying the row such that the row is not derivable from any given one of the query vectors,

wherein each query vector comprises one element for each row of the data item, and

wherein distributing the plurality of query vectors comprises sending to each server from the plurality of servers a respective query vector from the plurality of query vectors; and

determining the new value of the row using a plurality of query result vectors received from the plurality of servers in response to the plurality of query vectors,

wherein each query result vector in the plurality of query result vectors comprises a matrix-vector product of (i) a query vector from the plurality of query vectors and (ii) an obfuscated portion from the plurality of obfuscated portions, and

wherein determining the new value comprises combining the plurality of query result vectors.

2. The computer-implemented method of claim 1 , wherein distributing update messages based on the update delta value comprises:

for each server from the plurality of the servers:

generating a randomized component;

generating an update message comprising the randomized component and the update delta value; and

sending the generated update message to the server.

3. The computer-implemented method of claim 2 , wherein the randomized component is either a vector of random bits, or a combination of a vector of random bits with a vector representing a row index of the row.

4. The computer-implemented method of claim 1 , wherein the plurality of servers is divided into an even number g of groups of k servers, and wherein distributing the plurality of query vectors comprises:

for each group:

generating k−1 randomized query vectors;

generating a kth query vector that is a bitwise sum of the k−1 randomized query vectors,

wherein the k−1 randomized query vectors and the kth query vector together comprise k query vectors;

encoding, within a randomly-selected query vector of the k query vectors, a row index of the row; and

sending a distinct one of the k query vectors to each of the k servers of the group.

5. The computer-implemented method of claim 1 , wherein determining the new value of the row using the query result vectors comprises computing a bitwise sum of the query result vectors.

6. The computer-implemented method of claim 1 , wherein the plurality of servers comprises at least 4 servers.

7. The computer-implemented method of claim 1 , wherein distributing the data item to the plurality of servers comprises:

initializing each obfuscated portion from the plurality of obfuscated portions to random bit values such that a sum of two of the plurality of obfuscated portions is zero; and

distributing bits of the data item among subsets of the plurality of obfuscated portions.

8. The computer-implemented method of claim 1 , wherein the current value of the row is stored on the plurality of servers in encrypted form v e , and wherein computing the update delta value based on the current value and the new value comprises:

reading the encrypted form v e from the plurality of servers;

computing an encrypted new value w e ; and

setting the update delta value to a bitwise XOR of v e and w e .

9. The computer-implemented method of claim 8 , wherein a key used to encrypt the new value w e is securely stored by the plurality of servers.

10. A computer-implemented method of securely updating a row of a data item stored over a plurality of servers from a value v to a new value w, the method comprising:

computing a first update delta value u 1 based on v and a vector of random bits;

computing a second update delta value u 2 based on w and the vector of random bits;

for each server of a first subset of the servers:

generating, as a value t 1 , a randomized component; and

sending an update message to the server, the update message comprising t 1 and u 1 ;

for each server of a second subset of the servers:

generating, as a value t 2 , a randomized component; and

sending an update message to the server, the update message comprising t 2 and u 2 ,

wherein each server from the first subset of servers and the second subset of servers stores an obfuscated portion of the data item as a bit matrix,

wherein a product of t 1 and u 1 serves as a mask for transforming the obfuscated portion stored on each respective server in the first subset of servers, and

wherein a product of t 2 and u 2 serves as a mask for transforming the obfuscated portion stored on each respective server in the second subset of servers.

11. The computer-implemented method of claim 10 , wherein the first subset of the servers consists of half of the servers, and the second subset of the servers consists of a second half of the servers.

12. The computer-implemented method of claim 10 , such that a difference between the value v and the new value w is not derivable solely based on one of the update messages sent to one of the servers.

13. A storage device comprising:

a non-transitory computer-readable storage medium storing instructions that when executed by a computer processor perform actions comprising:

distributing a data item from a source computer to a plurality of servers as a corresponding plurality of obfuscated portions of the data item,

wherein each of the plurality of obfuscated portions includes a subset of content of the data item,

wherein each of the servers stores exactly one of the obfuscated portions, and

wherein the data item and the plurality of obfuscated portions comprise bit matrices of equal size;

identifying, by the source computer, a row of the data item to update from a current value to a new value;

computing an update delta value for the row of the data item based on the current value and the new value;

distributing update messages based on the update delta value to the plurality of servers, the update messages causing the plurality of servers to update the corresponding plurality of obfuscated portions stored by the servers using the update delta value so as to update the current value of the row from the current value to the new value, the update messages collectively indicating the row to update such that the row is not derivable from any given one of the update messages;

distributing a plurality of query vectors to the servers, the query vectors collectively identifying the row such that the row is not derivable from any given one of the query vectors,

wherein each query vector comprises one element for each row of the data item and

wherein distributing the plurality of query vectors comprises sending to each server from the plurality of servers a respective query vector from the plurality of query vectors; and

determining the new value of the row using a plurality of query result vectors received from the plurality of servers in response to the plurality of query vectors,

wherein each query result vector in the plurality of query result vectors comprises a matrix-vector product of (i) a query vector from the plurality of query vectors and (ii) an obfuscated portion from the plurality of obfuscated portions, and

wherein determining the new value comprises combining the plurality of query result vectors.

14. The computer-readable storage medium of claim 13 , wherein distributing update messages based on the update delta value comprises:

for each server from the plurality of the servers:

generating a randomized component;

generating an update message comprising the randomized component and the update delta value; and

sending the generated update message to the server.

15. The computer-readable storage medium of claim 14 , wherein the randomized component is either a vector of random bits, or a combination of a vector of random bits with a vector representing a row index of the row.

16. The computer-readable storage medium of claim 13 , wherein the plurality of servers is divided into an even number g groups of k servers, and wherein distributing the plurality of query vectors comprises:

for each group:

generating k−1 randomized query vectors;

generating a kth query vector that is a bitwise sum of the k−1 randomized query vectors,

wherein the k−1 randomized query vectors and the kth query vector together comprise k query vectors;

encoding, within a randomly-selected query vector of the k query vectors, a row index of the row; and

sending a distinct one of the k query vectors to each of the k servers of the group;

receiving, from the k servers of each group, a corresponding set of g*k query result vectors; and

obtaining the new value as a result of computing a bitwise sum of the g*k query result vectors.

17. The computer-readable storage medium of claim 13 , wherein determining the new value of the row using the query result vectors comprises computing a bitwise sum of the query result vectors.

18. The computer-readable storage medium of claim 13 , wherein distributing the data item to the plurality of servers comprises:

initializing each obfuscated portion from the plurality of obfuscated portions to random bit values such that a sum of two of the plurality of obfuscated portions is zero; and

distributing bits of the data item among subsets of the plurality of obfuscated portions.

19. The computer-readable storage medium of claim 13 , wherein the current value of the row is stored on the plurality of servers in encrypted form v e , and wherein computing the update delta value based on the current value and the new value comprises:

reading the encrypted form v e from the plurality of servers;

computing an encrypted new value w e ; and

setting the update delta value to a bitwise XOR of v e and w e .

20. The computer-readable storage medium of claim 19 , wherein a key used to encrypt the new value w e is securely stored by the plurality of servers.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 18, 2025
From: HPS INVESTMENT PARTNERS, LLC, AS GRANTEE
To: SYMPHONY COMMUNICATION SERVICES, LLC; CLOUD9 TECHNOLOGIES LLC
Reel/Frame 073264/0835 →
SECURITY INTEREST Recorded Sep 29, 2025
From: SYMPHONY COMMUNICATION SERVICES HOLDINGS, LLC; SYMPHONY COMMUNICATION SERVICES, LLC; CLOUD9 TECHNOLOGIES LLC; PERZO INC.; STREETLINX INC.; AMENITY ANALYTICS, INC.
To: MUFG BANK, LTD.
Reel/Frame 072408/0921 →
SECURITY INTEREST Recorded Jun 24, 2021
From: CLOUD9 TECHNOLOGIES LLC; SYMPHONY COMMUNICATION SERVICES HOLDINGS, LLC
To: HPS INVESTMENT PARTNERS, LLC
Reel/Frame 056652/0359 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2017
From: TSCHUDIN, CHRISTIAN; M'RAIHI, DAVID
To: SYMPHONY COMMUNICATION SERVICES HOLDINGS LLC
Reel/Frame 043986/0476 →
Continuity (1)
Related Publication 20180260430A1 · Sep 13, 2018
Cited By (2)
US 12,309,127 US 12,500,759