Information processing apparatus and computer readable medium for preventing unauthorized operation of a program

An information processing apparatus includes an information acceptance unit, a calculation unit and an encryption unit. The information acceptance unit accepts information relevant to a program. The calculation unit calculates one of a one-way function and a pseudo one-way function using one of the information relevant to the program accepted by the information acceptance unit and a part of the information. The encryption unit performs encryption processing for one of code of the program and the conversion result of the code and a part thereof using one of the calculation result of the calculation unit and a part of the result.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based on and claims priority under 35 USC 119 from Japanese Patent Application No. 2007-242232 filed Sep. 19, 2007.

BACKGROUND

1. Technical Field

This invention relates to an information processing apparatus and a computer readable medium.

2. Related Art

A large number of software obfuscation technologies are proposed to protect a program from unauthorized reverse engineering. The obfuscation is a technology of converting a program into a complicated form for increasing the analysis cost of the program.

SUMMARY

According to an aspect of the invention, an information processing apparatus includes an information acceptance unit, a calculation unit and an encryption unit. The information acceptance unit accepts information relevant to a program. The calculation unit calculates one of a one-way function and a pseudo one-way function using one of the information relevant to the program accepted by the information acceptance unit and a part of the information. The encryption unit performs encryption processing for one of code of the program and the conversion result of the code and a part thereof using one of the calculation result of the calculation unit and a part of the result.

DETAILED DESCRIPTION

An exemplary embodiment of the invention relates to technologies of measures against illegal operation on a program, for example, prevention technology of unauthorized reverse engineering, obfuscation technology, anti-tamper technology, etc.

Referring now to the accompanying drawings, there are shown exemplary embodiments to embody the invention.

FIG. 1is a conceptual module configuration drawing about a configuration example of an obfuscation apparatus of exemplary embodiments of the invention (first exemplary embodiment, second exemplary embodiment).

A module refers to a generally and logically detachable component of software (computer program), hardware, etc. Therefore, the module in the exemplary embodiments unit not only a module in a computer program, but also a module in the hardware configuration. Therefore, the exemplary embodiments also serve as the description of a computer program, a system, and a method. For the convenience of the description, “store”, “cause to store” and its equivalent word are used, however, if the exemplary embodiment is a computer program, the words are used to mean storing in storage or controlling so as to store in storage. Modules are almost in a one-to-one correspondence with functions; however, in implementation, one module may be one program or two or more modules may make up one program or two or more programs may make up one module. Two or more modules may be executed by one computer or one module may be executed in two or more computers in a distributed or parallel environment. One module may contain any other module. In the description to follow, the term “connection” contains not only physical connection, but also logical connection (data transfer, command, reference relationship between data pieces, etc.,).

The system or apparatus is not only provided by connecting a plurality of computers, hardware devices, units, etc., by communication unit such as a network (containing peer-to-peer communication connection), etc., but also implemented as one computer, hardware device, apparatus, etc.

In the description that follows, a password is mainly illustrated as information relevant to a program.

An obfuscation apparatus performs obfuscation processing for a program and has a password acceptance module101, a pseudo random number generation module102, a program acceptance module103, an encryption processing module104, and an execution program addition module105as shown inFIG. 1.

The password acceptance module101is connected to the pseudo random number generation module102and accepts a password and passes the password to the pseudo random number generation module102.

The pseudo random number generation module102is connected to the password acceptance module101and the encryption processing module104and uses the password accepted by the password acceptance module101or a part of the password to calculate a one-way function or a pseudo one-way function, and passes the result to the encryption processing module104.

The calculation of a one-way function or a pseudo one-way function performed by the pseudo random number generation module102can be combined as calculation of a one-way function using a password, calculation of a one-way function using a part of a password, calculation of a pseudo one-way function using a password, calculation of a pseudo one-way function using a part of a password.

The program acceptance module103is connected to the encryption processing module104and accepts a program to which obfuscation processing applies and passes the program to the encryption processing module104.

