IP Library Granted Patent US 9,894,042
Granted Patent B2
US 9,894,042 · App. 14/808,900 · Granted Feb 13, 2018

Searchable encryption enabling encrypted search based on document type

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 9,894,042
App. No.
14/808,900
Granted
Feb 13, 2018
Kind
B2
Abstract

A searchable encryption method enables encrypted search of encrypted documents based on document type. In some embodiments, the searchable encryption method is implemented in a network intermediary, such as a proxy server. The network intermediary encrypts documents on behalf of a user or an enterprise destined to be stored on a cloud service provider. The searchable encryption method encodes document type information into the encrypted search index while preserving encryption security. Furthermore, the searchable encryption method enables search of encrypted documents using the same encrypted index, either for a particular document type or for all encrypted documents regardless of the document type.

Claims (71)

1. A method for searchable encryption of cloud stored data encoding a document type, comprising:

receiving, at a network intermediary device over a communication network, a document of a first document type destined for a cloud service provider, the first document type identifying a logical definition of the document as defined by a computing system;

applying, at the network intermediary device, a searchable encryption algorithm to the document to generate a search index;

in response to the encryption of the document by the searchable encryption algorithm, generating, by the network intermediary device, one or more entries in the search index stored in the network intermediary, the one or more entries including a mapping of encrypted keyword labels for some or all of the keywords in the document to an encrypted document index identifying the document being encrypted, each encrypted keyword label being generated by applying a pseudorandom function using a key to encode a document type identifier into the encrypted keyword label, where the key relates to a respective keyword of the document, the document type identifier is indicative of the first document type of the document, the document type identifier identifying the logical definition of the document as defined by the computing system;

encrypting, by the network intermediary device, the document using a second encryption algorithm;

transmitting, over the communication network by the network intermediary device, the encrypted document to the cloud service provider to be stored at the cloud service provider;

receiving, at the network intermediary device over the communication network by a client device, a search request comprising a requested document type for documents stored at the cloud service provider; and

retrieving, by the network intermediary device, from the cloud service providers one or more documents matching the requested document type,

wherein generating, by the network intermediary device, one or more entries in the search index stored in the network intermediary comprises:

generating, by the network intermediary device, one or more entries in the search index stored in the network intermediary, the one or more entries including a mapping of encrypted keyword labels for some or all of the keywords in the document to the encrypted document index identifying the document being encrypted, each encrypted keyword label being generated by applying the pseudorandom function using a key to encode a document type identifier indicative of the document type of the document and a counter value indicative of a number of occurrences of the respective keyword in previously encrypted documents of the same document type as the document being encrypted.

2. The method of claim 1 , wherein receiving, at the network intermediary device, the document of the first document type destined for a cloud service provider further comprises receiving, at the network intermediary device, a plurality of documents of the same or different document types destined for a cloud service provider, each document type identifying a logical definition of the respective document as defined by the computing system; and wherein generating one or more entries in a search index stored in the network intermediary device comprises:

generating a first entry in the search index including a mapping of a first encrypted keyword label associated with a first keyword in a first document to an encrypted document index identifying the first document being encrypted, the first encrypted keyword label being generated by applying the pseudorandom function using a key being a function of the first keyword to encode a document type identifier indicative of the document type of the first document and a counter value indicative of a first occurrence of the first keyword in previously encrypted documents of the same document type as the first document; and

generating a second entry in the search index including a mapping of a second encrypted keyword label associated with the first keyword in a second document to an encrypted document index identifying the second document being encrypted, the second encrypted keyword label being generated by applying the pseudorandom function using a key being a function of the first keyword to encode a document type identifier indicative of a document type of the second document and a counter value indicative of a first occurrence of the first keyword in previously encrypted documents of the same document type as the second document, the first document and the second document having different document types and different document type identifiers.

