# US 10,771,545 B2 · Keychain syncing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,771,545 B2
- Document ID: US10771545B2
- Status: Granted
- Kind: B2
- Application number: 16/184,952
- Filed: 2018-11-08
- Published: 2019-09-05
- Granted: 2020-09-08
- Earliest claimed: 2013-01-18
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Mitchell D. Adler; Michael Brouwer; Dallas De Atley
- Web page: https://patentgrep.com/patent/US10771545B2

## CPC

- H04L 67/104: Peer-to-peer [P2P] networks
- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- H04L 9/12: Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
- H04L 9/3247: {involving digital signatures}
- H04L 12/185: {with management of multicast group membership}
- H04L 12/44: Star or tree networks
- H04L 63/061: {for key exchange, e.g. in peer-to-peer networks (cryptographic mechanisms or cryptographic arrangements for key agreement H04L9/0838)}
- H04L 63/062: {for key distribution, e.g. centrally by trusted party (cryptographic mechanisms or cryptographic arrangements for key distribution involving a central third party H04L9/0819)}
- H04L 63/065: {for group communications (cryptographic mechanisms or cryptographic arrangements for key management involving conference or group key H04L9/0833)}
- H04L 63/068: {using time-dependent keys, e.g. periodically changing keys (cryptographic mechanisms or cryptographic arrangements for controlling usage of secret information H04L9/088)}
- H04L 63/104: {Grouping of entities}
- H04L 67/1042: using topology management mechanisms
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04W 84/18: Self-organising networks, e.g. ad-hoc networks or sensor networks
- H04L 67/306: User profiles
- H04L 2209/122: Hardware reduction or efficient architectures
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Some embodiments provide non-transitory machine-readable medium that stores a program which when executed by at least one processing unit of a device synchronizes a set of keychains stored on the device with a set of other devices. The device and the set of other devices are communicatively coupled to one another through a peer-to-peer (P2P) network. The program receives a modification to a keychain in the set of keychains stored on the device. The program generates an update request for each device in the set of other devices in order to synchronize the set of keychains stored on device with the set of other devices. The program transmits through the P2P network the set of update requests to the set of other devices over a set of separate, secure communication channels.

## Claims

### Claim 1

A method comprising:
receiving, at a first peer device, a modification to a keychain stored on the first peer device in a group of peer devices, each peer device having been registered into the group through a user account;
for each respective other peer device in the group of peer devices, determining, by the first peer device, whether the keychain of the first peer device matches a respective other keychain on the respective other peer device;
generating, by the first peer device, a respective update request for each respective other peer device in the group of peer devices for which the other respective other keychain does not match the keychain of the first peer device, the respective update request indicating one or more modifications to be made to the respective other keychain;
encrypting, by the first peer device and for each respective other peer device for which the respective update request was generated and using a respective encryption key that specifically corresponds to, and was received from, the respective other peer device, the respective update request; and
transmitting, by the first peer device and to each respective other peer device through a network, the respective encrypted update request for each respective other peer device.

### Claim 2 (depends on 1)

The method of claim 1, wherein the one or more modifications to be made to the respective other keychain comprises an addition of a keychain item to the respective other keychain.

### Claim 3 (depends on 1)

The method of claim 1, wherein a first respective update request generated for a first respective other peer device in the group of peer devices differs from a second respective update request generated for a second respective other peer device in the group of peer devices.

### Claim 4 (depends on 1)

The method of claim 1, wherein the one or more modifications to be made to the respective other keychain comprises a deletion of a keychain item in the keychain.

### Claim 5 (depends on 1)

The method of claim 1, wherein the network is implemented by an overlay network configured according to a fully connected mesh topology in which each peer device of the group of peer devices directly communicates with each of the other peer devices of the group of peer devices.

### Claim 6 (depends on 1)