The encryption processing module104is connected to the pseudo random number generation module102, the program acceptance module103, and the execution program addition module105. The encryption processing module104uses the calculation result of the pseudo random number generation module102or a part of the result to perform encryption processing for code of the program accepted by the program acceptance module103or the conversion result of the code or a part therefor and passes the program undergoing the encryption processing (obfuscation processing) to the execution program addition module105.

The encryption processing performed by the encryption processing module104can be combined as encryption processing for program code using the calculation result, encryption processing for program code using a part of the calculation result, encryption processing for the conversion result of program code using the calculation result, encryption processing for the conversion result of program code using a part of the calculation result, encryption processing for a part of program code using the calculation result, encryption processing for a part of program code using a part of the calculation result, encryption processing for a part of the conversion result of program code using the calculation result, encryption processing for a part of the conversion result of program code using a part of the calculation result.

The program to which obfuscation processing applies is a source code program. The execution program addition module105is connected to the encryption processing module104and executes the program code encrypted by the encryption processing module104or the conversion result of the code or a part thereof.

Program execution of the execution program addition module105can be combined as program execution of code, program execution of the conversion result of code, program execution of a part of code, program execution of a part of the conversion result of code.

FIG. 2is a conceptual module configuration drawing about a configuration example of an execution processing apparatus of the exemplary embodiments of the invention (first exemplary embodiment, second exemplary embodiment).

The execution processing apparatus interprets the program subjected to the obfuscation processing and performs execution processing. It has a password acceptance module201, a pseudo random number generation module202, a decryption module203, and an execution module204as shown inFIG. 2.

The password acceptance module201is connected to the pseudo random number generation module202and accepts a password and passes the password to the pseudo random number generation module202.

The pseudo random number generation module202is connected to the password acceptance module201and the decryption module203and uses the password accepted by the password acceptance module201or a part of the password to calculate a one-way function or a pseudo one-way function, and passes the result to the decryption module203.

The calculation of a one-way function or a pseudo one-way function performed by the pseudo random number generation module202can be combined as calculation of a one-way function using a password, calculation of a one-way function using a part of a password, calculation of a pseudo one-way function using a password, calculation of a pseudo one-way function using a part of a password.

The decryption module203is connected to the pseudo random number generation module202and the execution module204and uses the calculation result of the pseudo random number generation module202or a part of the result to decrypt the encrypted program code or the conversion result of the code or a part thereof, and passes the decryption result to the execution module204.

The decryption performed by the decryption module203can be combined as decryption of encrypted program code using the calculation result, decryption of encrypted program code using a part of the calculation result, decryption of the conversion result of encrypted program code using the calculation result, decryption of the conversion result of encrypted program code using a part of the calculation result, decryption of a part of encrypted program code using the calculation result, decryption of a part of encrypted program code using a part of the calculation result, decryption of a part of the conversion result of encrypted program code using the calculation result, decryption of a part of the conversion result of encrypted program code using a part of the calculation result.

The program decrypted by the decryption module203is a source code program. The execution module204is connected to the decryption module203and executes the program code decrypted by the decryption module203or the conversion result of the code or a part thereof.

Execution of the execution module204can be combined as execution of decrypted program code, execution of the conversion result of decrypted program code, execution of a part of decrypted program code, execution of a part of the conversion result of decrypted program code.

In the first exemplary embodiment, to sell software on a chargeable basis, the case where obfuscation processing is performed for the software for sale for the purpose of preventing an unauthorized user paying no value from illegally using the software, for example, will be discussed.

Next, the use mode of an obfuscation apparatus12of the first exemplary embodiment will be discussed based onFIG. 3.

InFIG. 3, a distributor11is a distributor of a program and users13and14are users of the program. The distributor11and the users13and14have each a personal computer (PC) for creating, distributing, receiving, and executing the program and the processing described below is executed by the obfuscation apparatus12or the PC of the distributor11, etc.

The arrow represents transfer of data and a program. This means that the data or the program indicated by the arrow is passed from the start point of the arrow to the end point.