3. The method of claim 1 , wherein receiving, at the network intermediary device, the document of the first document type destined for a cloud service provider further comprises receiving, at the network intermediary device, a plurality of documents of the same or different document types destined for a cloud service provider, each document type identifying a logical definition of the respective document as defined by the computing system; and wherein generating one or more entries in a search index stored in the network intermediary device comprises:

generating a first entry in the search index including a mapping of a first encrypted keyword label associated with a first keyword in a first document to an encrypted document index identifying the first document being encrypted, the first encrypted keyword label being generated by applying the pseudorandom function using a key being a function of the first keyword to encode g a document type identifier indicative of the document type of the first document and a counter value indicative of a first occurrence of the first keyword in previously encrypted documents of the same document type as the first document; and

generating a third entry in the search index including a mapping of a third encrypted keyword label associated with the first keyword in a third document to an encrypted document index identifying the third document being encrypted, the third encrypted keyword label being generated by applying the pseudorandom function using a key being a function of the first keyword to encode a document type identifier indicative of a document type of the third document and a counter value indicative of a second occurrence of the first keyword in previously encrypted documents of the same document type as the third document, the first document and the third document having the same document type and the same document type identifiers.

4. The method of claim 1 , wherein encrypting the document using the second encryption algorithm comprises:

encrypting the document using a bulk encryption algorithm.

5. The method of claim 1 , further comprising:

receiving, at the network intermediary device, a search request with a search term and a requested document type;

generating a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of the requested document type in the search request;

searching for the search term label in the search index;

in response to the search term label matching an encrypted keyword label in the search index, retrieving from the search index the encrypted document index mapped to the matching encrypted keyword label;

decrypting the encrypted document index;

retrieving the encrypted document from the cloud service provider using the decrypted document index;

decrypting the retrieved document; and

providing the decrypted document of the requested document type as the search result.

6. The method of claim 1 , further comprising:

receiving, at the network intermediary device, a search request with a search term for all document types;

generating a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of a first document type;

searching for the search term label in the search index;

in response to the search term label matching an encrypted keyword label in the search index, retrieving from the search index the encrypted document index mapped to the matching encrypted keyword label;

in response to the search term label not matching an encrypted keyword label in the search index, repeating the generating the search term label and the searching for the search term label for a next document type until the last of all document types;

decrypting the retrieved encrypted document index;

retrieving the encrypted document from the cloud service provider using the decrypted document index;

decrypting the retrieved document; and

providing the decrypted document of any document type as the search result.

7. The method of claim 1 , further comprising:

receiving, at the network intermediary device, a search request with a search term and a requested document type;

setting the counter value to an initial value;

generating a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of the requested document type in the search request and further encoding the counter value;

searching for the search term label in the search index;

in response to the search term label matching an encrypted keyword label in the search index, retrieving from the search index the encrypted document index mapped to the matching encrypted keyword label, incrementing the counter value and repeating the generating a search term label using the current counter value;

in response to the search term label not matching an encrypted keyword label in the search index, stopping the searching of the search term label in the search index;

decrypting the retrieved encrypted document index;

retrieving the encrypted document from the cloud service provider using the decrypted document index;

decrypting the retrieved document; and

providing the decrypted document as the search result.

8. The method of claim 1 , further comprising:

receiving, at the network intermediary device, a search request with a search term for all document types;

setting the document type identifier to an initial value;

setting the counter value to an initial value;

generating a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode the document type identifier and the counter value;

searching for the search term label in the search index;

in response to the search term label matching an encrypted keyword label in the search index, retrieving from the search index the encrypted document index mapped to the matching encrypted keyword label, incrementing the counter value and repeating the generating a search term label using the current counter value and the current document type identifier;

in response to the search term label not matching an encrypted keyword label in the search index, incrementing the document type identifier to the next document type identifier and repeating the setting the counter value to an initial value and the generating a search term label using the current counter value and the current document type identifier until the last of all document types;

decrypting the retrieved encrypted document index;

retrieving the encrypted document from the cloud service provider using the decrypted document index;

