# US 2020/0287718 A1 · Zero-knowledge identity verification in a distributed computing system

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

- Number: US 2020/0287718 A1
- Document ID: US20200287718A1
- Status: Published application
- Kind: A1
- Application number: 16/294,646
- Filed: 2019-03-06
- Published: 2020-09-10
- Earliest claimed: 2019-03-06
- Assignees: salesforce.com, inc.
- Applicants: Salesforce.com, Inc.
- Inventors: Hal Scott Hildebrand; Prithvi Krishnan Padmanabhan
- Web page: https://patentgrep.com/patent/US20200287718A1

## CPC

- H04L 9/3218: {using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs}
- H04L 9/0618: {Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 63/0414: {during transmission, i.e. party's identity is protected against eavesdropping, e.g. by using temporary identifiers, but is known to the other party or parties involved in the communication}
- H04L 67/104: Peer-to-peer [P2P] networks
- H04L 67/1061: using node-based peer discovery mechanisms (static access to replicated servers H04L67/1006; service discovery H04L67/51)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

For each data value associated with a data object, a respective object value identification query message that includes the data value may be sent to each of a plurality of identity nodes via a network. For each of the data values, a respective object value identification response message that includes a respective network identifier corresponding with the respective data value may be received. A local identifier may be determined based on the object value identification response messages, and a response query message including the local identifier may be transmitted.

## Claims

### Claim 1

A method comprising:
receiving via a communications interface a request to identify a data object that includes a plurality of data values;
for each of the data values, transmitting a respective object value identification query message that includes the data value to each of a plurality of identity nodes via a network;
for each of the data values, receiving a respective object value identification response message that includes a respective network identifier corresponding with the respective data value;
determining via a processor a local identifier based on the object value identification response messages; and
transmitting a query response message including the local identifier via the communications interface.

### Claim 2 (depends on 1)

The method recited in claim 1, wherein determining a local identifier comprises selecting a designated network identifier from among the plurality of respective network identifiers.

### Claim 3 (depends on 2)

The method recited in claim 2, wherein the designated network identifier is the most common network identifier among the object value identification response messages.

### Claim 4 (depends on 2)

The method recited in claim 2, wherein determining a local identifier further comprises querying a correspondence table using the designated network identifier, the correspondence table identifying a plurality of correspondence relationships between local identifiers and network identifiers.

### Claim 5 (depends on 2)

The method recited in claim 2, wherein determining a local identifier further comprises creating the local identifier when it is determined that the designated network identifier does not correspond to an existing local identifier.

### Claim 6 (depends on 1)

The method recited in claim 1, wherein each of the respective network identifiers is determined by consensus among the plurality of identity nodes.

### Claim 7 (depends on 1)

The method recited in claim 1, wherein the data object is associated with a data object schema, the data object schema identifying one or more data fields associated with an instance of the data object schema, each of the data values corresponding with a respective one of the data fields.

### Claim 8 (depends on 1)

The method recited in claim 1, wherein the object value identification query message is transmitted to the identity nodes via a gossip communication protocol, the gossip protocol defining a peer-to-peer procedure for transmitting information among the identity nodes.

### Claim 9 (depends on 1)

The method recited in claim 1, wherein the network identifier is stored in a trust ledger shared among the plurality of identity nodes, the trust ledger storing a plurality of network identifiers, each network identifier being associated in the trust ledger with a respective one or more data values.

### Claim 10 (depends on 9)

The method recited in claim 9, wherein the respective one or more data values are hashed prior to storing in the trust ledger, the trust ledger capable of being queried to determine any network identifiers associated with a designated hashed data value.

### Claim 11 (depends on 9)

The method recited in claim 9, wherein the trust ledger is implemented as a merkle tree.

### Claim 12 (depends on 9)

The method recited in claim 9, wherein the trust ledger is implemented as a blockchain.

### Claim 13

A database system implemented via a server system, the server system configurable to cause:
processing a request received via a communications interface to identify a data object that includes a plurality of data values;
for each of the data values, transmitting a respective object value identification query message that includes the data value to each of a plurality of identity nodes via a network;
for each of the data values, receiving a respective object value identification response message that includes a respective network identifier corresponding with the respective data value;
determining via a processor a local identifier based on the object value identification response messages; and
transmitting a query response message including the local identifier via the communications interface.

### Claim 14 (depends on 13)

The database system recited in claim 13, wherein determining a local identifier comprises selecting a designated network identifier from among the plurality of respective network identifiers and querying a correspondence table using the designated network identifier, the correspondence table identify a plurality of correspondence relationships between local identifiers and network identifiers.

### Claim 15 (depends on 13)

The database system recited in claim 13, wherein each of the respective network identifiers is determined by consensus among the plurality of identity nodes.

### Claim 16 (depends on 13)

The database system recited in claim 13, wherein the object value identification query message is transmitted to the identity nodes via a gossip communication protocol defining a peer-to-peer procedure for transmitting information among the identity nodes.

### Claim 17

A computer program product comprising computer-readable program code capable of being executed by one or more processors when retrieved from a non-transitory computer-readable medium, the program code configurable to cause:
processing a request received via a communications interface to identify a data object that includes a plurality of data values;
for each of the data values, transmitting a respective object value identification query message that includes the data value to each of a plurality of identity nodes via a network;
for each of the data values, receiving a respective object value identification response message that includes a respective network identifier corresponding with the respective data value;
determining via a processor a local identifier based on the object value identification response messages; and
transmitting a query response message including the local identifier via the communications interface.

### Claim 18 (depends on 17)

The computer program product recited in claim 17, wherein determining a local identifier comprises selecting a designated network identifier from among the plurality of respective network identifiers and querying a correspondence table using the designated network identifier, the correspondence table identify a plurality of correspondence relationships between local identifiers and network identifiers.

### Claim 19 (depends on 17)

The computer program product recited in claim 17, wherein each of the respective network identifiers is determined by consensus among the plurality of identity nodes.

### Claim 20 (depends on 17)

The computer program product recited in claim 17, wherein the object value identification query message is transmitted to the identity nodes via a gossip communication protocol defining a peer-to-peer procedure for transmitting information among the identity nodes.
