IP Library Granted Patent US 11,632,250
Granted Patent B2
US 11,632,250 · App. 17/184,720 · Granted Apr 18, 2023

Signatures of updates exchanged in a binary data synchronization protocol

Inventors: Michael Burrows (Mountain View, CA); Himabindu Pucha (Mountain View, CA); Raja Daoud (Mountain View, CA); Jatin Lodhia (Mountain View, CA); Ankur Taly (Mountain View, CA)
Assignee: Google LLC
H04L9/3247G06F21/64H04L63/0442G06F2221/0711G06F2221/2141
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,632,250
App. No.
17/184,720
Granted
Apr 18, 2023
Kind
B2
Abstract

In a distributed system, data is shared between three or more electronic devices. The first device generates and signs an object that includes the data. A second device receives the signed object and determines whether the signed object is valid. If valid, the second device will generate a validated signed object and send it to a third device. The third device will validate the object by determining whether the object includes valid signatures of both the first and second devices.

Claims (72)

1. A method of validating an object shared between electronic devices comprising:

receiving a data object by a first device at a first time, the first device authorized to receive the object,

determining, by the first device, that the received data object is valid, comprising determining whether the data object includes one or more signatures of at least one other device authorized to receive the data object, wherein the one or more signatures of the data object are valid within a predetermined grace period from the first time; and

in response to determining by the first device that the received data object is valid, sending the validated signed object to one or more second devices.

2. The method of claim 1 , wherein the method further comprises:

before sending the validated signed object to the one or more second devices, updating the validated signed object with a signature corresponding to the first device.

3. The method of claim 1 , wherein determining that the received data object is valid further comprises:

for each signature of the one or more signatures, determining, by the first device, whether the signature is a valid signature of a respective device authorized to receive the data object; and

in response to determining that the signature is not a valid signature of a respective device authorized to receive the data object, requiring the respective device to provide an updated validated signed object with the valid signature of the respective device.

4. The method of claim 1 , wherein the data object is represented as a row in a batch of data objects, each data object in the batch being an updated version of data objects locally stored at the first device, wherein the method further comprises:

receiving the batch of data objects;

determining whether any row in the batch is in conflict due to a difference between a respective locally stored data object stored on the first device and a data object in a respective row of the batch; and

for any row that is determined to be in conflict, adding the row to a closure.

5. The method of claim 4 , wherein the batch is a first batch, and wherein determining whether any row in the batch is in conflict comprises:

determining whether data representing a first data object in a row in the first batch is different from data representing the first data object in a row for a second batch, wherein the second batch is received from a device that has not received the first batch.

6. The method of claim 5 ,

wherein the closure includes a plurality of batches, wherein each batch includes at least one row in conflict with a row for another batch in the closure; and

wherein the method further comprises:

determining whether the first device is authorized to resolve conflicts between rows in the closure; and

in response to determining that the first device is authorized to resolve conflicts, resolving the conflict according to predetermined parameter values for conflict resolution between rows.

7. The method of claim 1 , wherein determining that the respective signatures of the object are valid comprises determining that the respective signatures of the object are signed by electronic devices with respective keys that are valid as of the predetermined grace period.

8. The method of claim 1 , further comprising:

receiving, by the first device, an entry to a data store that comprises the received data object and a lookup key generated by a device different from the first device;

determining whether the lookup key for the entry ends in a value that matches a cryptographic hash of a corresponding entry of an immutable data object that is stored in the data store; and

accepting the entry only if the lookup key for the entry ends in the value, otherwise rejecting the entry.

9. The method of claim 8 , wherein the value includes:

a blessing pattern of the first device;

a blessing pattern of a trusted re-signer;

a sequence number; and

a signature of the first device.

10. The method of claim 1 , further comprising:

receiving, by the first device, an entry that comprises the received data object and a lookup key generated by a device different from the first device;

determining whether the lookup key for the entry includes a blessing pattern of a trusted re-signer; and

