Java Mobile Code Protection via Class Loader Obfuscation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing techniques for protecting Java mobile code against malicious hosts are inadequate, as they either fail to effectively obfuscate system-defined symbolic names or are vulnerable to watermark removal, allowing for illegitimate use and modification of the code.
Innovation Solution
The implementation of a multi-layer protection approach that combines obfuscation and watermarking, using encrypted symbolic names and static watermarks, along with an enhanced class loader for dynamic authentication, to protect Java mobile code from malicious hosts.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Difficulty of detecting and measuring
If obfuscation techniques are applied to Java mobile code, then the code becomes more difficult to study and reverse engineer, but system-defined symbolic names cannot be effectively obfuscated
Solution Approach 1:
The patent introduces encrypted symbolic names as an intermediary layer between the original system-defined names and the obfuscated code. The class loader acts as a mediator that decrypts these names at runtime, enabling obfuscation of system-defined names while maintaining functionality. This resolves the contradiction by allowing obfuscation effectiveness to improve without compromising the ability to resolve names.
Solution Approach 2:
The patent applies preliminary encryption to symbolic names before the code execution. The encrypted symbolic names are prepared in advance and stored in the code, and the class loader is pre-configured with the decryption capability. This preliminary action enables effective obfuscation of system-defined names while ensuring smooth runtime resolution.
2Reliability
If watermarking is applied to detect code modification, then code authenticity can be verified, but watermarks can be removed or altered by malicious hosts
Solution Approach 1:
The patent implements nested watermarks where multiple watermark layers are embedded within the code structure. The class loader is enhanced to verify multiple watermark layers sequentially, making it increasingly difficult for malicious hosts to remove or alter all layers without detection. This nested approach strengthens authenticity verification while reducing watermark removal vulnerability.
Solution Approach 2:
The patent applies preliminary watermark embedding and verification mechanisms before code execution. The enhanced class loader performs watermark verification as part of the code loading process, preventing modified code from being executed in the first place. This preliminary anti-action counteracts potential watermark removal attempts by detecting modifications before they can take effect.
3Reliability
If multiple protection layers are combined, then security against malicious hosts is enhanced, but system complexity increases
Solution Approach 1:
The patent designs the enhanced class loader to perform multiple functions: loading classes, decrypting encrypted symbolic names, verifying watermarks, and detecting code modification. By consolidating these protection functions into a single universal component, the system achieves enhanced security while minimizing the increase in overall system complexity. This multi-functionality approach allows multiple protection layers to work together without proportionally increasing complexity.
Data Source
AI summary
Techniques for using a class loader to protect mobile code against a malicious host. The techniques include using the class loader to extend a class used by the mobile code such that a method is added to the code which authenticates the mobile code. When executed, the method provides a dynamic watermark that authenticates the code. The method may be encrypted until it is added to the code. One such method uses a static watermark in the code to determine whether the code has been modified. The techniques also include using a class loader to extend the class such that obfuscated symbolic names in the program that correspond to symbolic names defined by the class can be resolved. A way of doing this is to include a first association between the obfuscated symbolic names and encrypted forms of the corresponding symbolic names in the program and to make a second association between the encrypted forms of the corresponding symbolic names and information used to resolve the symbolic names defined in the class. The loader then uses the first and second associations to resolve the obfuscated names.