decrypting the retrieved document; and

providing the decrypted document as the search result.

9. The method of claim 1 , wherein receiving, at the network intermediary device, the document of a first document type destined for a cloud service provider comprises:

receiving, at a network intermediary device, the document destined for the cloud service provider, the document comprising one of a file, a data record, a data field, a data with structured data format, or a data with unstructured data format, the document type comprising a logical definition of the document.

10. A system for searchable encryption of cloud stored data encoding a document type, comprising:

a network proxy server configured as a network intermediary device to receive, over a communication network, a document of a first document type destined for a cloud service provider, the first document type identifying a logical definition of the document as defined by a computing system, the network proxy server being configured to apply a searchable encryption algorithm to the document to generate a search index, in response to the encryption of the document by the searchable encryption algorithm, the network proxy server is being configured to generate one or more entries in a search index stored in the network intermediary device where the one or more entries include a mapping of encrypted keyword labels for some or all of the keywords in the document to an encrypted document index identifying the document being encrypted, each encrypted keyword label being generated by applying a pseudorandom function using a key to encode a document type identifier into the encrypted keyword label, where the key relates to a respective keyword of the document, the document type identifier is indicative of the first document type of the document, the document type identifier identifying the logical definition of the document as defined by the computing system, the network proxy server further configured to encrypt the document using a second encryption algorithm, to transmit, over the communication network, the encrypted document to the cloud service provider to be stored at the cloud service provider, to receive, over the communication network by a client device, a search request comprising a requested document type for documents stored at the cloud service provider, and to retrieve from the cloud service providers one or more documents matching the requested document type,

wherein the network proxy server is further configured to generate one or more entries in the search index stored in the network intermediary device where the one or more entries including a mapping of encrypted keyword labels for some or all of the keywords in the document to the encrypted document index identifying the document being encrypted, each encrypted keyword label being generated by applying the pseudorandom function using a key to encode a document type identifier indicative of the document type of the document and a counter value indicative of a number of occurrences of the respective keyword in previously encrypted documents of the same document type as the document being encrypted.

11. The system of claim 10 , wherein the network proxy server is further configured to encrypt the document using a bulk encryption algorithm.

12. The system of claim 10 , wherein the network proxy server is further configured to receive a search request with a search term and a requested document type, to generating a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of the requested document type in the search request, to search for the search term label in the search index, in response to the search term label matching an encrypted keyword label in the search index, to retrieve from the search index the encrypted document index mapped to the matching encrypted keyword label, to decrypting the encrypted document index, to retrieve the encrypted document from the cloud service provider using the decrypted document index, to decrypt the retrieved document, and to provide the decrypted document of the requested document type as the search result.

13. The system of claim 10 , wherein the network proxy server is further configured to receive a search request with a search term for all document types, to generate a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of a first document type, to search for the search term label in the search index, in response to the search term label matching an encrypted keyword label in the search index, to retrieve from the search index the encrypted document index mapped to the matching encrypted keyword label, in response to the search term label not matching an encrypted keyword label in the search index, to repeat the generating the search term label and the searching for the search term label for a next document type until the last of all document types, to decrypt the retrieved encrypted document index, to retrieve the encrypted document from the cloud service provider using the decrypted document index, to decrypt the retrieved document, and to provide the decrypted document of any document type as the search result.

14. The system of claim 10 , wherein the network proxy server is further configured to receive a search request with a search term and a requested document type, to set the counter value to an initial value, to generate a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode a document type identifier indicative of the requested document type in the search request and further encoding the counter value, to search for the search term label in the search index, in response to the search term label matching an encrypted keyword label in the search index, to retrieve from the search index the encrypted document index mapped to the matching encrypted keyword label and to increment the counter value and to repeat the generating a search term label using the current counter value, in response to the search term label not matching an encrypted keyword label in the search index, to stop the searching of the search term label in the search index, to decrypt the retrieved encrypted document index, to retrieve the encrypted document from the cloud service provider using the decrypted document index, to decrypt the retrieved document; and to provide the decrypted document as the search result.

