WO2006016407A1 - Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 - Google Patents

Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 Download PDF

Info

Publication number
WO2006016407A1
WO2006016407A1 PCT/JP2004/011590 JP2004011590W WO2006016407A1 WO 2006016407 A1 WO2006016407 A1 WO 2006016407A1 JP 2004011590 W JP2004011590 W JP 2004011590W WO 2006016407 A1 WO2006016407 A1 WO 2006016407A1
Authority
WO
WIPO (PCT)
Prior art keywords
jar file
program
identity confirmation
information
confirmation information
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2004/011590
Other languages
English (en)
French (fr)
Inventor
Hisashi Kojima
Yuko Nakayama
Ikuya Morikawa
Yuji Yamaoka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006531090A priority Critical patent/JP4745238B2/ja
Priority to PCT/JP2004/011590 priority patent/WO2006016407A1/ja
Priority to AU2004322201A priority patent/AU2004322201B2/en
Priority to EP04771565A priority patent/EP1783580A4/en
Publication of WO2006016407A1 publication Critical patent/WO2006016407A1/ja
Priority to US11/651,801 priority patent/US8479005B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Definitions

  • Java applet JAR file generation method, JAR file generation program, JAR file generation device
  • the present invention relates to a Java ablet, and more particularly to a technique for preventing abuse of a Java ablet.
  • ava bullets (hereinafter referred to as “abbrets”) downloaded via telecommunication lines, etc. are implemented in web applications (web browsers, etc.) on client terminals, etc., and executed by RE (Java Runtime Environment), and the client terminal Technology is provided for processing in
  • FIG. 21 is a conceptual diagram for explaining normal processing when an applet without an electronic signature is executed.
  • the case where an attacker tries to gain unauthorized access to the protected system resources (data, personal information, etc.) 13 in the client terminal C by using an unauthorized JAR file evil.jar91 is shown.
  • the JAR file evil.jar91 is not digitally signed.
  • the Web browser 11 requests the applet activation unit 12a of JRE 12 to activate the unauthorized applet (S72).
  • the applet activation unit 12a loads the JAR file evil.jar91 based on the request (S73).
  • the illegal JAR file evil.jar91 is not digitally signed to guarantee its origin. It is considered unreliable because it is not. Therefore, an access request (S74) to the protected system resource 13 by an unauthorized JAR file evil.jar91 (an unauthorized applet) is prohibited by the security manager 12b (S75).
  • the protected system resource 13 cannot be accessed using an unguaranteed applet, and the user may be damaged. Absent.
  • the access restriction as described above may be an obstacle to developing a Web application.
  • the user may need to apply an electronic signature to an application form using information stored in the local device at the client terminal C.
  • access to the local device on the client terminal side using an abbret is usually prohibited, and the system as described above cannot be realized.
  • FIG. 22 is a conceptual diagram for explaining processing when a signed ablet is executed.
  • the case where it is deployed with foo.jar93 and bar.jar92 force S and HTM L file “goodj.html” as a signed applet is shown.
  • what is surrounded by a double-lined frame means that a signature has been applied.
  • the Web browser 11 requests the ablet activation unit 12a of the JRE 12 to activate the ablet (S82). Based on the request, the ablet starting unit 12a loads the JAR files bar.jar92 and foo.jar93 (383;).
  • the applet activation unit 12a verifies the contents of the signature. Then, a dialog for allowing the user to confirm the verification result is displayed (S84). If the user confirms the verification result using the dialog and determines that there is no problem, the security manager 12b considers the JAR files bar.jar92 and foo.jar93 to be reliable.
  • a signed ablet is composed of reusable parts such as a signed JAR file. Therefore, the attacker can combine these signed JAR files with the attacker's own parts (incorrect 3 ⁇ 4 [AR file) and call the methods of the classes included in the signed JAR file or modify the fields. It is possible to attempt to use the signed JAR file for an illegal purpose different from the original intention of the person who created the signed JAR file (so-called illegal reconstruction attack).
  • FIG. 23 is a diagram for explaining an example of the unauthorized reconstruction attack as described above.
  • the attacker obtains the JAR file foo.j ar 93 with an electronic signature, illegally reconfigures the JAR file with the electronic signature and the malicious 3 ⁇ 4 [AR file evil.jar91, It shows the case of deploying along with the HTML finale “evil2.html”.
  • the web browser 11 requests the applet activation unit 12a of the JRE 12 to activate the applet based on the applet tag included in “evil2.html” (S92).
  • the applet activation unit 12a loads the JAR files evil.jar91 and foo.jar93 based on the request (S93).
  • the ablet activation unit 12a verifies the contents of the signature and confirms the verification result to the user.
  • a dialog for making it appear is displayed (S94). If the user confirms the verification result in the dialog and determines that there is no problem, the security manager 12b considers the JAR file foo.jar93 to be reliable. On the other hand, it is regarded as an unreliable copy of the signature file, the JAR file evil.jar91.
  • the AR file foo.jar93 which is considered to be reliable, can perform operations that are normally prohibited for applets.
  • an access request is issued to the protected system resource 13 using evil.jar91 force o.jar93 (S95), and the protected system resource 13 may be accessed via foo.jar93.
  • S95 evil.jar91 force o.jar93
  • S96 foo.jar93
  • Unauthorized reconfiguration as described above may involve misuse of "privileged code", which is a mechanism for providing a function that a trusted program has to its own responsibility to an untrusted program, or the main logic.
  • privileged code is a mechanism for providing a function that a trusted program has to its own responsibility to an untrusted program, or the main logic.
  • the present invention has been made to solve the above-described problems, and an object thereof is to easily and reliably prevent an electronic signature and ava bullets from being illegally reused. Means for solving the problem
  • the Java applet according to the present invention is a Java applet that causes a computer to execute a plurality of predetermined Java applet programs, and the ⁇ ava applet is used to guarantee the origin.
  • the deployment information is an electronic signature and is based on the identity confirmation information for detecting falsification of the deployment information that defines the location of each of the plurality of predetermined Java ablet programs.
  • the identity confirmation information includes a hash value of the deployment information or a part or all of the data of the deployment information.
  • the identity confirmation information includes a hash value of each of the plurality of predetermined Java applet programs or the plurality of locations.
  • the alteration detection step detects alteration of each of the plurality of predetermined Java tablet programs based on the identity confirmation information. It can also be configured.
  • the deployment information is confirmed.
  • Multiple predetermined Java applet programs can be loaded, and this ava applet and other predetermined Java applet programs have been altered to deviate from the intention of the author of the ava applet. This prevents the tablet program from being loaded.
  • the method call processing based on the call request is performed.
  • the method further includes a delegation step of delegating to a method corresponding to the called method in the plurality of predetermined Java applet programs.
  • Java A method call process based on a method call request using a script can be performed for these predetermined Java applet programs.
  • the applet stub set for the ava applet is used for a plurality of predetermined Java applet programs loaded in the loading step. It is assumed that the configuration has an applet stub setting step.
  • the plurality of predetermined Java applet programs can be normally operated.
  • a JAR file generation method is a Java client that causes a computer to execute a plurality of predetermined Java applet programs.
  • the identity confirmation information for detecting falsification of the deployment information is defined as a class file in a predetermined package
  • the electronic signature is applied to the current AR file
  • the “same-package-same-signer” mechanism can prevent unauthorized alteration of the identity verification information.
  • the identity confirmation information preferably includes a hash value of the deployment information or a part or all of the data of the deployment information.
  • the front SJAR file generation step includes the deployment information, the identity confirmation information, and the information based on the deployment information and the identity confirmation information.
  • a JAR file including a loading program for loading a plurality of predetermined Java ablet programs and a booting program for starting the loading program, the identity confirmation information, the loading program and the booting It can also be configured to generate a JAR file in which the program for the program is defined as a class file in the same package.
  • the loading program for loading a plurality of predetermined Java applet programs into the JAR file generated in the JAR file generation step and the starting for starting the loading program By including the program for
  • the front SJAR file generation step includes the plurality of the predetermined Java ablet programs, the deployment information, and the identity confirmation information.
  • a JAR file including the predetermined Java ablet program, the deployment information and the identity confirmation information, and the JAR file in which the identity confirmation information is defined as a class file in the prescribed package may be generated. preferable.
  • the JAR file generated in the JAR file generation step includes the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information. Thanks To the terminal that downloads the AR file, multiple predetermined Java applet programs can be safely loaded simply by downloading this JAR file, without having to load multiple predetermined Java applet programs from the outside.
  • the identity confirmation information includes a hash value of each of the plurality of predetermined Java ablet programs or data of each of the plurality of predetermined Java ablet programs. It can be configured to include part or all.
  • the front SJAR file generation step is based on the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information. , Launching the plurality of predetermined Java ablet programs, the distribution information, the identity confirmation information, the loading program for loading the plurality of predetermined Java ablet programs, and the loading program It is desirable to generate a JAR file including a startup program for defining the identity confirmation information, the loading program, and the startup program as class files in the same package. Les.
  • a JAR file generation program is a JAR file generation program that causes a computer to execute a process of generating a JAR file including a Java applet that causes a computer to execute a plurality of predetermined Java applet programs.
  • An identity confirmation information generating step for generating identity confirmation information for detecting falsification of the deployment information based on the deployment information that defines the location of each of the plurality of predetermined Java ablet programs; Based on the deployment information and the identity confirmation information, the JAR file includes the deployment information and the identity confirmation information, and the identity confirmation information is defined as a class file in a predetermined package.
  • the JAR file generation step to generate the JAR file The shall be the feature.
  • the identity confirmation information preferably includes a hash value of the deployment information or a part or all of the data of the deployment information.
  • the front SJAR finale generation step includes the deployment information, the identity confirmation information, the information based on the deployment information and the identity confirmation information, A JAR file including a loading program for loading a plurality of predetermined Java ablet programs and a starting program for starting the loading program, the identity confirmation information, the loading program and
  • the startup program may be configured to generate a JAR file that is defined as a class file in the same package.
  • the predecessor file generation step is based on the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information. It is desirable to generate a JAR file that includes a Java ablet program, the deployment information, and identity confirmation information, and the identity confirmation information is defined as a class file in a predetermined package.
  • the identity confirmation information may be a hash value or a hash value of each of the plurality of predetermined Java ablet programs.
  • the data of each of the plurality of predetermined Java ablet programs is included.
  • the front file generation step includes a plurality of the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information.
  • a JAR containing a predetermined Java ablet program, the deployment information, identity confirmation information, a loading program for loading the plurality of predetermined Java ablet programs, and a starting program for starting the loading program A JAR file in which the identity confirmation information, the loading program, and the startup program are defined as class files in the same package may be generated.
  • the JAR file generation apparatus is a JAR file generation apparatus that generates a JAR file including a Java applet that causes a computer to execute a plurality of predetermined Java applet programs. Based on the deployment information that defines the location of each Java ablet program, an identity confirmation information generation unit that generates identity confirmation information, and the deployment information based on the deployment information and the identity confirmation information And a JAR file that includes identity verification information, and a JAR file generation unit that generates a JAR file in which the identity verification information is defined as a class file in a predetermined package. And
  • the identity confirmation information includes a hash value of the deployment information or a part or all of the data of the deployment information.
  • the AR file generation unit described above based on the deployment information and the identity confirmation information, the deployment information, the identity confirmation information, the plurality of the plurality of information
  • a JAR file including a loading program for loading a predetermined Java applet program and a starting program for starting the loading program, and the identity confirmation information, the loading program, and the starting program are the same. It can be configured to generate a JAR file defined as a class file in a package.
  • the front SJAR file generation unit is configured to perform the above-described determination based on the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information.
  • a JAR file including a plurality of predetermined Java ablet programs, the deployment information and the identity confirmation information, and the JAR file in which the identity confirmation information is defined as a class file in a predetermined package may be generated. desirable.
  • the identity confirmation information includes a hash value of each of the plurality of predetermined Java applet programs or the plurality of predetermined Java applet programs. It can be configured to include some or all of each data.
  • the outpost dJAR file generation unit based on the plurality of predetermined Java ablet programs, the deployment information, and the identity confirmation information, A JAR including a predetermined Java ablet program, the deployment information, identity confirmation information, a loading program for loading the plurality of predetermined Java ablet programs, and a starting program for starting the loading program It is preferable to generate a JAR file that is a file and the identity confirmation information, the load program, and the startup program are defined as class files in the same package.
  • the above-described AVA applet and JAR file generation program can be executed by a computer by being stored in a computer-readable recording medium.
  • the computer-readable recording medium includes portable storage media such as a CD-ROM, a flexible disk, a DVD disk, a magneto-optical disk, an IC card, and other semiconductor storage devices, and a computer mounted on a computer.
  • a fixed storage device such as M, RAM, or a magnetic recording device, a database holding a computer program, or a database includes another computer and its database, and further a transmission medium on a line.
  • FIG. 1 is a conceptual diagram for explaining prevention of unauthorized use of an electronically signed ablet in the present embodiment.
  • FIG. 2 is a diagram showing an example of a specific configuration for preventing unauthorized use of the digitally signed ablet shown in FIG.
  • FIG. 3 is a diagram for explaining details of the internal configuration of the special form 3 ⁇ 4 JAR file 2.
  • FIG. 4 is a diagram for explaining a special applet program 24.
  • FIG. 5 A diagram showing a special form of the configuration shown in FIG.
  • FIG. 6 is a diagram showing a configuration example of a JAR file T.
  • FIG. 7 is a diagram showing the configuration of a JAR (descriptor, jar) D.
  • FIG. 8 A diagram showing details of the deployment descriptor (cozilet.properties).
  • FIG. 11 is a flowchart from when a special applet is activated until the replacement to the target applet is completed.
  • FIG. 12 This is a diagram for explaining the JAR file (target.jar) T as a special form 3 ⁇ 4 a JAR file that is not included in the JAR file.
  • FIG. 13 is a diagram for explaining a configuration in which a part of an applet or the like is downloaded by an external force of the client terminal C and the rest is deployed in advance in the client terminal C
  • FIG. 14 is a diagram showing details of a special form 3 ⁇ 4 JAR file 202.
  • the figure shows a configuration that includes CoziletData.class24c and JAR file (descriptor.jar) D.
  • FIG. 17 is a diagram showing an example of the source code of the Cozilet class that has been implemented to disable serialization.
  • FIG. 18 is a diagram for explaining a JAR file generation device for generating a special form 3 ⁇ 4 JAR file.
  • FIG. 19 is a flowchart for explaining the flow of processing in the JAR file generation device.
  • FIG. 20 is a diagram for explaining a configuration in which other ablets and the like are previously deployed in the client terminal C.
  • FIG. 21 is a conceptual diagram for explaining normal processing when an ablet without an electronic signature is executed.
  • FIG. 22 is a conceptual diagram for explaining processing when a signed ablet is executed.
  • FIG. 23 is a diagram for explaining an example of an unauthorized reconfiguration attack.
  • FIG. 1 is a conceptual diagram for explaining prevention of unauthorized use of an electronically signed applet in the present embodiment.
  • parts that are the same as those already shown in FIG. 23 are given the same reference numerals, and descriptions thereof are omitted.
  • JRE12 causes the applet program to be executed only in a regular configuration.
  • the function 12c is provided. As a result, it is illegally reconfigured when it is loaded by SJRE12 (for example, a reconfiguration file of signed JAR file foo.jar93 and illegal JAR file evil.jar91) (S 11)
  • SJRE12 for example, a reconfiguration file of signed JAR file foo.jar93 and illegal JAR file evil.jar91
  • S 11 the function 12c for executing the applet program only with a correct configuration, the processing permitted for the signed ablet is not abused (S12).
  • the main configuration example for having the function 12c for causing the JRE 12 in the client terminal C to execute the applet program only in a regular configuration is as follows: (1) To realize the function 1 2c (Applets and related data) are downloaded from the outside of client terminal C and activated by JRE12. (2) Part of the applet program that implements function 12c Configuration that downloads from outside C and deploys the rest in client terminal C in advance, (3) Among the ablet programs that realize the function 12c, it should be deployed outside client terminal C There are three configurations in which only the data is deployed externally, and the other tablet programs are deployed in advance inside client terminal C.
  • FIG. 2 is a diagram showing an example of a specific configuration for preventing unauthorized use of the electronically signed applet shown in FIG. Also in this figure, the same parts as those already shown in FIG. 23 are denoted by the same reference numerals and description thereof is omitted.
  • the special form 3 ⁇ 4JAR file 2 is a deployment descriptor (deployment) that defines the location of the target applet programs (bar.jar21 and foo.jar22) and the target applet programs (multiple predetermined Java applet programs). And the special applet program 24.
  • the target applet programs bar.jar21 and foo.jar22
  • the target applet programs multiple predetermined Java applet programs.
  • the special applet program 24 are not individually digitally signed.
  • the entire JAR file including program 24 is digitally signed.
  • the client terminal C has the same configuration as the conventional client terminal shown in FIG.
  • the special ablet 12d that is activated in this way (corresponding to the activation program) is an ablet based on the deployment descriptor 23 loaded in JRE12 in the form of special form 3 ⁇ 4JAR file 2. It has a special ablet starter 12e (corresponding to a loading program) that has the function of loading only with a regular configuration.
  • JRE 12 is provided with a function for executing the ablet program only in a normal configuration, and the digitally signed ablet is prevented from being reused illegally.
  • the special form 8 shaku file 2 has a structure including the special applet program 24,] 8 1 file & 61 ⁇ jar and JAR file (descriptor, jar) D. It has become.
  • the special applet program 24 is a special applet program that has the function of replacing the target applet during execution.
  • FIG. 5 is a diagram showing a special-type JAR file 2 having the configuration shown in FIG.
  • the JAR file (target.jar) T included in the special form 3 ⁇ 4JAR file 2 is explained.
  • Figure 6 shows an example of the structure of JAR file T.
  • the target applet refers to the class file group and resource file group necessary for executing the target applet, and the JAR file group for storing them.
  • the JAR file T includes JAR file groups targetl.jar and target2.jar which are target applet programs.
  • f AR file (target.jar) T is a JAR file without signature.
  • the target applet program included in the JAR file (target.jar) T is loaded only by the special class loader (loading program) when the special applet program 24 is executed. Do not be de. Therefore, it is possible to prevent the targeted ablet program from being misused by attackers.
  • JAR file (descriptor.jar) D included in the special AR file 2 will be described.
  • Figure 7 shows the structure of JAR file (descriptor.jar) D.
  • JAR file (descriptor.jar) D includes Java standard property file cozilet.properties23 (see Fig. 3).
  • the deployment descriptor cozilet.properties23 corresponds to the deployment information of the target applet program.
  • JAR file D is an unsigned JAR file.
  • JAR file D (corresponding to deployment information) is always included in special file 1 file 2.
  • FIG. 8 shows details of the deployment descriptor (cozilet. Properties) 23.
  • the class property is the name of the main class of the target ablet.
  • the special applet executes the target applet program based on the properties.
  • class The path property is a list of URLs where the target applet programs that are not included in the special-type eight shaku file are deployed. In the example in the figure, the URL of outerl.jar deployed on a trusted site and the path of outer2.jar installed in advance on the user's oral disk are described.
  • the special class loader loads the target applet program based on the properties. In order to prevent exploitation by attackers, it is desirable to set a location other than those where these UR and RE can be loaded as standard (such as an entertainment directory).
  • the library_path property is a list of paths in the target applet program where native libraries necessary for executing the native method are deployed. Since the native library needs to be installed on the local disk, specify the path on the local disk instead of the URL in the properties. Special class loader is native based on properties Load libraries. In order to prevent attackers from exploiting them, it is desirable to keep these paths in a location other than the standard JRE loadable location (such as the system directory).
  • the tmsted_url property is a list of URLs of trusted sites where HTML documents containing special applets should be deployed.
  • a special applet is embedded in a trusted site immediately after execution by acquiring the URL that is embedded in the HTML document and comparing it with the URL included in the property. It is possible to check whether or not it is included in the HTML document.
  • the exclusive_mode property is a flag that determines whether to enable the function to prevent untrusted applet execution during execution of a special applet. If the property value is ⁇ N, the special ablet enables the above function. On the other hand, if the property value is ff, this function is disabled.
  • CoziletData.class 24c included in the special applet program 24 will be described.
  • CoziletData.class24c is a class file that contains identity confirmation information for detecting falsification of target applet programs and deployment descriptors.
  • Figure 9 shows the source code CoziletData.java for the class CoziletData in which the SHA1 hash value H of the target applet program and deployment descriptor is embedded as constant confirmation information.
  • CoziletData.class24c can be generated by compiling this source code.
  • the CoziletData class contains three constant fields: inner—hash, outer—hash, descriptor—hash.
  • inner—hash contains the SHA1 hash value of target.jarT.
  • outer_hash contains the SHA1 hash of the entire target applet program deployed at the URL specified in the class_path property.
  • descriptor_hash contains the SHA1 hash value of descriptor.jar D.
  • the CoziletData class belongs to the same package com.aaa.labs.sec.cozilet as other special applet program class files.
  • the special-form JAR file is signed with the same-package-same -Unauthorized replacement by attackers can be prevented by the signer mechanism.
  • target.jarT and descriptor.jarD included in the special form AR file are Since it is a resource file rather than a resource file, it may be illegally replaced by an attacker. Therefore, when the special class loader loads these resource files, the resource file is altered by comparing the SHA1 hash value of the loaded resource with the SHA1 hash value H included in the constant field of the CoziletData class. Can detect whether or not.
  • CoziletData.class24c is configured to include the S HA1 hash value H of target.jarT and descriptor.jarD
  • the data of target.jarT and descriptor.jarD is not limited to this. It may be configured to include a constant field that includes part or all of.
  • Figure 10 shows an example of CoziletData.class24c source code that includes a constant field descriptor_value that includes descriptor.jarD itself. In this case, the special AR file 2 does not need to include descriptor.jarD. When executing the special applet program 24, the value of descriptor.jarD can be extracted from the constant final descriptor_value.
  • the special format file 1 is deployed on a server, for example, and loaded by the JRE via a web browser or the like, so that it is executed by the special applet program 24 SJRE.
  • a plurality of predetermined Java ablet programs are, for example,
  • Applet coae jp.example.bomeApplet
  • Applet coae com.aaa.laDs.sec.cozilet.uoziiet
  • the Cozilet class 24a is loaded in the JRE and an instance is generated (S22).
  • Cozilet class is included in special form 3 ⁇ 4JAR file 2 in static initializer
  • this instance is called a cozilet deployment descriptor.
  • the alteration of the deployment information is detected based on the identity confirmation information for detecting the alteration of the deployment information defined for the location of each of the plurality of predetermined Java applet programs.
  • the JRE calls init () of the Cozilet class (S26).
  • the Cozilet class can be trusted compared to the list of URLs included in the value of the trusted url property of the cozilet deployment descriptor in the URL power of the site where the HTML document of its embedding source is deployed. It is checked whether or not (S27).
  • the URL of the site where the loading HTML document is deployed can be obtained by getDocumentBaseO of the java.applet.Applet class.
  • it can also be set as the structure which compares URL by front matching. If it does not match any URL included in the trusted_url property (S27, cannot be executed), the execution is forcibly terminated (S29).
  • the Cozilet class 24a is used as a loading program for loading a plurality of predetermined Java applet programs.
  • CoziletClassLoader class 24b is generated (load program start step) (S28).
  • the CoziletClassLoader class 24b is the target.jarT included in the special form AR file 2, the URL specified by the class_path property of the cozilet deployment descriptor, and the target address that exists in the path specified by the library_path property of the cozilet deployment descriptor. Make the bullet program loadable. If
  • the Cozilet class 24a is called by passing the name of the main class of the target applet that can be obtained from the main—class property of the cozilet deployment descriptor as an argument to the loadClassO of the CoziletClassLoader class 24b. P). That is, when no alteration is detected in the alteration detection step, a plurality of predetermined Java applet programs are loaded into the loading program based on the distribution information. Then, the class instance constructor is called by the Java reflection mechanism to obtain the main class instance of the target ablet (S2c)
  • Applet records and some processing are delegated to the applet stub
  • the applet stub is initially set to a special applet.
  • Cozilet class calls setStubO of the target applet with its own applet stub And set (S2d).
  • the ablet stub is necessary for the target ablet to execute normally.
  • the applet stub is stored as a private field of the java.applet.Applet class, and the Cozilet class 24a cannot access that field.
  • the parent panel of the special applet where the instance of the Cozilet class is registered has the function of the applet stub, the instance of the parent panel cannot be obtained from the Cozilet class. Since it is easy, the instance is set as the applet stub in the target bullet (S2d).
  • the applet is registered in the parent panel, so that it can be displayed on the browser and handle GUI events. Since a special applet is initially registered in the parent panel, the Cozilet class 24a deletes its own instance registered in the parent panel, so that GUI events sent from the JRE are sent to the special applet 24. Instead, the target tablet is notified, and the target tablet can operate normally as an tablet.
  • the Cozilet class 24a calls init () of the main class of the target applet (S2f).
  • the target ablet will operate as an ablet instead of the special ablet, and the replacement of the ablet is completed (S2g).
  • the caller is checked by stack detection at the beginning of each method. Specifically, at the beginning of each method, call checkPermissionO of java.security.AccessController and pass an instance of the java.security.AUPermission class as an argument. As a result, the class, that is, the attacker's class, that does not have the access right AllPermission can be used. In particular, public methods of applets cannot be called.
  • the access right passed to checkPermissionO is not necessarily AllPermission, but may be sufficient to prevent an attacker from calling.
  • the special AR file 2 described above includes Cozilet.class24a as a startup program, CoziletClassLoader.class24b as a loading program, CoziletData.class24c as identity confirmation information, JAR finale (target .jar) T and JAR finale (descriptor.jar) force S (see Figure 3), including but not limited to, D.
  • target.jarT is not necessarily included in special AR file 2 I don't need it. If the JAR file (target.jar) T is not included in the special form 3 ⁇ 4JAR file as shown in Fig. 12, the JAR file (target.jar) Tf Must be deployed in a loadable location.
  • a function for executing the applet only in a regular configuration 1 part of the applet or the like for realizing 2c is downloaded by the external force of the client terminal C, and the rest It can also be configured to be pre-deployed inside client terminal C (see Fig. 13).
  • the special form AR file 202 is used as the identity confirmation information.
  • FIG. 14 is a diagram showing details of the configuration of the special-form eight-scale file 202.
  • CoziletData.class24c and JAR file (descriptor.jar) D can also be included (see Figure 15).
  • Cozilet.class24a as the start program and CoziletClassLoader.class24b as the load program are stored in advance in the storage area of the client terminal equipped with JRE and can be loaded with the JAR file (target.jar) It is necessary to be deployed in various places.
  • Fig. 15 the power that can be divided into various formats As a result, all of the divided components are loaded into the JRE as a result, regardless of the special format AR file mentioned above. 11 is common in that each step shown in FIG. 11 is executed.
  • the GUI event is normally notified. Therefore, the method related to the GUI-related target applet is executed normally by ⁇ O RE.
  • the target applet methods that are not related to the GUI are not executed correctly by the JRE because the target applet is not registered in the list of active applets held internally by the JRE. Will be executed. Therefore, for these methods, in each special applet method, the method call from JRE is delegated to the corresponding method of the target applet.
  • a wrapper method group having the same signature as the method signature group input as the target ablet deployment information is added to the main class of the special applet, and the wrapper one method group strength S method to itself
  • the call process is delegated to a method with the same signature in the main class of the target applet.
  • Figure 16 shows an example of the source code of the Cozilet class (equivalent to the startup program) to which a wrapper method is added.
  • a wrapper method By compiling this source code, you can generate Cozilet.class with added wrapper method power.
  • a Rano method with the same signature as the method signature doSomething (java.lang.String) input as deployment information is added, and the method of the main class of the target applet with the same signature in the wrapper method is added. Sod is called using the Java reflection mechanism.
  • Cozilet.class24a disables its own serialization by implementing the method related to serialization so that an exception is forcibly generated.
  • Figure 17 shows an example of the source code of the Cozilet class that has been implemented to disable serialization.
  • the JAR file generation device 5 for generating the special-type AR file (FIGS. 3, 12, 13, and 15) configured as described above will be described with reference to FIG.
  • This device has a function to generate a JAR file including a Java applet that allows a computer to execute a plurality of predetermined Java applet programs.
  • the target ablet program is Convert to special form eight shaku file
  • the JAR file generation device 5 includes an identity confirmation information generation unit 51, a JAR file generation unit 52, a storage unit 53, a CPU 54, and a special applet generation unit 55. Yes.
  • the identity confirmation information generation unit 51 is the same for detecting falsification of the deployment information based on the deployment information that defines the location of each of the target ablet programs (plurality of predetermined Java tablet programs). It has a role of generating sex confirmation information.
  • the JAR file generation unit 52 generates a plurality of predetermined Java applet programs, deployment information, and the same information based on a plurality of predetermined Java applet programs, deployment information, and identity confirmation information.
  • a JAR file that contains information for checking the identity, a loading program for loading a plurality of predetermined Java applet programs, and a startup program for starting the loading program.
  • the JAR file generation unit 52 digitally signs the generated JAR file. It has a function to apply.
  • the special applet generation unit 55 has a role of generating Cozilet.class24a as a startup program and CoziletClassLoader.class24b as a load program.
  • the storage unit (computer-readable recording medium) 53 is configured with a storage area such as RAM and ROM, and has a role of storing programs executed in the JAR file generation device 5, various applets, and the like. Have it.
  • the CPU (computer) 54 has a role of executing a program stored in the storage unit 53 in order to perform various processes in the JAR file generating apparatus 5.
  • FIG. 19 is a flowchart for explaining the process flow (the JAR file generation method) in the JAR file generation apparatus 5 as described above.
  • the JAR file generation method the JAR file generation method
  • the target applet program is used as input data.
  • the identity confirmation information generation unit 51 based on the acquired deployment information, a JAR file (descriptor.jar) as identity confirmation information for detecting falsification of the deployment information. D is generated (identity confirmation information generation step) (S62). Specifically, the identity confirmation information generation unit 51 uses the hash value or target of each of the target applet program and the JAR file including the hash value of the deployment information or part or all of the data of the deployment information as the identity confirmation information. It is possible to generate a JAR file that includes a part or all of the data of each applet program, a hash value of both the deployment information and the target ablet program, or a JAR file that includes a part or all of each data.
  • the JAR file generation unit 52 determines that the target applet program, the deployment information, and the same are based on the target applet program (bar.jar21 and foo.jar22), the deployment information, and the identity confirmation information. Includes information for checking sex, loading program for loading the target applet program, and startup program for starting the loading program Generate a JAR file. At this time, the identity confirmation information, the loading program, and the startup program are defined as class files in the same package in the generated JAR file, as shown in FIG. 3) (S63) .
  • the generated JAR file includes a loading program for loading a plurality of predetermined Java applet programs and a starting program for starting the loading program. Even if you do not install a program that implements the function to load multiple predetermined Java applet programs in the terminal that downloads the AR file, you can download multiple predetermined Java applets just by downloading this JAR file. The program can be safely read. In other words, it is possible to easily and reliably prevent the digitally signed ava ablet from being illegally reused without loading any changes to the JRE that is loaded and executed.
  • the AR file generated as described above is digitally signed by the JAR file generation unit 52 as necessary and output (S64).
  • Each step in the above-described JAR file generation method is stored in the storage unit 53. This is realized by causing the CPU 54 to execute the AR file generation program.
  • a special file such as the class file group that is a special ablet program, the target ablet program, and deployment information as shown in Fig. 3 can be generated.
  • the JAR file generation unit 52 stores class files (loading program, startup program, etc.) that are special ablet programs included in the special form 3 ⁇ 4 JAR file in the data stored in the storage unit 53 in advance. You can choose from.
  • the special applet generated by the special applet generation unit 55 can be generated as a class finale group included in the special form AR file.
  • the JAR file generation unit 52 performs the special format AR file 2 in the data format shown in FIG. As in 01, the target applet program can be generated without being included in the special form AR file.
  • the JAR file generation unit 52 activates the loading program and the loading program for loading the deployment information, the identity confirmation information, and the target ablet program based on the deployment information and the identity confirmation information.
  • the JAR file generation unit 52 converts the special applet program (loading program, startup program, etc.) into a special type 3 ⁇ 4JAR file, as in the special type AR file 202 of the data format shown in FIG. It is also possible to generate without including.
  • the JAR file generation unit 52 generates a JAR file including the target ablet program, the deployment information, and the identity confirmation information based on the target ablet program, the deployment information, and the identity confirmation information.
  • the JAR file generation unit 52 defines the identity confirmation information as a class file in a predetermined package.
  • the JAR file generation unit 52 can also generate the special data format of the data format shown in Fig. 15 without including it in the special format 8 shaku file.
  • the JAR file generation unit 52 generates a JAR file including the deployment information and the identity confirmation information based on the deployment information and the identity confirmation information.
  • the JAR file generation unit 52 defines the identity confirmation information as a class file in a predetermined package.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

 複数の所定のJavaアプレットプログラムをコンピュータに実行させるJavaアプレットであって、該Javaアプレットは出所を保証するための電子署名を施されたものであり、前記複数の所定のJavaアプレットプログラムそれぞれの所在について定義する配備情報の改ざんを検出するための同一性確認用情報に基づいて、前記配備情報の改ざんを検出する改ざん検出ステップと、前記複数の所定のJavaアプレットプログラムをロードするためのロード用プログラムを起動させるロード用プログラム起動ステップと、前記改ざん検出ステップにおいて改ざんが検出されなかった場合に、前記配備情報に基づいて、前記起動させたロード用プログラムにより前記複数の所定のJavaアプレットプログラムをロードさせるロードステップとをコンピュータに実行させる。