It is assumed that the obfuscation apparatus12is used by the program distributor11. The distributor11inputs the software program provided for the use of the user and a password described later to the obfuscation apparatus12(S301). It is assumed that the program is described in the text format using a high-level language such as Java (registered trademark) That is, the program is source code and an execution environment in which interpreter programming language, namely, program source code is translated so that the computer can execute the program in succession and instructions are executed in succession is applied.

The obfuscation apparatus12performs obfuscation processing for the received program and outputs an obfuscated program (S302). The obfuscation apparatus12converts the input program so that the function and output of the obfuscated program do not change from those of the input program. However, the code of the obfuscated program is subjected to encryption processing and thus it is difficult to analyze the program code to obtain confidential information of the program.

For the purpose of selling the program, the distributor11distributes the obfuscated program to the authorized user13at a remote location via the Internet (S303). The distributor11and the user13share a 128-bit pseudo random number required for starting the software for sale as a secret password from a third party.

To attempt unauthorized use of the program, the user14obtains the program by fraud by illegal hacking, etc., on the path to distribute the program from the distributor11to the authorized user13(S304).

Next, a procedure of obfuscation executed by the obfuscation apparatus12will be discussed.

The obfuscation apparatus12inputs the program given by the distributor11and a password w shared between the distributor11and the authorized user13and outputs an obfuscated program corresponding to the program.

The first exemplary embodiment assumes that the pre-obfuscated program input to the obfuscation apparatus12is described using a high-level language such as Java. The file size of the program is u bits (u>0) and file data of the program is represented as P.

The obfuscation apparatus12receives 256-bit input according to a procedure shown inFIG. 4, repeatedly uses a hash function for outputting a 256-bit pseudo random number, and generates a 256-bit pseudo random number R0relevant to the password and a u-bit pseudo random number R1. SHA-256, etc., is known as the hash function as described above.

To begin with, at step S41, the obfuscation apparatus12generates a 128-bit pseudo random number rsusing a technique of linear code, etc., for example.

Next, at step S42, the obfuscation apparatus12combines the password with rsto generate a 256-bit pseudo random number r0.

Further, at step S43, the obfuscation apparatus12generates [u/256]+2 pseudo random numbers using the following procedure: First, output of the hash function when r0is input is r1. Further, output of the hash function when r1is input is r2and likewise, output of the hash function when riis input is ri+1. This operation is repeated until generation of r[u/256]+2. Here, for a positive number x, the symbol of [x] represents a positive integer smaller than x and most close to x.

Next, at step S44, the obfuscation apparatus12combines r1to r[u/256]+1to generate a ([u/256]+1)*256-bit pseudo random number r′.

Further, at step S45, the obfuscation apparatus12deletes the (u+1)st bit to the (([u/256]+1)*256)th bit of r′ to generate a u-bit pseudo random number R1. Further, the obfuscation apparatus12sets the pseudo random number r[u/256]+2to R0.

Next, the obfuscation apparatus12generates an obfuscated program Pobfrom the file data P of the original program according to the following procedure:

The configuration of the obfuscated program Pobgenerated by the obfuscation apparatus12complies withFIG. 5.

First, the obfuscation apparatus12calculates exclusive OR P′ for each bit between the file data P of the input program and R1. The obfuscated program Pobretains rs, R0, and P′ in a data storage section M1in the program and further retains subroutine programs p1to p4described below in the program.

The arrow inFIG. 5shows transfer of data from the start point to the end point between the data storage section and the subroutine programs.

The subroutine program p1is a program for requesting the user to enter a password w′ and outputting entered w′.

The subroutine program p2is a program for receiving w′ from the program p1and generating a 256-bit pseudo random number R′0and a u-bit pseudo random number R′1according to the same procedure as calculating of R0and R1using the pseudo random number rsand the password w′ stored in the obfuscated program Pob.

