Bit String Manipulator for Program Flow Integrity
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing program sequence monitoring techniques are inefficient in detecting and ensuring the integrity of target states in microcontroller-based systems, particularly in instruction sets like RISC-V, where bits with predefined values are often unused, making them susceptible to modifications and attacks.
Innovation Solution
A device with a bit-string manipulator analyzes and modifies bit strings to insert information indicating a target state, using unused bits in instruction sets to enhance program flow integrity without requiring hardware changes, by manipulating bit strings to ensure error-free execution and verify program flow integrity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If unused bits in instruction sets are utilized for monitoring program flow, then program flow integrity monitoring capability is improved, but device complexity increases
Solution Approach 1:
The patent utilizes unused bits within the existing instruction set architecture itself to carry monitoring information. The instruction set serves dual purposes: executing program logic and simultaneously encoding target state information for integrity monitoring. This self-service approach avoids adding separate monitoring hardware or data structures, thereby improving reliability without proportionally increasing device complexity.
Solution Approach 2:
The patent makes the unused bits in instruction sets multi-functional by having them serve both as part of the original instruction encoding and as carriers for target state monitoring information. This universal usage of existing bits allows the system to perform both program execution and integrity monitoring functions without requiring dedicated resources for each function, thus improving monitoring capability while limiting complexity growth.
2Reliability
If bit strings are manipulated to insert target state information, then program flow verification capability is improved, but processing time increases
Solution Approach 1:
The patent inserts target state information into unused bits of instruction sequences during the compilation or code generation phase, before the program is executed. This preliminary action allows the monitoring information to be pre-positioned in the bit strings, so that during runtime, the verification process simply needs to read and compare the pre-inserted target state information against the actual program state, significantly reducing processing time compared to computing verification information during execution.
3Measurement precision
If unused bits are used for redundancy information, then error detection capability is improved, but instruction set complexity increases
Solution Approach 1:
The instruction set architecture serves itself by using its own unused bits to carry redundancy and error detection information. Rather than requiring external error detection mechanisms or separate data structures, the instructions themselves contain the necessary redundancy information in their unused bit fields, enabling error detection without adding external complexity to the instruction set.
Solution Approach 2:
The patent changes the functional interpretation of unused bits within the instruction set from being meaningless or reserved values to being meaningful carriers of target state and redundancy information. This parameter change in how the bits are utilized transforms them into effective error detection resources without altering the fundamental structure or syntax of the instruction set, thereby improving error detection capability while maintaining instruction set simplicity.
Data Source
AI summary
A device for processing bit strings of a program flow including a data memory and an interface that is designed to output a second bit string, and a bit string manipulator that is designed to analyze the first bit string at a predetermined bit string section for information that indicates a target state of the program flow, and to manipulate the first bit string in the bit string section to obtain the second bit string.


