Claims
- 1. A system for securing an application for execution on a computer, the system comprising:
a server computer; a network; and a client computer operably connected to the server computer via the network; wherein the client computer receives an application from the server computer; wherein the client computer executes the application subsequent to receiving the application; and wherein the client computer includes an interception module for intercepting a request from the transmitted application to read data from a selected portion of a file, wherein the request identifies a request buffer to store the requested data, wherein the interception module identifies blocks of data in the file that contain the selected portion, wherein the interception module decrypts each of the identified blocks, and wherein the interception module copies the decrypted requested data into the request buffer.
- 2. A method of securing an application for execution on a computer, the method comprising:
intercepting a request to read data from a selected portion of a file, wherein the request identifies a request buffer to store the requested data; identifying blocks of data in the file that contain the selected portion; decrypting each of the identified blocks; and copying the decrypted requested data into the request buffer.
- 3. The method of claim 2, additionally comprising determining whether the file is encrypted.
- 4. The method of claim 3, wherein determining whether the file is encrypted comprises at least one of the following: determining which directory the file is located, examining a file extension of the file, examining a file name of the file, and examining the type of the file.
- 5. The method of claim 2, wherein the request originates from an application that is unaware that the requested data is encrypted.
- 6. A method of securing an application for execution on a computer, the method comprising:
intercepting a request from the application to write data to a selected portion of a file, wherein the request identifies a stored buffer that contains the data; identifying blocks of data in the file that include the selected portion; reading the identified blocks; decrypting each of the identified blocks; storing the contents of the stored buffer in the decrypted identified blocks; and encrypting the contents of the identified blocks.
- 7. The method of claim 6, additionally comprising determining whether the file is encrypted.
- 8. The method of claim 7, wherein determining whether the file is encrypted comprises at least one of the following: determining which directory the file is located, examining a file extension of the file, examining a file name of the file, and examining the type of the file.
- 9. The method of claim 6, additionally comprising inserting in an import table a reference to an interception module, wherein the reference is inserted in the import table such that the interception module is invoked in response to loading of the application, and wherein the interception module intercepts the request from the application.
- 10. The method of claim 6, additionally comprising writing the contents of the identified blocks to a disk.
- 11. A method of securing an application for execution on a computer, the method comprising:
intercepting a request to load a file; identifying the file name of the file; determining whether the file has been modified; and preventing the application from loading and executing the modified file.
- 12. The method of claim 9, additionally comprising removing from the modified file improper instruction sequences.
- 13. A method of securing an application for execution on a computer, the method comprising:
intercepting a request to map a file to a memory, wherein the file comprises a plurality of data blocks that are independently encrypted; mapping the file to a first buffer; reserving a region of physical memory without allocating physical resources for the memory; and intercepting an exception trap that is caused by an access to a memory location in the reserved memory region.
- 14. The method of claim 13, additionally comprising:
identifying one of the data blocks of the encrypted data from the first buffer; decrypting the data block; changing the permissions of at least a portion of the reserved region such that at least a portion of the copied data block is accessible by an application; and copying the decrypted data block into the reserved region.
- 15. The method of claim 14, additionally comprising:
intercepting a request to release the file from memory; identifying which pages of memory have been modified; encrypting the identified pages; and storing the identified pages.
- 16. A method of securing an application for execution on a computer, the method comprising:
intercepting a request to map a file to a memory, wherein the file comprises a plurality of data blocks that are independently encrypted; mapping the file to memory; and decrypting the memory.
- 17. The method of claim 16, additionally comprising:
intercepting a request to release the file from memory; encrypting the contents of memory; and storing the encrypted contents to the file.
- 18. The method of claim 16, additionally comprising determining whether the file is encrypted.
- 19. The method of claim 18, wherein determining whether the file is encrypted comprises at least one of the following: determining which directory the file is located, examining a file extension of the file, examining a file name of the file, and examining the type of the file.
- 20. A method of securing an application for execution on a computer, the method comprising:
intercepting a request to open or create a file in a first location; determining whether the requestor of the request is authorized to open or create the file in the first location; opening or creating a file in a second location; and notifying the requestor that the file was successfully opened or created in the first location.
- 21. The method of claim 20, additionally comprising creating a virtual filename for the file.
- 22. The method of claim 20, additionally comprising creating a directory for the second location in a file system.
- 23. A method of securing an application for execution on a computer, the method comprising:
encrypting the filename of at least one file in an application package; encrypting the contents of the file; transmitting the application package to the computer; intercepting a request to access the file; identifying the encrypted name of the filename; accessing the file using the encrypted name; and decrypting the contents of the file.
- 24. The method of claim 23, additionally comprising modifying the directory structure of the application package before transmitting the application package to the computer.
- 25. A method of securing an application for execution on a computer, the method comprising:
intercepting a file system request, wherein the request identifies a file identifier; decrypting at least a part of the file identifier; and encrypting at least a portion of the decrypted file identifier.
- 26. The method of claim 25, wherein the file identifier is a file path or a file name.
- 27. The method of claim 25, additionally comprising determining whether a file identifier is encrypted, wherein said determining comprises determining whether the file identifier contains a predefined symbol or symbols.
- 28. A system for securing an application for execution on a computer, the system comprising:
means for intercepting a request to read data from a selected portion of a file, wherein the request identifies a request buffer to store the requested data; means for identifying blocks of data in the file that contain the selected portion; means for decrypting each of the identified blocks; and means for copying the decrypted requested data into the request buffer.
- 29. The system of claim 28, wherein the request originates from an application that is unaware that the requested data is encrypted.
- 30. A system for securing an application for execution on a computer, the system comprising:
means for intercepting a request to write data to a selected portion of a file, wherein the request identifies a stored buffer that contains the data; means for identifying blocks of data in the file that include the selected portion; means for reading the identified blocks; means for decrypting each of the identified blocks; means for storing the contents of the stored buffer in the decrypted identified blocks; and means for encrypting the contents of the identified blocks.
- 31. The method of claim 30, additionally comprising means for writing the contents of the identified blocks to a disk.
- 32. A system for securing an application for execution on a computer, the system comprising:
means for intercepting a request to write to a file; means for identifying the file name of the file; means for determining whether the file has been modified; and means for preventing the application from loading and executing the modified file.
- 33. A system for securing an application for execution on a computer, the method comprising:
means for intercepting a request to map a file to memory, wherein the file comprises a plurality of data blocks that are independently encrypted; means for mapping the file to a first buffer; means for reserving a region of physical memory without allocating physical resources for the memory; and means for intercepting an exception trap that is caused by an access to a memory location in the reserved memory region.
- 34. The system of claim 33, additionally comprising:
means for identifying one of the data blocks of the encrypted data from the first buffer; means for decrypting the data block; means for changing the permissions of at least a portion of the reserved region such that at least a portion of the copied datablock is accessible by an application; and means for copying the decrypted data block into the reserved memory region.
- 35. A system for securing an application for execution on a computer, the system comprising:
means for intercepting a request to open a file in a first location; means for determining whether the requester of the request is authorized to open the file in the first location; means for opening a file in a second location; and means for notifying the requestor that the file was successfully opened in the first location.
- 36. The system of claim 35, additionally comprising means for creating a virtual filename for the file.
- 37. The system of claim 35, additionally comprising means for creating a directory for the second location in a file system.
- 38. A system for securing an application for execution on a computer, the system comprising:
means for encrypting the filename of at least one file in an application package; means for encrypting the contents of the file; means for transmitting the application package to the computer; means for intercepting a request to access the file; means for identifying the encrypted name of the filename; means for accessing the file using the encrypted name; and means for decrypting the contents of the file.
- 39. The system of claim 38, additionally comprising means for modifying the directory structure of the application package before transmitting the application package to the computer.
- 40. A system for securing an application for execution on a computer, the system comprising:
means for intercepting a file system request, wherein the request identifies a file identifier; means for decrypting at least a part of the file identifier; and means for encrypting at least a portion of the decrypted file identifier.
- 41. The system of claim 40, wherein the file identifier is a file path or a file name.
- 42. The system of claim 40, additionally comprising means for determining whether a file identifier is encrypted, wherein said determining comprises determining whether the file identifier contains a predefined symbol or symbols.
- 43. The system of claim 40, additionally comprising means for determining whether a file identifier is encrypted, wherein said determining comprises determining whether at least a portion of the file identifier contains a postfix and a prefix symbol or symbols.
- 44. A system for securing a application for execution on a computer, the system comprising:
an interception module for intercepting a request to read data from a selected portion of a file, wherein the request identifies a request buffer to store the requested data, wherein the interception module identifies blocks of data in the file that contain the selected portion, wherein the interception module decrypts each of the identified blocks, and wherein the interception module copies the decrypted requested data into the request buffer.
RELATED APPLICATIONS
[0001] This application relates to the following co-owned and co-pending U.S. Patent Applications, which are each incorporated by reference herein in their entirety: U.S. patent application Ser. No. ______, “METHOD AND PROCESS FOR SECURING AN APPLICATION PROGRAM TO EXECUTE IN A REMOTE ENVIRONMENT”, filed Nov. 29, 2000; U.S. patent application Ser. No ______, “METHOD AND PROCESS FOR THE REWRITING OF BINARIES TO INTERCEPT SYSTEM CALLS IN A SECURE EXECUTION ENVIRONMENT”, filed Nov. 29, 2000; U.S. patent application Ser. No ______, “METHOD AND PROCESS FOR THE VIRTUALIZATION OF SYSTEM DATABASES AND STORED INFORMATION”, filed Nov. 29, 2000; U.S. patent application Ser. No ______, “METHOD AND PROCESS FOR VIRTUALIZING NETWORK INTERFACES”, filed Nov. 29, 2000; U.S. patent application Ser. No ______, “METHOD AND PROCESS FOR VIRTUALIZING USER INTERFACES”, filed Nov. 29, 2000; U.S. patent application Ser. No ______, “SYSTEM AND METHOD FOR SECURING AN APPLICATION ON A COMPUTER”, filed Nov. 29, 2000, and U.S. patent application Ser. No. ______, “SYSTEM AND METHOD FOR COMMUNICATING AND CONTROLLING THE BEHAVIOR OF AN APPLICATION EXECUTING ON A COMPUTER”, filed Nov. 29, 2000.