Virtual machine with securely distributed bytecode verification
AssigneeSun Microsystems, Inc.
InventorsMoshe Levy, Judy Schwabe
Life of this patent
Estimating the term…
Abstract
A system for executing a software application comprising a plurality of hardware independent bytecodes is provided comprising a computing system that generates bytecodes, a virtual machine, remote to the computing system, that receives a plurality of bytecodes from said computing system, and executes said plurality of bytecodes, a system for testing said bytecodes against a set of predetermined criteria in which the testing is securely distributed between said virtual machine and said computing system so that the bytecode verification completed by the computing system is authenticated by the virtual machine prior to the execution of the bytecodes by said virtual machine. A method for distributed bytecode verification is also provided.
Claims42
A system for executing a software application comprising a plurality of hardware independent bytecodes, the system comprising:
- a computing system that generates bytecodes;
- a virtual machine remote to the computing system, said virtual machine configured to receive a plurality of authenticated bytecodes from said computing system and to execute said plurality of authenticated bytecodes;
- means for testing said bytecodes against a set of predetermined criteria;
- and
- means for securely distributing said testing means between said virtual machine and said computing system so that bytecode testing completed by said computing system is authenticated by said virtual machine prior to the execution of said authenticated bytecodes by said virtual machine.
A virtual machine for executing a software application comprising a plurality of bytecodes, the virtual machine being executed by a hardware processor, said virtual machine configure to:
- receive an authenticated bytecode, said authenticated bytecode being previously compared against a predetermined set of criteria and having a proof of authenticity;
- determine whether said authenticated bytecode is corrupted based at least in part on said proof of authenticity;
- and
- execute said bytecode.
A system for executing a software application comprising a plurality of bytecodes, the system comprising:
- a computer system configured to verify that a bytecode conforms to a predetermined set of criteria to generate a verified bytecode, said computer system further configured to generate an authenticated bytecode from said verified bytecode;
- and
- a virtual machine remote from said computer system and for executing said authenticated bytecodes, said virtual machine configured to receive said authenticated bytecodes, determine whether said authenticated bytecodes are corrupted and execute said authenticated bytecodes.
A smart card having a microcontroller embedded therein, the smart card comprising:
- a virtual machine being executed by a microcontroller, said virtual machine executing a software application comprising a plurality of previously verified bytecodes, said virtual machine configured to:
- receive an authenticated bytecode, said authenticated bytecode being previously compared against a predetermined set of criteria and having a proof of authenticity;
- determine whether said authenticated bytecode is corrupted based at least in part on said proof of authenticity;
- and
- execute said bytecode.
A method for executing a software application on a virtual machine, the application comprising a plurality of bytecodes, comprising:
- receiving an authenticated bytecode by a virtual machine, said authenticated bytecode being previously compared against a predetermined set of criteria and having a proof of authenticity;
- determining whether said authenticated bytecode is corrupted based at least in part on said proof of authenticity;
- and
- executing said bytecode.
A virtual machine for executing a software application comprising a plurality of bytecodes, the virtual machine being executed by a hardware processor, the virtual machine configured to:
- receive data comprising a plurality of authenticated bytecodes, said authenticated bytecodes being previously compared against a predetermined set of criteria to reduce the amount of data received by said virtual machine;
- determine whether said authenticated bytecodes are corrupted;
- and
- execute said bytecodes.
An apparatus for controlling a device having an external port and a microcontroller configured to execute a virtual machine, the apparatus comprising:
- means for receiving through the external port, code including virtual machine code for use by said virtual machine;
- means for determining whether said code is authentic in response to an indicator of authenticity provided within said code;
- and
- means for, if said code is determined to be authentic,
- omitting verification that said virtual machine code conforms to at least some of a predetermined set of criteria, and
- operating said virtual machine according to said virtual machine code.
An apparatus for programming a device having a microcontroller configured to execute a virtual machine and a port to a communications link from a remote computer connected to the communications link, the apparatus comprising:
- means for verifying at said remote computer that particular virtual machine code for use by said virtual machine conforms to at least some of a predetermined set of criteria;
- means for, if the particular virtual machine code passes verifying,
- generating at least one indicator of authenticity, and
- sending code including the particular virtual machine code and said at least one indicator of authenticity from said remote computer to said device over said communications link.
An apparatus for programming a device having a microcontroller configured to execute a virtual machine and a port to a communications link from a remote computer connected to the communications link, the apparatus comprising:
- means for verifying at said remote computer that particular virtual machine code for use by said virtual machine conforms to at least some of a predetermined set of criteria;
- if said particular virtual machine code passes said verifying, then
- means for generating at least one indicator of authenticity, and
- means for sending code including said particular virtual machine code and said at least one indicator of authenticity from said remote computer to said device over said communications link;
- means for receiving said code through said port at said device;
- means for determining at the device whether said code is authentic in response to the at least one indicator of authenticity;
- and
- means for, if said code is determined to be authentic,
- omitting verification that said particular virtual machine code conforms to said at least same of the predetermined set of criteria, and
- operating the virtual machine according to said particular virtual machine code.
An apparatus for controlling a device having an external port and a microcontroller configured to run a virtual machine, the apparatus comprising:
- means for receiving through the port, code including virtual machine code for use by said virtual machine;
- means for determining whether said code is authentic in response to an indicator of authenticity provided within said code;
- and
- means for, if said code is determined to be authentic,
- omitting processing of staid virtual machine code according to at least some of a predetermined set of processes, and
- operating said device in response to said virtual machine code.
A memory for storing data for access by an application program being executed on a data processing system, comprising:
- a data structure stored in said memory, said data structure including information used by said program to control a device having an external port and a microcontroller configured to execute a virtual machine, said data structure comprising one or more verified bytecodes and a proof of authenticity, said proof of authenticity for determining whether to verify said one or more bytecodes conform to at least some of a predetermined set of criteria prior to operating said device in response to said verified bytecodes.
Dependencies are inferred from the claim text.