Randomized Compiler Optimization Paths for Software Subversion Resistance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing compiler optimization algorithms are limited and can be further optimized to enhance security against software subversion by hackers, as memory and CPU time are no longer the primary concerns for organizations, and there is a need to protect against unauthorized access.
Innovation Solution
Randomizing the decision-making process within compiler optimization routines to create varying memory layouts and execution flows, while maintaining functional equivalence, and incorporating a pre-processor directive for debugging and watermarking.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If compiler optimization algorithms are made more sophisticated to enhance security, then security against software subversion is improved, but compiler complexity increases
Solution Approach 1:
The patent applies dynamics by making the compiler optimization process non-deterministic through randomization. The compiler randomly selects from multiple valid optimization paths, transforming a static, predictable compilation process into a dynamic one. This randomization enhances security by preventing hackers from exploiting predictable optimization patterns, while the underlying optimization algorithms remain sophisticated but less complex in their deterministic behavior.
Solution Approach 2:
The patent changes the parameter of optimization selection from deterministic to random. Instead of always choosing the same optimization path for identical code, the compiler uses random number generation to select different valid optimization paths. This parameter change maintains optimization effectiveness while introducing variability that strengthens security against subversion attempts.
2Reliability
If deterministic optimization algorithms are used, then compilation consistency is maintained, but security against predictable exploitation is reduced
Solution Approach 1:
The patent introduces dynamics into the compilation process by randomizing optimization selections. While the compilation process remains stable in producing functionally equivalent code, the specific optimization path taken varies randomly. This dynamic approach breaks predictability for hackers while maintaining functional consistency for the compiled software.
Solution Approach 2:
The patent creates asymmetry in the optimization process by introducing random variability. Different compilation runs produce different optimization sequences, breaking the symmetric predictability that hackers could exploit. The asymmetry is introduced through random number generation while maintaining functional equivalence of the output.
3Reliability
If multiple optimization paths are explored, then security is enhanced through randomization, but compilation time increases
Solution Approach 1:
The patent applies partial action by randomly selecting from multiple optimization paths rather than exhaustively exploring all possibilities. The compiler evaluates multiple paths and uses randomization to pick one, avoiding the time-consuming process of analyzing every possible optimization sequence while still achieving security benefits through the random selection process.
Solution Approach 2:
The patent changes the selection parameter from exhaustive search to random sampling. Instead of systematically exploring all optimization paths (which would be time-consuming), the compiler uses random number generation to select from a set of valid optimization paths, significantly reducing compilation time while maintaining security through the unpredictability of the selection.
Data Source
AI summary
A method and system provide the ability to compile computer code. Human readable text in a programming language is optimized in a compiler, into a processor specific language. The optimization includes determining a set of two or more optimization routines, randomly selecting a selected optimization routine from the set of two or more optimization routines, and applying the selected optimization routine to each segment of the human readable text. Binary code is then output based on the optimized human readable text and has improved resistance to subversion.


