Securing Java Bytecode Against Fault Injection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Java applications executed by virtual machines, such as Java Card, are susceptible to fault injection attacks that modify calculation values or force execution of certain routines, which existing security measures like redundancy and code checks cannot effectively prevent without substantial resource consumption.
Innovation Solution
A method is introduced to secure intermediate programming code by converting pseudo-instructions to include execution control functions, allowing for secure execution without modifying the source code, and implementing additional pseudo-instructions to verify the execution stack's emptiness and modify Boolean values to more secure internal values, thus preventing fault injection attacks.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If redundancy and code checks are used to prevent fault injection attacks, then security is improved, but resource consumption increases significantly
Solution Approach 1:
The patent applies preliminary action by inserting execution control pseudo-instructions into the intermediate code before runtime execution. These pseudo-instructions embed control data and verification logic in advance, allowing the system to detect faults without requiring redundant code or extensive runtime checks, thus improving security while minimizing resource consumption.
Solution Approach 2:
The patent introduces an intermediary mechanism by adding a layer of execution control pseudo-instructions between the original intermediate code and the virtual machine execution. This intermediary layer includes control data generated via predetermined functions and performs verification operations without modifying the source code or requiring substantial changes to the virtual machine, thereby achieving security enhancement with minimal resource overhead.
2Reliability
If execution control pseudo-instructions are inserted into intermediate code, then security against fault injection attacks is improved, but code complexity increases
Solution Approach 1:
The conversion process performs preliminary action by automatically inserting execution control pseudo-instructions into the intermediate code during the compilation/conversion phase. This preliminary embedding of control logic eliminates the need for complex runtime security mechanisms or source code modifications, achieving security enhancement while keeping the added complexity manageable and systematic.
Solution Approach 2:
The patent applies parameter changes by transforming the intermediate code structure to include additional control parameters and control data generated through predetermined functions. The conversion process systematically modifies code parameters (adding control pseudo-instructions, embedding control data) in a standardized manner, which manages complexity through systematic transformation rather than ad-hoc modifications.
3Measurement precision
If control data is generated via predetermined functions and verified during execution, then fault detection capability is improved, but processing time increases
Solution Approach 1:
The patent applies preliminary action by pre-generating control data through predetermined functions during the code conversion phase, before runtime execution. This preliminary preparation of control data allows for efficient verification during execution, as the control logic and expected values are already computed and embedded in the intermediate code, minimizing runtime processing overhead while maintaining high fault detection capability.
Data Source
Figure 1~4
Figure 2
Figure 3
AI summary
The method involves receiving a set of pseudo instructions of an intermediate programming code (200). The set of pseudo instructions is converted (230, 235). One of the pseudo instructions relative to a function is inserted to execute checking of each pseudo instruction from a set of pseudo instructions during conversion process. A pseudo code is generated, where the generated pseudo code comprises the set of converted pseudo instructions. A command for the virtual machine is directed to verify an execution stack of the virtual machine. Independent claims are also included for the following: (1) a computer program comprising set of instructions to perform a method for providing security for intermediate programming code during execution by a virtual machine (2) a device for providing security for intermediate programming code during execution by a virtual machine (3) a microcircuit comprising pseudo-instructions.