Compiler Module Automating Instruction Signature Insertion
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing control flow checking methods for protecting program code from unauthorized modifications require manual insertion of signature values and positions, which is error-prone and not fully automated, especially in high-level languages where not all signature positions are accessible, and optimizations by compilers and linkers complicate the process.
Innovation Solution
A compiler module and instruction signature generator that identify and insert placeholders for signature values during the compilation process, allowing for automated generation and calculation of signature values, enabling full use of programming language syntax for control flow protection and supporting distributed compiling with instruction flow control.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If control flow checking methods are implemented with manual insertion of signature values, then error detection capability is improved, but automation level deteriorates
Solution Approach 1:
The compiler automatically inserts placeholder instructions during the compilation process at program points where control flow signatures need to be updated. This preliminary action eliminates the need for manual insertion of signature values while maintaining error detection capability, as the placeholders are strategically placed based on control flow analysis performed during compilation.
Solution Approach 2:
The system uses the compiler itself to perform the signature value insertion task, rather than requiring external manual intervention. The compiler analyzes the control flow graph and automatically determines where placeholders should be inserted, making the system self-sufficient and fully automated while preserving reliability.
2Reliability
If placeholders are inserted at all program points, then error detection capability is improved, but device complexity deteriorates
Solution Approach 1:
Placeholder instructions are inserted only at specific program points where control flow signatures need to be updated, rather than uniformly at all program points. The compiler performs control flow analysis to identify these critical locations, such as after conditional branches and function calls, thereby maintaining error detection capability while minimizing the number of placeholders and reducing code complexity.
Solution Approach 2:
The control flow protection mechanism is segmented into specific basic blocks where placeholders are inserted only when necessary. Each placeholder is placed at a precise location in the control flow graph where signature verification is needed, avoiding unnecessary complexity in sections of code where control flow checking is not required.
3Productivity
If compiler optimizations are applied, then productivity is improved, but reliability deteriorates
Solution Approach 1:
The compiler performs control flow analysis and inserts placeholder instructions during the compilation process, before optimizations are applied. This preliminary placement ensures that the structural integrity of control flow checkpoints is maintained, allowing subsequent optimizations to proceed without compromising error detection capability, as the placeholders are positioned at fundamental control flow boundaries that optimizations cannot eliminate.
Data Source
AI summary
A compiler module for providing instruction signature support to a compiler includes a language construct identifier and a placeholder insertion component. The language construct identifier is configured to identify an instruction signature-relevant language construct in a high level language source code supplied to the compiler. The placeholder insertion component is configured to interact with the compiler for inserting at least one instruction signature-related placeholder based on the instruction signature-related language construct into a compiled code processed by the compiler on the basis of the high level language source code.