The subroutine program p3is a program for receiving the pseudo random numbers R′0and R′1from the program p2and making a comparison between R′0and R0retained in the data storage section and then if R′0=R0, calculating and outputting exclusive OR P″ for each bit between R′1and P′ retained in the data storage section and if R′0≠R0, terminating execution of the obfuscated program Pob.

The subroutine program p4is a program for receiving P″ from the program p3and executing emulation with the character string given by P″ as an input program.

The obfuscation apparatus12creates the subroutine programs p1to p4in order and then combines the subroutine programs and further adds the data storage section M1retaining rs, R0, and P′ to create the obfuscated program Pob.

The program distributor11distributes the obfuscated program Poboutput by the obfuscation apparatus12to the user13via the Internet.

The user13downloads the received obfuscated program Pobto the PC of the user13and executes the program.

The executed obfuscated program Pobexecutes the internally retained subroutine programs p1to p4in order.

First, the user13is requested to enter a password, and a 256-bit pseudo random number R′0and a u-bit pseudo random number R′1are calculated according to the same procedure as described above using the entered password and the pseudo random number rsstored in the program.

Next, if R′0=R0, exclusive OR P″ for each bit between P′ and R′1is calculated and then emulation is executed with the character string represented by P″ as an input program. If R′0≠R0, execution of the obfuscated program Pobis terminated.

If the password received from the user13matches w, the original file data P is correctly decrypted and the obfuscated program Pobexecutes the same calculation as the original program because of the nature of the exclusive OR. If the password does not match w, the obfuscated program Pobstops the execution in progress and does not present output desired by the user.

Thus, if the user14obtains the program by fraud using illegal hacking, etc., from the distribution path, the user14who does not have the valid password cannot operate the program normally.

In the first exemplary embodiment described above, the password shared between the distributor11of the program and the user13is used to start the obfuscated program Pob, but information required for starting the obfuscated program Pobneed not necessarily be limited to the password. For example, an electronic ticket system, an access right management program installed in the PC of the user13, or the like may be used to pass secret information to the obfuscated program Pob.

In the first exemplary embodiment described above, the original program is encrypted and decrypted using the exclusive OR for each bit, but the method of encrypting and decrypting the program is not necessarily limited to it. For example, the original program may be divided into blocks each having a size of 256 bits and the blocks may be encrypted using RSA encryption, etc., with pseudo random numbers r1to r[u/256]+1as keys in order.

Further, in the first exemplary embodiment described above, when a pseudo random number is generated, the one-way hash function is used, but the method of generating a pseudo random number is not necessarily limited to it. For example, a pseudo random number may be generated using permutation having one way or pseudo one way. A method described in document [H.Wee, ACM/STOC, 2005], etc., is known as a method of forming permutation having one way or pseudo one way.

In the first exemplary embodiment described above, the program to be encrypted and decrypted is described in the text format, but the exemplary embodiment is not necessarily limited to the mode. For example, the program may be coded based on the Godel number and may be encrypted and decrypted. In this case, to execute the obfuscated program, first the encrypted integer code is decrypted and further the decrypted integer is converted into a program format and then emulation is executed. For example, program code may be converted into a different code system from the program code system and the code may be encrypted and decrypted.

To distribute the program to the user13, the Internet need not necessarily be used. For example, an electronic medium of a COD-ROM, etc., or a satellite communications system may be used to distribute the program.

In the first exemplary embodiment described above, the original program is described in the text format using a high-level language such as Java and an emulator is used to execute the decrypted program, but the program description method and the execution method of the decrypted program are not necessarily limited to them. For example, for the purpose of decreasing overhead of the processing time, the program may be given in an execute form after compiled and encryption and decryption processing for obfuscation may be executed for the program in the execute form for circumventing the use of the emulator.

In the first exemplary embodiment described above, the obfuscation processing is performed for the whole of the program. However, for example, to decrease overhead of the processing time and an increase in the file size caused by the obfuscation, the obfuscation processing may be performed only for a part of the program.

A second exemplary embodiment of the invention will be discussed withFIGS. 6 and 7. The second exemplary embodiment relates to an obfuscation apparatus different from that of the first exemplary embodiment.