The method of claim 1, wherein the network is implemented by an overlay network configured according to a star topology comprising a plurality of nodes, wherein a center node of the star topology is a cloud storage service and remaining nodes of the star topology comprise the first peer device and the group of peer devices.

### Claim 7 (depends on 1)

The method of claim 1, wherein the respective encrypted update request is transmitted to each respective other peer device through a respective secure channel.

### Claim 8 (depends on 1)

The method of claim 1, wherein each respective update request for each respective other peer device comprises a list of keychain item identifiers indicating each keychain item in the respective other keychain of the respective other peer device to be modified and a modification to be made to at least one of a plurality of attributes of each keychain item to be modified.

### Claim 9

A device comprising:
a memory configured to store a keychain; and
at least one processor configured to:
receive a modification to the keychain;
for each respective other device in a group of devices, determine whether the keychain matches a respective other keychain on the respective other device, wherein each device in the group of devices having been registered into the group through a user account;
generate a respective update request for each respective other device in the group of devices for which the other respective other keychain does not match the keychain, the respective update request indicating one or more modifications to be made to the respective other keychain;
establish a respective secure channel between the device and each respective other device for which the respective update request was generated, each respective secure channel being established using a respective key corresponding to, and received from each respective other device; and
transmit, to each respective other device over the respective secure channel and through a network, the respective update request for each respective other device.

### Claim 10 (depends on 9)

The device of claim 9, wherein the one or more modifications to be made to the respective other keychain comprises an addition of a keychain item to the respective other keychain.

### Claim 11 (depends on 9)

The device of claim 9, wherein the one or more modifications to be made to the respective other keychain comprises a modification to one or more of attributes of a particular keychain item in the keychain.

### Claim 12 (depends on 9)

The device of claim 9, wherein the one or more modifications to be made to the respective other keychain comprises a deletion of a keychain item in the keychain.

### Claim 13 (depends on 9)

The device of claim 9, wherein the network is implemented by an overlay network configured according to a fully connected mesh topology in which each device of the group of devices directly communicates with each of the other devices of the group of devices.

### Claim 14 (depends on 9)

The device of claim 9, wherein the network is implemented by an overlay network configured according to a star topology comprising a plurality of nodes, wherein a center node of the star topology is a cloud storage service and remaining nodes of the star topology comprise the device and the group of devices.

### Claim 15 (depends on 9)

The device of claim 9, wherein each respective secure channel is secured using a respective key that is specific to each respective other device.

### Claim 16 (depends on 9)

The device of claim 9, wherein each respective update request for each respective other device comprises a list of keychain item identifiers indicating each keychain item in the respective other keychain of the respective other device to be modified and a modification to be made to at least one of a plurality of attributes of each keychain item to be modified.

### Claim 17

A computer program product comprising code stored on a non-transitory machine-readable medium, the code, when executed by one or more processors, causes the one or more processors to perform operations, and the code comprising:
code to receive a modification to a keychain stored on a first device in a group of devices, each device having been registered into the group through a user account;
code to, for each respective other device in the group of devices, determine whether the keychain of the first device matches a respective other keychain on the respective other device;
code to generate a respective update request for each respective other device in the group of devices for which the other respective other keychain does not match the keychain of the first device, the respective update request indicating one or more modifications to be made to the respective other keychain;
code to encrypt, by the first device and for each respective other device for which the respective update request was generated and using a respective encryption key that specifically corresponds to, and was received from, the respective other device, the respective update request; and
code to transmit, by the first device to each respective other device through a network, the respective encrypted update request for each respective other device.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the one or more modifications to be made to the respective other keychain comprises an addition of a keychain item to the respective other keychain.

### Claim 19 (depends on 17)

The computer program product of claim 17, wherein the one or more modifications to be made to the respective other keychain comprises a modification to one or more of attributes of a particular keychain item in the keychain.

### Claim 20 (depends on 17)

The computer program product of claim 17, wherein the one or more modifications to be made to the respective other keychain comprises a deletion of a keychain item in the keychain.
