Low-Complexity Verification Code for Data Corruption Detection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current measures for detecting data corruption in Real-Time Operating Systems (RTOS) and application programs are inadequate, particularly in resource-constrained devices, as they rely on inefficient methods such as NULL pointer checks and code hardening, which fail to detect corruption effectively and incur high overhead when using digital digests like SHA.
Innovation Solution
The implementation of a low-complexity verification code generation and storage method, utilizing a unique secret derived from a hardware true random number generator, which generates a verification code based on data values and storage addresses, allowing for early detection of data corruption with minimal processing overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If basic sanity checks (NULL pointer checks) are used for data corruption detection, then the implementation is simple, but the detection effectiveness is poor because it only detects NULL values and cannot identify other corruption types
Solution Approach 1:
The patent applies preliminary action by pre-computing verification codes (hashes) for all data objects during system initialization or data creation, and storing them alongside the data. This allows corruption detection to occur instantly during verification without requiring complex real-time analysis, resolving the contradiction between detection effectiveness and implementation complexity
Solution Approach 2:
The patent creates a copy of the data's essential verification information (the verification code/hash) and stores it separately from the original data. This copy can be quickly compared against newly computed hashes to detect corruption, providing effective detection without requiring complex verification mechanisms on the original data
2Reliability
If digital digest algorithms (SHA) are used for data corruption detection, then the detection accuracy is high, but the processing overhead is prohibitive for resource-constrained real-time systems
Solution Approach 1:
The patent applies partial action by using simplified hash algorithms or truncated versions of full cryptographic hashes that provide sufficient corruption detection capability for embedded systems. This partial implementation maintains adequate detection accuracy while significantly reducing the processing overhead and resource consumption compared to full SHA algorithms
Solution Approach 2:
The patent changes the parameters of the hash algorithm to optimize for resource-constrained environments, using smaller hash sizes, simpler algorithms, or custom-designed verification functions that provide adequate corruption detection with lower computational cost, thus resolving the contradiction between detection accuracy and processing overhead
3Reliability
If code hardening techniques are applied to prevent data corruption, then the prevention capability is improved, but the ability to detect externally introduced corruption remains ineffective
Solution Approach 1:
The patent introduces an intermediary verification mechanism (independent verification codes and validation routines) that operates separately from the application code. This intermediary layer can detect corruption introduced by external sources or security breaches without being affected by code hardening measures, resolving the contradiction between prevention capability and detection difficulty
Data Source
AI summary
Method and apparatus for providing enhanced detection of data corruption in computer programs (e.g., real-time operating systems (RTOS) and application programs). In one exemplary embodiment, such detection is effected via use of a low-complexity verification code algorithm, which can be implemented in as little as four (4) assembly instructions. This low overhead approach advantageously makes the data corruption detection feasible in real-time and/or resource constrained devices. Additionally, the data corruption detection verification code of the present disclosure can be used as a verification fingerprint for any important data, such as that in RTOS-based applications relating to, e.g., (i) function pointers, (ii) function return addresses, (iii) stack and/or buffer corruption, and (iv) linked-list and general pointer corruption.