The basic use mode of an obfuscation apparatus42in the second exemplary embodiment complies withFIG. 6. In the second exemplary embodiment, like the first exemplary embodiment, to sell software on a chargeable basis, the case where obfuscation processing is performed for the software for sale for the purpose of preventing an unauthorized user paying no value from illegally using the software, for example, will be discussed.

In the second exemplary embodiment, unlike the first exemplary embodiment, encryption and decryption processing for obfuscation is realized using symmetric key cryptography of AES, etc.

InFIG. 6, a distributor41is a distributor of a program and users43and45are users of the program. The obfuscation apparatus42is used by the distributor41and a start program44is used by the user43. The distributor41and the users43and45have each a personal computer (PC) for creating, distributing, receiving, and executing the program and the processing described below is executed by the obfuscation apparatus42or the PC of the distributor41, etc.

The arrow represents transfer of data and a program. This means that the data or the program indicated by the arrow is passed from the start point of the arrow to the end point.

It is assumed that the obfuscation apparatus42is used by the program distributor41. The distributor41inputs the software program provided for the use of the user and a secret random number WRdescribed later to the obfuscation apparatus42(S601). It is assumed that the program is described in the text format using a high-level language such as Java.

The obfuscation apparatus42performs obfuscation processing for the received program and outputs an obfuscated program (S602).

The obfuscation apparatus42converts the input program so that the function and output of the obfuscated program do not change from those of the input program. However, the code of the obfuscated program is subjected to encryption processing and thus it is difficult to analyze the program code to obtain confidential information of the program.

For the purpose of selling the program, the distributor41distributes the obfuscated program to the authorized user43at a remote location via the Internet (S603).

It is assumed that the distributor41previously distributes the start program44for starting the obfuscated program to the authorized user43. The start program44internally retains the secret random number WRrequired for starting the obfuscated program. The authorized user43has the start program44and previously installs the start program44in his or her PC. To attempt unauthorized use of the program, the user14who does not have the start program44obtains the program by fraud by hacking, etc., on the path to distribute the program from the distributor41to the authorized user43(S604).

Next, a procedure of obfuscation executed by the obfuscation apparatus42will be discussed.

The obfuscation apparatus42inputs the program given by the distributor41and the secret random number WRand outputs an obfuscated program corresponding to the program. Like the first exemplary embodiment, the second exemplary embodiment assumes that the pre-obfuscated program input to the obfuscation apparatus42is described using a high-level language such as Java. As in the first exemplary embodiment, the file size of the program is u bits (u>0) and file data of the program is represented as P.

The obfuscation apparatus42receives 256-bit input, uses a hash function for outputting a 256-bit pseudo random number, and generates two 128-bit pseudo random numbers R0and R1relevant to the secret random number WR. SHA-256, etc., is known as the hash function as described above.

The obfuscation apparatus42generates a 428-bit pseudo random number rsusing a technique of linear code, etc., for example. Next, the obfuscation apparatus42combines the secret random number WRwith rsto generate a 256-bit pseudo random number r0. Further, output of the hash function when r0is input is r1and the first half 128 bits of the pseudo random number r1are set to R0and the latter half 128 bits are set to R1.

Next, the obfuscation apparatus42of the second exemplary embodiment generates an obfuscated program P′obfrom the file data P of the original program according to the following procedure:

The configuration of the obfuscated program generated by the obfuscation apparatus42complies withFIG. 7.

First, the obfuscation apparatus42encrypts the file data P of the program according to AES with R1as a common key. The data generated by the encryption is represented as PE.

The obfuscated program P′obretains rs, R0, and PEin a data storage section M′1in the program and retains subroutine programs p′1to p′4described below in the program.

The arrow inFIG. 7shows transfer of data from the start point to the end point between the data storage section M′1and the subroutine programs.

The subroutine program p′1is a program for communicating with the start program and making a request for inputting a secret random number W′Rand outputting input W′R.

