# US 10,769,293 B2 · Privacy preserving data search

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

- Number: US 10,769,293 B2
- Document ID: US10769293B2
- Status: Granted
- Kind: B2
- Application number: 16/268,500
- Filed: 2019-02-06
- Published: 2019-06-06
- Granted: 2020-09-08
- Earliest claimed: 2012-09-24
- Assignees: Protegrity Corporation
- Applicants: Protegrity Corporation
- Inventors: Yigal Rozenberg; Ulf Mattsson
- Web page: https://patentgrep.com/patent/US10769293B2

## CPC

- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 21/6227: {where protection concerns the structure of data, e.g. records, types, queries}
- G06F 2221/2113: Multi-level security, e.g. mandatory access control
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Database entries can be protected by indexing the entries using a plurality of indexes, each associated with a level of access rights. A level of access rights can be determined from a search query, and an index can be selected based on the determined level of access rights. A search key can be generated based on the received query, and the selected index can be searched using the search query. Database entries mapped to the values of the selected index returned in response to the search can be outputted. Each index is associated with a different granularity defining the number and/or ambiguity of search results returned in response to searching an index.

## Claims

### Claim 1

A method for data protection in a computer system associated with a plurality of levels of access rights, the method comprising:
receiving, from a requesting entity, a query to search a database indexed with each of a plurality of indexes, each index associated with a different access rights level and including a plurality of values each mapped to a different set of database entries;
generating, by a hardware processor, a search key based on the received query;
hashing the generated search key using a hash table;
maintaining a leading portion of the hashed search key and discarding the remainder of the hashed search key to produce a shortened hashed search key;
searching, by the hardware processor, an index corresponding to an access rights level associated with the requesting entity by comparing the shortened hashed search key to a leading portion of hashed index values of the searched index to identify a set of index values; and
outputting database entries mapped to the identified set of index values.

### Claim 2 (depends on 1)

The method of claim 1, wherein each index of the plurality of indexes is associated with an index granularity defined by an average number of database entries mapped to the same index value.

### Claim 3 (depends on 2)

The method of claim 2, wherein a first access rights level associated with a first index of a first granularity is associated with a greater amount of permissible access to the database than a second access rights level associated with a second index of a second granularity lower than the first granularity.

### Claim 4 (depends on 3)

The method of claim 3, wherein the number of outputted database entries is on average lower if the requesting entity is associated with the first access rights level than if the requesting entity is associated with the second access rights level.

### Claim 5 (depends on 1)

The method of claim 1, wherein the database entries are encrypted, and further comprising:
decrypting the outputted database entries.

### Claim 6 (depends on 1)

The method of claim 1, wherein the generated search key is based on text included within the received query.

### Claim 7

A information retrieval system comprising:
a non-transitory computer-readable storage medium storing executable computer instructions that, when executed, perform steps comprising:
receiving, from a requesting entity, a query to search a database indexed with each of a plurality of indexes, each index associated with a different access rights level and including a plurality of values each mapped to a different set of database entries;
generating a search key based on the received query;
hashing the generated search key using a hash table;
maintaining a leading portion of the hashed search key and discarding the remainder of the hashed search key to produce a shortened hashed search key;
searching an index corresponding to an access rights level associated with the requesting entity by comparing the shortened hashed search key to a leading portion of hashed index values of the searched index to identify a set of index values; and
outputting database entries mapped to the identified set of index values; and
a hardware processor configured to execute the computer instructions.

### Claim 8 (depends on 7)

The system of claim 7, wherein each index of the plurality of indexes is associated with an index granularity defined by an average number of database entries mapped to the same index value.

### Claim 9 (depends on 8)

The system of claim 8, wherein a first access rights level associated with a first index of a first granularity is associated with a greater amount of permissible access to the database than a second access rights level associated with a second index of a second granularity lower than the first granularity.

### Claim 10 (depends on 9)

The system of claim 9, wherein the number of outputted database entries is on average lower if the requesting entity is associated with the first access rights level than if the requesting entity is associated with the second access rights level.

### Claim 11 (depends on 7)

The system of claim 7, wherein the database entries are encrypted, and wherein the instructions, when executed, are further configured to perform steps comprising:
decrypting the outputted database entries.

### Claim 12 (depends on 7)

The system of claim 7, wherein the generated search key is based on text included within the received query.

### Claim 13

A non-transitory computer-readable storage medium storing executable computer instructions that, when executed, are configured to perform steps comprising:
receiving, from a requesting entity, a query to search a database indexed with each of a plurality of indexes, each index associated with a different access rights level and including a plurality of values each mapped to a different set of database entries;
generating, by a hardware processor, a search key based on the received query;
hashing the generated search key using a hash table;
maintaining a leading portion of the hashed search key and discarding the remainder of the hashed search key to produce a shortened hashed search key;
searching, by the hardware processor, an index corresponding to an access rights level associated with the requesting entity by comparing the shortened hashed search key to a leading portion of hashed index values of the searched index to identify a set of index values; and
outputting database entries mapped to the identified set of index values.

### Claim 14 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein each index of the plurality of indexes is associated with an index granularity defined by an average number of database entries mapped to the same index value.

### Claim 15 (depends on 14)

The non-transitory computer-readable storage medium of claim 14, wherein a first access rights level associated with a first index of a first granularity is associated with a greater amount of permissible access to the database than a second access rights level associated with a second index of a second granularity lower than the first granularity.

### Claim 16 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the number of outputted database entries is on average lower if the requesting entity is associated with the first access rights level than if the requesting entity is associated with the second access rights level.

### Claim 17 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the database entries are encrypted, and wherein the instructions, when executed, are further configured to perform steps comprising:
decrypting the outputted database entries.

### Claim 18 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the generated search key is based on text included within the received query.
