WO1999041651A2 - Method for protecting bytecode - Google Patents

Method for protecting bytecode Download PDF

Info

Publication number
WO1999041651A2
WO1999041651A2 PCT/SG1998/000010 SG9800010W WO9941651A2 WO 1999041651 A2 WO1999041651 A2 WO 1999041651A2 SG 9800010 W SG9800010 W SG 9800010W WO 9941651 A2 WO9941651 A2 WO 9941651A2
Authority
WO
WIPO (PCT)
Prior art keywords
bytecode
encrypted
run
accessing
decryption key
Prior art date
Application number
PCT/SG1998/000010
Other languages
French (fr)
Other versions
WO1999041651A3 (en
Inventor
Kuo Chiang Chiang
Original Assignee
National Computer Board, Acting Through Its R & D Division, The Information Technology Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Computer Board, Acting Through Its R & D Division, The Information Technology Institute filed Critical National Computer Board, Acting Through Its R & D Division, The Information Technology Institute
Priority to AU66453/98A priority Critical patent/AU6645398A/en
Priority to GB0009367A priority patent/GB2349250A/en
Priority to PCT/SG1998/000010 priority patent/WO1999041651A2/en
Publication of WO1999041651A2 publication Critical patent/WO1999041651A2/en
Publication of WO1999041651A3 publication Critical patent/WO1999041651A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Abstract

A method, software tool and system for protecting bytecode, which involves encrypting bytecode for an application, providing the encrypted bytecode to a user, executing a code loader to load the encrypted bytecode, access a decryption key, decrypt the encrypted bytecode, and pass the decrypted bytecode to a run-time system, and executing the decrypted bytecode with the run-time system.

Description

METHOD FOR PROTECTING BYTECODE
Field of the Invention
The present invention relates to a method for protecting compiled software application code, and a code protection system.
Background of Invention
There are many programming languages available that compile to platform independent bytecode, such as Elisp and Java, the latter being described in references A and B recited below. One of the greatest criticisms of such programming languages is that the bytecode, being defined at a high level, can easily be reverse- engineered into the source language. The problem is compounded with the wide availability of bytecode decompilers on the Internet, as described in reference C. It means that any novice computer user can produce readable source code from compiled bytecode. While the output of bytecode decompilers may not be the same as the original source code, it is nevertheless sufficiently close to allow any programmer to understand and make unauthorised use of the output.
The current most commonly used protection against bytecode decompilers is a bytecode obfuscator, as described in reference D. A bytecode obfuscator is a tool that goes through an application and renames all the symbolic information inside, such as the class names, method names and field names. Bytecode obfuscation does not protect the bytecode from being decompiled, but it makes the decompiled code a lot more difficult to understand.
Some bytecode obfuscators protect further by adding corrupted information into the application files to confuse the bytecode decompilers. This technique is frequently applied at the expense of violating the standard bytecode file format specification, which may render the resulting bytecode incompatible with certain implementations of the run-time system. This technique is also limited, due to the availability of free tools on the Internet that can remove the corrupted information, as described in reference E.
Certain other techniques for protecting bytecode have been discussed in reference F. These other techniques, however, fall short in that they either require the main application logic to reside on a separate machine, or they require the developer not to use bytecode for sensitive application logic.
Summary of the Invention
In accordance with the present invention there is provided a method of protecting bytecode, including: encrypting bytecode for an application; providing the encrypted bytecode to a user; executing a code loader to load the encrypted bytecode, access a decryption key, decrypt the encrypted bytecode, and pass the decrypted bytecode to a run-time system; and executing said decrypted bytecode with said run-time system.
The present invention also provides a software tool stored on a computer readable storage medium, including: means for accessing bytecode; means for determining if the bytecode is encrypted; means for accessing a decryption key; means for decrypting encrypted bytecode using the decryption key; and means for passing bytecode to a run-time system.
The present invention further provides a software protection system, including: means for accessing bytecode; means for determining if the bytecode is encrypted; means for accessing a decryption key; means for decrypting encrypted bytecode using the decryption key; and means for passing bytecode to a run-time system.
The present invention also provides a method for execution by a computer system, including: accessing bytecode; determining if the bytecode is encrypted; accessing a decryption key; decrypting encrypted bytecode using the decryption key; and passing bytecode to a run-time system.
Brief Description of the Drawing
A preferred embodiment of the present invention is hereinafter described, by way of example only, with reference to the accompanying drawing, wherein:
Figure 1 is a flow diagram of a process executed by a code loader of the preferred embodiment.
Detailed Description of the Preferred Embodiment
A software protection system of the preferred embodiment uses a software tool, hereinafter referred to as deCaf™, which includes an encryption module, a code loader and a driver program. The system comprises at least one computer having electronic memory used for storing, reading and executing the software tool, and a run-time system for executing bytecode of a software application. The system normally comprises a server computer and a user computer, where the tool is stored on the server with application bytecode, and the bytecode when encrypted is transmitted to the user's computer with the code loader and the driver program for storage and execution on the user's computer. The code loader and the drive program can be transmitted separately and also can be prestored on a user's computer. The encryption module is used to encrypt bytecode, which can then only be decrypted by the code loader. The driver program installs the code loader for a run-time system of a user's machine, instructs the code loader to decrypt the encrypted bytecode, and then causes the decrypted code to be executed on the user's machine. By applying encryption to bytecode, deCaf ™ is able to prevent bytecode decompilers from reading the bytecode. The decompilers are unable to decompile the encrypted bytecode without first decrypting it. To understand the encrypted bytecode format, normally this will require modification of a run-time system, but deCaf™ does not require any such modification, as it is able to rely on the code loader which can be applied in any run- time system that supports the installation of a code loader by the software application to be executed. In particular, deCaf™ is able to encrypt Java software applications and then execute them on an unmodified Java run-time system, being the Java Virtual Machine.
The encryption module when executed, normally by a transmitting server, acts on the compiled bytecode of a software application and applies an encryption algorithm to produce decrypted bytecode. Any secured encryption algorithm can be used, although one which enhances the execution speed of the encryption module is preferred.
In any encryption algorithm, there is an encryption key as well as a decryption key. In an asymmetric encryption algorithm, the encryption and decryption keys are different. While in a symmetric encryption algorithm, both keys are the same. Regardless of which is used, the decryption key is distributed to the application user so the encrypted bytecode can be decrypted later and executed.
This key distribution is done in one of the following ways:
1. Using a trusted public-private key authentication infrastructure. In the presence of a trusted public-private key authentication infrastructure, the user's public key is used to encrypt the application bytecode. Then, the private key can decrypt the bytecode on receipt. As such, no one else other than a legitimate user can run the software. No actual key distribution is required since the user uses his own private key for decryption of the software.
2. Embedding the decryption key in the encrypted bytecode. In the event that an infrastructure to support key distribution is not available, the decryption key can be hidden within the encrypted bytecode. The code loader will know this hidden location, so that the key can be extracted at run-time to decrypt the bytecode. To avoid disclosing the secret location of the key within the encrypted bytecode, the location can be made random by having it dependent on a relatively random data pattern, such as the message digest of the application code. The customised code loader will normally be provided together with the encrypted bytecode. As such, this method of distributing the decryption key is not completely secure, since a hacker could go through the code of the code loader to try and determine the location of the decryption key. Nevertheless, the task of doing so is labourious enough to deter most hackers. Thus this key distribution method is still useful when protecting less sensitive application bytecode.
3. Distributing the decryption key separately. Instead of embedding the decryption key within the encrypted application, the decryption key is passed separately to the user. The encrypted application bytecode is distributed to the user who is then required to register his particulars before the decryption key is passed. This key distribution method has the same weakness as the former, in that a hacker could go through the labourious task of attempting to understand the code loader, and determine how it applies the decryption key. As such, its usefulness is also confined to protecting less sensitive application bytecode. However, this method helps keep track of legitimate users, much like the serial number required to install most commercial software. If an illegal copy of encrypted software is received, it can be traced back to its original legitimate user. In some run-time environments, such as Java's, application software running in the environment is given the ability to install its own code loader. A code loader (known as the ClassLoader in Java) is a small piece of software that is responsible for loading the application code from a disk, a network or any other storage medium. DeCaf™ exploits this feature by providing it's own code loader to perform code decryption at run-time, hence omitting the need to modify the run-time system.
The code loader's role is to find and load the correct application bytecode, and then pass it to the run-time system. To provide a code loader that can understand the encrypted bytecode, appropriate decryption routines are inserted and executed between the loading of the application code and handing it over to the run-time system. This ensures that the run-time system always receives bytecode it can execute.
The code loader of deCaf™, as shown in Figure 1 , first receives a request to load a bytecode file, at step 2. When the run-time system needs to load a bytecode file, it passes the request to the code loader for execution. The code loader then looks for the bytecode file, at step 4. The bytecode file can reside anywhere in the local disk, or even in a network. In most run-time systems, the list of places to look for the bytecode is given by a predefined variable which the user can change. In Java, this is given by the CLASS PATH environment variable. Once the application bytecode file is loaded, the custom code loader determines whether it is in encrypted form, at step 6. In deCaf™ a predefined constant of OxDECAFO is assigned to all encrypted bytecode. The loader determines the existence of this constant in order to decide whether the bytecode is encrypted or not. If the loader determines that the bytecode is encrypted, operation proceeds to step 8, whereas otherwise operation proceeds to step 12. At step 8, the code loader loads the decryption key. Loading the decryption key will depend on how the decryption key is distributed. In a current implementation of deCaf™, the decryption key is encoded in the encrypted bytecode. The loader accesses this information, and loads the decryption key accordingly. Once the decryption key is loaded, the custom code loader executes the required decryption algorithm on the encrypted code, at step 10. As mentioned earlier, any secure encryption algorithm can be chosen. One particular encryption algorithm can be chosen, or the type of encryption algorithm used can be encoded in the encrypted bytecode. In the latter case, the code loader looks up the type of encryption algorithm used, and applies the corresponding decryption algorithm. Once the bytecode has been decrypted, or if it is not encrypted in the first place, it is passed directly to the run-time system, at step 12 by the code loader.
The driver program of deCaf ™ is used to tie the components of the tool together and run the encrypted application. The driver program executes the following steps:
1. Install the code loader in the run-time system;
2. Instruct the code loader to load the encrypted application bytecode; and
3. Run the decrypted application.
All the above tasks are dependent on the run-time system to be used. To install the code loader in Java, a code loader object of deCaf™ is initiated. This is followed by extracting out the encrypted application bytecode, and passing it to the loadClass procedure of the code loader. Finally, the Java reflection API is used to invoke the main procedure of the decrypted application.
Many modifications will be apparent to those skilled in the art without departing from the scope of the present invention as herein described with reference to the accompanying drawing.
References
A. James Gosling, Bill Joy, Guy Steele, The Java Language Specification, ISBN: 0-201- 63451-1 , Addison Wesley.
B. Tim Lindholm, Frank Yellin, The Java Virtual Machine Specification, ISBN: 0-201-63452- X, Addison Wesley.
C. Decompilers available on the Internet: - Mocha, http://www.brouhahn.com/~eric/computers/mocha.html
WingDis, http://www.winqsoft.com/windis.shtml
Jasmine, http://www.members.tripod.com/~SourceTec/
DejaVu, http://ww.isq.de/OEW/Java
Jad, http://web.unicom.com.cv/~kpd/iad.html
D. Qusay H. Mahmoud, Protect your bytecodes from reverse engineering/decompilation. In Java World, http://www.iavaworld.com/iavatips/iw~iavatip221.html.
E. Unobfuscator example: Zelix KlassMaster, http://www.zelix.com/klassmaster/index.html.
F. Scott Oaks. Protecting your bytecode. In Java Report, pgs. 86-88, November 1997.

Claims

1. A method of protecting bytecode, including: encrypting bytecode for an application; providing the encrypted bytecode to a user; executing a code loader to load the encrypted bytecode, access a decryption key, decrypt the encrypted bytecode, and pass the decrypted bytecode to a run-time system; and executing said decrypted bytecode with said run-time system.
2. A method as claimed in claim 1 , wherein the decryption key is encoded in the encrypted bytecode.
3. A method as claimed in claim 1 , wherein the decryption key is a private key of a user.
4. A method as claimed in claim 1 , including registering particulars of the user to obtain said decryption key.
5. A method as claimed in claim 1 , including executing a driver program to install the code loader for the run-time system, and cause the code loader to access the encrypted bytecode.
6. A method as claimed in claim 5, including providing the code loader and driver program with the encrypted bytecode.
7. A method as claimed in claim 1 , including providing the code loader with the encrypted bytecode.
8. A method as claimed in claim 6 or 7, wherein said providing step comprises transmitting from a network computer to a computer of the user.
9. A software tool stored on a computer readable storage medium, including: means for accessing bytecode; means for determining if the bytecode is encrypted; means for accessing a decryption key; 5 means for decrypting encrypted bytecode using the decryption key; and means for passing bytecode to a run-time system.
10. A software tool as claimed in claim 9, wherein the determining means relies on predetermined data stored in encrypted bytecode.
10
11. A software tool as claimed in claim 9, wherein the key accessing means accesses data to determine the storage location of the decryption key.
12. A software tool as claimed in claim 11, wherein the key accessing means 15 accesses data to determine the decryption algorithm to be used by the decrypting means.
13. A software tool as claimed in any one of claims 9 to 12, wherein a code loader comprises all of said means, and the tool further includes:
20 means for installing the code loader in the run-time system; means for causing the code loader to access the bytecode; and means for causing execution of the bytecode when passed to the run-time system.
25 14. A software tool as claimed in claim 12, including means for encrypting bytecode.
15. A software protection system, including: means for accessing bytecode; 30 means for determining if the bytecode is encrypted; means for accessing a decryption key; means for decrypting encrypted bytecode using the decryption key; and means for passing bytecode to a run-time system.
16. A software protection system as claimed in claim 15, wherein the determining 5 means relies on predetermined data stored in encrypted bytecode.
17. A software protection system as claimed in claim 15, wherein the key accessing means accesses data to determine the storage location of the decryption key.
10 18. A software protection system as claimed in claim 17, wherein the key accessing means accesses data to determine the decryption algorithm to be used by the decrypting means.
19. A software protection system as claimed in any one of claims 15 to 18, wherein 15 a code loader comprises all of said means, and the system further includes: means for installing the code loader in the run-time system; means for causing the code loader to access the bytecode; and means for causing execution of the bytecode when passed to the run-time system. 0
20. A software protection system as claimed in claim 19, including means for encrypting bytecode.
21. A method for execution by a computer system, including: 5 accessing bytecode; determining if the bytecode is encrypted; accessing a decryption key; decrypting encrypted bytecode using the decryption key; and passing bytecode to a run-time system. 0
22. A method as claimed in claim 21 , wherein the determining step is executed by searching for predetermined data stored in encrypted bytecode.
23. A method as claimed in claim 21 , wherein the key accessing step includes accessing data to determine the storage location of the decryption key.
5
24. A method as claimed in claim 23, wherein the key accessing step includes accessing data to determine the decryption algorithm to be used by the decrypting means.
10 25. A method as claimed in any one of claims 21 to 24, wherein a code loader executes the accessing, determining, decrypting and passing steps, and the method further includes: installing the code loader for the run-time system; causing the code loader to access the bytecode; and 15 causing execution of the bytecode when passed to the run-time system.
26. A method as claimed in claim 25, including encrypting bytecode.
PCT/SG1998/000010 1998-02-13 1998-02-13 Method for protecting bytecode WO1999041651A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
AU66453/98A AU6645398A (en) 1998-02-13 1998-02-13 Method for protecting bytecode
GB0009367A GB2349250A (en) 1998-02-13 1998-02-13 Method for protecting bytecode
PCT/SG1998/000010 WO1999041651A2 (en) 1998-02-13 1998-02-13 Method for protecting bytecode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SG1998/000010 WO1999041651A2 (en) 1998-02-13 1998-02-13 Method for protecting bytecode

Publications (2)

Publication Number Publication Date
WO1999041651A2 true WO1999041651A2 (en) 1999-08-19
WO1999041651A3 WO1999041651A3 (en) 2002-06-20

Family

ID=20429836

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/SG1998/000010 WO1999041651A2 (en) 1998-02-13 1998-02-13 Method for protecting bytecode

Country Status (3)

Country Link
AU (1) AU6645398A (en)
GB (1) GB2349250A (en)
WO (1) WO1999041651A2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002031648A2 (en) 2000-10-11 2002-04-18 Sealedmedia Limited Methods of providing java tamperproofing
WO2002071195A1 (en) * 2001-02-05 2002-09-12 Hmd-Software Ag Method and device for transmitting programme codes via the internet
GB2343022B (en) * 1998-10-19 2003-01-08 Ibm Encrypting of java methods
US6681212B1 (en) 1999-04-23 2004-01-20 Nianning Zeng Internet-based automated system and a method for software copyright protection and sales
WO2004098121A2 (en) * 2003-05-02 2004-11-11 Bitarts Limited Delivering a software component
WO2006063876A1 (en) * 2004-12-17 2006-06-22 Siemens Aktiengesellschaft Method and device for encoding and for carrying out a software library
CN101957903A (en) * 2010-09-13 2011-01-26 中兴通讯股份有限公司 Method and device for protecting class files
EP3188063A1 (en) * 2015-12-29 2017-07-05 GuardSquare NV A build system
CN111131281A (en) * 2019-12-30 2020-05-08 北京永新视博数字电视技术有限公司 Message transmission method, device and system and protection code updating method and device thereof
US11550883B2 (en) 2020-09-08 2023-01-10 Assured Information Security, Inc. Code protection

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2385951A (en) 2001-09-21 2003-09-03 Sun Microsystems Inc Data encryption and decryption

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0115395A2 (en) * 1983-01-26 1984-08-08 International Computers Limited Computer processor system with software protection
US4562305A (en) * 1982-12-22 1985-12-31 International Business Machines Corporation Software cryptographic apparatus and method
US4740890A (en) * 1983-12-22 1988-04-26 Software Concepts, Inc. Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media
EP0359220A2 (en) * 1988-09-16 1990-03-21 Wayne W. Chou Method and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware device
EP0515739A1 (en) * 1991-05-31 1992-12-02 International Business Machines Corporation Program code generator
EP0555715A1 (en) * 1992-02-12 1993-08-18 International Business Machines Corporation User defined cryptographic function facility
US5259029A (en) * 1990-05-16 1993-11-02 Duncan Jr F Jeff Decoding device for computer software protection
US5522073A (en) * 1993-11-22 1996-05-28 Hewlett-Packard Company Method and apparatus for automating and controlling execution of software tools and tool sets via when/then relationships
US5544244A (en) * 1993-10-28 1996-08-06 Nec Corporation Method for protecting an enciphered computer object code against cryptanalysis
EP0740250A2 (en) * 1995-04-24 1996-10-30 Motorola, Inc. Apparatus for dynamically reading and writing multiple object code formats through use of objective code readers and writers
US5604803A (en) * 1994-06-03 1997-02-18 Sun Microsystems, Inc. Method and apparatus for secure remote authentication in a public network

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562305A (en) * 1982-12-22 1985-12-31 International Business Machines Corporation Software cryptographic apparatus and method
EP0115395A2 (en) * 1983-01-26 1984-08-08 International Computers Limited Computer processor system with software protection
US4740890A (en) * 1983-12-22 1988-04-26 Software Concepts, Inc. Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media
EP0359220A2 (en) * 1988-09-16 1990-03-21 Wayne W. Chou Method and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware device
US5259029A (en) * 1990-05-16 1993-11-02 Duncan Jr F Jeff Decoding device for computer software protection
EP0515739A1 (en) * 1991-05-31 1992-12-02 International Business Machines Corporation Program code generator
EP0555715A1 (en) * 1992-02-12 1993-08-18 International Business Machines Corporation User defined cryptographic function facility
US5544244A (en) * 1993-10-28 1996-08-06 Nec Corporation Method for protecting an enciphered computer object code against cryptanalysis
US5522073A (en) * 1993-11-22 1996-05-28 Hewlett-Packard Company Method and apparatus for automating and controlling execution of software tools and tool sets via when/then relationships
US5604803A (en) * 1994-06-03 1997-02-18 Sun Microsystems, Inc. Method and apparatus for secure remote authentication in a public network
EP0740250A2 (en) * 1995-04-24 1996-10-30 Motorola, Inc. Apparatus for dynamically reading and writing multiple object code formats through use of objective code readers and writers

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2343022B (en) * 1998-10-19 2003-01-08 Ibm Encrypting of java methods
US6681212B1 (en) 1999-04-23 2004-01-20 Nianning Zeng Internet-based automated system and a method for software copyright protection and sales
EP2362324A3 (en) * 2000-10-11 2011-10-05 Sealedmedia Limited Methods of providing java tamperproofing
WO2002031648A2 (en) 2000-10-11 2002-04-18 Sealedmedia Limited Methods of providing java tamperproofing
EP1325411B1 (en) * 2000-10-11 2018-03-07 Oracle Corporation UK Limited Methods of providing java tamperproofing
WO2002071195A1 (en) * 2001-02-05 2002-09-12 Hmd-Software Ag Method and device for transmitting programme codes via the internet
WO2004098121A2 (en) * 2003-05-02 2004-11-11 Bitarts Limited Delivering a software component
WO2004098121A3 (en) * 2003-05-02 2004-12-29 Bitarts Ltd Delivering a software component
WO2006063876A1 (en) * 2004-12-17 2006-06-22 Siemens Aktiengesellschaft Method and device for encoding and for carrying out a software library
CN101957903A (en) * 2010-09-13 2011-01-26 中兴通讯股份有限公司 Method and device for protecting class files
EP3188063A1 (en) * 2015-12-29 2017-07-05 GuardSquare NV A build system
WO2017114931A1 (en) * 2015-12-29 2017-07-06 Guardsquare Nv A build system with plugins for encryption of application components
US10713339B2 (en) 2015-12-29 2020-07-14 Guardsquare Nv Build system with plugins for encryption of application components
CN111131281A (en) * 2019-12-30 2020-05-08 北京永新视博数字电视技术有限公司 Message transmission method, device and system and protection code updating method and device thereof
US11550883B2 (en) 2020-09-08 2023-01-10 Assured Information Security, Inc. Code protection

Also Published As

Publication number Publication date
GB2349250A (en) 2000-10-25
WO1999041651A3 (en) 2002-06-20
GB0009367D0 (en) 2000-05-31
AU6645398A (en) 1999-08-30

Similar Documents

Publication Publication Date Title
EP2362324B1 (en) Methods of providing java tamperproofing
JP4702957B2 (en) Tamper resistant virtual machine
US7181603B2 (en) Method of secure function loading
US7650493B2 (en) System and method for integrating secure and non-secure software objects
AU717615B2 (en) System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US7313824B1 (en) Method for protecting digital content from unauthorized use by automatically and dynamically integrating a content-protection agent
US7725614B2 (en) Portable mass storage device with virtual machine activation
EP1220079A2 (en) Method for sharing encrypted data region among processes in tamper resistant processor
US20110167259A1 (en) Software license enforcement
US20030194094A1 (en) System and method for secure storage data using a key
US8843766B2 (en) Method and system for protecting against access to a machine code of a device
JP2004502233A (en) System and method for providing security to components using a shared name
US20080126705A1 (en) Methods Used In A Portable Mass Storage Device With Virtual Machine Activation
US8284942B2 (en) Persisting private/public key pairs in password-encrypted files for transportation to local cryptographic store
CN103971034A (en) Method and device for protecting Java software
WO1999041651A2 (en) Method for protecting bytecode
KR20090048581A (en) Portable mass storage with virtual machine activation
KR101405915B1 (en) Method for writing data by encryption and reading the data thereof
US20240129110A1 (en) System and method of application resource binding
JP2005227981A (en) Software distributing device, terminal equipment, and install program
KR20020051612A (en) Prevention Of Illegal Software Usage Using Install Key Management Server

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AU CA CN GB IL JP KR NZ SG US

ENP Entry into the national phase in:

Ref country code: GB

Ref document number: 200009367

Kind code of ref document: A

Format of ref document f/p: F

WWE Wipo information: entry into national phase

Ref document number: 09582724

Country of ref document: US

NENP Non-entry into the national phase in:

Ref country code: KR

NENP Non-entry into the national phase in:

Ref country code: CA

AK Designated states

Kind code of ref document: A3

Designated state(s): AU CA CN GB IL JP KR NZ SG US