Description

明 細 書
Javaァプレット、 JARファイル生成方法、 JARファイル生成プログラム、 JA Rファイル生成装置
技術分野
[0001] 本発明は、 Javaアブレットに関し、特に Javaアブレットの悪用を防止する技術に関 するものである。
背景技術
[0002] 従来、電気通信回線等を介してダウンロードされ avaアブレット(以下、アブレット )をクライアント端末における Webアプリケーション (Webブラウザ等)等に実装され RE (Java Runtime Environment)により実行して、クライアント端末側での処理を行う 技術が提供されている。
[0003] このようなァプレットを用いた処理を行う際にァプレットを実行する JREでは、安全上 の理由から、アブレットがユーザに被害を与える可能性のある動作をすることを禁じて いる。
[0004] 図 21は、電子署名のないァプレットが実行される場合の通常の処理について説明 するための概念図である。ここでは、攻撃者が不正な JARファイル evil. jar91を用いて 、クライアント端末 Cにおける保護されたシステム資源 (データや個人情報など) 13に 不正アクセスしょうとする場合を示してレ、る。ここでは、 JARファイル evil.jar91には電 子署名は施されていないものとする。
[0005] クライアント端末 Cのユーザ力 攻撃者の Webサイトにアクセスすると、 Webブラウザ
11によりインターネット Nを介して攻撃者の Webサイトの HTMLデータ「evil.html」が ダウンロードされる(S71)。
[0006] Webブラウザ 11は、「evil.html」に含まれる当該不正なァプレットのタグに基づいて 、JRE12のァプレット起動部 12aに当該不正なァプレットの起動を要求する(S72)。 ァプレット起動部 12aは、当該要求に基づレ、て、 JARファイル evil.jar91をロードする( S73)。
[0007] この場合、不正な JARファイル evil. jar91は、出所を保証するための電子署名がなさ れていないことを理由に信頼できないものとみなされる。よって、不正な JARファイル evil.jar91 (不正なァプレット)による、保護されたシステム資源 13へのアクセス要求( S74)は、セキュリティマネージャ 12bにより禁止される(S75)。
[0008] このように、セキュリティマネージャ 12bのアクセス制限のもとでは、出所の保証され ていないァプレットを用いて、保護されたシステム資源 13にアクセスすることはできず 、ユーザが被害を受けることはない。
[0009] ところで、上述のようなアクセス制限は、 Webアプリケーションを開発する上での障 害となる場合がある。例えば、電子政府システムなどでは、ユーザがクライアント端末 Cにおけるローカルデバイスに格納されている情報を使って申請書等に電子署名を 施すことが必要となる場合がある。しかし上述のように、通常はアブレットを用いたクラ イアント端末側のローカルデバイスへのアクセスは禁じられており、上述のようなシス テムは実現できない。
[0010] そこで、電子署名等によって出所が保証されたアブレットについては、アブレットに は通常禁止されているような動作(ファイルアクセスやコマンド実行など)を行うことを ユーザが特別に許可することのできるようにする仕組みが用意されている。出所を保 証する方法としては、上述のようにアブレットに電子署名を施す方法が一般的である
[0011] このような仕組みによれば、電子署名を施されたアブレット(以下、署名付きアブレツ ト)力 SJRE12によってロードされた場合、当該アブレットの実行時に動的にセキユリテ ィ制限の解除を要求するダイアログを表示させ、ユーザに解除を許可するか否かの 選択を促すことができ、あらかじめユーザにセキュリティ設定を変更してもらうような手 間を省くことができるという利点がある。
[0012] 図 22は、署名付きアブレットが実行される場合の処理について説明するための概 念図である。ここでは、署名付きァプレットとして foo.jar93および bar.jar92力 S、 HTM Lファイル「goodj.html」と共に配備されている場合を示している。以下、図中において 二重線の枠で囲まれているものは、署名が施されていることを意味するものとする。
[0013] クライアント端末 Cのユーザ力 Webサイトにおける「goodj.html」にアクセスすると、 Webブラウザ 11によりインターネット Nを介して HTMLファイル「goodj.html」がダウン ロードされる(S81)。
[0014] Webブラウザ 11は、「goodj.html」に含まれるァプレットのタグに基づいて、 JRE12 のアブレット起動部 12aに当該アブレットの起動を要求する(S82)。アブレット起動部 12aは、当該要求に基づいて、 JARファイル bar.jar92および foo.jar93をロードする( 383;)。
[0015] ここでは、ロードされる JARファイル bar.jar92および foo.jar93には、共に出所を保 証するための電子署名が施されているため、ァプレット起動部 12aは当該署名の内 容を検証し、検証結果をユーザに確認させるためのダイアログを表示させる(S84)。 ユーザが当該ダイアログにより検証結果を確認し、問題がないと判断した場合、セキ ユリティマネージャ 12bにおいて JARファイル bar.jar92および foo.jar93は信頼できる ものであるとみなされる。
[0016] 信頼できるものとみなされたァプレットについては、ァプレットには通常禁止されて レ、るような動作が可能になる。よって、セキュリティマネージャ 12bによるアクセス制限 の下でも、これら信頼できるものとみなされたアブレットにより保護されたシステム資源 13に対するアクセス要求が出された場合(S85)、当該アクセス要求は許可される(S 86)。
[0017] しかし、上述のような署名付きアブレットに対してアクセス許可を行う仕組みは有用 である反面、攻撃者が署名付きアブレットを再利用し、その機能を悪用してユーザに 被害を与えるおそれがあるという問題がある。
[0018] 署名付きアブレットは、署名付き JARファイルといった再利用可能な部品から構成さ れている。よって、攻撃者はそれらの署名付き JARファイルを攻撃者自らの部品(不 正 ¾[ARファイル)と組み合わせて、署名付き JARファイルに含まれるクラスのメソッド を呼び出したりフィールドを改ざんしたりすることで、それら署名付き JARファイルを作 成した者の本来の意図とは異なる不正な目的で使用すること(いわゆる、不正な再構 成攻撃)を試みること力できる。
[0019] 図 23は、上述のような不正な再構成攻撃の一例について説明するための図である 。ここでは、攻撃者が、電子署名付き JARファイル foo.jar93を入手し、当該電子署名 付き JARファイルと自ら作成した不正 ¾[ARファイル evil.jar91とを不正に再構成し、 HTMLフアイノレ「evil2.html」と共に配備してレ、る場合を示してレ、る。
[0020] クライアント端末 Cのユーザ力 Webサイトにおける「evil2.html」にアクセスすると、 ロードされる(S91)。
[0021] Webブラウザ 11は、「evil2.html」に含まれるァプレットのタグに基づいて、 JRE12の ァプレット起動部 12aに当該ァプレットの起動を要求する(S92)。ァプレット起動部 1 2aは、当該要求に基づいて、 JARファイル evil.jar91および foo.jar93をロードする(S 93)。
[0022] ここでは、ロードされる JARファイル foo.jar93には、出所を保証するための電子署名 がなされているため、アブレット起動部 12aは当該署名の内容を検証し、検証結果を ユーザに確認させるためのダイアログを表示させる(S94)。ユーザが当該ダイアログ により検証結果を確認し、問題がないと判断された場合、セキュリティマネージャ 12b において JARファイル foo.jar93は信頼できるものであるとみなされる。一方、署名の なレ、JARファイル evil. jar91につレ、ては、信頼できなレ、ものとみなされる。
[0023] し力し、上述のように、信頼できるものとみなされ ARファイル foo.jar93について は、ァプレットには通常禁止されているような動作が可能になる。このとき、 evil.jar91 力 o.jar93を利用して保護されたシステム資源 13に対するアクセス要求を出させ(S 95)、 foo.jar93を経由して保護されたシステム資源 13にアクセスしてしまうおそれが ある(S96)。
[0024] 上述のような不正な再構成は、信頼されたプログラムが自らの持つ機能を自らの責 任において信頼できないプログラムに提供するための仕組みである「特権コード」の 悪用や、メインロジックを実行するパッケージと、メインロジックが逐次利用するユーテ イリティ的なパッケージを区別しているプログラムについて、ユーティリティ的なパッケ ージのクラスだけを置き換えてメインロジックの動作を自由に制御する攻撃や、対象 プログラムに含まれるリソースの不正な置き換えなどを可能とし、ユーザに被害を与え るおそれがある。
[0025] また、このような署名付き JARファイルが一旦流出してしまうと被害の拡大を抑えるこ とが難しレ、。電子政府システムなどにおいてこの種の攻撃を許すことは、行政システ ムの根幹を揺るがすことにもなりかねないため、上述のような攻撃に対する対策技術 の確立が急務となっている。
発明の開示
発明が解決しょうとする課題
[0026] 本発明は上述した問題点を解決するためになされたものであり、電子署名され a vaアブレットが不正に再利用されることを簡単かつ確実に防止することを目的とする。 課題を解決するための手段
[0027] 上述した課題を解決するため、本発明に係る Javaァプレットは、複数の所定の Java ァプレットプログラムをコンピュータに実行させる Javaァプレットであって、窗 avaァプ レットは出所を保証するための電子署名を施されたものであり、前記複数の所定の Ja vaアブレットプログラムそれぞれの所在について定義する配備情報の改ざんを検出 するための同一性確認用情報に基づレ、て、前記配備情報の改ざんを検出する改ざ ん検出ステップと、前記複数の所定の Javaアブレットプログラムをロードするための口 ード用プログラムを起動させるロード用プログラム起動ステップと、前記改ざん検出ス テツプにおいて改ざんが検出されなかった場合に、前記配備情報に基づいて、前記 起動させたロード用プログラムにより前記複数の所定の Javaアブレットプログラムを口 ードさせるロードステップとをコンピュータに実行させる構成となっている。
[0028] このように、同一性確認用情報に基づレ、て改ざんされてレ、なレ、ことが確認された配 備情報により複数の所定の Javaアブレットプログラムをロードする構成とすることで、 J avaァプレットが改ざんされて当窗 avaァプレットの作成者の意図とは異なる他の Jav aアブレットプログラムがロードされることを防止することができる。すなわち、電子署名 され ^avaアブレットが不正に再利用されることを簡単かつ確実に防止することがで きる。
[0029] また、上述のような構成の Javaアブレットにおいて、前記同一性確認用情報は、前 記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含むこと が好ましい。
[0030] なお、上述のような構成の Javaァプレットにおいて、前記同一性確認用情報は、前 記複数の所定の Javaァプレットプログラムそれぞれのハッシュ値または前記複数の所 定の Javaアブレットプログラムそれぞれのデータの一部または全部を含み、前記改ざ ん検出ステップは、前記同一性確認用情報に基づいて、前記複数の所定の Javaァ ブレットプログラムそれぞれの改ざんを検出する構成とすることもできる。
[0031] このような構成によれば、同一性確認用情報に基づいて配備情報および複数の所 定の Javaァプレットプログラムが改ざんされてレ、なレ、ことを確認した上で、当該配備 情報により複数の所定の Javaァプレットプログラムをロードすることができ、当謝 ava ァプレットおよび複数の所定の Javaァプレットプログラムが改ざんされて当謝 avaァ プレットの作成者の意図とは異なる他の Javaァプレットプログラムがロードされることを 防止することができる。
[0032] なお、上述のような構成の Javaァプレットにおいて、窗 avaァプレットにおけるメイン クラスに対して、 Javaスクリプトを使用したメソッド呼び出し要求があった場合に、該呼 び出し要求に基づくメソッド呼び出し処理を、前記複数の所定の Javaァプレットプロ グラムの内の前記呼び出されたメソッドに対応するメソッドに委譲させる委譲ステップ を有することが好ましい。
[0033] このような構成によれば、 JREにて保持されている動作中のァプレットリストに複数の 所定の Javaアブレットプログラムがない場合でも、例えばラッパ一メソッド等を用いるこ とにより、 Javaスクリプトを使用したメソッド呼び出し要求に基づくメソッド呼び出し処理 をこれら複数の所定の Javaァプレットプログラムに対して行わせるようにすることがで きる。
[0034] この他、上述のような構成の Javaァプレットにおいて、窗 avaァプレットに対して設 定されているァプレットスタブを、前記ロードステップにおいてロードされた複数の所 定の Javaァプレットプログラムに対して設定するァプレットスタブ設定ステップを有す る構成とすることあでさる。
[0035] このように、ァプレットスタブをロードされた複数の所定の Javaァプレットプログラムに 対して設定することで、複数の所定の Javaアブレットプログラムが正常に動作できるよ うになる。
[0036] 上述した課題を解決するため、本発明に係る JARファイル生成方法は、コンピュー タカ 複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaアブレ ットを含む JARファイルを生成する処理を行う JARファイル生成方法であって、前記コ ンピュータが、前記複数の所定の Javaァプレットプログラムそれぞれの所在にっレ、て 定義する配備情報に基づいて、前記配備情報の改ざんを検出するための同一性確 認用情報を生成する同一性確認用情報生成ステップと、前記配備情報および同一 性確認用情報に基づレ、て、前記配備情報および同一性確認用情報を含む JARファ ィルであり、前記同一性確認用情報が所定のパッケージにおけるクラスファイルとし て定義されている JARファイルを生成する JARファイル生成ステップとを実行すること を特徴とする。
[0037] このように、配備情報の改ざんを検出するための同一性確認用情報を、所定のパッ ケージにおけるクラスファイルとして定義することで、当窗 ARファイルに電子署名が 施された場合に、「same-package-same-signer」の仕組みによって、当該同一性確認 用情報の不正な改ざんを防ぐことができる。
[0038] また、上述のような構成の JARファイル生成方法において、前記同一性確認用情 報は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を 含むことが好ましい。
[0039] なお、上述のような構成の JARファイル生成方法において、前首 SJARファイル生成 ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同 一性確認用情報、前記複数の所定の Javaアブレットプログラムをロードするための口 ード用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラム を含む JARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動 用プログラムが同一パッケージにおけるクラスファイルとして定義されている JARファ ィルを生成する構成とすることもできる。
[0040] このように、 JARファイル生成ステップにおレ、て生成する JARファイルに、複数の所 定の Javaァプレットプログラムをロードするためのロード用プログラムおよび該ロード 用プログラムを起動させるための起動用プログラムを含ませるようにしたことで、当窗
ARファイルをダウンロードする端末において複数の所定の Javaァプレットプログラム をロードするための機能を実現するプログラムを予めインストールしておかずとも、こ の JARファイルをダウンロードするだけで複数の所定の Javaァプレットプログラムを安 全にロードさせることができる。
[0041] また、上述のような構成の JARファイル生成方法において、前首 SJARファイル生成 ステップは、前記複数の所定の Javaアブレットプログラム、前記配備情報および同一 性確認用情報に基づいて、前記複数の所定の Javaアブレットプログラム、前記配備 情報および同一性確認用情報を含む JARファイルであり、前記同一性確認用情報が 所定のパッケージにおけるクラスファイルとして定義されている JARファイルを生成す ることが好ましい。
[0042] このように、 JARファイル生成ステップにおレ、て生成する JARファイルに、前記複数 の所定の Javaアブレットプログラム、前記配備情報および同一性確認用情報を含ま せるようにしたことで、当謝 ARファイルをダウンロードする端末において複数の所定 の Javaァプレットプログラムを外部からロードせずとも、この JARファイルをダウンロー ドするだけで複数の所定の Javaァプレットプログラムを安全にロードさせることができ る。
[0043] 上述のような構成の JARファイル生成方法において、前記同一性確認用情報は、 前記複数の所定の Javaアブレットプログラムそれぞれのハッシュ値または前記複数の 所定の Javaアブレットプログラムそれぞれのデータの一部または全部を含む構成とす ること力 Sできる。
[0044] この他、上述のような構成の JARファイル生成方法において、前首 SJARファイル生 成ステップは、前記複数の所定の Javaアブレットプログラム、前記配備情報および同 一性確認用情報に基づいて、前記複数の所定の Javaアブレットプログラム、前記配 備情報、前記同一性確認用情報、前記複数の所定の Javaアブレットプログラムを口 ードするためのロード用プログラムおよび前記ロード用プログラムを起動させるための 起動用プログラムを含む JARファイルであり、前記同一性確認用情報、ロード用プロ グラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義さ れてレ、る JARファイルを生成することが望ましレ、。
[0045] このような構成とすることにより、当謝 ARファイルをロードし、実行する JREに対して 何ら変更を加えることなぐ電子署名され^ avaアブレットが不正に再利用されること を簡単かつ確実に防止することができる。 [0046] また、本発明に係る JARファイル生成プログラムは、複数の所定の Javaァプレットプ ログラムをコンピュータに実行させる Javaァプレットを含む JARファイルを生成する処 理をコンピュータに実行させる JARファイル生成プログラムであって、前記複数の所 定の Javaアブレットプログラムそれぞれの所在について定義する配備情報に基づい て、前記配備情報の改ざんを検出するための同一性確認用情報を生成する同一性 確認用情報生成ステップと、前記配備情報および同一性確認用情報に基づレ、て、 前記配備情報および同一性確認用情報を含む JARファイルであり、前記同一性確 認用情報が所定のパッケージにおけるクラスファイルとして定義されている JARフアイ ルを生成する JARファイル生成ステップとをコンピュータに実行させることを特徴とす る。
[0047] 上述のような構成の JARファイル生成プログラムにおいて、前記同一性確認用情報 は、前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含 むことが好ましい。
[0048] また、上述のような構成の JARファイル生成プログラムにおいて、前首 SJARフアイノレ 生成ステップは、前記配備情報および同一性確認用情報に基づいて、前記配備情 報、同一性確認用情報、前記複数の所定の Javaアブレットプログラムをロードするた めのロード用プログラムおよび前記ロード用プログラムを起動させるための起動用プ ログラムを含む JARファイルであり、前記同一性確認用情報、ロード用プログラムおよ び起動用プログラムが同一パッケージにおけるクラスファイルとして定義されている JA Rファイルを生成する構成とすることもできる。
[0049] 上述のような構成の JARファイル生成プログラムにおいて、前言 ファイル生成ス テツプは、前記複数の所定の Javaアブレットプログラム、前記配備情報および同一性 確認用情報に基づいて、前記複数の所定の Javaアブレットプログラム、前記配備情 報および同一性確認用情報を含む JARファイルであり、前記同一性確認用情報が所 定のパッケージにおけるクラスファイルとして定義されている JARファイルを生成する ことが望ましい。
[0050] また、上述のような構成の JARファイル生成プログラムにおいて、前記同一性確認 用情報は、前記複数の所定の Javaアブレットプログラムそれぞれのハッシュ値または 前記複数の所定の Javaアブレットプログラムそれぞれのデータの一部または全部を 含むことが好ましい。
[0051] なお、上述のような構成の JARファイル生成プログラムにおいて、前首 ファイル 生成ステップは、前記複数の所定の Javaアブレットプログラム、前記配備情報および 同一性確認用情報に基づいて、前記複数の所定の Javaアブレットプログラム、前記 配備情報、同一性確認用情報、前記複数の所定の Javaアブレットプログラムをロード するためのロード用プログラムおよび前記ロード用プログラムを起動させるための起 動用プログラムを含む JARファイルであり、前記同一性確認用情報、ロード用プログ ラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義され ている JARファイルを生成する構成とすることもできる。
[0052] この他、本発明に係る JARファイル生成装置は、複数の所定の Javaァプレットプロ グラムをコンピュータに実行させる Javaァプレットを含む JARファイルを生成する JAR ファイル生成装置であって、前記複数の所定の Javaアブレットプログラムそれぞれの 所在について定義する配備情報に基づいて、同一性確認用情報を生成する同一性 確認用情報生成部と、前記配備情報および同一性確認用情報に基づいて、前記配 備情報および同一性確認用情報を含む JARファイルであり、前記同一性確認用情 報が所定のパッケージにおけるクラスファイルとして定義されている JARファイルを生 成する JARファイル生成部とを備えてなることを特徴とする。
[0053] 上述のような構成の JARファイル生成装置において、前記同一性確認用情報は、 前記配備情報のハッシュ値または前記配備情報のデータの一部または全部を含む ことが好ましい。
[0054] なお、上述のような構成の JARファイル生成装置において、前言 ARファイル生成 部は、前記配備情報および同一性確認用情報に基づいて、前記配備情報、同一性 確認用情報、前記複数の所定の Javaァプレットプログラムをロードするためのロード 用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを 含む JARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用 プログラムが同一パッケージにおけるクラスファイルとして定義されている JARフアイ ルを生成する構成とすることができる。 [0055] また、上述のような構成の JARファイル生成装置において、前首 SJARファイル生成 部は、前記複数の所定の Javaアブレットプログラム、前記配備情報および同一性確 認用情報に基づいて、前記複数の所定の Javaアブレットプログラム、前記配備情報 および同一性確認用情報を含む JARファイルであり、前記同一性確認用情報が所定 のパッケージにおけるクラスファイルとして定義されている JARファイルを生成すること が望ましい。
[0056] この他、上述のような構成の JARファイル生成装置において、前記同一性確認用情 報は、前記複数の所定の Javaァプレットプログラムそれぞれのハッシュ値または前記 複数の所定の Javaァプレットプログラムそれぞれのデータの一部または全部を含む 構成とすることちできる。
[0057] 上述のような構成の JARファイル生成装置において、前曾 dJARファイル生成部は、 前記複数の所定の Javaアブレットプログラム、前記配備情報および同一性確認用情 報に基づいて、前記複数の所定の Javaアブレットプログラム、前記配備情報、同一性 確認用情報、前記複数の所定の Javaアブレットプログラムをロードするためのロード 用プログラムおよび前記ロード用プログラムを起動させるための起動用プログラムを 含む JARファイルであり、前記同一性確認用情報、ロード用プログラムおよび起動用 プログラムが同一パッケージにおけるクラスファイルとして定義されている JARフアイ ルを生成することが好ましレ、。
[0058] なお、上述し AVAァプレットおよび JARファイル生成プログラムは、コンピュータ により読取り可能な記録媒体に記憶させることによって、コンピュータに実行させるこ とが可能となる。なお、上記コンピュータにより読取り可能な記録媒体としては、 CD- ROMやフレキシブルディスク、 DVDディスク、光磁気ディスク、 ICカードなどの半導 体記憶装置等の可搬型記憶媒体、コンピュータに実装される R〇M、 RAMや磁気記 録装置等の固定型記憶装置や、コンピュータプログラムを保持するデータベース、或 レ、は、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含 むものである。
[0059] このように、 JARファイル生成プログラムをコンピュータに実行させることにより、上述 し ARファイル生成方法における各ステップが実現される。 図面の簡単な説明
[図 1]本実施の形態における電子署名されたアブレットの不正利用の防止について 説明するための概念図である。
[図 2]図 1にて示した電子署名されたアブレットの不正利用を防止するための具体的 な構成の一例を示す図である。
[図 3]特殊形 ¾JARファイル 2の内部構成の詳細について説明するための図である。
[図 4]特殊ァプレットプログラム 24について説明するための図である。
[図 5]図 4に示した構成の特殊形 八1ファイル 2に対して電子署名を施したものを示 す図である。
[図 6]JARファイル Tの構成例を示す図である。
[図 7]JARフアイノレ(descriptor, jar) Dの構成を示す図である。
[図 8]配備記述子(cozilet.properties)の詳細を示す図である。
[図 9]同一性確認用情報としてハッシュ値を坦め込んだ CoziletData.javaのソースコー ドである。
[図 10]同一性確認用情報として配備記述子そのものを埋め込んだ CoziletData.java のソースコードである。
[図 11]特殊ァプレットが起動されてから対象ァプレットへの入れ替えが完了するまで のフローチャートである。
[図 12]JARファイル (target.jar) Tを特殊形 ¾JARファイルに含まなレ、構成にっレ、て 説明するための図である。
[図 13]ァプレット等の内の一部をクライアント端末 Cの外部力 ダウンロードし、残りを クライアント端末 Cの内部に予め配備しておく構成について説明するための図である
[図 14]特殊形 ¾JARファイル 202の構成の詳細を示す図である。
[図 15]特殊形 八尺ファイル 203として、同一性確認用情報としての
CoziletData.class24cおよび JARファイル(descriptor.jar) Dを含む構成とした場合の 図である。
[図 16]ラッパ一メソッドを追加した Coziletクラス(起動用プログラムに相当)のソースコ 一ドの例を示す図である。
[図 17]直列化を無効にする実装を施した Coziletクラスのソースコードの例を示す図で ある。
[図 18]特殊形 ¾JARファイルを生成するための JARファイル生成装置について説明 するための図である。
[図 19]JARファイル生成装置における処理の流れについて説明するためのフローチ ヤートである。
[図 20]その他のアブレット等をクライアント端末 Cの内部に予め配備しておく構成につ いて説明するための図である。
[図 21]電子署名のないアブレットが実行される場合の通常の処理について説明する ための概念図である。
[図 22]署名付きアブレットが実行される場合の処理について説明するための概念図 である。
[図 23]不正な再構成攻撃の一例について説明するための図である。
発明を実施するための最良の形態
[0061] 以下、本発明の実施の形態について図面を参照して詳細に説明する。
[0062] 従来、電子署名付き JARファイルと不正 ¾[ARファイルとが不正に再構成されたも のを、クライアント端末における JREにてロードした場合、これら JARファイルが不正に 再構成されていることを JRE側で検出することができず、署名付アブレットにのみ許さ れる処理等 (保護されたシステム資源に対するアクセスなど)を不正に実行されてしま う場合があった。よって、アブレットを正規な構成(そのアブレットの作成者の意図に 沿った構成)でのみ実行させるような構成とする必要がある。以下、上述のようなアブ レットの作成者の意図に沿ったロードさせるべき正規な構成の複数の所定の Javaァ プレットプログラムを、対象ァプレットプログラムと呼ぶ。
[0063] 図 1は、本実施の形態における電子署名されたァプレットの不正利用の防止につい て説明するための概念図である。なお同図では、図 23にてすでに示したものと同一 の部分については同一符号を付し、説明は割愛する。
[0064] 本実施の形態では、 JRE12にァプレットプログラムを正規な構成でのみ実行させる ための機能 12cをもたせている。これにより、不正に再構成され^ JARファイル (例え ば、署名付 JARファイルである foo.jar93と不正な JARファイルである evil.jar91との再 構成ファイル)力 SJRE12にてロードされた場合(S 11)でも、ァプレットプログラムを正 規な構成でのみ実行させるための機能 12cによって、署名付アブレットに対して許可 された処理を悪用させなレ、(S 12)ようにしてレ、る。
[0065] なお、クライアント端末 Cにおける JRE12に、ァプレットプログラムを正規な構成での み実行させるための機能 12cをもたせるための主な構成例としては、 (1)当該機能 1 2cを実現するためのァプレット等(ァプレットやこれに関連するデータ)をクライアント 端末 Cの外部からダウンロードし、 JRE12にて起動させる構成、(2)当該機能 12cを 実現するァプレットプログラム等の内の一部をクライアント端末 Cの外部からダウン口 ードし、残りをクライアント端末 Cの内部に予め配備しておく構成、(3)当該機能 12c を実現するアブレットプログラム等の内、クライアント端末 Cの外部に配備すべきデー タのみ外部に配備し、その他のアブレットプログラム等はクライアント端末 Cの内部に 予め配備しておく構成の 3つが挙げられる。
[0066] まず、(1)クライアント端末 Cにおける JRE12に、アブレットプログラムを正規な構成 でのみ実行させるための機能 12cを実現するためのァプレットプログラム等(ァプレツ トプログラムやこれに関連するデータ)をクライアント端末 Cの外部からダウンロードし 、JRE12にて起動させる構成について説明する。
[0067] 図 2は、図 1にて示した電子署名されたァプレットの不正利用を防止するための具 体的な構成の一例を示す図である。なお同図においても、図 23にてすでに示したも のと同一の部分については同一符号を付し、説明は割愛する。
[0068] 図 2に示す構成では、電子署名されており且つ内部の構成が特殊な特殊形 ¾JAR ファイル 2を使用することによって、電子署名されたアブレットの機能の不正利用を防 止している。具体的に、特殊形 ¾JARファイル 2は、対象アブレットプログラムとしての bar.jar21および foo.jar22と、対象ァプレットプログラム(複数の所定の Javaァプレット プログラム)それぞれの所在について定義する配備記述子(配備情報に相当) 23と、 特殊ァプレットプログラム 24とを含んでいる。これら bar. jar21 特殊ァプレットプログ ラム 24は、個別には電子署名を施されておらず、これら bar. jar21 特殊ァプレットプ ログラム 24を含む JARファイル全体に対して電子署名が施されている。なお、クライ アント端末 Cは、図 23にて示した従来のクライアント端末と同様な構成である。
[0069] 特殊形 八尺ファイル 2がクライアント端末 Cにおける JRE12にロードされると、当該 ロードされた特殊形 ARファイル 2に含まれる特殊ァプレットプログラム 24がアブレ ット起動部 12aにより実行され、特殊アブレット 12dが起動される。
[0070] このようにして起動される特殊アブレット 12d (起動用プログラムに相当)は、特殊形 ¾JARファイル 2に含まれたかたちで JRE12にロードされている配備記述子 23に基 づいて、アブレットを正規な構成でのみロードさせる機能をもつ特殊アブレット起動部 12e (ロード用プログラムに相当)を有する。
[0071] このような構成により、 JRE12にアブレットプログラムを正規な構成でのみ実行させ るための機能をもたせ、電子署名されたアブレットが不正に再利用されることを防止し ている。
[0072] 以下、 JRE12において上述のような機能を実現させるための特殊形 ARファイル
2の内部構成の詳細について説明する。図 3に示すように、本実施の形態では特殊 形 八尺ファイル 2は、特殊ァプレットプログラム 24、】八1ファィル & 61^ 丁ぉょ び JARファイル(descriptor, jar) Dを含んだ構成となっている。
[0073] まず、特殊ァプレットプログラム 24につレ、て説明する(図 4参照)。特殊ァプレットプ ログラム 24は、実行時に対象アブレットと入れ替わる機能を有する特殊アブレットプロ
) 24a、配備記述子をもとに対象アブレットのプログラムをロードする機能を有する特 対応) 24bおよび CoziletData.class (同一性確認用情報に相当) 24cを含んでいる。 また、これらのクラスファイルは全て同じパッケージ com.aaa.labs.sec.coziletに所属し ているので、特殊形 ¾JARファイル 2全体に対して電子署名を施すことによって、攻 撃者がこれらのクラスファイル群を不正に置き換えることは
same-package- same- signerの仕組みによって防がれる。図 5は、図 4に示した構成の 特殊形 ¾JARファイル 2に対して電子署名を施したものを示す図である。
[0074] 続いて、特殊形 ¾JARファイル 2に含まれる JARファイル (target. jar) Tについて説 明する。図 6に、 JARファイル Tの構成例を示す。具体的に、対象ァプレットは、当該 対象アブレットの実行に必要なクラスファイル群やリソースファイル群、そしてそれらを 格納する JARファイル群を指す。同図では、 JARファイル Tは、対象ァプレットプログ ラムである JARファイル群 targetl.jar、 target2.jarを含んでいる。ここで fお ARファイル (target.jar) Tは署名のなレ、JARファイルである。 JARフアイノレ(target.jar) Tに含まれ る対象ァプレットプログラムは、特殊ァプレットプログラム 24の実行時に特殊クラス口 ーダ(ロード用プログラム)によってのみロードされ、 JREの標準のクラスローダでは口 ードされなレ、。よって、対象アブレットプログラムが攻撃者に悪用されることを防ぐこと ができる。
[0075] 次に、特殊形 ARファイル 2に含まれる JARファイル(descriptor. jar) Dについて 説明する。図 7に、 JARファイル(descriptor. jar) Dの構成を示す。ここで、 JARフアイ ノレ(descriptor.jar) Dは、 Java標準のプロパティフアイノレ cozilet.properties23 (図 3参 照)を含んでいる。ここでは、配備記述子 cozilet.properties23が対象ァプレットプログ ラムの配備情報に相当する。 JARファイル Dは署名のない JARファイルである。また、 JARファイル D (配備情報に相当)は必ず特殊形 八1ファイル 2に含まれている。
[0076] 図 8に配備記述子(cozilet. properties) 23の詳細を示す。 main— classプロパティは 対象アブレットのメインクラスの名前である。特殊アブレットはプロパティをもとに対象 ァプレットプログラムを実行する。 class— pathプロパティは対象ァプレットプログラムの うち、特殊形 八尺ファイルには含まれないものが配備されている URLのリストである 。同図の例では、信頼されたサイト上に配備された outerl.jarの URLと、ユーザの口 一カルディスク上に予めインストールされた outer2.jarのパスが記述されてレ、る。特殊 クラスローダはプロパティをもとに対象ァプレットプログラムをロードする。攻撃者に悪 用されることを防ぐために、これらの UR お REが標準でロード可能な場所 (エタステ ンシヨンディレクトリなど)以外の場所にしておくことが望ましい。
[0077] library_pathプロパティは対象ァプレットプログラムのうち、 nativeメソッドの実行に 必要な nativeライブラリ群が配備されているパスのリストである。 nativeライブラリはロー カルディスク上にインストールされている必要があるので、プロパティでは URLではな くローカルディスク上のパスを指定する。特殊クラスローダはプロパティをもとに native ライブラリ群をロードする。攻撃者に悪用されることを防ぐために、これらのパスは JRE が標準でロード可能な場所 (システムディレクトリなど)以外の場所にしておくことが望 ましい。
[0078] tmsted_urlプロパティは、特殊ァプレットを坦め込む HTML文書が配備されるべき 信頼されたサイトの URLのリストである。特殊ァプレットは、実行直後に自らが埋め込 まれてレ、る HTML文書が配備されてレ、る URLを取得し、プロパティに含まれる URL と比較することにより、 自らが信頼されたサイトに配備された HTML文書によって坦め 込まれてレ、るかどうかを検查できる。
[0079] exclusive_modeプロパティは、特殊ァプレットの実行中に信頼できないァプレットの 実行を防ぐ機能を有効にするかどうかを決定するフラグである。プロパティの値が〇N の場合、特殊アブレットは上述の機能を有効にする。一方、プロパティの値力 ffの場 合、この機能は無効になる。
[0080] 次に、特殊ァプレットプログラム 24に含まれる CoziletData.class24cについて説明 する。 CoziletData.class24cは、対象ァプレットプログラムや配備記述子の改ざんを検 出するための同一性確認用情報を含むクラスファイルである。図 9に、同一性確認用 情報として対象ァプレットプログラムや配備記述子の SHA1ハッシュ値 Hを定数フィ 一ルドとして埋め込んだクラス CoziletDataのソースコード CoziletData.javaを示す。こ のソースコードをコンパイルすることにより、 CoziletData.class24cを生成することがで きる。
[0081] CoziletDataクラスは、 inner― hash, outer― hash, descriptor― hashの 3つの定数フィ 一ルドを含んでレ、る。 inner— hashには target.jarTの SHA1ハッシュ値が含まれる。 outer_hashには class_pathプロパティで指定された URLに配備された対象ァプレツ トプログラム全体の SHA1ハッシュィ直が含まれる。 descriptor_hashには descriptor. jar Dの SHA1ハッシュ値が含まれる。 CoziletDataクラスは他の特殊ァプレットプログラム であるクラスファイル群と同じパッケージ com.aaa.labs.sec.coziletに所属しており、特 殊形 ¾JARファイルに電子署名を施すことで、 same-package- same- signerの仕組み により攻撃者による不正な置き換えを防止できる。
[0082] ところで、特殊形 ARファイルに含まれる target.jarT及び descriptor.jarDは、クラ スファイルではなくリソースファイルであるため、攻撃者により不正に置き換えられるお それがある。そこで、特殊クラスローダがこれらのリソースファイルをロードする際に、 ロードしたリソースの SHA1ハッシュ値を CoziletDataクラスの定数フィールドに含まれ る SHA1ハッシュ値 Hとそれぞれ比較することによって、リソースファイルが改ざんさ れていないかどうか検出することができる。
[0083] なお、上述の例では CoziletData.class24cに、 target. jarT及び descriptor. jarDの S HA1ハッシュ値 Hを含ませる構成としている力 これに限られるものではなぐ target.jarT及び descriptor. jarDのデータの一部または全部を含む定数フィールドを 含む構成としてもよレ、。図 10に、 descriptor.jarDそのものを含む定数フィールド descriptor_valueを含む CoziletData.class24cのソースコードの例を示す。この場合 は、特殊形 ARファイル 2は descriptor. jarDを含む必要はなぐ特殊ァプレットプロ グラム 24の実行時に定数フィーノレド descriptor_valueから descriptor.jarDの値を取り 出すことができる。
[0084] 続いて、上述の特殊ァプレットプログラム 24を JREにて実行させる場合の動作につ いて、図 11のフローチャートを用いて説明する。
[0085] まず、本実施の形態による特殊形 八1ファイル 2は、例えばサーバ上に配備され 、 Webブラウザ等を介して JREによりロードされることで、特殊ァプレットプログラム 24 力 SJREにて実行される。
[0086] 通常、複数の所定の Javaアブレットプログラムは、例えば、
、 applet coae= jp. example. bomeApplet
archive= target l.jar,target2. jar
width="400" height="400" > < /applet >
のような appletタグを含む HTML文書によって起動される。
[0087] 一方、本実施の形態における特殊形 ARファイル 2を用いて複数の所定の Java アブレットプログラムを JREにて起動させる場合、
、 applet coae= com.aaa.laDs.sec.cozilet.uoziiet
archive= cozilet.jar
width="400" height="400" > < /applet > のような appletタグを含む HTML文書によって、対象ァプレットの代わりに特殊アブレ ットを配備してこれを起動させ(S21)、対象アブレットプログラムを起動させればょレ、
[0088] 続レ、て、 JREにて Coziletクラス 24aがロードされインスタンスが生成される(S22)。
Coziletクラスは静的初期化子において特殊形 ¾JARファイル 2に含まれる
cozilet.properties23を取り出す。 CoziletData.class24cによる改ざん防止がなされて レ、る場合には、 cozilet.properties23が改ざんされているかどうか検証し(改ざん検出 ステップ)(S23)、改ざんされている場合(S24,ある)には実行を強制終了する(S2
9)。改ざんされていなければ(S24,ない)、 cozilet.properties23から
java.util.Propertiesインスタンスを生成する。以下、このインスタンスを cozilet配備記述 子と呼ぶ。このように、複数の所定の Javaァプレットプログラムそれぞれの所在につい て定義する配備情報の改ざんを検出するための同一性確認用情報に基づいて、配 備情報の改ざんを検出する。
[0089] 次に、 cozilet配備記述子力ら exclusive— modeプロパティの値を参照し、 ONであれ ば特殊アブレットプログラム 24の実行中に信頼できないアブレットの実行を防ぐ機能 を有効にする(S25)。この機能では、 JREに含まれる Java仮想マシンにおけるクラス ローデイングとクラス定義の制限機能を利用してレ、る。クラスローデイング制限機能で は、セキュリティプロパティ" package.access"に指定された文字列で始まるパッケージ 群に含まれるクラスについて、信頼できないプログラムがロードすることを禁止できる。 また、クラス定義制限機能では、セキュリティプロパティ" package.definition"に指定さ れた文字列で始まるパッケージ群について、信頼できないプログラムが新しいクラス を定義することを禁止できる。そこで、これらのプロパティに「java.」、「javax.」、「 com. 」および「org」等のような値を設定することにより、信頼できないプログラムは実行に必 要なクラス(例えば、 java.applet.Appletクラス)をロードすることができなくなるため、結 果的に実行できなくなる。
[0090] 次に、 JREは Coziletクラスの init()を呼び出す(S26)。 Coziletクラスは init()メソッドに おいて、 自らの埋め込み元の HTML文書の配備されたサイトの URL力 cozilet配備 記述子の trusted urlプロパティの値に含まれる URLのリストと比較して信頼できるも のかどうかを調べる(S27)。坦め込み元の HTML文書の配備されたサイトの URLは 、 java.applet.Appletクラスの getDocumentBaseOにより取得できる。ここでは、この UR L力 ^trusted— urlプロパティに含まれる各 URLのいずれ力 1つに一致すれば十分で ある。また、 URLを前方一致で比較する構成とすることもできる。もし、 trusted_urlプ 口パティに含まれるいずれの URLにも一致しな力、つた場合(S27,できない)、実行を 強制終了する(S29)。
[0091] 上述のチェックに問題がなければ(S27,できる)、 Coziletクラス 24aは、複数の所 定の Javaァプレットプログラムをロードするためのロード用プログラムとしての
CoziletClassLoaderクラス 24bのインスタンスを生成する(ロード用プログラム起動ステ ップ)(S28)。 CoziletClassLoaderクラス 24bはコンストラクタにおいて、特殊形 AR ファイル 2に含まれる target. jarT、 cozilet配備記述子の class_pathプロパティで指定 された URL、そして cozilet配備記述子の library_pathプロパティで指定されたパスに 存在する対象アブレットプログラムについて、ロード可能な状態にする。もし
CoziletData.class24cによる改ざん防止がなされている場合には、対象ァプレットプロ グラムの完全性を検証し (S2a)、改ざんが検出された場合(S2b,ある)、実行を強制 終了する(S29)。
[0092] CoziletClassLoaderクラス 24bのインスタンスの生成に成功したら、 Coziletクラス 24a は cozilet配備記述子の main— classプロパティから取得できる対象ァプレットのメイン クラスの名前を、 CoziletClassLoaderクラス 24bの loadClassOに引数として渡して呼び プ)。すなわち、改ざん検出ステップにおいて改ざんが検出されなかった場合に、配 備情報に基づいて、ロード用プログラムに複数の所定の Javaァプレットプログラムを口 ードさせる。そして、そのクラスインスタンスのコンストラクタを Javaのリフレクションの仕 組みにより呼び出して、その対象アブレットのメインクラスのインスタンスを得る(S2c)
[0093] ァプレットのレ、くつかの処理はァプレットスタブに委譲されている
(getDocumentBaseOの呼び出しなど)。ァプレットスタブは最初は特殊ァプレットにセッ トされる。 Coziletクラスは自らのァプレットスタブを対象ァプレットの setStubOを呼び出 してセットする(S2d)。アブレットスタブは対象アブレットを正常に実行させるために必 要である。ァプレットスタブは java.applet.Appletクラスの privateフィールドとして格納さ れており、 Coziletクラス 24aはそのフィールドにはアクセスできなレ、。ここで、 Java仮想 マシンにおいて、 Coziletクラスのインスタンスが登録されている特殊ァプレットの親パ ネルがァプレットスタブの機能を有してレ、る場合、 Coziletクラスから親パネルのインス タンスを得ることは容易なので、そのインスタンスをァプレットスタブとして対象アブレ ットにセットする(S2d)。
[0094] ァプレットは親パネルに登録されていることで、ブラウザ上に表示されたり、 GUIィ ベントを処理できるようになつている。親パネルには最初は特殊ァプレットが登録され ているため、 Coziletクラス 24aは親パネルに登録された自らのインスタンスを削除し、 これによつて、 JREから送られる GUIイベントが特殊ァプレット 24に対してではなく対 象アブレットに通知されるようになり、対象アブレットがアブレットとして正常に動作で きるようになる。
[0095] そして、 Coziletクラス 24aは対象ァプレットのメインクラスの init()を呼び出す(S2f)。
これ以降、特殊アブレットの代わりに対象アブレットがアブレットとして動作するように なり、アブレットの入れ替えが完了する(S2g)。
[0096] このように、同一性確認用情報に基づレ、て改ざんされてレ、なレ、ことが確認された配 備情報により複数の所定の Javaアブレットプログラムをロードする構成とすることで、 J avaァプレットが改ざんされて当窗 avaァプレットの作成者の意図とは異なる他の Jav aアブレットプログラムがロードされることを防止することができる。すなわち、電子署名 され ^avaアブレットが不正に再利用されることを簡単かつ確実に防止することがで きる。
[0097] また、特殊ァプレットの publicメソッドは攻撃者に悪用されるおそれがあるので、各メ ソッドの冒頭で、スタック検查による呼び出し元の検查を行っている。具体的には、各 メソッドの 頭で、 java.security.AccessControllerクフスの checkPermissionOを、引数 として java.security.AUPermissionクラスのインスタンスを渡して呼び出してレ、る。これ により、アクセス権 AllPermissionを持たなレ、クラス、つまり攻撃者のクラスは上述の特 殊ァプレットの publicメソッドを呼び出すことができなくなる。 checkPermissionOに渡す アクセス権は、必ずしも AllPermissionでなくともよぐ攻撃者の呼び出しを妨げるのに 十分なアクセス権でよい。
[0098] なお、上述した特殊形 ARファイル 2は、起動用プログラムとしての Cozilet.class2 4a、ロード用プログラムとしての CoziletClassLoader.class24b、同一性確認用情報と しての CoziletData.class24c、 JARフアイノレ(target.jar) Tおよび JARフアイノレ( descriptor.jar) Dを含む構成となっている力 S (図 3参照)、これに限られるものではなく 、例えば target.jarTは必ずしも特殊形 ARファイル 2に含まれる必要はなレ、。なお 、図 12に示す特殊形 ARファイル 201のように、 JARフアイノレ(target.jar) Tを特殊 形 ¾JARファイルに含まなレ、構成とする場合、 JARフアイノレ (target.jar) Tfお REにて ロード可能な場所に配備されている必要がある。
[0099] この他、上述したように、(2)ァプレットを正規な構成でのみ実行させるための機能 1 2cを実現するァプレット等の内の一部をクライアント端末 Cの外部力 ダウンロードし 、残りをクライアント端末 Cの内部に予め配備しておく構成とすることもできる(図 13参 照)。同図では、特殊形 ARファイル 202として、同一性確認用情報としての
CoziletData.class24c、 JARフアイノレ (target.jar) Tおよび JARフアイノレ (descriptor.jar ) Dを含む構成を示している。同図に示す構成の特殊形 八1 ファイル 202を使用 する場合、起動用プログラムとしての Cozilet.class24aおよびロード用プログラムとして の CoziletClassLoader.class24bは、 JREを備えたクライアント端末の記憶領域に予め 格納されていることが好ましい。図 14は、特殊形 八尺ファイル 202の構成の詳細を 示す図である。
[0100] また、特殊形 ¾JARファイル 203として、同一性確認用情報としての
CoziletData.class24cおよび JARファイル(descriptor.jar) Dを含む構成とすることもで きる(図 15参照)。この場合、起動用プログラムとしての Cozilet.class24aおよびロード 用プログラムとしての CoziletClassLoader.class24bは、 JREを備えたクライアント端末 の記憶領域に予め格納され、 JARファイル (target.jar) Τίお REにてロード可能な場 所に配備されてレ、る必要がある。
[0101] このように、本実施の形態における特殊形 ¾JARファイルは、図 3、図 12、図 13お よび図 15に示すように、様々な形式に分割することが可能である力 上述したどの形 式の特殊形 ARファイルにおレ、ても、結果として分割された構成要素全てが JRE にロードされ、図 11に示した各ステップが実行される点では共通している。
[0102] 上述したように、対象ァプレットを特殊ァプレットの代わりに親パネルに登録すること により、 GUIイベントは正常に通知されるため、 GUI関連の対象ァプレットのメソッド について ίお REによって正常に実行される。しかし、 GUI関連以外の対象ァプレット のメソッドについては、 JREが内部的に保持している動作中ァプレットのリストに対象 ァプレットが登録されていないため、 JREによって正常に実行されず、依然として特殊 ァプレットのメソッドが実行されてしまう。そこで、これらのメソッドについては、特殊ァ プレットの各メソッドにおいて、 JREからのメソッド呼び出しを対象ァプレットの該当メソ ッドに委譲するようにしている。
[0103] 具体的には、対象アブレット配備情報として入力されたメソッドシグネチヤ群と同じ シグネチヤを持つラッパ一メソッド群を特殊ァプレットのメインクラスに追加し、ラッパ 一メソッド群力 S自分自身へのメソッド呼び出し処理を対象ァプレットのメインクラスの同 じシグネチヤを持つメソッドに委譲させる構成としている。
[0104] 図 16に、ラッパ一メソッドを追加した Coziletクラス(起動用プログラムに相当 )のソー スコードの例を示す。このソースコードをコンパイルすることにより、ラッパ一メソッド力 S 追加された Cozilet.classを生成できる。同図の例では、配備情報として入力されたメソ ッドシグネチヤ doSomething(java.lang.String)と同じシグネチヤを持つラッノ一メソッド を追加し、ラッパ一メソッド内で同じシグネチヤを持つ対象ァプレットのメインクラスのメ ソッドを、 Javaのリフレクションの仕組みを利用して呼び出している。
[0105] JavaScriptからァプレットのメソッドの呼び出しがあると、呼び出し依頼力 SJREに伝え られる。 JREは動作中のアブレットリストを保持しており、このリストをもとに該当するァ プレットのメソッドを呼び出す。ただし、ァプレットリストは特殊ァプレットから操作するこ とができなレ、。そこで、上述した特殊形 ¾JARファイルに含まれる特殊ァプレットのメ インクラスに該当メソッドのラッパ一メソッドを追加することで、ラッパ一メソッドが呼び 出された場合には、スクリプトコードがラッパ一メソッドを経由して対象ァプレットのメソ ッドを呼び出せるようにすること力 Sできる。 [0106] また、本実施の形態における特殊アブレットは自らの直列化が無効になるように実 装されている。特殊アブレットの直列化が有効になっていると、攻撃者は直列化や直 歹 IJ化からの復元を行うインターフェイスを利用して、特殊ァプレットのセキュリティ上重 要な privateフィールドの値を盗み出したり改ざんしたりすることが可能である。
java.applet.Appletクラスは直列化可能として実装されてレ、るので、それを継承してレヽ る Coziletクラスも直列化可能となっている。そこで、 Cozilet.class24aは、直列化に関 連するメソッドにおいて強制的に例外を発生するように実装することにより、 自らの直 列化を無効にしている。図 17に直列化を無効にする実装を施した Coziletクラスのソ ースコードの例を示す。
[0107] 続いて、図 18を用いて上述のような構成の特殊形 ARファイル(図 3、図 12、図 1 3および図 15)を生成するための JARファイル生成装置 5について説明する。本装置 は、複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaァプレツ トを含む JARファイルを生成する機能を有し、対象アブレットプログラム及び配備情報 を入力することによって、対象アブレットプログラムを特殊形 八尺ファイルに変換す
[0108] 本実施の形態による JARファイル生成装置 5は、同一性確認用情報生成部 51、 JA Rファイル生成部 52、記憶部 53、 CPU54および特殊ァプレット生成部 55を備えて なる構成となっている。
[0109] 同一性確認用情報生成部 51は、対象アブレットプログラム (複数の所定の Javaァ ブレットプログラム)それぞれの所在について定義する配備情報に基づいて、配備情 報の改ざんを検出するための同一性確認用情報を生成する役割を有する。
[0110] JARファイル生成部 52は、複数の所定の Javaァプレットプログラム、配備情報およ び同一性確認用情報に基づレ、て、複数の所定の Javaアブレットプログラム、配備情 報、同一性確認用情報、複数の所定の Javaァプレットプログラムをロードするための ロード用プログラムおよびロード用プログラムを起動させるための起動用プログラムを 含む JARファイルであり、同一性確認用情報、ロード用プログラムおよび起動用プロ グラムが同一パッケージにおけるクラスファイルとして定義されている JARファイルを 生成する。また、 JARファイル生成部 52は、生成する JARファイルに対して電子署名 を施す機能を有している。
[0111] 特殊ァプレット生成部 55は、上述した起動用プログラムとしての Cozilet.class24aお よびロード用プログラムとしての CoziletClassLoader.class24bを生成する役割を有す る。
[0112] 記憶部(コンピュータにより読取り可能な記録媒体) 53は、 RAMや ROM等の記憶 領域力 構成されており、 JARファイル生成装置 5において実行されるプログラムや 種々のァプレット等を格納する役割を有してレ、る。 CPU (コンピュータ) 54は、 JARフ アイル生成装置 5における各種処理を行うために、記憶部 53に格納されているプログ ラムを実行する役割等を有してレ、る。
[0113] 図 19は、上述のような JARファイル生成装置 5における処理の流れ JARファイル 生成方法)について説明するためのフローチャートである。ここでは、図 3に示すデー タ形式の特殊形 ARファイルを生成する場合について述べる。
[0114] まず、 JARファイル生成装置 5において、入力データとして対象ァプレットプログラム
(ここでは、 bar.jar21および foo.jar22)および当該対象ァプレットプログラムの所在に ついて定義する配備情報 (格納場所や URL等)を取得する(S61)。
[0115] 次に、同一性確認用情報生成部 51は、取得された配備情報に基づいて、当該配 備情報の改ざんを検出するための同一性確認用情報としての JARファイル( descriptor. jar) Dを生成する(同一性確認用情報生成ステップ)(S62)。 具体的に、 同一性確認用情報生成部 51は、同一性確認用情報として、配備情報のハッシュ値 または配備情報のデータの一部または全部を含む JARファイル、対象ァプレットプロ グラムそれぞれのハッシュ値または対象ァプレットプログラムそれぞれのデータの一 部または全部を含む JARファイル、配備情報および対象アブレットプログラム両方の ハッシュ値またはそれぞれのデータの一部または全部を含む JARファイルを生成す ること力 Sできる。
[0116] 続いて、 JARファイル生成部 52は、対象ァプレットプログラム(bar. jar21および foo.jar22)、配備情報および同一性確認用情報に基づいて、対象ァプレットプロダラ ム、配備情報、同一性確認用情報、対象ァプレットプログラムをロードするためのロー ド用プログラムおよびロード用プログラムを起動させるための起動用プログラムを含む JARファイルを生成する。このとき、同一性確認用情報、ロード用プログラムおよび起 動用プログラムは、図 3に示すように、生成される JARファイルにおいて同一パッケ一 ジにおけるクラスファイルとして定義される OARファイル生成ステップ)(S63)。このよ うに、配備情報の改ざんを検出するための同一性確認用情報を、所定のパッケージ におけるクラスファイルとして定義することで、当窗 ARファイルに電子署名が施され た場合に、「same-package-same- signer」の仕組みによって、当該同一性確認用情 報の不正な改ざんを防ぐことができる。また、生成する JARファイルに、複数の所定の Javaァプレットプログラムをロードするためのロード用プログラムおよび該ロード用プロ グラムを起動させるための起動用プログラムを含ませるようにしたことで、当^ [ARフ アイルをダウンロードする端末において複数の所定の Javaァプレットプログラムをロー ドするための機能を実現するプログラムを予めインストールしておかずとも、この JAR ファイルをダウンロードするだけで複数の所定の Javaァプレットプログラムを安全に口 ードさせることができる。すなわち、当謝 ARファイルをロードし、実行する JREに対し て何ら変更を加えることなぐ電子署名され avaアブレットが不正に再利用されるこ とを簡単かつ確実に防止することができる。
[0117] 上述のようにして生成され ARファイルは、必要に応じて JARファイル生成部 52 にて電子署名を施されて出力される(S64)。
[0118] 上述の JARファイル生成方法における各ステップは、記憶部 53に格納されている】 ARファイル生成プログラムを、 CPU54に実行させることにより実現される。
[0119] 上述のようなステップにより、特殊アブレットプログラムであるクラスファイル群、対象 アブレットプログラムおよび配備情報を含む図 3にて示したような特殊形 八1フアイ ルを生成することができる。
[0120] なお、 JARファイル生成部 52は、特殊形 ¾JARファイルに含ませる特殊アブレット プログラムであるクラスファイル群(ロード用プログラムおよび起動用プログラムなど)を 、記憶部 53に予め格納されているデータ中から選択することができる。もちろん、特 殊ァプレット生成部 55にて生成された特殊アブレットを、特殊形 ARファイルに含 ませるクラスフアイノレ群とするように生成することもできる。
[0121] また、 JARファイル生成部 52は、図 12に示すデータ形式の特殊形 ARファイル 2 01のように、対象ァプレットプログラムを特殊形 ARファイルには含めずに生成す ることもできる。この場合、 JARファイル生成部 52は、配備情報および同一性確認用 情報に基づいて、配備情報、同一性確認用情報、対象アブレットプログラムをロード するためのロード用プログラムおよびロード用プログラムを起動させるための起動用 プログラムを含む JARファイルを生成する。このとき、 JARファイル生成部 52により、 同一†生確認用情報、ロード用プログラムおよび起動用プログラムが同一パッケージに
[0122] また、 JARファイル生成部 52は、図 13に示すデータ形式の特殊形 ARファイル 2 02のように、特殊ァプレットプログラム(ロード用プログラムおよび起動用プログラムな ど)を特殊形 ¾JARファイルには含めずに生成することもできる。この場合、 JARファ ィル生成部 52は、対象アブレットプログラム、配備情報および同一性確認用情報に 基づいて、対象アブレットプログラム、配備情報および同一性確認用情報を含む JAR ファイルを生成する。このとき、 JARファイル生成部 52により、同一性確認用情報が 所定のパッケージにおけるクラスファイルとして定義される。
[0123] この他、 JARファイル生成部 52は、図 15に示すデータ形式の特殊形 八1フアイ プログラムおよび起動用プログラムなど)を特殊形 八尺ファイルには含めずに生成 することもできる。この場合、 JARファイル生成部 52は、配備情報および同一性確認 用情報に基づレ、て、配備情報および同一性確認用情報を含む JARファイルを生成 する。このとき、 JARファイル生成部 52により、同一性確認用情報が所定のパッケ一 ジにおけるクラスファイルとして定義される。
[0124] なお、上述した構成の他、(3)ァプレットを正規な構成でのみ実行させるための機 能 12cを実現するアブレット等の内、クライアント端末 Cの外部に配備すべきデータの み外部に配備し、その他のアブレット等はクライアント端末 Cの内部に予め配備して おく構成とすることもできる(図 20)。同図では、クライアント端末 Cの内部に予め配備 されたアブレットプログラム等を起動することにより、ロード用プログラムおよび起動用 プログラムとしての役割を有する特殊アブレット起動部 12a'が実現されている様子を 示している。 産業上の利用可能性
以上に説明したように、本発明によれば、電子署名され avaァプレットが不正に 再利用されることを簡単かつ確実に防止することができる。