The subroutine program p′2is a program for receiving W′Rfrom the program p′1and generating 128-bit pseudo random numbers R′0and R′1according to the same procedure as described above using the pseudo random number rsand the password W′Rstored in the obfuscated program P′ob.

The subroutine program p′3is a program for receiving the pseudo random numbers R′0and R′1from the program p′2and making a comparison between R′0and R0retained in the data storage section and then if R′0=R0, decrypting the encrypted data PEretained in the data storage section using AES with R′1as a key and outputting data PDand if R′0≠R0, terminating execution of the obfuscated program P′ob.

The subroutine program p′4is a program for receiving PDfrom the program p′3and executing emulation with the character string given by PDas an input program.

The obfuscation apparatus42creates the subroutine programs p′1to p′4in order and then combines the subroutine programs and further adds the data storage section M′1retaining rs, R0, and PEto create the obfuscated program P′ob.

The program distributor41distributes the obfuscated program P′oboutput by the obfuscation apparatus42to the user43via the Internet.

The user43downloads the received obfuscated program P′obto the PC of the user43.

To execute the obfuscated program P′ob, first the user43executes the start program44. The executed start program44starts the obfuscated program P′ob. The started obfuscated program P′obexecutes the internally retained subroutine programs p′1to p′4in order.

First, the start program44is requested to input a secret random number, and 128-bit pseudo random numbers R′0and R′1are calculated according to the same procedure as described above using the input secret random number and the pseudo random number rsstored in the program.

Next, if R′0=R0, the encrypted data PEis decrypted using AES with R′1as a key to generate data PDand then emulation is executed with the character string given by PDas an input program. If R′0≠R0, execution of the obfuscated program P′obis terminated.

If the secret random number received from the start program44matches WR, the original file data P is correctly decrypted and the obfuscated program P′obexecutes the same calculation as the original program because of the nature of the exclusive OR.

If the secret random number does not match WR, the obfuscated program P′obstops the execution in progress and does not present output desired by the user45. Thus, if the user45obtains the program by fraud using illegal hacking, etc., from the distribution path, the user45who does not have the start program44cannot operate the program normally.

In the second exemplary embodiment described above, the secret random number retained by the start program44is used to start the obfuscated program P′ob, but information required for starting the obfuscated program P′obneed not necessarily be limited to the password. For example, an electronic ticket system, an access right management program installed in the PC of the user, or the like may be used to pass secret information to the obfuscated program P′ob.

In the second exemplary embodiment described above, when a pseudo random number is generated, the hash function is used, but the method of generating a pseudo random number is not necessarily limited to it. For example, a pseudo random number may be generated using permutation having one way or pseudo one way. A method described in document [H. Wee, ACM/STOC, 2005], etc., is known as a method of forming permutation having one way or pseudo one way.

Further, in the second exemplary embodiment described above, encryption and decryption are realized using AES, but the realizing method of encryption and decryption is not limited to it. For example, an encryption system of DES, FEAL, etc., may be used.

In the second exemplary embodiment described above, the program to be encrypted and decrypted is described in the text format, but the exemplary embodiment is not necessarily limited to the mode. For example, the program may be coded based on the Godel number and may be encrypted and decrypted. In this case, to execute the obfuscated program, first the encrypted integer code is decrypted and further the decrypted integer is converted into a program format and then emulation is executed. For example, program code may be converted into a different code system from the program code system and the code may be encrypted and decrypted.

To distribute the program to the user43, the Internet need not necessarily be used. For example, an electronic medium of a CD-ROM, etc., or a satellite communications system may be used to distribute the program.

In the second exemplary embodiment described above, the original program is described in the text format using a high-level language such as Java and an emulator is used to execute the decrypted program, but the program description method and the execution method of the decrypted program are not necessarily limited to them. For example, for the purpose of decreasing overhead of the processing time, the program may be given in an execute form after compiled and encryption and decryption processing for obfuscation may be executed for the program in the execute form for circumventing the use of the emulator.