15. The system of claim 10 , wherein the network proxy server is further configured to receive a search request with a search term for all document types, to set the document type identifier to an initial value, to set the counter value to an initial value, to generate a search term label by applying the pseudorandom function using a key being a function of the search term in the search request to encode the document type identifier and the counter value, to search for the search term label in the search index, in response to the search term label matching an encrypted keyword label in the search index, to retrieve from the search index the encrypted document index mapped to the matching encrypted keyword label and to increment the counter value and to repeat the generating a search term label using the current counter value and the current document type identifier, in response to the search term label not matching an encrypted keyword label in the search index, to increment the document type identifier to the next document type identifier and to repeat the setting the counter value to an initial value and the generating a search term label using the current counter value and the current document type identifier until the last of all document types, to decrypt the retrieved encrypted document index, to retrieve the encrypted document from the cloud service provider using the decrypted document index, to decrypt the retrieved document; and to provide the decrypted document as the search result.

16. The system of claim 10 , wherein the network proxy server is further configured to receive the document destined for the cloud service provider, the document comprising one of a file, a data record, a data field, a data with structured data format, or a data with unstructured data format, the document type comprising a logical definition of the document.

Assignments (16)
ASSIGNMENT OF INTERCOMPANY FIRST LIEN PATENT SECURITY AGREEMENT Recorded Apr 14, 2025
From: UBS AG, STAMFORD BRANCH
To: ACQUIOM AGENCY SERVICES LLC
Reel/Frame 070840/0598 →
INTERCOMPANY FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jan 24, 2025
From: SKYHIGH SECURITY LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 070618/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 28, 2024
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SKYHIGH SECURITY LLC
Reel/Frame 069272/0570 →
RELEASE OF SECURITY INTEREST Recorded Aug 16, 2024
From: STG PARTNERS, LLC
To: MUSARUBRA US LLC; SKYHIGH SECURITY LLC
Reel/Frame 068671/0435 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Aug 15, 2024
From: MAGENTA SECURITY HOLDINGS LLC; SKYHIGH SECURITY LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 068657/0666 →
SECURITY INTEREST Recorded Aug 1, 2024
From: MUSARUBRA US LLC; SKYHIGH SECURITY LLC
To: STG PARTNERS, LLC
Reel/Frame 068324/0731 →
CHANGE OF NAME Recorded May 9, 2022
From: SKYHIGH NETWORKS, LLC
To: SKYHIGH SECURITY LLC
Reel/Frame 059912/0601 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jul 27, 2021
From: MUSARUBRA US LLC; SKYHIGH NETWORKS, LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 057453/0053 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 27, 2021
From: MUSARUBRA US LLC; SKYHIGH NETWORKS, LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 056990/0960 →
RELEASE OF SECURITY INTEREST Recorded Jul 26, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MCAFEE, LLC; SKYHIGH NETWORKS, LLC
Reel/Frame 057620/0102 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 046416/0286 Recorded Oct 26, 2020
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: SKYHIGH NETWORKS, LLC
Reel/Frame 054211/0739 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY DATA PREVIOUSLY RECORDED AT REEL: 046416 FRAME: 0286. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 19, 2020
From: SKYHIGH NETWORKS, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 054560/0325 →
CHANGE OF NAME Recorded Dec 19, 2018
From: SKYHIGH NETWORKS, INC.
To: SKYHIGH NETWORKS, LLC
Reel/Frame 047955/0591 →
SECURITY INTEREST Recorded Jul 20, 2018
From: SKYHIGH NETWORKS, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 046416/0286 →
SECURITY INTEREST Recorded Jul 20, 2018
From: SKYHIGH NETWORKS, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 046416/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2015
From: DAWOUD, HANI T.
To: SKYHIGH NETWORKS, INC.
Reel/Frame 036719/0099 →