Buffer Cache for Secure Untrusted Storage Access
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current computing devices face challenges in securely allowing untrusted software applications to access storage, as existing solutions are cumbersome and may fail when dealing with large data sizes or limited disk space, often requiring a trade-off between security and operational flexibility.
Innovation Solution
The method involves creating a shared mutable buffer object that provides access to storage pages, using abstract reference objects and a messaging protocol to enable secure data transfer between untrusted entities and the computing device's storage, while maintaining robust security.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data is copied through various processes executing on the computing device, then security is improved, but ease of operation deteriorates and device complexity increases
Solution Approach 1:
The patent introduces a buffer cache as an intermediary component between the untrusted entity and the storage device. The buffer cache receives data from the storage device and provides it to untrusted entities without requiring direct access to the storage system. This mediator approach enables secure data access while simplifying the operational interface for untrusted software.
Solution Approach 2:
The patent segments the data access path into distinct components: the storage device, the buffer cache, and the untrusted entity. By dividing the access mechanism into separate segments, the system can maintain security through the buffer cache while providing ease of access through the standardized interface, resolving the contradiction between security and operational flexibility.
2Reliability
If data is copied to local storage, then security is improved, but productivity deteriorates due to time-consuming copying processes
Solution Approach 1:
The buffer cache performs preliminary action by pre-fetching data from the storage device into its own memory structure before it is needed by untrusted entities. This allows the system to maintain security through controlled access while improving productivity by eliminating the time-consuming copying process that would otherwise be required for each data access operation.
3Reliability
If copying processes are used, then security is improved, but device complexity increases
Solution Approach 1:
The buffer cache serves as a simple intermediary that manages the complexity of secure data access. Rather than implementing complex copying processes throughout the system, the buffer cache provides a straightforward interface that abstracts away the underlying complexity, reducing overall device complexity while maintaining security.
4Reliability
If untrusted entities are restricted from accessing the file system, then security is improved, but adaptability deteriorates
Solution Approach 1:
The buffer cache provides a universal interface that can serve multiple functions: it secures data access for untrusted entities, enables various types of data operations (read, write, delete), and works with different data sizes and types. This multi-functional approach maintains security while improving adaptability, as the same buffer cache mechanism handles diverse operational requirements without requiring special access privileges.
Data Source
AI summary
This application relates to a technique that enables data transfer between an untrusted entity and a storage of a computing device. The technique can include the steps of (1) receiving, from a buffer cache, a pointer referencing a storage location; (2) creating a first abstract reference object based on the pointer, the first abstract reference object including a value; (3) generating a buffer object that provides access to the storage location; (4) sharing access to the buffer object with a first process, where: (i) the first process includes a first reference table, and (ii) the first abstract reference object is inserted into the first reference table; (5) creating a service request that includes the first abstract reference object; (6) transmitting the service request to the first process over a messaging protocol; and (7) initializing the buffer object by associating the value of the first abstract reference object with the buffer object.


