# US 12,001,579 B1 · Cloud messaging system

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

- Number: US 12,001,579 B1
- Document ID: US12001579B1
- Status: Granted
- Kind: B1
- Application number: 17/302,539
- Filed: 2021-05-05
- Granted: 2024-06-04
- Earliest claimed: 2017-03-02
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Benoit Chevallier-Mames; Thomas Icart; Mathieu Ciet; Oliver J. Hunt; Yannick Sierra; Gokul Thirumalai; Roberto Garcia
- Web page: https://patentgrep.com/patent/US12001579B1

## CPC

- G06F 21/6227: {where protection concerns the structure of data, e.g. records, types, queries}
- G06F 16/1752: {based on file chunks}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- H04L 9/0847: {involving identity based encryption [IBE] schemes}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 9/30: Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L 9/3242: {involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC}
- H04L 9/3247: {involving digital signatures}
- H04L 9/3273: {for mutual authentication (network architectures or network communication protocols for achieving mutual authentication in a packet data network H04L63/0869)}
- H04L 51/04: Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L 51/08: Annexed information, e.g. attachments
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/0478: {applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key (cryptographic mechanisms or cryptographic arrangements using a plurality of keys or algorithms H04L9/14)}
- H04L 63/065: {for group communications (cryptographic mechanisms or cryptographic arrangements for key management involving conference or group key H04L9/0833)}
- H04L 63/123: {received data contents, e.g. message integrity}
- H04L 63/126: {the source of the received data}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04W 12/02: Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
- H04W 12/04: Key management, e.g. using generic bootstrapping architecture [GBA]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Data items such as files or database records associated with particular applications (such as messaging applications and other applications) can be stored in one or more remote locations, such as a cloud storage system, and synchronized with other devices. The remote storage can be configured such that each application executing on a client device can only view data items stored at the remote location to which the application has permission to access. An access manager on each client device enforces application specific access policies. Storage at the remote location can be secured for each application associated with a user or user account, for example, using isolated containers. The cloud storage of data can be anonymized and anonymous group data can be stored in the cloud storage.

## Claims

### Claim 1

A non-transitory machine-readable medium storing executable program instructions which when executed by one or more processors of a first user device of a first user having a first account cause the first user device to perform a method comprising:
obtaining, by the first device of the first user having the first account, identity data for one or more other users in a group for a set of one or more data communications in a communication session, the identity data including one or more cryptographic keys for each of the one or more other users;
creating a set of group data, the set of group data including information used by the first device and by devices of the one or more other users to create one or more group keys;
transmitting the set of group data to a group server, wherein the group server stores the set of group data as anonymous blob containing cryptographic material that enable the first device of the first user and devices of the one or more other users to obtain the set of group data using a group identifier returned from the group server;
receiving the group identifier from the group server, the group identifier for use in recovering or changing the set of group data for the first user and the one or more other users;
transmitting one or more data communications in the communication session to a server system configured to transmit the one or more data communications to one or more devices of the one or more other users, the one or more data communications being encrypted by the one or more group keys.

### Claim 2 (depends on 1)

The medium as in claim 1 wherein the first device receives the identity data from an identity server through one or more networks and wherein the first device transmits the set of group data to the group server through the one or more networks.

### Claim 3 (depends on 2)

The medium as in claim 2 wherein the method further comprises:
verifying the identity data by validating one or more signatures of the identity data and encrypting the group data.

### Claim 4 (depends on 2)

The medium as in claim 2 wherein the set of group data includes (1) information to create a group key to encrypt or decrypt user information including information identifying each of the one or more other users and (2) information to create a group encrypting/decrypting key that is used to derive or encrypt a data communication encryption key.

### Claim 5 (depends on 1)

The medium as in claim 1 wherein the group identifier is derived from a timestamp and includes a version identifier.

### Claim 6 (depends on 1)

The medium as in claim 1 wherein the transmitting of the first data communication in the communication session includes transmitting the set of group data to the one or more other users.

### Claim 7 (depends on 1)

The medium as in claim 1 wherein at least one data communication in the set of one or more data communications comprises video data, audio data, or both video data and audio data.

### Claim 8 (depends on 1)

The medium as in claim 1 where the information identifying the first user and the one or more other users is not exposed in clear text form to the group server.

### Claim 9 (depends on 1)

The medium as in claim 1 wherein at least one data communication in the set of one or more data communications comprises a document.

### Claim 10 (depends on 1)

The medium as in claim 1 wherein the one or more group keys includes a first group key that is used to derive or encrypt a data communication encryption key, and the first group key is derived from a key from each of the first user and the one or more other users and from information identifying the first user and the one or more other users.

### Claim 11

A non-transitory machine-readable medium storing executable program instructions which when executed by one or more processors of a group server cause the group server to perform a method comprising:
receiving, by the group server, a set of group data from a first device of a first user having a first user account in a data communication system, the set of group data being used by the first device and by devices of one or more other users to create one or more group keys for use in encrypting and decrypting one or more data communications in a communication session among the first user and the one or more other users, the one or more data communications communicated through the data communication system, the set of group data further including a group encryption key generated by a first user device, and an encrypted list of users in the communication session that were verified by the first user device;
storing the set of group data received from the first device of the first user as an anonymous blob containing cryptographic material that enable the first device of the first user and devices of the one or more other users to obtain the set of group data using a group identifier returned from the group server;
creating the group identifier for use in recovering or changing the set of group data when the one or more other users in the communication session change; and
storing the group identifier.

### Claim 12 (depends on 11)

The medium as in claim 11 wherein the one or more other users in the communication session are anonymous relative to the group server and the set of group data includes encrypted information identifying the one or more other users.

### Claim 13 (depends on 12)

The medium as in claim 12 wherein the one or more other users also have user accounts in the data communication system.

### Claim 14 (depends on 13)

The medium as in claim 13 wherein the group identifier includes information derived from a timestamp and a version identifier.

### Claim 15 (depends on 11)

The medium as in claim 11 wherein the one or more other users in the communication session are anonymous relative to the group server and wherein the group identifier is used by the group server to locate the set of group data in response to a request to recover or change the set of group data.

### Claim 16 (depends on 15)

The medium as in claim 15 wherein the method further comprises:
receiving a request to recover the set of group data from one of the user's devices in the communication session, wherein the request includes the group identifier;
transmitting the set of group data to the one of the user's devices in the communication session.

### Claim 17 (depends on 15)

The medium as in claim 15 wherein the method further comprises:
receiving a request to change the one or more other users in the communication session, the request received from one of the users in the communication session and the request includes the group identifier and includes an updated set of group data;
storing the updated set of group data on storage coupled to the group server, the updated set of group data reflecting a change in the one or more other users in the communication session who remain anonymous to the group server;
transmitting an updated group identifier to one or more devices of the user that requested the change.

### Claim 18 (depends on 17)

The medium as in claim 17 wherein the set of group data includes (1) information to create a first group key to encrypt or decrypt user information identifying each of the one or more other users in the communication session; and (2) information to create a group encrypting/decrypting key that is used to derive or encrypt a data communication encryption key.

### Claim 19 (depends on 11)

The medium as in claim 11 wherein the at least one data communication in the one or more data communications comprises video data, audio data, or both video data and audio data.

### Claim 20 (depends on 11)

The medium as in claim 11, wherein at least one data communication in the one or more data communications comprises a document.
