# US 12,111,938 B2 · Secure collaborative processing of private inputs

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

- Number: US 12,111,938 B2
- Document ID: US12111938B2
- Status: Granted
- Kind: B2
- Application number: 17/658,669
- Filed: 2022-04-11
- Published: 2022-08-25
- Granted: 2024-10-08
- Earliest claimed: 2021-02-22
- Assignees: CipherMode Labs, Inc.
- Applicants: CipherMode Labs, Inc.
- Inventors: Mohammad Sadegh Riazi; Ilya Razenshteyn
- Web page: https://patentgrep.com/patent/US12111938B2

## CPC

- G06F 21/602: {Providing cryptographic facilities or services}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 8/42: {Syntactic analysis}
- G06F 8/44: {Encoding}
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 2009/45587: {Isolation or security of virtual machine instances}
- G06F 2221/033: Test or assess software
- H04L 2209/46: Secure multiparty computation, e.g. millionaire problem
- 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)

## Abstract

The described technology is generally directed towards secure collaborative processing of private inputs. A secure execution engine can process encrypted data contributed by multiple parties, without revealing the encrypted data to any of the parties. The encrypted data can be processed according to any program written in a high-level programming language, while the secure execution engine handles cryptographic processing.

## Claims

### Claim 1

A first computing device configured to enable an oblivious random access memory (ORAM) in cooperation with a second computing device, the first computing device comprising:
a processor; and
a memory that stores executable instructions that, when executed by the processor,
facilitate performance of operations, comprising:
creating a first pseudo-random function key, wherein the second computing device creates a second pseudo-random function key;
using the first pseudo-random function key to mask first data, resulting in first masked data, wherein the second computing device uses the second pseudo-random function key to mask second data, resulting in second masked data;
sending the first masked data to the second computing device;
receiving the second masked data from the second computing device;
using an exclusive OR (XOR) operation to combine the first masked data and the second masked data, resulting in an XOR result; and
storing the XOR result in a first local read only memory at the first computing device.

### Claim 2 (depends on 1)

The first computing device of claim 1, wherein the first data comprises data stored in a first write only memory at the first computing device, and wherein the second data comprises data stored in a second write only memory at the second computing device.

### Claim 3 (depends on 1)

The first computing device of claim 1, wherein using the first pseudo-random function key to mask the first data comprises using the first pseudo-random function key and a pseudo-random function to mask the first data.

### Claim 4 (depends on 3)

The first computing device of claim 3, wherein using the first pseudo-random function key and the pseudo-random function to mask the first data comprises using the XOR operation to combine a first result of the pseudo-random function with the first data.

### Claim 5 (depends on 1)

The first computing device of claim 1, wherein the first computing device comprises the first local read only memory at the first computing device and a first write only memory at the first computing device, and wherein the second computing device comprises a second local read only memory at the second computing device and a second write only memory at the second computing device.

### Claim 6 (depends on 5)

The first computing device of claim 5, wherein the first computing device further comprises a first local memory that holds a state of an ORAM stash, and wherein the second computing device and a third computing device, respectively, comprise a second local memory and a third local memory, respectively, which hold the state of the ORAM stash.

### Claim 7 (depends on 6)

The first computing device of claim 6, wherein the operations further comprise read access operations to retrieve data from the first local read only memory and the second local read only memory without revealing information about the retrieved data to the second computing device or the third computing device.

### Claim 8 (depends on 6)

The first computing device of claim 6, wherein the operations further comprise write access operations to receive secret data and write shares of the secret data to the first write only memory and the second write only memory.

### Claim 9

An oblivious random access memory (ORAM) method performed by three server computing devices, comprising:
initializing an ORAM read-only memory, wherein:
first shares of the ORAM read-only memory are stored at a first local computer-readable storage medium at a first of the three server computing devices, and
second shares of the ORAM read-only memory are stored at a second local computer-readable storage medium at a second of the three server computing devices;
initializing an ORAM write-only memory, wherein:
first shares of the ORAM write-only memory are stored at a third local computer-readable storage medium at the first of the three server computing devices, and
second shares of the ORAM write-only memory are stored at a fourth local computer-readable storage medium at the second of the three server computing devices; and
storing an ORAM stash state at three respective computer-readable storage mediums, wherein each of the three respective computer-readable storage mediums is at a respective server computing device of the three server computing devices.

### Claim 10 (depends on 9)

The ORAM method of claim 9, further comprising performing a read access to retrieve data from the ORAM read-only memory without revealing the data.

### Claim 11 (depends on 9)

The ORAM method of claim 9, further comprising performing a write access to write data to the ORAM write-only memory without revealing the data.

### Claim 12 (depends on 9)

The ORAM method of claim 9, further comprising mapping data to the first shares of the ORAM read-only memory and the second shares of the ORAM read-only memory.

### Claim 13 (depends on 9)

The ORAM method of claim 9, further comprising mapping the ORAM read-only memory to the ORAM write-only memory.

### Claim 14 (depends on 9)

The ORAM method of claim 9, wherein the first shares of the ORAM read-only memory, the second shares of the ORAM read-only memory, the first shares of the ORAM write-only memory, and the second shares of the ORAM write-only memory are encrypted.

### Claim 15 (depends on 14)

The ORAM method of claim 14, further comprising using one-time pad encryption and a pseudo-random function to encrypt the first shares of the ORAM read-only memory, the second shares of the ORAM read-only memory, the first shares of the ORAM write-only memory, and the second shares of the ORAM write-only memory.

### Claim 16

A non-transitory machine-readable medium, comprising executable instructions that, when executed by a processor, facilitate performance of operations, comprising:
creating a first pseudo-random function key with a first computing device; creating a second pseudo-random function key with a second computing device; using the first pseudo-random function key to mask first data, resulting in first masked data;
using the second pseudo-random function key to mask second data, resulting in second masked data;
sending the first masked data from the first computing device to the second computing device;
sending the second masked data from the second computing device to the first computing device;
using an exclusive OR (XOR) operation to combine the first masked data and the second masked data, resulting in an XOR result; and
storing the XOR result in a first local read only memory at the first computing device.

### Claim 17 (depends on 16)

The non-transitory machine-readable medium of claim 16,
wherein the first data comprises data stored in a first write only memory at the first computing device, and wherein the second data comprises data stored in a second write only memory at the second computing device.

### Claim 18 (depends on 16)

The non-transitory machine-readable medium of claim 16,
wherein the first data comprises data stored in a first write only memory at the first computing device, and wherein the second data comprises data stored in a second write only memory at the second computing device.

### Claim 19 (depends on 16)

The non-transitory machine-readable medium of claim 16,
wherein using the first pseudo-random function key to mask the first data comprises using the first pseudo-random function key and a pseudo-random function to mask the first data.

### Claim 20 (depends on 16)

The non-transitory machine-readable medium of claim 16,
wherein using the first pseudo-random function key and the pseudo-random function to mask the first data comprises using the XOR operation to combine a first result of the pseudo-random function with the first data.
