IP Library Granted Patent US 11,366,918
Granted Patent B1
US 11,366,918 · App. 16/901,623 · Granted Jun 21, 2022

Methods and apparatus for encrypted indexing and searching encrypted data

Inventor: Edward Liang Yu (Millbrae, CA)
Assignee: SIMBA Chain, Inc.
G06F21/6218G06F16/2228G06F16/245G06F21/602G06F21/6254H04L9/0643
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,366,918
App. No.
16/901,623
Granted
Jun 21, 2022
Kind
B1
Abstract

In some embodiments, an apparatus includes a memory and a processor. The processor is configured to receive an index file that associates a characteristic in a set of documents with a set of information associated with the characteristic in the set of documents. The processor is further configured to generate an index identifier associated with the index file and calculate a set of pseudorandom logical block identifiers associated with a set of storage locations of a database based on the index identifier. The processor is then configured to parse the index file into a set of index data portions and send a signal to the database to write each index data portion from the set of index data portions at a different storage location within the database as indicated by a different identifier from the set of pseudorandom logical block identifiers.

Claims (65)

1. A method, comprising:

retrieving, in response to a search request, index data stored at a first set of storage locations, the search request having a search string associated with a characteristic in a set of electronic documents within a database;

generating an index identifier associated with the index data;

calculating a set of pseudorandom logical block identifiers based on the index identifier, each pseudorandom logical block identifier from the set of pseudorandom logical block identifiers identifying a storage location from a second set of storage locations within the database;

parsing the index data into a set of index data portions; and

sending a signal to the database to write each index data portion from the set of index data portions at a different storage location from the second set of storage locations as identified by a different identifier from the set of pseudorandom logical block identifiers.

2. The method of claim 1 , wherein:

the set of pseudorandom logical block identifiers is a first set of set of pseudorandom logical block identifiers;

the method further comprises:

receiving, from a compute device and prior to retrieving the index data, the search request;

identifying, based on the search string and prior to retrieving the index data, a second set of pseudorandom logical block identifiers associated with the first set of storage locations;

the retrieving the index data includes using the second set of pseudorandom logical block identifiers.

3. The method of claim 2 , wherein:

the identifying the second set of pseudorandom logical block identifiers includes:

identifying a seed based at least in part on the search string;

calculating the second set of pseudorandom logical block identifiers based on the seed.

4. The method of claim 1 , wherein:

the signal is a first signal;

the method further comprises:

compiling an electronic search result file based on the index data;

identifying, based on the electronic search result file, a set of information associated with the characteristic in the set of electronic documents; and

sending, to a compute device that sent the search request, a second signal including the set of information.

5. The method of claim 4 , wherein:

the set of information includes at least one of a set of locations of the characteristic in the set of electronic documents or a set of statistical information associated with the characteristic in the set of electronic documents.

6. The method of claim 4 , wherein:

the characteristic is a first characteristic, and

the set of information includes relationship information associated with a relationship between the first characteristic in the set of electronic documents and a second characteristic in the set of electronic documents.

7. The method of claim 1 , further comprising:

encrypting each index data portion from the set of index data portions prior to sending the signal to the database.

8. The method of claim 1 , further comprising:

generating a seed, based at least in part on the index identifier, using a cryptographic pseudorandom hash function with the index identifier as an input to the cryptographic pseudorandom hash function.

9. The method of claim 1 , wherein:

the calculating the set of pseudorandom logical block identifiers is based on the index identifier and a cryptographic key.

10. The method of claim 1 , wherein the set of pseudorandom logical block identifiers is not stored in long-term memory.

11. The method of claim 1 , wherein the index data are encrypted index data.

12. The method of claim 1 , further comprising:

modifying an initialization vector for each index data portion from the set of index data portions to define a set of modified index data portions;

the sending the signal to the database includes writing each modified index data portion from the set of modified index data portions at each storage location from the second set of storage locations.

13. An apparatus, comprising:

a memory; and

a processor operatively coupled to the memory, the processor configured to:

receive, from a compute device, a search request having a search string associated with a characteristic in a set of electronic documents within a database,

retrieve index data stored at a first set of storage locations in response to the search request, the index data including a set of index data portions,

generate an index identifier associated with the index data,

calculate a set of pseudorandom logical block identifiers based on the index identifier, each pseudorandom logical block identifier from the set of pseudorandom logical block identifiers identifying a storage location from a second set of storage locations within the database,

send a signal to the database to write each index data portion from the set of index data portions at a different storage location from the second set of storage locations.

14. The apparatus of claim 13 , wherein:

the processor is configured to encrypt each index data portion from the set of index data portions prior to sending the signal to the database.

15. The apparatus of claim 13 , wherein:

the processor is configured to generate a seed, based at least in part on the index identifier, using a cryptographic pseudorandom hash function with the index identifier as an input to the cryptographic pseudorandom hash function.

16. The apparatus of claim 13 , wherein the set of pseudorandom logical block identifiers is not stored in long-term memory.

17. The apparatus of claim 13 , wherein the index data are encrypted index data.

18. The apparatus of claim 13 , wherein:

the processor is configured to modify an initialization vector for each index data portion from the set of index data portions to define a set of modified index data portions;

the processor is configured to send the signal to the database to write each modified index data portion from the set of modified index data portions for each storage location from the second set of storage locations.

19. The apparatus of claim 13 , wherein:

the processor is configured to calculate the set of pseudorandom logical block identifiers based on the index identifier and a cryptographic key.

20. A non-transitory processor-readable medium storing code representing instructions to be executed by a processor, the code comprising code to cause the processor to:

receive, from a compute device, a search request having a search string associated with a characteristic in a set of electronic documents within a database;

retrieve index data stored at a first set of storage locations in response to the search request, the index data including a set of index data portions;

compile an electronic search result file based on the index data;

identify, based on the electronic search result file, a set of information associated with the characteristic in the set of electronic documents;

send, to the compute device, a first signal including the set of information;

calculate a set of pseudorandom logical block identifiers based on an index identifier associated with the index data, each pseudorandom logical block identifier from the set of pseudorandom logical block identifiers identifying a storage location from a second set of storage locations within the database; and

send a second signal to the database to write each index data portion from the set of index data portions at a different storage location from the second set of storage locations based on the set of pseudorandom logical block identifiers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2022
From: OVERNEST, INC.
To: SIMBA CHAIN, INC.
Reel/Frame 060110/0170 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: YU, EDWARD LIANG
To: OVERNEST, INC.
Reel/Frame 052946/0013 →
Continuity (2)
Continuation 15912079 · Mar 5, 2018
Division 15425463 · Feb 6, 2017
Cited By (1)
US 12,688,153