# US 12,113,778 B2 · Secure message search

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

- Number: US 12,113,778 B2
- Document ID: US12113778B2
- Status: Granted
- Kind: B2
- Application number: 18/333,296
- Filed: 2023-06-12
- Published: 2024-01-11
- Granted: 2024-10-08
- Earliest claimed: 2015-07-31
- Assignees: Symphony Communication Services Holdings LLC
- Applicants: Symphony Communication Services Holdings LLC
- Inventors: Serkan Mulayin; David M'Raihi; Tim Casey; Michael Harmon; Jon McLachlan
- Web page: https://patentgrep.com/patent/US12113778B2

## CPC

- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- G06F 16/334: Query execution (filtering based on additional data G06F16/335)
- G06F 16/951: Indexing; Web crawling techniques
- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- H04L 9/0825: {using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates}
- H04L 9/0869: {involving random numbers or seeds}
- H04L 9/0891: {Revocation or update of secret information, e.g. encryption key update or rekeying}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 63/0807: {using tickets, e.g. Kerberos (cryptographic mechanisms or cryptographic arrangements for entity authentication using tickets or tokens H04L9/3213)}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L 63/083: {using passwords (cryptographic mechanisms or cryptographic arrangements for entity authentication using a predetermined code H04L9/3226)}
- 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)

## Abstract

A communication server, interacting with an organization system having users that wish to communicate securely, provides secure communication capability to the users, without the communication server itself having access to unencrypted content of the user communications or to cryptographic keys that would allow the communication server to derive the unencrypted content. Thus, the communication server that provides the secure communication capability need not itself be trusted by the users with access to communicated content. To achieve this, the various entities communicate to exchange cryptographic keys in such a manner that the communication server never obtains usable copies of the cryptographic keys. Secure search capability is also provided by the client devices supplying a set of message tokens obtained by transformations that the communication server cannot replicate, and the communication server maintaining a search index storing the message tokens in association with the (encrypted) messages from which they were obtained.

## Claims

### Claim 1

A computer-implemented method performed by a client device, the method comprising:
receiving search terms from a user;
tokenizing the search terms into a first set of tokens;
adding one or more decoy tokens to the first set of tokens to obtain a second set of tokens;
transforming the second set of tokens to generate at least one set of transformed tokens, wherein transforming the second set of tokens comprises:
identifying a plurality of possible salt values for the second set of tokens, the plurality of possible salt values comprising at least one of (i) a plurality of salt values corresponding to different time periods or (ii) a plurality of salt values derived from user identities, message identities, or conversation identities; and
generating the at least one set of transformed tokens by, for each possible salt value of the plurality of possible salt values, transforming the second set of tokens using the possible salt value;
sending the at least one set of transformed tokens to a communication server for identification of matching messages from a plurality of messages stored by the communication server, wherein the communication server comprises a search index comprising one or more transformed tokens corresponding to each message from the plurality of messages;
receiving from the communication server a set of messages matching the at least one set of transformed tokens, wherein the set of messages comprises at least one false positive match resulting from the decoy tokens; and
filtering out the at least one false positive match from the set of messages by comparing the set of messages with the search terms.

### Claim 2 (depends on 1)

The method of claim 1, wherein adding the one or more decoy tokens comprises selecting the one or more decoy tokens based on probabilities of occurrence.

### Claim 3 (depends on 1)

The method of claim 1, wherein the one or more decoy tokens are independent of the search terms.

### Claim 4 (depends on 1)

The method of claim 1, wherein adding the one or more decoy tokens comprises reordering the second set of tokens.

### Claim 5 (depends on 1)

The method of claim 1, wherein transforming the second set of tokens comprises using a one-way hash function.

### Claim 6 (depends on 1)

The method of claim 1, wherein transforming the second set of tokens comprises compressing the at least one set of transformed tokens.

### Claim 7 (depends on 1)

The method of claim 1, wherein the second set of tokens is not directly derivable from the at least one set of transformed tokens.

### Claim 8 (depends on 1)

