Microprocessor Binary Code Execution Security Against Fault Injection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for executing binary code by microprocessors are vulnerable to attacks that disrupt the integrity of machine instructions and control flow, such as fault injection attacks, which can alter data or instructions, leading to security breaches and inability to move instruction lines during memory rearrangement.
Innovation Solution
A method for generating and executing binary code that includes cryptographic mechanisms to secure data and machine code, using cryptograms and error correction codes to detect and correct faults, and allows for secure movement of instruction lines during memory rearrangement by using initialization vectors and masks to verify integrity and authenticity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If cryptographic mechanisms with initialization vectors dependent on memory addresses are used to secure binary code, then security against fault injection attacks is improved, but device complexity increases due to additional verification steps
Solution Approach 1:
The patent applies preliminary action by pre-computing initialization vectors (IVs) based on memory addresses during the compilation phase. These IVs are embedded in the binary code before execution, allowing the microprocessor to perform straightforward decryption and verification operations during runtime without complex real-time computations.
Solution Approach 2:
The patent introduces an intermediary mechanism where a dedicated verification module acts as a mediator between the instruction fetch unit and the execution unit. This module automatically performs decryption and verification of fetched instructions using the address-dependent IVs, isolating the complexity from the main execution path and presenting a simplified interface to the rest of the processor.
2Reliability
If instruction lines are secured with address-dependent initialization vectors, then integrity verification is improved, but ease of operation deteriorates because instruction lines cannot be moved during memory rearrangement
Solution Approach 1:
The patent applies dynamics by making the initialization vector generation process adaptive to the current memory address. When an instruction line is moved to a new address during memory rearrangement, the system dynamically computes a new IV based on the new address, allowing the same instruction line to be verified at different locations without compromising security.
Solution Approach 2:
The patent changes the parameter of the initialization vector from being statically bound to a specific memory location to being dynamically derived from the current address. This parameter change allows the verification mechanism to adapt to memory rearrangement while maintaining integrity verification, as the IV is regenerated based on the actual address where the instruction line resides.
3Reliability
If cryptograms are used to protect data and instructions, then security is improved, but processing time increases due to decryption operations
Solution Approach 1:
The patent applies segmentation by dividing the binary code into distinct segments (instruction lines and data lines), each protected with appropriate cryptographic mechanisms. Instruction lines use address-dependent IVs for integrity verification, while data lines use similar mechanisms for confidentiality and integrity, allowing optimized processing paths for different code segments.
Solution Approach 2:
The patent replaces complex mechanical verification mechanisms with cryptographic substitution. Instead of using elaborate hardware checks or multiple verification stages, the system uses cryptographic primitives (encryption/decryption with address-dependent IVs) that can be efficiently implemented in hardware, reducing the time overhead compared to alternative verification approaches.
Data Source
AI summary
A method for executing a binary code includes for each item of data to be recorded: executing an algorithm for constructing a data line containing a cryptogram of this item of data constructed using an initialization vector ivj associated with an address @j of the main memory using a relationship ivj=Fiv(@j), where the function Fiv, is a pre-programmed function that associates a different initialization vector ivj with each different address @j of a main memory, and then recording this constructed data line in the main memory at the address @j, where each instruction line of a basic block is constructed by executing the same construction algorithm as the one executed to construct the data line and using the same function Fiv, the item of data for this purpose being taken to be equal to the instruction masked using a mask associated with this basic block.


