IP Library Granted Patent US 11,630,913
Granted Patent B2
US 11,630,913 · App. 17/750,490 · Granted Apr 18, 2023

Encrypted text searching

Inventors: Madjid Aoudia (Montreal, CA); Kai Chung Cheung (Markham, CA); Jesús Alejandro Cárdenes Cabré (Montreal, CA)
Assignee: Via Science, Inc.
G06F21/6227H04L9/008H04L9/30
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,630,913
App. No.
17/750,490
Granted
Apr 18, 2023
Kind
B2
Abstract

A first system receives an encrypted data vector representing a text search query from a second system and second encrypted data from a third system that may include a first vector and a second vector representing text of an electronic document. The first system may multiply the vectors by a random vector. The first system may determine a first difference between the encrypted data vector and the first vector, and a second difference between the encrypted data vector and the second vector. The first system may determine a product of the first and second difference. The first system may send the product to the third system and then receive a value representing the decrypted difference. The first system may determine if the value satisfies a condition and send the result of the determination to the second system.

Claims (78)

1. A computer-implemented method comprising:

receiving, at a first system from a second system, first encrypted data vector representing a text search query, wherein the first encrypted data vector is encrypted using a public key corresponding to a third system;

receiving, at the first system from the third system, second encrypted data, the second encrypted data including a first vector and a second vector representing text of an electronic document, wherein the second encrypted data is encrypted using the public key;

determining, by the first system, third encrypted data representing a first difference between the first encrypted data vector and the first vector of the second encrypted data;

determining, by the first system, fourth encrypted data representing a second difference between the first encrypted data vector and the second vector of the second encrypted data;

determining, by the first system, fifth encrypted data representing a first product of the third encrypted data and the fourth encrypted data;

sending, from the first system to the third system, the fifth encrypted data;

receiving, at the first system from the third system, first decrypted data representing a value of the fifth encrypted data, wherein the first decrypted data is determined by decrypting the fifth encrypted data using a private key corresponding to the public key;

determining, by the first system, the first decrypted data satisfies a condition;

determining, by the first system, results data for the text search query based on the first decrypted data satisfying the condition; and

sending, from the first system to the second system, the results data.

2. The computer-implemented method of claim 1 , further comprising:

receiving, at the first system, the public key from the third system; and

broadcasting, by the first system, the public key.

3. The computer-implemented method of claim 1 , further comprising:

generating, at the first system, a random vector;

wherein the first encrypted data vector further includes determining a second product of the random vector and the first encrypted data vector; and

wherein the second encrypted data further includes determining a third product of the first vector and the random vector and a fourth product of the second vector and the random vector.

4. The computer-implemented method of claim 1 , wherein the fifth encrypted data includes a binary tree, the binary tree comprises at least the third encrypted data, the fourth encrypted data, and the first product; and

wherein the first decrypted data represents values corresponding to vertices of the binary tree.

5. The computer-implemented method of claim 4 , further comprising:

determining, by the third system, the first decrypted data by decrypting the vertices of the binary tree using the private key corresponding to the public key; and

sending, by the third system, the first decrypted data to the first system.

6. The computer-implemented method of claim 5 , further comprising:

determining, from the first decrypted data, a root node of the binary tree does not satisfy the condition; and

determining the results data based on the root node not satisfying the condition.

7. The computer-implemented method of claim 5 , further comprising:

determining, from the first decrypted data, a root node of the binary tree satisfies the condition;

traversing the binary tree to identify a leaf node that satisfies the condition; and

determining the results data based on the leaf node satisfying the condition.

8. The computer-implemented method of claim 1 , wherein the first system determines the first decrypted data satisfies the condition of having a value of zero.

9. The computer-implemented method of claim 1 , further comprising:

determining, by the third system, at least the first vector and the second vector representing the text of the electronic document using an embedding transformation on the electronic document; and

determining, by the second system, the first encrypted data vector using the embedding transformation on the text search query.

10. The computer-implemented method of claim 1 , further comprising:

determining a fifth product of the first difference and an invertible matrix;

determining the fifth product satisfies the condition; and

updating the results data based on the fifth product satisfying the condition.

11. A system comprising:

at least one processor; and

at least one memory including instructions that, when executed by the at least one processor, cause the system to:

receive, at a first system from a second system, first encrypted data vector representing a text search query, wherein the first encrypted data vector is encrypted using a public key corresponding to a third system;

receive, at the first system from the third system, second encrypted data, the second encrypted data including a first vector and a second vector representing text of an electronic document, wherein the second encrypted data is encrypted using the public key;

determine, by the first system, third encrypted data representing a first difference between the first encrypted data vector and the first vector of the second encrypted data;

determine, by the first system, fourth encrypted data representing a second difference between the first encrypted data vector and the second vector of the second encrypted data;

determine, by the first system, fifth encrypted data representing a first product of the third encrypted data and the fourth encrypted data;

send, from the first system to the third system, the fifth encrypted data;

receive, at the first system from the third system, first decrypted data representing a value of the fifth encrypted data, wherein the first decrypted data is determined by decrypting the fifth encrypted data using a private key corresponding to the public key;

determine, by the first system, the first decrypted data satisfies a condition;

determine, by the first system, results data for the text search query based on the first decrypted data satisfying the condition; and

send, from the first system to the second system, the results data.

12. The system of claim 11 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

receive, at the first system, the public key from the third system; and

broadcast, by the first system, the public key.

13. The system of claim 11 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

generate, at the first system, a random vector;

wherein the first encrypted data vector further includes determining a second product of the random vector and the first encrypted data vector; and

wherein the second encrypted data further includes determining a third product of the first vector and the random vector and a fourth product of the second vector and the random vector.

14. The system of claim 11 , wherein the fifth encrypted data includes a binary tree, the binary tree comprises at least the third encrypted data, the fourth encrypted data, and the first product; and

wherein the first decrypted data represents values corresponding to vertices of the binary tree.

15. The system of claim 14 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

determine, by the third system, the first decrypted data by decrypting the vertices of the binary tree using the private key corresponding to the public key; and

send, by the third system, the first decrypted data to the first system.

16. The system of claim 15 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

determine, from the first decrypted data, a root node of the binary tree does not satisfy the condition; and

determine the results data based on the root node not satisfying the condition.

17. The system of claim 15 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

determine, from the first decrypted data, a root node of the binary tree satisfies the condition;

traverse the binary tree to identify a leaf node that satisfies the condition; and

determine the results data based on the leaf node satisfying the condition.

18. The system of claim 11 , wherein the first system determines the first decrypted data satisfies the condition of having a value of zero.

19. The system of claim 11 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

determine, by the third system, at least the first vector and the second vector representing the text of the electronic document using an embedding transformation on the electronic document; and

determine, by the second system, the first encrypted data vector using the embedding transformation on the text search query.

20. The system of claim 11 , wherein the at least one memory further includes instructions, that, when executed by the at least one processor, further cause the system to:

determine a fifth product of the first difference and an invertible matrix;

determine the fifth product satisfies the condition; and

update the results data based on the fifth product satisfying the condition.

Assignments (2)
SECURITY INTEREST Recorded Sep 30, 2025
From: VIA SCIENCE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 072422/0488 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2022
From: AOUDIA, MADJID; CHEUNG, KAI CHUNG; CÁRDENES CABRÉ, JESÚS ALEJANDRO
To: VIA SCIENCE, INC.
Reel/Frame 061690/0432 →
Continuity (2)
Provisional Application 63192811 · May 25, 2021
Related Publication 20220382900A1 · Dec 1, 2022