Claims

請求の範囲
[1] 複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaァプレット であって、
^Javaァプレットは出所を保証するための電子署名を施されたものであり、 前記複数の所定の Javaァプレットプログラムそれぞれの所在について定義する配 備情報の改ざんを検出するための同一性確認用情報に基づいて、前記配備情報の 改ざんを検出する改ざん検出ステップと、
前記複数の所定の Javaアブレットプログラムをロードするためのロード用プログラム を起動させるロード用プログラム起動ステップと、
前記改ざん検出ステップにおいて改ざんが検出されなかった場合に、前記配備情 報に基づいて、前記起動させたロード用プログラムにより前記複数の所定の Javaアブ レットプログラムをロードさせるロードステップと
をコンピュータに実行させる Javaァプレット。
[2] 請求項 1に記載の Javaァプレットにおいて、
前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデ ータの一部または全部を含む Javaァプレット。
[3] 請求項 1に記載の Javaァプレットにおいて、
前記同一性確認用情報は、前記複数の所定の Javaアブレットプログラムそれぞれ のハッシュ値または前記複数の所定の Javaァプレットプログラムそれぞれのデータの 一部または全部を含み、
前記改ざん検出ステップは、前記同一性確認用情報に基づいて、前記複数の所定 の Javaァプレットプログラムそれぞれの改ざんを検出する Javaァプレット。
[4] 請求項 1に記載の Javaァプレットにおいて、
言^ [avaァプレットにおけるメインクラスに対して、 Javaスクリプトを使用したメソッド呼 び出し要求があった場合に、該呼び出し要求に基づくメソッド呼び出し処理を、前記 複数の所定の Javaアブレットプログラムの内の前記呼び出されたメソッドに対応するメ ソッドに委譲させる委譲ステップを有する Javaァプレット。
[5] 請求項 1に記載の Javaァプレットにおいて、 言 avaァプレットに対して設定されているァプレットスタブを、前記ロードステップに おいてロードされた複数の所定の Javaアブレットプログラムに対して設定するアブレツ トスタブ設定ステップを有する Javaァプレット。
[6] コンピュータが、複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaァプレットを含む JARファイルを生成する処理を行う JARファイル生成方法であ つて、
前記コンピュータが、
前記複数の所定の Javaァプレットプログラムそれぞれの所在について定義する配 備情報に基づいて、前記配備情報の改ざんを検出するための同一性確認用情報を 生成する同一性確認用情報生成ステップと、
前記配備情報および同一性確認用情報に基づレ、て、前記配備情報および同一性 確認用情報を含む JARファイルであり、前記同一性確認用情報が所定のパッケージ におけるクラスファイルとして定義されている JARファイルを生成する JARファイル生 成ステップとを実行することを特徴とする JARファイル生成方法。
[7] 請求項 6に記載の JARファイル生成方法において、
前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデ ータの一部または全部を含む JARファイル生成方法。
[8] 請求項 6に記載の JARファイル生成方法において、
前首 SJARファイル生成ステップは、前記配備情報および同一性確認用情報に基づ いて、前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレットプログ ラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させ るための起動用プログラムを含む JARファイルであり、前記同一性確認用情報、ロー ド用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとし て定義されている JARファイルを生成する JARファイル生成方法。
[9] 請求項 6に記載の JARファイル生成方法において、
前言 ARファイル生成ステップは、前記複数の所定の Javaァプレットプログラム、前 記配備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレツ トプログラム、前記配備情報および同一性確認用情報を含む JARファイルであり、前 記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されてい る JARファイルを生成する JARファイル生成方法。
[10] 請求項 9に記載の JARファイル生成方法において、
前記同一性確認用情報は、前記複数の所定の Javaアブレットプログラムそれぞれ のハッシュ値または前記複数の所定の Javaァプレットプログラムそれぞれのデータの 一部または全部を含む JARファイル生成方法。
[11] 請求項 6に記載の JARファイル生成方法において、
前言 ARファイル生成ステップは、前記複数の所定の Javaァプレットプログラム、前 記配備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレツ トプログラム、前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレット プログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起 動させるための起動用プログラムを含む JARファイルであり、前記同一性確認用情報 、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスフアイ ルとして定義されている JARファイルを生成する JARファイル生成方法。
[12] 複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaァプレット を含む JARファイルを生成する処理をコンピュータに実行させる JARファイル生成プ ログラムであって、
前記複数の所定の Javaアブレットプログラムそれぞれの所在について定義する配 備情報に基づレ、て、前記配備情報の改ざんを検出するための同一性確認用情報を 生成する同一性確認用情報生成ステップと、
前記配備情報および同一性確認用情報に基づレ、て、前記配備情報および同一性 確認用情報を含む JARファイルであり、前記同一性確認用情報が所定のパッケージ におけるクラスファイルとして定義されている JARファイルを生成する JARファイル生 成ステップとをコンピュータに実行させることを特徴とする JARファイル生成プログラム
[13] 請求項 12に記載の JARファイル生成プログラムにおいて、
前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデ ータの一部または全部を含む JARファイル生成プログラム。
[14] 請求項 12に記載の JARファイル生成プログラムにおいて、
前首 SJARファイル生成ステップは、前記配備情報および同一性確認用情報に基づ いて、前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレットプログ ラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動させ るための起動用プログラムを含む JARファイルであり、前記同一性確認用情報、ロー ド用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとし て定義されている JARファイルを生成する JARファイル生成プログラム。
[15] 請求項 12に記載の JARファイル生成プログラムにおいて、
前言 ARファイル生成ステップは、前記複数の所定の Javaァプレットプログラム、前 記配備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレツ トプログラム、前記配備情報および同一性確認用情報を含む JARファイルであり、前 記同一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されてい る JARファイルを生成する JARファイル生成プログラム。
[16] 請求項 15に記載の JARファイル生成プログラムにおいて、
前記同一性確認用情報は、前記複数の所定の Javaアブレットプログラムそれぞれ のハッシュ値または前記複数の所定の Javaァプレットプログラムそれぞれのデータの 一部または全部を含む JARファイル生成プログラム。
[17] 請求項 12に記載の JARファイル生成プログラムにおいて、
前首 SJARファイル生成ステップは、前記複数の所定の Javaァプレットプログラム、前 記配備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレツ トプログラム、前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレット プログラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起 動させるための起動用プログラムを含む JARファイルであり、前記同一性確認用情報 、ロード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスフアイ ルとして定義されている JARファイルを生成する JARファイル生成プログラム。
[18] 複数の所定の Javaァプレットプログラムをコンピュータに実行させる Javaァプレット を含む JARファイルを生成する JARファイル生成装置であって、
前記複数の所定の Javaァプレットプログラムそれぞれの所在について定義する配 備情報に基づいて、同一性確認用情報を生成する同一性確認用情報生成部と、 前記配備情報および同一性確認用情報に基づレ、て、前記配備情報および同一性 確認用情報を含む JARファイルであり、前記同一性確認用情報が所定のパッケージ におけるクラスファイルとして定義されている JARファイルを生成する JARファイル生 成部とを備えてなる JARファイル生成装置。
[19] 請求項 18に記載の JARファイル生成装置において、
前記同一性確認用情報は、前記配備情報のハッシュ値または前記配備情報のデ ータの一部または全部を含む JARファイル生成装置。
[20] 請求項 18に記載の JARファイル生成装置において、
前言 ARファイル生成部は、前記配備情報および同一性確認用情報に基づレ、て、 前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレットプログラムを ロードするためのロード用プログラムおよび前記ロード用プログラムを起動させるため の起動用プログラムを含む JARファイルであり、前記同一性確認用情報、ロード用プ ログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルとして定義 されている JARファイルを生成する JARファイル生成装置。
[21] 請求項 18に記載の JARファイル生成装置において、
前 miARファイル生成部は、前記複数の所定の Javaアブレットプログラム、前記配 備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレットプロ グラム、前記配備情報および同一性確認用情報を含む JARファイルであり、前記同 一性確認用情報が所定のパッケージにおけるクラスファイルとして定義されている JA Rファイルを生成する JARファイル生成装置。
[22] 請求項 21に記載の JARファイル生成装置にぉレ、て、
前記同一性確認用情報は、前記複数の所定の Javaアブレットプログラムそれぞれ のハッシュ値または前記複数の所定の Javaァプレットプログラムそれぞれのデータの 一部または全部を含む JARファイル生成装置。
[23] 請求項 18に記載の JARファイル生成装置において、
前言 ARファイル生成部は、前記複数の所定の Javaァプレットプログラム、前記配 備情報および同一性確認用情報に基づいて、前記複数の所定の Javaアブレットプロ グラム、前記配備情報、同一性確認用情報、前記複数の所定の Javaアブレットプロ グラムをロードするためのロード用プログラムおよび前記ロード用プログラムを起動さ せるための起動用プログラムを含む JARファイルであり、前記同一性確認用情報、口 ード用プログラムおよび起動用プログラムが同一パッケージにおけるクラスファイルと して定義されている JARファイルを生成する JARファイル生成装置。
PCT/JP2004/011590 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置 Ceased WO2006016407A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006531090A JP4745238B2 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
PCT/JP2004/011590 WO2006016407A1 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
AU2004322201A AU2004322201B2 (en) 2004-08-12 2004-08-12 Java applet, jar file creating method, jar file creating program, and jar file creating device
EP04771565A EP1783580A4 (en) 2004-08-12 2004-08-12 JAVA APPLET, JAR FILE GENERATION PROCESS, JAR FILE GENERATION PROGRAM, AND JAR FILE GENERATION DEVICE
US11/651,801 US8479005B2 (en) 2004-08-12 2007-01-09 Applet, archive file generation method, archive file generation program, and archive file generation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2004/011590 WO2006016407A1 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/651,801 Continuation US8479005B2 (en) 2004-08-12 2007-01-09 Applet, archive file generation method, archive file generation program, and archive file generation device

Publications (1)

Publication Number Publication Date
WO2006016407A1 true WO2006016407A1 (ja) 2006-02-16

Family

ID=35839184

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/011590 Ceased WO2006016407A1 (ja) 2004-08-12 2004-08-12 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置

Country Status (5)

Country Link
US (1) US8479005B2 (ja)
EP (1) EP1783580A4 (ja)
JP (1) JP4745238B2 (ja)
AU (1) AU2004322201B2 (ja)
WO (1) WO2006016407A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5056995B1 (ja) * 2012-04-24 2012-10-24 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
JP2012533823A (ja) * 2009-07-20 2012-12-27 フェイスブック,インク. ローカルマシンに関する情報をブラウザアプリケーションに通信すること
JP5126447B1 (ja) * 2012-08-31 2013-01-23 大日本印刷株式会社 アプリケーションプログラムの実行方法
JP5182445B1 (ja) * 2012-09-18 2013-04-17 大日本印刷株式会社 アプリケーションプログラムの改竄検知方法
WO2013161974A1 (ja) * 2012-04-24 2013-10-31 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
CN110888740A (zh) * 2019-11-22 2020-03-17 腾讯科技(深圳)有限公司 小程序的增量内存确定方法、装置、设备及存储介质

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2352556T3 (es) * 2000-09-21 2011-02-21 Research In Motion Limited Sistema y método de firma mediante código por software.
US8352911B2 (en) * 2007-11-21 2013-01-08 Teradata Us, Inc. Techniques for constructing and using run-time JAVA archives (JAR) for JAVA Stored Procedures (JSPS)
CN100478897C (zh) * 2007-12-04 2009-04-15 腾讯科技(深圳)有限公司 实现在游戏运行过程中自动验证支付的方法、装置和系统
US8863119B2 (en) 2010-05-27 2014-10-14 Salesforce.Com, Inc. Methods and systems for generating a dynamic workflow in a multi-tenant database environment
US8745598B2 (en) * 2010-12-14 2014-06-03 Bmc Software, Inc. Running injected code prior to execution of an application
US9195479B2 (en) * 2011-10-17 2015-11-24 Google Inc. Selective notification of native applications
US9448782B1 (en) 2012-08-27 2016-09-20 Amazon Technologies, Inc. Reducing a size of an application package
US9288058B2 (en) * 2013-09-03 2016-03-15 Red Hat, Inc. Executing compliance verification or remediation scripts
US9772828B2 (en) * 2014-04-22 2017-09-26 Oracle International Corporation Structural identification of dynamically generated, pattern-instantiation, generated classes
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
US9495237B1 (en) 2016-01-06 2016-11-15 International Business Machines Corporation Detection of corruption of call stacks
US10120745B2 (en) 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US9576128B1 (en) 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
CN111885082B (zh) * 2017-09-06 2023-08-01 创新先进技术有限公司 一种web应用包处理方法、装置及设备
US11736466B2 (en) * 2019-09-18 2023-08-22 Bioconnect Inc. Access control system
CN111427856B (zh) * 2020-03-11 2023-06-02 北京明略软件系统有限公司 一种Java数据的处理方法和装置
CN112698839B (zh) * 2020-12-30 2024-04-12 深圳前海微众银行股份有限公司 数据中心节点部署方法、装置、系统及计算机存储介质
CN114357387B (zh) * 2021-12-29 2025-02-21 杭州涂鸦信息技术有限公司 java应用程序防篡改的判断方法、编译方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000331088A (ja) * 1999-03-12 2000-11-30 Mitsubishi Electric Corp 認定マーク管理システムおよび認定マーク管理方法
JP2003283494A (ja) * 2002-03-27 2003-10-03 Ntt Docomo Inc 通信端末のアクセス制御方法、認定プログラム提供装置、管理装置および通信端末

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958051A (en) * 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US6317742B1 (en) * 1997-01-09 2001-11-13 Sun Microsystems, Inc. Method and apparatus for controlling software access to system resources
US6807632B1 (en) * 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
DE69941142D1 (de) * 1998-05-06 2009-09-03 Sun Microsystems Inc Verarbeitungsmaschine und verarbeitungsverfahren
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US6430608B1 (en) * 1999-02-09 2002-08-06 Marimba, Inc. Method and apparatus for accepting and rejecting files according to a manifest
US6718364B2 (en) * 1999-08-10 2004-04-06 Sun Microsystems, Inc. Method and apparatus for expedited file downloads in an applet environment
US6976165B1 (en) * 1999-09-07 2005-12-13 Emc Corporation System and method for secure storage, transfer and retrieval of content addressable information
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
US6910128B1 (en) * 2000-11-21 2005-06-21 International Business Machines Corporation Method and computer program product for processing signed applets
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US7003672B2 (en) * 2001-09-25 2006-02-21 Hewlett-Packard Development Company, L.P. Authentication and verification for use of software
CA2469633C (en) * 2001-12-13 2011-06-14 Japan Science And Technology Agency Software safety execution system
EP1491996B1 (en) * 2002-04-03 2014-02-12 NTT DoCoMo, Inc. Distribution method, distribution system, and terminal device
US7107592B2 (en) * 2002-07-25 2006-09-12 Sun Microsystems, Inc. Method, system, and program for making objects available for access to a client over a network
US20040123270A1 (en) * 2002-12-23 2004-06-24 Motorola, Inc. Method and apparatus for shared libraries on mobile devices
JP4176533B2 (ja) * 2003-03-31 2008-11-05 株式会社エヌ・ティ・ティ・ドコモ 端末装置及びプログラム
US7814484B2 (en) * 2004-05-14 2010-10-12 Bea Systems, Inc. System and method for web application extensibility

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000331088A (ja) * 1999-03-12 2000-11-30 Mitsubishi Electric Corp 認定マーク管理システムおよび認定マーク管理方法
JP2003283494A (ja) * 2002-03-27 2003-10-03 Ntt Docomo Inc 通信端末のアクセス制御方法、認定プログラム提供装置、管理装置および通信端末

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KOJIMA N. ET AL: "Java Packege System no Security", COMPUTER SECURITY SYMPOSIUM '98, 29 October 1998 (1998-10-29), pages 171 - 176, XP002995624 *
MARUYAMA H. ET AL: "Omoni Java Oyobi ActiveX ni Okeru Code Shomei no Anzensei ni Kansuru Kosatsu", COMPUTER SOFTWARE, vol. 16, no. 4, 15 July 1999 (1999-07-15), pages 23 - 32, XP002995625 *
See also references of EP1783580A4 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012533823A (ja) * 2009-07-20 2012-12-27 フェイスブック,インク. ローカルマシンに関する情報をブラウザアプリケーションに通信すること
US9471554B2 (en) 2009-07-20 2016-10-18 Facebook, Inc. Communicating information about a local machine to a browser application
JP5056995B1 (ja) * 2012-04-24 2012-10-24 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
WO2013161974A1 (ja) * 2012-04-24 2013-10-31 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
JP5126447B1 (ja) * 2012-08-31 2013-01-23 大日本印刷株式会社 アプリケーションプログラムの実行方法
JP5182445B1 (ja) * 2012-09-18 2013-04-17 大日本印刷株式会社 アプリケーションプログラムの改竄検知方法
CN110888740A (zh) * 2019-11-22 2020-03-17 腾讯科技(深圳)有限公司 小程序的增量内存确定方法、装置、设备及存储介质
CN110888740B (zh) * 2019-11-22 2022-06-03 腾讯科技(深圳)有限公司 小程序的增量内存确定方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JPWO2006016407A1 (ja) 2008-05-01
AU2004322201B2 (en) 2008-10-30
EP1783580A4 (en) 2011-03-23
AU2004322201A1 (en) 2006-02-16
JP4745238B2 (ja) 2011-08-10
EP1783580A1 (en) 2007-05-09
US20070169041A1 (en) 2007-07-19
US8479005B2 (en) 2013-07-02

Similar Documents

Publication Publication Date Title
JP4745238B2 (ja) Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
US11514159B2 (en) Method and system for preventing and detecting security threats
Sun et al. Android rooting: Methods, detection, and evasion
US20030135746A1 (en) Software verification system, method and computer program element
EP1512060B1 (en) Tamper evident removable media storing executable code
Raffetseder et al. Building anti-phishing browser plug-ins: An experience report
JP4754299B2 (ja) 情報処理装置
Hwang et al. All about activity injection: Threats, semantics, detection, and defense
KR100839296B1 (ko) Java 애플릿을 기록한 기록 매체, JAR 파일 생성 방법, JAR 파일 생성 프로그램을 기록한 기록매체, JAR 파일 생성 장치
Merlo et al. Android vs. SEAndroid: An empirical assessment
JP2004118433A (ja) 外部プログラムの動作制御方法、動作制御プログラム、動作制御装置、及び、動作制御プログラム提供装置
Kim et al. Linux based unauthorized process control
Bruschi et al. How to unwittingly sign non-repudiable documents with Java applications
Zhang Java security: Issues and implications for library and archival systems
Cuadros Casta Android rooting: methods, detection, and evasion
KR20110119159A (ko) 백도어 방지 장치 및 방법

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2006531090

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020067024096

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 11651801

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2004771565

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2004322201

Country of ref document: AU

NENP Non-entry into the national phase

Ref country code: DE

WWP Wipo information: published in national office

Ref document number: 1020067024096

Country of ref document: KR

ENP Entry into the national phase

Ref document number: 2004322201

Country of ref document: AU

Date of ref document: 20040812

Kind code of ref document: A

WWP Wipo information: published in national office

Ref document number: 2004322201

Country of ref document: AU

WWP Wipo information: published in national office

Ref document number: 2004771565

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11651801

Country of ref document: US