In the second exemplary embodiment described above, the obfuscation processing is performed for the whole of the program. However, for example, to decrease overhead of the processing time and an increase in the file size caused by the obfuscation, the obfuscation processing may be performed only for a part of the program.

In the exemplary embodiment described above, information concerning the program, such as the password is input of a one-way function or a pseudo one-way function or a part of the input and output of the one-way function or the pseudo one-way function or a part of the output is used for encryption of a part or all of the program code. Accordingly, a sturdy program obfuscation technique is provided.

Since the portion corresponding to the original program before obfuscated is encrypted using output of the one-way function or the pseudo one-way function or a part of the output, if the unauthorized user who does not have the authorized password attempts to execute the obfuscated program, the user cannot operate the program normally.

It is virtually impossible to perform inverse operation to important information concerning the program, such as the password from information concerning the obfuscated program because of the nature of the one-way function or the pseudo one-way function. Thus, unauthorized analysis of the program is prevented and the ownership right to the program is protected.

In the exemplary embodiment described above, to use the emulator for obfuscation, it is not necessary to encrypt a program in an execute form. Thus, the obfuscation apparatus also performs obfuscation processing holding high safety for software described in a language such as Java using readable intermediate code difficult to accomplish with a large number of related art techniques.

When encryption is executed, program code may be converted into a different code system from the program code system for use.

The hardware configuration of a computer for executing a program as the first and second exemplary embodiments is a general computer as shown inFIG. 8; specifically it is a personal computer, a computer that can become a server, or the like. It is made up of a CPU801for executing the programs of the pseudo random number generation module102, the encryption processing module104, the decryption module203, the execution module204, etc., RAM802for storing the programs and data, ROM803storing a program for starting the computer and the like, an HD804of auxiliary storage (for example, a hard disk can be used), an input device806for entering data such as a keyboard or a mouse, an output device805of a CRT, a liquid crystal display, etc., a communication interface807for connecting to a communication network (for example, a network interface card can be used), and a bus808for connecting the components for transferring data. Two or more computers may be connected by a network.

For the part based on the computer program in the exemplary embodiments described above, the computer program of software is read into the system of the hardware configuration and the software and hardware resources work in cooperation, thereby implementing the exemplary embodiments described above.

The hardware configuration shown inFIG. 8shows one configuration example and the exemplary embodiments are not limited to the configuration inFIG. 8and any configuration may be adopted if it makes it possible to execute the modules described in the exemplary embodiments. For example, some modules may be implemented as dedicated hardware (for example, an ASIC, etc.,) and some modules may be included in an external system and may be connected via a communication line and further a plurality of systems shown inFIG. 8may be connected via a communication line so as to operate in cooperation with each other. The system may be built in a home information appliance, a copier, a fax, a scanner, a printer, a multiple function processing machine (an image processing apparatus having functions of any two or more of a scanner, a printer, a copier, a fax, etc.,), etc., in addition to a personal computer.

The described program may be provided as it is stored on a record medium or the program may be provided by communication unit. In this case, for example, the described program may be grasped as the invention of a “computer-readable record medium recording a program.”

The expression “computer-readable record medium recording a program” is used to mean a record medium read by a computer recording a program, used to install and execute a program, to distribute a program, etc.

The record media include “DVD-R, DVD-RW, DVD-RAM, etc.,” of digital versatile disk (DVD) and standard laid down in DVD Forum, “DVD+R, DVD+RW, etc.,” of standard laid down in DVD+RW, read-only memory (CD-ROM), CD recordable (CD-R), CD rewritable (CD-RW), etc., of compact disk (CD), magneto-optical disk, flexible disk (FD), magnetic tape, hard disk, read-only memory (ROM), electrically erasable and programmable read-only memory (EEPROM), flash memory, random access memory (RAM), etc., for example.

The described program or a part thereof may be recorded in any of the described record media for retention, distribution, etc. The described program or a part thereof may be transmitted by communications using a transmission medium such as a wired network used with a local area network, a metropolitan area network (MAN), a wide area network (WAN), the Internet, an intranet, an extranet, etc., or a wireless communication network or a combination thereof, etc., for example, and may be carried over a carrier wave.

