# US 2018/0323978 A1 · Secure Distance Computations

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

- Number: US 2018/0323978 A1
- Document ID: US20180323978A1
- Status: Published application
- Kind: A1
- Application number: 15/589,112
- Filed: 2017-05-08
- Published: 2018-11-08
- Earliest claimed: 2017-05-08
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Gagandeep Singh; Akshar Kaul; Manish Kesarwani; Prasad Naldurg; Sameep Mehta
- Web page: https://patentgrep.com/patent/US20180323978A1

## CPC

- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 21/6254: {by anonymising data, e.g. decorrelating personal data from the owner's identification}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- G06F 16/221: {Column-oriented storage; Management thereof}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- 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

Methods, systems, and computer program products for secure distance computations are provided herein. A computer-implemented method includes transforming a set of multiple data points, thereby creating a multiple-dimension representation of the set of data points; storing multiple distinct portions of the multiple-dimension representation of the set of data points across multiple distinct cloud infrastructures; transforming a query point, thereby creating a multiple-dimension representation of the query point; sending multiple distinct portions of the multiple-dimension representation of the query point to the multiple distinct cloud infrastructures; calculating a distance between each of the stored distinct portions of the multiple-dimension representation of the set of data points and each of the sent distinct portions of the multiple-dimension representation of the query point; determining a total distance value by summing the calculated distances; and outputting the total distance value to at least one user.

## Claims

### Claim 1

A computer-implemented method for determining a query point distance computation, comprising:
transforming a set of multiple data points, thereby creating a multiple-dimension representation of the set of data points, wherein said transforming comprises converting each dimension in each of the data points into multiple dimensions;
storing multiple distinct portions of the multiple-dimension representation of the set of data points across multiple distinct cloud infrastructures;
transforming a query point, thereby creating a multiple-dimension representation of the query point, wherein said transforming comprises converting each dimension in the query point into multiple dimensions;
sending multiple distinct portions of the multiple-dimension representation of the query point to the multiple distinct cloud infrastructures;
calculating a distance between (i) each of the stored distinct portions of the multiple-dimension representation of the set of data points and (ii) each of the sent distinct portions of the multiple-dimension representation of the query point;
determining a total distance value by summing the calculated distances; and
outputting the total distance value to at least one user;
wherein the steps are carried out by at least one computing device.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the query point is obtained via a client device.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein said converting each dimension in the query point into multiple dimensions comprises applying an encryption algorithm to the query point.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein said converting each dimension in each of the data points into multiple dimensions comprises applying an encryption algorithm to each of the data points.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, comprising:
storing each of the data points in an encrypted database.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein said storing the multiple distinct portions of the multiple-dimension representation of the set of data points comprises applying a permutation to the multiple-dimension representation of the set of data points.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, wherein said storing the multiple distinct portions of the multiple-dimension representation of the set of data points comprises dividing the permuted multiple-dimension representation of the set of data points into the multiple distinct portions.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein said calculating comprises calculating the distances, in an honest but curious adversary model on the multiple distinct cloud infrastructures, without revealing the values of (i) each of the stored distinct portions of the multiple-dimension representation of the set of data points and (ii) each of the sent distinct portions of the multiple-dimension representation of the query point.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, comprising:
performing at least one of a k-nearest neighbor operation and a k-means clustering operation based on the total distance value.

### Claim 10

A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a device to cause the device to:
transform a set of multiple data points, thereby creating a multiple-dimension representation of the set of data points, wherein said transforming comprises converting each dimension in each of the data points into multiple dimensions;
store multiple distinct portions of the multiple-dimension representation of the set of data points across multiple distinct cloud infrastructures;
transform a query point, thereby creating a multiple-dimension representation of the query point, wherein said transforming comprises converting each dimension in the query point into multiple dimensions;
send multiple distinct portions of the multiple-dimension representation of the query point to the multiple distinct cloud infrastructures;
calculate a distance between (i) each of the stored distinct portions of the multiple-dimension representation of the set of data points and (ii) each of the sent distinct portions of the multiple-dimension representation of the query point;
determine a total distance value by summing the calculated distances; and
output the total distance value to at least one user.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein the query point is obtained via a client device.

### Claim 12 (depends on 10)

The computer program product of claim 10, wherein said converting each dimension in the query point into multiple dimensions comprises applying an encryption algorithm to the query point.

### Claim 13 (depends on 10)

The computer program product of claim 10, wherein said converting each dimension in each of the data points into multiple dimensions comprises applying an encryption algorithm to each of the data points.

### Claim 14 (depends on 10)

The computer program product of claim 10, wherein the program instructions executable by a computing device further cause the computing device to:
store each of the data points in an encrypted database.

### Claim 15 (depends on 10)

The computer program product of claim 10, wherein said storing the multiple distinct portions of the multiple-dimension representation of the set of data points comprises applying a permutation to the multiple-dimension representation of the set of data points.

### Claim 16

A system comprising:
a memory; and
at least one processor operably coupled to the memory and configured for:
transforming a set of multiple data points, thereby creating a multiple-dimension representation of the set of data points, wherein said transforming comprises converting each dimension in each of the data points into multiple dimensions;
storing multiple distinct portions of the multiple-dimension representation of the set of data points across multiple distinct cloud infrastructures;
transforming a query point, thereby creating a multiple-dimension representation of the query point, wherein said transforming comprises converting each dimension in the query point into multiple dimensions;
sending multiple distinct portions of the multiple-dimension representation of the query point to the multiple distinct cloud infrastructures;
calculating a distance between (i) each of the stored distinct portions of the multiple-dimension representation of the set of data points and (ii) each of the sent distinct portions of the multiple-dimension representation of the query point;
determining a total distance value by summing the calculated distances; and
outputting the total distance value to at least one user.

### Claim 17 (depends on 16)

The system of claim 16, wherein said converting each dimension in the query point into multiple dimensions comprises applying an encryption algorithm to the query point.

### Claim 18 (depends on 16)

The system of claim 16, wherein said converting each dimension in each of the data points into multiple dimensions comprises applying an encryption algorithm to each of the data points.

### Claim 19 (depends on 16)

The system of claim 16, wherein said storing the multiple distinct portions of the multiple-dimension representation of the set of data points comprises applying a permutation to the multiple-dimension representation of the set of data points.

### Claim 20

A computer-implemented method, comprising:
transforming a data table to a modified version of the data table, wherein said transforming comprises converting each dimension in the data table into multiple dimensions;
applying a permutation to the positioning of each column of the modified version of the data table;
dividing the permuted modified version of the data table vertically into multiple distinct sub-tables;
storing the multiple distinct sub-tables across multiple distinct cloud infrastructures;
calculating a distance between (i) data points derived from a particular row in the original data table, stored across the multiple distinct cloud infrastructures and (ii) a particular multi-dimensional query point, which is partitioned into multiple distinct portions and sent to the multiple distinct cloud infrastructures; and
outputting the calculated distance to at least one user;
wherein the steps are carried out by at least one computing device.
