Nonvolatile Boot Device Dynamic Pointer Integrity Verification
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing computing systems face challenges in reliably testing startup routine instructions for corruption before execution, especially after updates that change the location and size of these instructions in nonvolatile memory, limiting flexibility and operational reliability.
Innovation Solution
The implementation of a nonvolatile boot device with control logic and dynamic pointers that identify and test startup routine instructions, allowing for updates and secure verification, even after changes in memory addresses, using cryptographic hashes and atomic updates to ensure reliability.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If startup routine instructions are stored in nonvolatile memory with fixed addresses, then the system can reliably test instructions before execution, but the system cannot adapt when instructions are updated to new locations or sizes
Solution Approach 1:
The patent implements dynamic pointers stored in nonvolatile memory that can be updated to reflect new instruction locations and sizes. Instead of hardcoding instruction addresses, the system uses pointer values that can be modified when instructions are updated, allowing the testing mechanism to adapt to changes while maintaining reliable verification through cryptographic hashing of the pointer values themselves.
Solution Approach 2:
The system performs preliminary testing of startup routine instructions before execution by calculating cryptographic hashes of the instructions and comparing them against stored expected hash values. This preliminary verification occurs before the instructions are executed, ensuring integrity checking is done in advance while the pointers are updated to reflect the current instruction locations and sizes.
2Reliability
If the system tests startup routine instructions before execution, then operational reliability is improved, but the system cannot test itself because the startup routine is executed before any testing can occur
Solution Approach 1:
The patent introduces an intermediary testing mechanism that uses cryptographic hash functions and stored expected hash values to verify instruction integrity. Instead of the startup routine testing itself directly, the system uses pre-stored hash values and pointer information as intermediaries to perform the verification, allowing the system to effectively test itself without requiring external intervention.
Solution Approach 2:
The system creates a copy of the expected instruction state in the form of stored cryptographic hash values and pointer information. By comparing the actual instructions against these pre-stored copies of the expected state, the system can verify integrity without needing to execute the startup routine first to perform the testing.
3Adaptability or versatility
If pointers are updated to reflect new instruction locations and sizes, then adaptability is improved, but the risk of corruption and faults during updates increases
Solution Approach 1:
The patent implements feedback mechanisms where the system calculates cryptographic hashes of the pointer values themselves and compares them against stored expected hash values. This feedback loop ensures that pointer updates are verified for integrity, allowing the system to adapt to new instruction locations and sizes while detecting and preventing corruption or faults that may occur during the update process.
Solution Approach 2:
The system prepares for potential update failures by storing expected cryptographic hash values and implementing verification checks before and after pointer updates. This cushioning mechanism ensures that if corruption or faults occur during updates, the system can detect the error through hash verification and prevent execution of corrupted instructions, thereby mitigating the risks associated with updates.
Data Source
AI summary
One embodiment describes a computing system that includes a boot device. The boot device includes nonvolatile memory that stores startup routine instructions and a first pointer, in which the first pointer identifies a first one or more memory addresses in the nonvolatile memory where at least a portion of the startup routine instructions are stored, and a microcontroller that retrieves the startup routine instructions from the nonvolatile memory using the first pointer and determines whether the startup routine instructions are corrupted before executing any portion of the startup routine instructions. The computing system further includes a central processor communicatively coupled to the boot device, in which the central processor executes the startup routine instructions to initialize the computing system when the microcontroller determines that the startup routine instructions are not corrupted.


