EP2467800B1

System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments

Abstract

This record has no abstract on file.

EP2467800B1, drawing sheet 1
Sheet 1 of 18

Term

4.1 yearsleft in the term

Expires 12 November 2030.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

13 claims: 2 independent, 11 dependent

  1. 1
    An apparatus for increasing tamper-resistance of Java bytecode, comprising:a Java bytecode protection tool configured to apply protections to Java bytecode during build-time to generate secured Java bytecode and corresponding protection data, wherein the secured Java bytecode includes a protected application payload and protected Java classes that are encrypted using white-box encryption techniques and which can only be accessed by a software-implemented white-box security module and which can be loaded individually by secure loaders within the security module;wherein at least a portion of the secured Java bytecode is loaded into a Java Virtual Machine (JVM) executing within a hardware environment configured to load at least a portion of the secured Java bytecode;wherein the corresponding protection data is loaded into the software-implemented white-box security module, wherein the software-implemented white-box security module includes a Java Native Interface (JNI) bridge and is configured to execute in the same environment as the JVM during deployment time and to use the JNI bridge to communicate with the JVM during loading and execution of the secured Java bytecode;and counter static and dynamic attacks to the secured Java bytecode during loading and execution of the secured Java bytecode via one or more software-implemented protection mechanisms, wherein at least one of the one or more software-implemented protection mechanisms are integrated into the software-implemented white-box security module, wherein the static and dynamic attacks are countered based at least in part on the corresponding protection data loaded into the software-implemented white-box security module, and wherein the software-implemented white-box security module is configured to co-execute with the secured Java bytecode within the environment via the JNI bridge during runtime.
  2. 2
    The apparatus of Claim 1 wherein the secured Java bytecode also includes a protected Java application bytecode stub and an encrypted class bytecode frame.
  3. 3
    The apparatus of Claim 2 wherein the software-implemented white-box security module is a functional extension to a JVM environment, is configured to provide a root of trustiness of protected Java applications, and is configured to interface with multiple different secured Java bytecodes.
  4. 4
    The apparatus of Claim 3 wherein the protected application payload is launched via the protected Java application bytecode stub.
  5. 5
    The apparatus of Claim 3 wherein the software-implemented white-box security module includes a protected bytecode class loader and wherein the protected application payload is launched via the encrypted class bytecode frame using the protected bytecode class loader.
  6. 6
    The apparatus of Claim 1 wherein only a portion of the secured Java bytecode is stored in decrypted form at any time during execution of the secured Java bytecode.
  7. 7
    The apparatus of Claim 1 wherein the one or more software-implemented protection mechanisms are selectable according to configuration options.
  8. 8
    The apparatus of Claim 7 wherein the one or more software-implemented protection mechanisms include static security handlers and dynamic security handlers.
  9. 9
    The apparatus of Claim 8 wherein the static security handlers include a whitebox (WB) static security handler for accepting cryptographic information including cryptographic keys from a user to generate WB encryption key data used by one or more of other static security handlers, and WB decryption key data and a WB security module utility, each used by one or more of the dynamic security handlers during dynamic run-time protection of the software-implemented white-box security module.
  10. 10
    The apparatus as claimed in Claim 9 wherein the static security handlers include a bytecode integrity verification (BIV) static security handler for applying hash code protection to the secured Java bytecode in response to protection marking information, and the dynamic security handlers include a BIV dynamic security handler for verifying the hash code protection at run-time, wherein the software-implemented white-box security module invokes tampering countermeasures upon verification failure.
  11. 11
    The apparatus as claimed in Claim 9 wherein the static security handlers includes a secure loading bytecode (SLB) static security handler for forming during build-time a protected Java application bytecode stub, a protected application payload, and an encrypted class bytecode frame, and the dynamic security handlers includes an SLB dynamic security handler for loading into a memory buffer the encrypted class bytecode frame corresponding to the secured Java application bytecode, decrypting each of encrypted class contained within the encrypted class bytecode frame via the WB decryption key data corresponding to the encrypted class, loading each decrypted class bytecode into an application work space via a security module class loader so as to execute the Java application bytecode within the application work space.
  12. 12
    A method of increasing tamper-resistance of Java bytecode, the method comprising:applying protections to Java bytecode during build-time to generate secured Java bytecode and corresponding protection data, wherein the secured Java bytecode includes a protected application payload and protected Java classes that are encrypted using white-box encryption techniques and which can only be accessed by a software-implemented white-box security module and which can be loaded individually by secure loaders within the security module;loading at least a portion of the secured Java bytecode into a Java Virtual Machine (JVM) executing within a hardware environment configured to load at least a portion of the secured Java bytecode;loading the corresponding protection data into the software-implemented white-box security module, wherein the software-implemented white-box security module included a Java Native Interface (JNI) bridge and is configured to execute in the same environment as the JVM during deployment time and to use the JNI bridge to communicate with the JVM during loading and execution of the secured Java bytecode;and countering static and dynamic attacks to the secured Java bytecode during loading and execution of the secured Java bytecode via one or more software-implemented protection mechanisms, wherein at least one of the one or more software-implemented protection mechanisms are integrated into the software-implemented white-box security module, wherein the static and dynamic attacks are countered based at least in part on the corresponding protection data loaded into the software-implemented white-box security module, and wherein the software-implemented white-box security module is configured to co-execute with the secured Java bytecode within the environment via the JNI bridge during runtime.