only accepting the entry if the lookup key for the entry includes the blessing pattern of the trusted re-signer, otherwise rejecting the entry.

11. A system of electronic devices, comprising:

one or more second devices; and

a first device comprising at least one or more hardware processors and memory configured to:

receive a data object at a first time, the first device authorized to receive the object,

determine that the received data object is valid, comprising determining whether the data object includes one or more signatures of at least one other device authorized to receive the data object, wherein the one or more signatures of the data object are valid within a predetermined grace period from the first time, and

in response to determining that the received data object is valid,

send the validated signed object to the one or more second devices.

12. The system of claim 11 , wherein the first device is further configured to:

before sending the validated signed object to the one or more second devices, update the validated signed object with a signature corresponding to the first device.

13. The system of claim 11 , wherein the data object is represented as a row in a batch of data objects, each data object in the batch being an updated version of data objects locally stored at the first device, wherein the first device is further configured to:

receive the batch comprising a plurality of updated objects;

determine whether any row in the batch is in conflict due to a difference between a respective locally stored data object stored on the first device and a data object in a respective row of the batch; and

for any row that is determined to be in conflict, add the row to a closure.

14. The system of claim 13 , wherein the batch is a first batch, and wherein determining whether any row in the batch is in conflict comprises:

determine whether data representing a first data object in a row in the first batch is different from data representing the first data object in a row for a second batch, wherein the second batch is received from a device that has not received the first batch.

15. The system of claim 14 ,

wherein the closure includes a plurality of batches, wherein each batch includes at least one row in conflict with a row for another batch in the closure; and

wherein the first device is further configured to:

determine whether the first device is authorized to resolve conflicts between rows in the closure; and

in response to the determination that the first device is authorized to resolve conflicts, resolve the conflict according to predetermined parameter values for conflict resolution between rows.

16. The system of claim 11 , wherein determining that the respective signatures of the object are valid comprises determining that the respective signatures of the object are signed by electronic devices with respective keys that are valid as of the predetermined grace period.

17. The system of claim 11 , wherein the first device is further configured to:

receive an entry to a data store that comprises the received data object and a lookup key generated by a device different from the first device;

determine whether the lookup key for the entry ends in a value whose hash matches a cryptographic hash of a corresponding entry of an immutable data object that is stored in the data store; and

accept the entry only if the lookup key for the entry ends in the value, otherwise reject the entry.

18. The system of claim 17 , wherein the value includes:

a blessing pattern of the first device;

a blessing pattern of a trusted re-signer;

a sequence number; and

a signature of the first device.

19. The system of claim 11 , wherein the first computing device is further configured to:

receive an entry that comprises the received data object and a lookup key generated by a device different from the first device;

determine whether the lookup key for the entry includes a blessing pattern of a trusted re-signer; and

accept the entry only if the lookup key for the entry includes the blessing pattern of the trusted re-signer, otherwise reject the entry.

20. One or more non-transitory computer-readable storage media encoding instructions that when executed by a first device comprising one or more processors, causes the first device to perform operations comprising:

receiving a data object at a first time, the first device authorized to receive the object,

determining that the received data object is valid, comprising determining whether the data object includes one or more signatures of at least one other device authorized to receive the data object, wherein the one or more signatures of the data object are valid within a predetermined grace period from the first time; and

in response to determining by the first device that the received data object is valid: sending the validated signed object to one or more second devices.

Assignments (2)
CHANGE OF NAME Recorded Feb 26, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 056055/0336 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2021
From: BURROWS, MICHAEL; PUCHA, HIMABINDU; DAOUD, RAJA; LODHIA, JATIN; TALY, ANKUR
To: GOOGLE INC.
Reel/Frame 055407/0127 →
Continuity (4)
Continuation 16025139 · Jul 2, 2018
Division 15284116 · Oct 3, 2016
Provisional Application 62236435 · Oct 2, 2015
Related Publication 20210184862A1 · Jun 17, 2021