The method of claim 1, wherein the plurality of messages are stored by the communication server in encrypted form, and wherein receiving the set of messages comprises decrypting the set of messages into corresponding plaintext messages.

### Claim 9 (depends on 8)

The method of claim 8, wherein filtering out the at least one false positive match comprises comparing the plaintext messages with the search terms.

### Claim 10 (depends on 1)

The method of claim 1, further comprising displaying, to the user, at least one message from the set of messages.

### Claim 11

A system comprising:
one or more computer processors programmed to perform operations comprising:
receiving search terms from a user;
tokenizing the search terms into a first set of tokens;
adding one or more decoy tokens to the first set of tokens to obtain a second set of tokens;
transforming the second set of tokens to generate at least one set of transformed tokens, wherein transforming the second set of tokens comprises:
identifying a plurality of possible salt values for the second set of tokens, the plurality of possible salt values comprising at least one of (i) a plurality of salt values corresponding to different time periods or (ii) a plurality of salt values derived from user identities, message identities, or conversation identities; and
generating the at least one set of transformed tokens by, for each possible salt value of the plurality of possible salt values, transforming the second set of tokens using the possible salt value;
sending the at least one set of transformed tokens to a communication server for identification of matching messages from a plurality of messages stored by the communication server, wherein the communication server comprises a search index comprising one or more transformed tokens corresponding to each message from the plurality of messages;
receiving from the communication server a set of messages matching the at least one set of transformed tokens, wherein the set of messages comprises at least one false positive match resulting from the decoy tokens; and
filtering out the at least one false positive match from the set of messages by comparing the set of messages with the search terms.

### Claim 12 (depends on 11)

The system of claim 11, wherein adding the one or more decoy tokens comprises selecting the one or more decoy tokens based on probabilities of occurrence.

### Claim 13 (depends on 11)

The system of claim 11, wherein the one or more decoy tokens are independent of the search terms.

### Claim 14 (depends on 11)

The system of claim 11, wherein adding the one or more decoy tokens comprises reordering the second set of tokens.

### Claim 15 (depends on 11)

The system of claim 11, wherein transforming the second set of tokens comprises using a one-way hash function.

### Claim 16 (depends on 11)

The system of claim 11, wherein transforming the second set of tokens comprises compressing the at least one set of transformed tokens.

### Claim 17 (depends on 11)

The system of claim 11, wherein the second set of tokens is not directly derivable from the at least one set of transformed tokens.

### Claim 18 (depends on 11)

The system of claim 11, wherein the plurality of messages are stored by the communication server in encrypted form, and wherein receiving the set of messages comprises decrypting the set of messages into corresponding plaintext messages.

### Claim 19 (depends on 18)

The system of claim 18, wherein filtering out the at least one false positive match comprises comparing the plaintext messages with the search terms.

### Claim 20

A non-transitory computer-readable storage medium storing instructions executable by a processor of a client device, the instructions when executed by the processor performing actions comprising:
receiving search terms from a user;
tokenizing the search terms into a first set of tokens;
adding one or more decoy tokens to the first set of tokens to obtain a second set of tokens;
transforming the second set of tokens to generate at least one set of transformed tokens, wherein transforming the second set of tokens comprises:
identifying a plurality of possible salt values for the second set of tokens, the plurality of possible salt values comprising at least one of (i) a plurality of salt values corresponding to different time periods or (ii) a plurality of salt values derived from user identities, message identities, or conversation identities; and
generating the at least one set of transformed tokens by, for each possible salt value of the plurality of possible salt values, transforming the second set of tokens using the possible salt value;
sending the at least one set of transformed tokens to a communication server for identification of matching messages from a plurality of messages stored by the communication server, wherein the communication server comprises a search index comprising one or more transformed tokens corresponding to each message from the plurality of messages;
receiving from the communication server a set of messages matching the at least one set of transformed tokens, wherein the set of messages comprises at least one false positive match resulting from the decoy tokens; and
filtering out the at least one false positive match from the set of messages by comparing the set of messages with the search terms.