Further, the described program may be a part of another program or may be recorded in a record medium together with a different program. It may be recorded as it is divided into a plurality of record media. It may be recorded in any mode if it can be restored, such as compression or encryption.

The exemplary embodiments have the following features. The following information processing apparatus may be understood each as an information processing program or an information processing method.

[A] An information processing apparatus includes an information acceptance unit, a calculation unit and an encryption unit. The information acceptance unit accepts information relevant to a program. The calculation unit calculates a one-way function or a pseudo one-way function using the information relevant to the program accepted by the information acceptance unit or a part of the information. And the encryption unit performs encryption processing for code of the program or the conversion result of the code or a part thereof using the calculation result of the calculation unit or a part of the result.

[B] According to the information processing apparatus of [A], to perform encryption processing by the encryption unit, exclusive OR between the calculation result of the calculation unit or a part of the result and the code of the program or the conversion result of the code or a part thereof is used.

[C] According to the information processing apparatus of [A] or [B], to perform encryption processing by the encryption unit, output of the one-way function or the pseudo one-way function or the conversion result of the output is used as a cipher key.

[D] According to the information processing apparatus of [A], [B] or [C], a password is used as the information relevant to the program.

[E] According to the information processing apparatus of [A], [B], [C] or [D], secret information of a random number sequence assigned to give an execution command of the program is used as the information relevant to the program.

[F] According to the information processing apparatus of [A], [B], [C], [D] or [E], the one-way function or the pseudo one-way function is formed using a hash function.

[G] According to the information processing apparatus of [A], [B], [C], [D], [E] or [F], the one-way function or the pseudo one-way function may be formed using permutation having one way or pseudo one way.

[H] According to the information processing apparatus of [A], [B], [C], [D], [E], [F] or [G], the code of the program undergoing encryption processing or the conversion result of the code is described using coding of the Godel number, etc.

[I] According to the information processing apparatus of [A], [B], [C], [D], [E], [F], [G] or [H], the program code is converted into a different code system from the program code system for use.

[J] An information processing apparatus includes an information acceptance unit, a calculation unit and a decryption unit. The information acceptance unit accepts information relevant to a program. The calculation unit calculates a one-way function or a pseudo one-way function using the information relevant to the program accepted by the information acceptance unit or a part of the information. And a decryption unit decrypts code of the program subjected to encryption processing or the conversion result of the code or a part thereof using the calculation result of the calculation unit or a part of the result.

[K] According to the information processing apparatus of [J], to perform decryption by the decryption unit, exclusive OR between the calculation result of the calculation unit or a part of the result and the code of the program or the conversion result of the code or a part thereof is used.

[L] According to the information processing apparatus of [J] or [K], to perform encryption processing for a part or all of the code of the program, output of the one-way function or the pseudo one-way function or the conversion result of the output is used as a cipher key.

[M] According to the information processing apparatus of [J], [K] or [L], a password is used as the information relevant to the program.

[N] According to the information processing apparatus of [J], [K], [L] or [M], secret information of a random number sequence assigned to give an execution command of the program is used as the information relevant to the program.

[O] According to the information processing apparatus of [J], [K], [L], [M] or [N], the one-way function or the pseudo one-way function is formed using a hash function.

[P] According to the information processing apparatus in [J] [K], [L], [M], [N] or [O], the one-way function or the pseudo one-way function is formed using permutation having one way or pseudo one way.

[Q] According to the information processing apparatus of [J], [K], [L], [M], [N], [O] or [P], the encrypted code of the program or the conversion result of the code is described using coding of the Godel number, etc.

[R] According to the information processing apparatus of [J], [K], [L], [M], [N], [O], [P] or [Q], the program code is converted into a different code system from the program code system for use.

[S] According to the information processing apparatus of [J], [K], [L], [M], [N], [O], [P], [Q] or [R ], the information processing apparatus further includes a decryption unit that decrypts the encrypted object code