EP2803009B1

Virtual machine device having key driven obfuscation and method

Abstract

This record has no abstract on file.

EP2803009B1, drawing sheet 1
Sheet 1 of 9

Term

6.3 yearsleft in the term

Expires 27 December 2032.

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

14 claims: 12 independent, 2 dependent

  1. 1
    A virtual machine device (100) comprising - multiple operation routines (122,124, 126) each configured to perform a particular instruction, and - a selector (110) configured to receive an encoded instruction, the encoded instruction being obtained by encoding a plain instruction together with immediate data for use with the plain instruction with a code encoding, the immediate data being data which is included in a code stream on which an instruction is to act, and includes constants, parameters or operands on which the operation to which the instruction corresponds is to act, - the selector is configured to select and activate a corresponding operation routine of the multiple operation routines, the corresponding operation routine is configured to perform the plain instruction corresponding to the encoded instruction, - the selector (110) comprises a look-up means for looking-up the encoded instruction to select the corresponding operation routine and to obtain the immediate data, the selector being configured to activate the corresponding operation routine with the immediate data, wherein the corresponding operation routine is configured to receive the data encoded with a first encoding and to produce a result encoded with a second internal encoding, the encoded result being obtained by:- decoding the encoded data with the first decoding, - performing the plain instruction corresponding to the encoded instruction on the decoded data to obtain a result, - encoding the result with the second internal encoding.
  2. 2
    A virtual machine device as in any one of the preceding claims, the encoded instruction was obtained by encoding the plain instruction together with the immediate data in a single block of a block cipher.
  3. 3
    A virtual machine device as claims 1 or 2, wherein the immediate data is encoded with an input encoding, before being encoded with the code encoding together with the plain instruction.
  4. 4
    A virtual machine device as in any one of the preceding claims comprising an input recoder (140) configured to receive further data for use by an operation routine, the further data being encoded with an input encoding, the input recoder being configured to decode the data with an input decoding, and encode with an internal encoding.
  5. 5
    A virtual machine device as in any one of the preceding claims comprising an output recoder (160) configured to receive data results produced by an operation routine, the output recoder being configured to recode the data results encoded with an internal decoding to data results encoded with an output encoding.
  6. 6
    A virtual machine device as in any one of the preceding claims, wherein the decoding, performing and encoding steps are combined into a single table, or table network.
  7. 7
    A virtual machine device as in any one of the preceding claims , wherein the data encoded with a first internal encoding is any one of the following:encoded immediate data, data encoded with an internal encoding obtained from a memory of the virtual machine, data encoded with an internal encoding obtained from a register of the virtual machine device.
  8. 8
    A virtual machine device as in any one of the preceding claims, wherein the corresponding operation routine is implemented as a look-up means, configured for looking-up an encoded data to obtain the result.
  9. 9
    A virtual machine device as in any one of the preceding claims, wherein the multiple operation routines comprises a recoding operation, the recoding operation corresponding to a recoding instruction, the recoding operation is configured to recode data encoded with a first encoding to data encoded with a second encoding.
  10. 10
    A virtual machine device as in any one of the preceding claims, wherein the plain instructions correspond to java byte code.
  11. 11
    A distributed execution system comprising - a instruction encoder configured to encode instructions with a code encoding, and optionally, to encode data with an input encoding, and - a virtual machine device as in any one of the preceding claims.
  12. 12
    A virtual machine method comprising - receiving an encoded instruction, the encoded instruction being obtained by encoding a plain instruction together with immediate data for use with the plain instruction with a code encoding, the immediate data being data which is included in a code stream on which an instruction is to act, and includes constants, parameters or operands on which the operation to which the instruction corresponds is to act, - looking-up the encoded instruction to select a corresponding operation routine of multiple operation routines and to obtain the immediate data, the corresponding operation routine is configured to perform the plain instruction corresponding to the encoded instruction, and - activating the corresponding operation routine with the immediate data, wherein the corresponding operation routine is configured to receive the data encoded with a first encoding and to produce a result encoded with a second internal encoding, the encoded result being obtained by:- decoding the encoded data with the first decoding, - performing the plain instruction corresponding to the encoded instruction on the decoded data to obtain a result, - encoding the result with the second internal encoding.