Stateful Verifier for Program Safety in Computational Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Computational storage devices face security challenges when executing programs, as existing verification methods may not adequately ensure program safety, especially when configuration data is not available at program load time.
Innovation Solution
A stateful verifier is implemented to perform multiple checks of program code, including initial checks at program load and subsequent checks at execution time, using metadata and configuration data to verify program safety without negatively impacting acceleration performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If multiple verification checks are performed on program code, then program safety and reliability are improved, but verification time and processing delay increase
Solution Approach 1:
The system performs preliminary verification checks at program load time to establish a baseline safety assessment before execution begins. This allows critical security checks to be completed in advance, reducing the burden during actual program execution and minimizing time loss during operation.
Solution Approach 2:
The verification process is divided into multiple discrete checks (first check, second check, third check) that can be performed at different stages - during program loading, at execution time, and upon completion. This segmentation allows the system to perform safety verification without blocking the entire execution timeline.
2Reliability
If verification checks are performed at program load time, then program safety is verified early, but configuration data availability may be insufficient for complete verification
Solution Approach 1:
The verification system dynamically adapts its checking behavior based on configuration data availability. When configuration data is unavailable at load time, the system performs what checks are possible and defers remaining checks to execution time when configuration data becomes available. This dynamic approach ensures comprehensive verification while adapting to data availability constraints.
Solution Approach 2:
The system performs preliminary verification checks at program load time to establish a baseline safety assessment before execution begins. This allows critical security checks to be completed in advance, reducing the burden during actual program execution and minimizing time loss during operation.
3Reliability
If multiple verification checks are performed at execution time, then program safety is thoroughly verified, but acceleration performance may be negatively impacted
Solution Approach 1:
The verification process is divided into multiple discrete checks (first check, second check, third check) that can be performed at different stages - during program loading, at execution time, and upon completion. This segmentation allows the system to perform safety verification without blocking the entire execution timeline.
Solution Approach 2:
The system uses feedback from previous verification checks to optimize subsequent checking. By storing metadata about configuration data availability and check results, the system can intelligently determine which checks are necessary and when to perform them, avoiding redundant verification that would impact performance.
Data Source
AI summary
Systems and methods for checking program code are disclosed. The method includes executing a first check of the program code, and making a first determination about the first check. Metadata is stored based on making the first determination. A second check of the program code is run based on the metadata, and a result of the second check is stored in memory. The program code is executed based on the second check. In some embodiments, the method for checking program code includes running a simulation of a check of the program code by a processing device; storing a result of the simulation in memory; executing the check of the program code outside of the simulation; making a determination about the check outside of the simulation; retrieving a result stored in the memory based on the determination; and executing the program code based on the check.


