Claims
- 1. A method of searching a plurality of encrypted files for which a data structure storing information related to contents of the plurality of encrypted files is provided, the method comprising:
receiving information identifying a query element; determining a first set of files from the plurality of encrypted files wherein membership of the first set is based upon the query element and information in the data structure, the first set of files comprising less than all of the plurality of encrypted files; decrypting each file in the first set of files; searching each decrypted file in the first set of files to identify a second set of files including files that contain the query element, wherein the second set of files is a subset of the first set; and outputting information identifying files in the second set of files.
- 2. The method of claim 1 wherein at least some of the data structure is encrypted and determining the first set of files from the plurality of encrypted files comprises:
decrypting a portion of the data structure; and determining the membership of the first set of files based upon the decrypted portion of the data structure.
- 3. The method of claim 1 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores first mapping information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, and second mapping information mapping each entity to one or more files from the plurality of encrypted files whose portions are included in the entity, wherein the first mapping information is encrypted.
- 4. The method of claim 3 wherein the one or more entities are of a first size and the first size is user configurable.
- 5. The method of claim 3 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 6. The method of claim 3 wherein determining the first set of files from the plurality of encrypted files comprises:
decrypting first mapping information; determining, based upon the decrypted first mapping information, a set of one or more entities that contain the query element; and determining the first set of files from the second mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 7. The method of claim 6 wherein the second mapping information is encrypted and determining the first set of files from the second mapping information comprises:
decrypting the second mapping information; and determining the first set of files based upon the decrypted second mapping information.
- 8. The method of claim 1 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores hashing information and indexing information, the indexing information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, the hashing information hashing the query element to a portion of the indexing information, wherein the indexing information is encrypted.
- 9. The method of claim 8 wherein the one or more entities are of a first size and the first size is user configurable.
- 10. The method of claim 8 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 11. The method of claim 8 wherein determining the first set of files from the plurality of encrypted files comprises:
determining, based upon the hashing information, a portion of the indexing information for the query element; decrypting the portion of the indexing information; determining, from the decrypted portion of the indexing information, a set of one or more entities that contain the query element; accessing mapping information that maps each entity to one or more files from the plurality of encrypted files whose portions are included in the entity; and determining the first set of files from the mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 12. The method of claim 11 wherein the mapping information is encrypted and determining the first set of files from the mapping information comprises:
decrypting the mapping information; and determining the first set of files based upon the decrypted mapping information.
- 13. The method of claim 1 wherein files included in the first set of files are also included in the second set of files.
- 14. The method of claim 1 wherein the data structure is stored on a computer-readable storage medium.
- 15. The method of claim 1 wherein the data structure is stored in random access memory (RAM).
- 16. A method of identifying files in a plurality of encrypted files that contain a query word, the method comprising:
accessing an encrypted data structure storing information mapping words contained in the plurality of encrypted files to one or more files that contain the words; decrypting the encrypted data structure; determining, from the decrypted data structure, a first set of one or more files from the plurality of encrypted files that contain the query word; and outputting information identifying files in the first set of files.
- 17. The method of claim 16 wherein:
the data structure stores a plurality of entries, each entry identifying a word and one or more files from the plurality of encrypted files that contain the word; and determining the first set of one or more files from the plurality of encrypted files that contain the query word comprises:
determining an entry in the plurality of entries identifying word the matches the query word; and identifying the first set of files to include files indicated by the matching entry.
- 18. A computer program product stored on a computer readable storage medium for searching a plurality of encrypted files for which a data structure storing information related to contents of the plurality of encrypted files is provided, the computer program product comprising:
code for receiving information identifying a query element; code for determining a first set of files from the plurality of encrypted files wherein membership of the first set is based upon the query element and information in the data structure, the first set of files comprising less than all of the plurality of encrypted files; code for decrypting each file in the first set of files; code for searching each decrypted file in the first set of files to identify a second set of files including files that contain the query element, wherein the second set of files is a subset of the first set; and code for outputting information identifying files in the second set of files.
- 19. The computer program product of claim 18 wherein at least some of the data structure is encrypted and the code for determining the first set of files from the plurality of encrypted files comprises:
code for decrypting a portion of the data structure; and code for determining the membership of the first set of files based upon the decrypted portion of the data structure.
- 20. The computer program product of claim 18 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores first mapping information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, and second mapping information mapping each entity to one or more files from the plurality of encrypted files whose portions are included in the entity, wherein the first mapping information is encrypted.
- 21. The computer program product of claim 20 wherein the one or more entities are of a first size and the first size is user configurable.
- 22. The computer program product of claim 20 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 23. The computer program product of claim 20 wherein the code for determining the first set of files from the plurality of encrypted files comprises:
code for decrypting first mapping information; code for determining, based upon the decrypted first mapping information, a set of one or more entities that contain the query element; and code for determining the first set of files from the second mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 24. The computer program product of claim 23 wherein the second mapping information is encrypted and the code for determining the first set of files from the second mapping information comprises:
code for decrypting the second mapping information; and code for determining the first set of files based upon the decrypted second mapping information.
- 25. The computer program product of claim 18 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores hashing information and indexing information, the indexing information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, the hashing information hashing the query element to a portion of the indexing information, wherein the indexing information is encrypted.
- 26. The computer program product of claim 25 wherein the one or more entities are of a first size and the first size is user configurable.
- 27. The computer program product of claim 25 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 28. The computer program product of claim 25 wherein the code for determining the first set of files from the plurality of encrypted files comprises:
code for determining, based upon the hashing information, a portion of the indexing information for the query element; code for decrypting the portion of the indexing information; code for determining, from the decrypted portion of the indexing information, a set of one or more entities that contain the query element; code for accessing mapping information that maps each entity to one or more files from the plurality of encrypted files whose portions are included in the entity; and code for determining the first set of files from the mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 29. The computer program product of claim 28 wherein the mapping information is encrypted and the code for determining the first set of files from the mapping information comprises:
code for decrypting the mapping information; and code for determining the first set of files based upon the decrypted mapping information.
- 30. The computer program product of claim 18 wherein files included in the first set of files are also included in the second set of files.
- 31. A computer program product stored on a computer readable storage medium for identifying files in a plurality of encrypted files that contain a query word, the computer program product comprising:
code for accessing an encrypted data structure storing information mapping words contained in the plurality of encrypted files to one or more files that contain the words; code for decrypting the encrypted data structure; code for determining, from the decrypted data structure, a first set of one or more files from the plurality of encrypted files that contain the query word; and code for outputting information identifying files in the first set of files.
- 32. The computer program product of claim 31 wherein:
the data structure stores a plurality of entries, each entry identifying a word and one or more files from the plurality of encrypted files that contain the word; and the code for determining the first set of one or more files from the plurality of encrypted files that contain the query word comprises:
code for determining an entry in the plurality of entries identifying word the matches the query word; and code for identifying the first set of files to include files indicated by the matching entry.
- 33. A system for searching a plurality of encrypted files for which a data structure storing information related to contents of the plurality of encrypted files is provided, the system comprising:
a processor; and a memory coupled to the processor, wherein the memory is configured to store a plurality of code modules for execution by the processor, the plurality of code modules comprising:
a code module for receiving information identifying a query element; a code module for determining a first set of files from the plurality of encrypted files wherein membership of the first set is based upon the query element and information in the data structure, the first set of files comprising less than all of the plurality of encrypted files; a code module for decrypting each file in the first set of files; a code module for searching each decrypted file in the first set of files to identify a second set of files including files that contain the query element, wherein the second set of files is a subset of the first set; and a code module for outputting information identifying files in the second set of files.
- 34. The system of claim 33 wherein at least some of the data structure is encrypted and the code module for determining the first set of files from the plurality of encrypted files comprises:
a code module for decrypting a portion of the data structure; and a code module for determining the membership of the first set of files based upon the decrypted portion of the data structure.
- 35. The system of claim 33 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores first mapping information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, and second mapping information mapping each entity to one or more files from the plurality of encrypted files whose portions are included in the entity, wherein the first mapping information is encrypted.
- 36. The system of claim 35 wherein the one or more entities are of a first size and the first size is user configurable.
- 37. The system of claim 35 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 38. The system of claim 35 wherein the code module for determining the first set of files from the plurality of encrypted files comprises:
a code module for decrypting first mapping information; a code module for determining, based upon the decrypted first mapping information, a set of one or more entities that contain the query element; and a code module for determining the first set of files from the second mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 39. The system of claim 38 wherein the second mapping information is encrypted and the code module for determining the first set of files from the second mapping information comprises:
a code module for decrypting the second mapping information; and a code module for determining the first set of files based upon the decrypted second mapping information.
- 40. The system of claim 33 wherein:
the plurality of encrypted files are partitioned into one or more entities, each entity comprising portions of one or more files from the plurality of encrypted files; and the data structure stores hashing information and indexing information, the indexing information mapping contents of the plurality of encrypted files to one or more entities that contain the contents, the hashing information hashing the query element to a portion of the indexing information, wherein the indexing information is encrypted.
- 41. The system of claim 40 wherein the one or more entities are of a first size and the first size is user configurable.
- 42. The system of claim 40 wherein each entity in the one or more entities corresponds to a file in the plurality of encrypted files.
- 43. The system of claim 40 wherein the code module for determining the first set of files from the plurality of encrypted files comprises:
a code module for determining, based upon the hashing information, a portion of the indexing information for the query element; a code module for decrypting the portion of the indexing information; a code module for determining, from the decrypted portion of the indexing information, a set of one or more entities that contain the query element; a code module for accessing mapping information that maps each entity to one or more files from the plurality of encrypted files whose portions are included in the entity; and a code module for determining the first set of files from the mapping information, the first set of files including one or more files whose portions are included in the set of one or more entities.
- 44. The system of claim 43 wherein the mapping information is encrypted and the code module for determining the first set of files from the mapping information comprises:
a code module for decrypting the mapping information; and a code module for determining the first set of files based upon the decrypted mapping information.
- 45. The system of claim 33 wherein files included in the first set of files are also included in the second set of files.
- 46. The system of claim 33 wherein the data structure is stored in random access memory (RAM).
- 47. A system for identifying files in a plurality of encrypted files that contain a query word, the system comprising:
a processor; and a memory coupled to the processor, wherein the memory is configured to store a plurality of code modules for execution by the processor, the plurality of code modules comprising:
a code module for accessing an encrypted data structure storing information mapping words contained in the plurality of encrypted files to one or more files that contain the words; a code module for decrypting the encrypted data structure; a code module for determining, from the decrypted data structure, a first set of one or more files from the plurality of encrypted files that contain the query word; and a code module for outputting information identifying files in the first set of files.
- 48. The system of claim 47 wherein:
the data structure stores a plurality of entries, each entry identifying a word and one or more files from the plurality of encrypted files that contain the word; and the code module for determining the first set of one or more files from the plurality of encrypted files that contain the query word comprises:
a code module for determining an entry in the plurality of entries identifying word the matches the query word; and a code module for identifying the first set of files to include files indicated by the matching entry.
- 49. A system for searching a plurality of encrypted files for which a data structure storing information related to contents of the plurality of encrypted files is provided, the system comprising:
means for receiving information identifying a query element; means for determining a first set of files from the plurality of encrypted files wherein membership of the first set is based upon the query element and information in the data structure, the first set of files comprising less than all of the plurality of encrypted files; means for decrypting each file in the first set of files; means for searching each decrypted file in the first set of files to identify a second set of files including files that contain the query element, wherein the second set of files is a subset of the first set; and means for outputting information identifying files in the second set of files.
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] The present application claims priority from and is a non-provisional application of U.S. Provisional Application No. 60/275,207, entitled “TECHNIQUES FOR SEARCHING ENCRYPTED FILE SYSTEMS” filed Mar. 12, 2001, the entire contents of which are herein incorporated by reference for all purposes.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60275207 |
Mar 2001 |
US |