KR100839296B1 - Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device - Google Patents

Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device Download PDF

Info

Publication number
KR100839296B1
KR100839296B1 KR1020067024096A KR20067024096A KR100839296B1 KR 100839296 B1 KR100839296 B1 KR 100839296B1 KR 1020067024096 A KR1020067024096 A KR 1020067024096A KR 20067024096 A KR20067024096 A KR 20067024096A KR 100839296 B1 KR100839296 B1 KR 100839296B1
Authority
KR
South Korea
Prior art keywords
information
jar file
java applet
program
identity
Prior art date
Application number
KR1020067024096A
Other languages
Korean (ko)
Other versions
KR20070018956A (en
Inventor
히사시 고지마
유꼬 나까야마
이꾸야 모리까와
유지 야마오까
Original Assignee
후지쯔 가부시끼가이샤
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 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Priority to KR1020067024096A priority Critical patent/KR100839296B1/en
Publication of KR20070018956A publication Critical patent/KR20070018956A/en
Application granted granted Critical
Publication of KR100839296B1 publication Critical patent/KR100839296B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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

Abstract

복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿으로서, 상기 Java 애플릿은 출처를 보증하기 위한 전자 서명이 실시된 것이며, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보에 기초하여, 상기 배치 정보의 개찬을 검출하는 개찬 검출 단계와, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램을 기동시키는 로드용 프로그램 기동 단계와, 상기 개찬 검출 단계에서 개찬이 검출되지 않은 경우에, 상기 배치 정보에 기초하여, 상기 기동시킨 로드용 프로그램에 의해 상기 복수의 소정의 Java 애플릿 프로그램을 로드시키는 로드 단계를 컴퓨터에 실행시킨다. A Java applet which executes a plurality of predetermined Java applet programs on a computer, wherein the Java applet is electronically signed to guarantee a source, and the batch information defined for each material of the plurality of predetermined Java applet programs is provided. A false alteration detection step of detecting alteration of the batch information based on the identity confirmation information for detecting alteration, and a load program startup step of starting a load program for loading the plurality of predetermined Java applet programs; When no alteration is detected in the alteration detection step, the computer executes a load step of loading the plurality of predetermined Java applet programs by the loaded load program based on the batch information.

JAR 파일, 애플릿 프로그램, 배치 정보, 클래스 파일, 로컬 디스크, 클래스 로더, 시스템 디렉토리, 소스 코드 JAR files, applet programs, deployment information, class files, local disks, class loaders, system directories, source code

Description

Java 애플릿을 기록한 기록 매체, JAR 파일 생성 방법, JAR 파일 생성 프로그램을 기록한 기록매체, JAR 파일 생성 장치{RECORDING MEDIUM FOR RECORDING JAVA APPLET, JAR FILE CREATING METHOD, RECORDING MEDIUM FOR RECORDING JAR FILE CREATING PROGRAM, AND JAR FILE CREATING DEVICE}RECORDING MEDIUM FOR RECORDING JAVA APPLET, JAR FILE CREATING METHOD, RECORDING MEDIUM FOR RECORDING JAR FILE CREATING PROGRAM, AND JAR FILE CREATING DEVICE}

본 발명은, Java 애플릿에 관한 것으로, 특히 Java 애플릿의 악용을 방지하는 기술에 관한 것이다. TECHNICAL FIELD The present invention relates to Java applets, and more particularly to techniques for preventing abuse of Java applets.

종래, 전기 통신 회선 등을 거쳐서 다운로드된 Java 애플릿(이하, 애플릿)을 클라이언트 단말기에서의 Web 어플리케이션(Web 브라우저 등) 등에 실장된 JRE(Java Runtime Environment)에 의해 실행하여, 클라이언트 단말기 측에서의 처리를 행하는 기술이 제공되어 있다. Conventionally, a technique for executing processing on the client terminal side by executing a Java applet (hereinafter referred to as an applet) downloaded through a telecommunication line or the like using a Java Runtime Environment (JRE) mounted on a web application (Web browser, etc.) on a client terminal. Is provided.

이러한 애플릿을 이용한 처리를 행할 때에 애플릿을 실행하는 JRE에서는, 안전 상의 이유로부터, 애플릿이 유저에게 피해를 줄 가능성이 있는 동작을 하는 것을 금하고 있다. The JRE that runs the applet when performing processing using such an applet prohibits the applet from performing actions that may damage the user for safety reasons.

도 21은, 전자 서명이 없는 애플릿이 실행되는 경우의 통상의 처리에 대하여 설명하기 위한 개념도이다. 여기에서는, 공격자가 부정한 JAR 파일 evil.jar91을 이용하여, 클라이언트 단말기 C에서의 보호된 시스템 자원(데이터나 개인 정보 등)(13)에 부정 액세스하고자 하는 경우를 도시하고 있다. 여기에서는, JAR 파일 evil.jar91에는 전자 서명은 실시되어 있지 않은 것으로 한다. 21 is a conceptual diagram for explaining the normal processing when an applet without an electronic signature is executed. Here, a case where an attacker attempts to illegally access a protected system resource (data or personal information, etc.) 13 on the client terminal C by using an illegal JAR file evil.jar91 is shown. In this example, the JAR file evil.jar91 is not digitally signed.

클라이언트 단말기 C의 유저가, 공격자의 Web 사이트에 액세스하면, Web 브라우저(11)에 의해 인터넷 N을 거쳐서 공격자의 Web 사이트의 HTML 데이터 「evil.html」이 다운로드된다(S71).When the user of the client terminal C accesses the attacker's Web site, the HTML data "evil.html" of the attacker's Web site is downloaded by the Web browser 11 via the Internet N (S71).

Web 브라우저(11)는, 「evil.html」에 포함되는 상기 부정한 애플릿의 태그에 기초하여, JRE(12)의 애플릿 기동부(12a)에 상기 부정한 애플릿의 기동을 요구한다(S72). 애플릿 기동부(12a)는, 상기 요구에 기초하여, JAR 파일 evil.jar91을 로드한다(S73).The web browser 11 requests the applet starter 12a of the JRE 12 to start the illegal applet based on the tag of the invalid applet included in "evil.html" (S72). The applet starter 12a loads the JAR file evil.jar91 based on the request (S73).

이 경우, 부정한 JAR 파일 evil.jar91은, 출처를 보증하기 위한 전자 서명이 이루어져 있지 않은 것을 이유로 신뢰할 수 없는 것으로 간주된다. 따라서, 부정한 JAR 파일 evil.jar91(부정한 애플릿)에 의한, 보호된 시스템 자원(13)에의 액세스 요구(S74)는, 시큐러티 매니저(12b)에 의해 금지된다(S75).In this case, the illegal JAR file evil.jar91 is considered unreliable because it has not been digitally signed to assure its origin. Therefore, the access request S74 to the protected system resource 13 by the illegal JAR file evil.jar91 (an invalid applet) is prohibited by the security manager 12b (S75).

이와 같이, 시큐러티 매니저(12b)의 액세스 제한 하에서는, 출처가 보증되어 있지 않은 애플릿을 이용하여, 보호된 시스템 자원(13)에 액세스할 수는 없어, 유저가 피해를 입는 일은 없다. In this manner, under the access restriction of the security manager 12b, the protected system resource 13 cannot be accessed using an applet whose source is not guaranteed, and the user is not harmed.

그런데, 상술한 바와 같은 액세스 제한은, Web 어플리케이션을 개발하는 데 있어서의 장해로 되는 경우가 있다. 예를 들면, 전자 정부 시스템 등에서는, 유저가 클라이언트 단말기 C에서의 로컬 디바이스에 저장되어 있는 정보를 사용하여 신청서 등에 전자 서명을 실시하는 것이 필요로 되는 경우가 있다. 그러나 상술한 바와 같이, 통상은 애플릿을 이용한 클라이언트 단말기 측의 로컬 디바이스에의 액 세스는 금지되어 있어, 상술한 바와 같은 시스템은 실현할 수 없다. By the way, the above-mentioned access restriction may be an obstacle in developing a web application. For example, in an electronic government system or the like, it may be necessary for a user to electronically sign an application or the like using information stored in a local device in the client terminal C. As described above, however, access to the local device on the client terminal side using the applet is normally prohibited, and the system as described above cannot be realized.

그래서, 전자 서명 등에 의해 출처가 보증된 애플릿에 대해서는, 애플릿에는 통상 금지되어 있는 동작(파일 액세스나 커맨드 실행 등)을 행하는 것을 유저가 특별히 허가할 수 있도록 하는 구조가 준비되어 있다. 출처를 보증하는 방법으로서는, 상술한 바와 같이 애플릿에 전자 서명을 실시하는 방법이 일반적이다.Thus, for applets whose source is guaranteed by an electronic signature or the like, a structure is provided in which the user can specifically allow the applet to perform operations (file access, command execution, etc.) that are normally prohibited. As a method of assuring a source, a method of electronically signing an applet as described above is common.

이러한 구조에 따르면, 전자 서명이 실시된 애플릿(이하, 서명 첨부 애플릿)이 IRE(12)에 의해 로드된 경우, 상기 애플릿의 실행 시에 동적으로 시큐러티 제한의 해제를 요구하는 다이얼로그를 표시시켜서, 유저에게 해제를 허가할지의 여부의 선택을 재촉할 수 있어, 미리 유저에게 시큐러티 설정을 변경하게 하는 것과 같은 수고를 줄일 수 있다고 하는 이점이 있다. According to this structure, when an applet with a digital signature (hereinafter referred to as "signed applet") is loaded by the IRE 12, a dialog is displayed dynamically requesting the release of the security restriction when the applet is executed, and the user is displayed. There is an advantage that it is possible to prompt the user to choose whether or not to allow the release, thereby reducing the trouble of having the user change the security settings in advance.

도 22는, 서명 첨부 애플릿이 실행되는 경우의 처리에 대하여 설명하기 위한 개념도이다. 여기에서는, 서명 첨부 애플릿으로서 foo.jar93 및 bar.jar92가, HTML 파일 「goodj.html」과 함께 배치되어 있는 경우를 도시하고 있다. 이하, 도면 중에서 이중선의 틀로 둘러싸여 있는 것은, 서명이 실시되어 있는 것을 의미하는 것으로 한다. Fig. 22 is a conceptual diagram for explaining processing when a signed applet is executed. This example shows the case where foo.jar93 and bar.jar92 are arranged with the HTML file "goodj.html" as a signed applet. Hereinafter, in the figure, what is enclosed by the frame of a double line shall mean that the signature is given.

클라이언트 단말기 C의 유저가, Web 사이트에서의 「goodj.html」에 액세스하면, Web 브라우저(11)에 의해 인터넷 N을 거쳐서 HTML 파일 「goodj.html」이 다운로드된다(S81).When the user of the client terminal C accesses "goodj.html" on the Web site, the HTML file "goodj.html" is downloaded by the Web browser 11 via the Internet N (S81).

Web 브라우저(11)는, 「goodj.html」에 포함되는 애플릿의 태그에 기초하여, JRE(12)의 애플릿 기동부(12a)에 상기 애플릿의 기동을 요구한다(S82). 애플릿 기 동부(12a)는, 상기 요구에 기초하여, JAR 파일 bar.jar92 및 foo.jar93을 로드한다(S83).The web browser 11 requests the applet start-up unit 12a of the JRE 12 to start the applet based on the tag of the applet included in "goodj.html" (S82). The applet base 12a loads JAR files bar.jar92 and foo.jar93 based on the request (S83).

여기에서는, 로드되는 JAR 파일 bar.jar92 및 foo.jar93에는, 모두 출처를 보증하기 위한 전자 서명이 실시되어 있기 때문에, 애플릿 기동부(12a)는 그 서명의 내용을 검증하고, 검증 결과를 유저에게 확인시키기 위한 다이얼로그를 표시시킨다(S84). 유저가 상기 다이얼로그에 의해 검증 결과를 확인하고, 문제가 없다고 판단한 경우, 시큐러티 매니저(12b)에서 JAR 파일 bar.jar92 및 foo.jar93은 신뢰할 수 있는 것이라고 간주된다. In this case, since the JAR files bar.jar92 and foo.jar93 to be loaded are all digitally signed to guarantee the source, the applet launcher 12a verifies the contents of the signature, and verifies the verification result to the user. A dialog for confirming is displayed (S84). When the user confirms the verification result by the dialog and judges that there is no problem, the security files 12. JAR files bar.jar92 and foo.jar93 are considered to be reliable.

신뢰할 수 있는 것으로 간주된 애플릿에 대해서는, 애플릿에는 통상 금지되어 있는 동작이 가능하게 된다. 따라서, 시큐러티 매니저(12b)에 의한 액세스 제한 하에서도, 이들 신뢰할 수 있는 것으로 간주된 애플릿에 의해 보호된 시스템 자원(13)에 대한 액세스 요구가 발행된 경우(S85), 그 액세스 요구는 허가된다(S86).For applets that are considered to be reliable, the applet is allowed to operate normally prohibited. Therefore, even under the access restriction by the security manager 12b, when an access request for the system resource 13 protected by these considered applets is issued (S85), the access request is permitted ( S86).

그러나, 상술한 바와 같은 서명 첨부 애플릿에 대하여 액세스 허가를 행하는 구조는 유용한 반면, 공격자가 서명 첨부 애플릿을 재이용하고, 그 기능을 악용하여 유저에게 피해를 줄 우려가 있다고 하는 문제가 있다. However, while the structure for granting access to the signed applet as described above is useful, there is a problem that an attacker may reuse the signed applet and use the function to damage the user.

서명 첨부 애플릿은, 서명 첨부 JAR 파일과 같은 재이용 가능한 부품으로 구성되어 있다. 따라서, 공격자는 그들 서명 첨부 JAR 파일을 공격자 자신의 부품(부정한 JAR 파일)과 조합하여, 서명 첨부 JAR 파일에 포함되는 클래스의 메소드를 호출하거나 필드를 개찬하거나 함으로써, 그들 서명 첨부 JAR 파일을 작성한 자의 본래의 의도와는 다른 부정한 목적으로 사용하는 것(소위, 부정한 재구성 공격)을 시도할 수 있다. Signed applets are made up of reusable parts, such as signed JAR files. Thus, an attacker may combine their signed JAR files with the attacker's own parts (an illegal JAR file) to call methods of classes contained in the signed JAR file or to modify fields, thereby creating the signatures of those who created those signed JAR files. One can attempt to use something other than its original intention for a fraudulent purpose (so-called fraudulent reconstruction attack).

도 23은, 상술한 바와 같은 부정한 재구성 공격의 일례에 대하여 설명하기 위한 도면이다. 여기에서는, 공격자가, 전자 서명 첨부 JAR 파일 foo.jar93을 입수하고, 상기 전자 서명 첨부 JAR 파일과 자신이 작성한 부정한 JAR 파일 evil.jar91을 부정하게 재구성하고, HTML 파일 「evil2.html」과 함께 배치하고 있는 경우를 도시하고 있다. FIG. 23 is a diagram for explaining an example of the illegal reconstruction attack as described above. Here, an attacker obtains the electronically signed JAR file foo.jar93, illegally reconstructs the electronically signed JAR file and the illegal JAR file evil.jar91 that he created, and places it together with the HTML file "evil2.html". The case is shown.

클라이언트 단말기 C의 유저가, Web 사이트에서의 「evil2.html」에 액세스하면, Web 브라우저(11)에 의해 인터넷 N을 거쳐서 HTML 파일 「evil2.html」이 다운로드된다(S91).When the user of the client terminal C accesses "evil2.html" on the Web site, the HTML file "evil2.html" is downloaded by the Web browser 11 via the Internet N (S91).

Web 브라우저(11)는, 「evil2.html」에 포함되는 애플릿의 태그에 기초하여, JRE(12)의 애플릿 기동부(12a)에 상기 애플릿의 기동을 요구한다(S92). 애플릿 기동부(12a)는, 상기 요구에 기초하여, JAR 파일 evil.jar91 및 foo.jar93을 로드한다(S93).The web browser 11 requests the applet start-up unit 12a of the JRE 12 to start the applet based on the tag of the applet included in "evil2.html" (S92). The applet starter 12a loads the JAR files evil.jar91 and foo.jar93 based on the request (S93).

여기에서는, 로드되는 JAR 파일 foo.jar93에는, 출처를 보증하기 위한 전자 서명이 이루어져 있기 때문에, 애플릿 기동부(12a)는 상기 서명의 내용을 검증하고, 검증 결과를 유저에게 확인시키기 위한 다이얼로그를 표시시킨다(S94). 유저가 상기 다이얼로그에 의해 검증 결과를 확인하고, 문제가 없다고 판단된 경우, 시큐러티 매니저(12b)에서 JAR 파일 foo.jar93은 신뢰할 수 있는 것이라고 간주된다. 한편, 서명이 없는 JAR 파일 evil.jar91에 대해서는, 신뢰할 수 없는 것으로 간주된다. Here, the JAR file foo.jar93 to be loaded has an electronic signature for assuring the source, so the applet launcher 12a verifies the contents of the signature and displays a dialog for confirming the verification result to the user. (S94). When the user confirms the verification result by the dialog and judges that there is no problem, the security manager 12b considers the JAR file foo.jar93 to be reliable. On the other hand, the unsigned JAR file evil.jar91 is considered unreliable.

그러나, 상술한 바와 같이, 신뢰할 수 있는 것으로 간주된 JAR 파일 foo.jar93에 대해서는, 애플릿에는 통상 금지되어 있는 동작이 가능하게 된다. 이 때, evil.jar91이 foo.jar93을 이용하여 보호된 시스템 자원(13)에 대한 액세스 요구를 발행시키고(S95), foo.jar93을 경유하여 보호된 시스템 자원(13)에 액세스하게 될 우려가 있다(S96).However, as described above, for the JAR file foo.jar93 considered to be reliable, the applet can be normally prohibited. At this time, there is a fear that evil.jar91 issues an access request to the protected system resource 13 using foo.jar93 (S95), and accesses the protected system resource 13 via foo.jar93. There is (S96).

상술한 바와 같은 부정한 재구성은, 신뢰받은 프로그램이 자신이 갖는 기능을 자신의 책임에서 신뢰할 수 없는 프로그램에 제공하기 위한 구조인 「특권 코드」의 악용이나, 메인 로직을 실행하는 패키지와, 메인 로직이 축차 이용하는 유틸리티적인 패키지를 구별하고 있는 프로그램에 대하여, 유틸리티적인 패키지의 클래스만을 치환하여 메인 로직의 동작을 자유롭게 제어하는 공격이나, 대상 프로그램에 포함되는 리소스의 부정한 치환 등을 가능하게 하여, 유저에게 피해를 줄 우려가 있다. The illegal reconstruction as described above includes the use of "privileged code", a structure for providing a trusted program with its own functions to an untrusted program, a package that executes main logic, and a main logic. The program that distinguishes the utility packages to be used successively can be attacked by replacing only the classes of the utility packages to freely control the operation of the main logic, or by illegally replacing the resources included in the target program. There is a risk of giving.

또한, 이러한 서명 첨부 JAR 파일이 일단 유출되게 되면 피해의 확대를 억제하는 것이 어렵다. 전자 정부 시스템 등에서 이러한 종류의 공격을 허용하는 것은, 행정 시스템의 근간을 뒤흔드는 것으로 될 수도 있기 때문에, 상술한 바와 같은 공격에 대한 대책 기술의 확립이 급선무로 되어 있다. In addition, once these signed JAR files are leaked, it is difficult to prevent the spread of damage. Allowing this kind of attack in an e-government system or the like may shake the foundation of the administrative system, and therefore, the establishment of a countermeasure against such an attack is urgently required.

<발명의 개시><Start of invention>

<발명이 해결하고자 하는 과제>Problems to be Solved by the Invention

본 발명은 상술한 문제점을 해결하기 위한 것으로서, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지하는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and an object thereof is to simply and reliably prevent an electronically signed Java applet from being illegally reused.

<과제를 해결하기 위한 수단>Means for solving the problem

상술한 과제를 해결하기 위해서, 본 발명에 따른 Java 애플릿은, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿으로서, 상기 Java 애플릿은 출처를 보증하기 위한 전자 서명이 실시된 것이며, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보에 기초하여, 상기 배치 정보의 개찬을 검출하는 개찬 검출 단계와, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램을 기동시키는 로드용 프로그램 기동 단계와, 상기 개찬 검출 단계에서 개찬이 검출되지 않은 경우에, 상기 배치 정보에 기초하여, 상기 기동시킨 로드용 프로그램에 의해 상기 복수의 소정의 Java 애플릿 프로그램을 로드시키는 로드 단계를 컴퓨터에 실행시키는 구성으로 되어 있다. MEANS TO SOLVE THE PROBLEM In order to solve the above-mentioned subject, the Java applet which concerns on this invention is a Java applet which runs a predetermined | prescribed Java applet program on a computer, The said Java applet was the electronic signature for ensuring the origin, A false alteration detecting step of detecting an alteration of the batch information on the basis of identification information for detecting false alteration of batch information defined for each of the predetermined Java applet programs; and the plurality of predetermined Java applet programs The load program startup step of starting the load program for loading the program, and when the alteration is not detected in the alteration detection step, the plurality of predetermined programs are executed by the loaded load program based on the batch information. A configuration that runs a load step on a computer that loads a Java applet program. It is.

이와 같이, 동일성 확인용 정보에 기초하여 개찬되어 있지 않은 것이 확인된 배치 정보에 의해 복수의 소정의 Java 애플릿 프로그램을 로드하는 구성으로 함으로써, Java 애플릿이 개찬되어 상기 Java 애플릿의 작성자의 의도와는 상이한 다른 Java 애플릿 프로그램이 로드되는 것을 방지할 수 있다. 즉, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지할 수 있다. In this way, the configuration is such that a plurality of predetermined Java applet programs are loaded based on the batch information confirmed that they have not been modified based on the identity confirmation information, thereby changing the Java applets to be different from the intention of the creator of the Java applets. You can prevent other Java applet programs from loading. In other words, it is possible to simply and reliably prevent an electronically signed Java applet from being illegally reused.

또한, 상술한 바와 같은 구성의 Java 애플릿에서, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 것이 바람직하다. In the Java applet having the above-described configuration, it is preferable that the identity confirmation information includes a hash value of the batch information or a part or all of the data of the batch information.

또한, 상술한 바와 같은 구성의 Java 애플릿에서, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하며, 상기 개찬 검출 단계는, 상기 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 개찬을 검출하는 구성으로 할 수도 있다. In the Java applet having the above-described configuration, the identity confirmation information includes a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. The alteration detection step may be configured to detect alteration of each of the plurality of predetermined Java applet programs based on the identity confirmation information.

이러한 구성에 따르면, 동일성 확인용 정보에 기초하여 배치 정보 및 복수의 소정의 Java 애플릿 프로그램이 개찬되어 있지 않은 것을 확인한 후에, 상기 배치 정보에 의해 복수의 소정의 Java 애플릿 프로그램을 로드할 수 있고, 상기 Java 애플릿 및 복수의 소정의 Java 애플릿 프로그램이 개찬되어 상기 Java 애플릿의 작성자의 의도와는 상이한 다른 Java 애플릿 프로그램이 로드되는 것을 방지할 수 있다. According to this configuration, after confirming that the batch information and the plurality of predetermined Java applet programs are not modified based on the information for identifying the identity, the plurality of predetermined Java applet programs can be loaded by the batch information. The Java applet and a plurality of predetermined Java applet programs can be modified to prevent the loading of other Java applet programs that differ from the intent of the author of the Java applet.

또한, 상술한 바와 같은 구성의 Java 애플릿에서, 상기 Java 애플릿에서의 메인 클래스에 대하여, Java 스크립트를 사용한 메소드 호출 요구가 있었던 경우에, 상기 호출 요구에 기초하는 메소드 호출 처리를, 상기 복수의 소정의 Java 애플릿 프로그램 중의 상기 호출된 메소드에 대응하는 메소드에 위양시키는 위양 단계를 갖는 것이 바람직하다. Further, in the Java applet having the above-described configuration, when a method call request using Java script is made for the main class in the Java applet, the method call processing based on the call request is executed. It is desirable to have a delegation step that delegates to a method corresponding to the called method in a Java applet program.

이러한 구성에 따르면, JRE에서 보유되어 있는 동작 중의 애플릿 리스트에 복수의 소정의 Java 애플릿 프로그램이 없는 경우에도, 예를 들면 래퍼 메소드 등을 이용함으로써, Java 스크립트를 사용한 메소드 호출 요구에 기초하는 메소드 호출 처리를 이들 복수의 소정의 Java 애플릿 프로그램에 대하여 행하게 하도록 할 수 있다. According to this structure, even when there are no predetermined Java applet programs in the list of applets in operation held by the JRE, a method call processing based on a method call request using Java script, for example, by using a wrapper method or the like. Can be performed for a plurality of predetermined Java applet programs.

이밖에, 상술한 바와 같은 구성의 Java 애플릿에서, 상기 Java 애플릿에 대하여 설정되어 있는 애플릿 스터브를, 상기 로드 단계에서 로드된 복수의 소정의 Java 애플릿 프로그램에 대하여 설정하는 애플릿 스터브 설정 단계를 갖는 구성으로 할 수도 있다. In addition, in the Java applet having the above-described configuration, the applet stub set for the Java applet is configured to have an applet stub setting step for setting a plurality of predetermined Java applet programs loaded in the loading step. You may.

이와 같이, 애플릿 스터브를 로드된 복수의 소정의 Java 애플릿 프로그램에 대하여 설정함으로써, 복수의 소정의 Java 애플릿 프로그램이 정상적으로 동작할 수 있게 된다. In this way, by setting the applet stub to the plurality of loaded Java applet programs, the plurality of predetermined Java applet programs can operate normally.

상술한 과제를 해결하기 위해서, 본 발명에 따른 JAR 파일 생성 방법은, 컴퓨터가, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 처리를 행하는 JAR 파일 생성 방법으로서, 상기 컴퓨터가, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 상기 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성 단계와, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 단계를 실행하는 것을 특징으로 한다. In order to solve the above-mentioned problem, the JAR file generation method which concerns on this invention is a JAR file generation method which a computer performs the process which produces a JAR file containing a Java applet which runs a some predetermined Java applet program on a computer. An identification checking information generating step of generating, by the computer, identification checking information for detecting alteration of the batch information based on batch information defined for each of the plurality of predetermined Java applet programs; A JAR file including the batch information and the information for identifying the same, based on the batch information and the information for identifying the identity, wherein a JAR file is defined in which the information for identifying the identity is defined as a class file in a predetermined package. Characterizing the JAR file generation step.

이와 같이, 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를, 소정의 패키지에서의 클래스 파일로서 정의함으로써, 상기 JAR 파일에 전자 서명이 실시된 경우에, 「same-package-same-signer」의 구조에 의해, 상기 동일성 확인용 정보의 부정한 개찬을 방지할 수 있다. Thus, by defining the identity identification information for detecting alteration of batch information as a class file in a predetermined package, when the JAR file is digitally signed, the "same-package-same-signer" By the structure, an incorrect alteration of the identity confirmation information can be prevented.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 방법에서, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 것이 바람직하다. Moreover, in the JAR file generation method of the above-mentioned structure, it is preferable that the said identity confirmation information contains the hash value of the said batch information, or part or all of the data of the said batch information.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 방법에서, 상기 JAR 파일 생성 단계는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 구성으로 할 수도 있다. In the JAR file generating method having the above-described configuration, the JAR file generating step includes the batch information, the identity checking information, and the plurality of predetermined Java applet programs based on the batch information and the identity checking information. A JAR file containing a load program for loading a program and a startup program for starting the load program, wherein the identity confirmation information, the load program, and the startup program are defined as class files in the same package. It can also be configured to generate a JAR file.

이와 같이, JAR 파일 생성 단계에서 생성하는 JAR 파일에, 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 이 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함시키도록 함으로써, 상기 JAR 파일을 다운로드하는 단말기에서 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 기능을 실현하는 프로그램을 미리 인스톨해 두지 않아도, 이 JAR 파일을 다운로드하기만 하면 복수의 소정의 Java 애플릿 프로그램을 안전하게 로드시킬 수 있다. As described above, the JAR file generated in the JAR file generation step includes a load program for loading a plurality of predetermined Java applet programs and a startup program for starting the load program. Even if a program for realizing a function for loading a plurality of predetermined Java applet programs is not previously installed in the terminal to be downloaded, a plurality of predetermined Java applet programs can be safely loaded by simply downloading this JAR file.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 방법에서, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정 보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 것이 바람직하다. Further, in the JAR file generation method having the above-described configuration, the JAR file generation step includes the plurality of predetermined Java applet programs based on the plurality of predetermined Java applet programs, the batch information, and the identity confirmation information. It is preferable to generate a JAR file including the arrangement information and the identity confirmation information, in which the identity confirmation information is defined as a class file in a predetermined package.

이와 같이, JAR 파일 생성 단계에서 생성하는 JAR 파일에, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함시키도록 함으로써, 상기 JAR 파일을 다운로드하는 단말기에서 복수의 소정의 Java 애플릿 프로그램을 외부로부터 로드하지 않아도, 이 JAR 파일을 다운로드하기만 하면 복수의 소정의 Java 애플릿 프로그램을 안전하게 로드시킬 수 있다. In this way, the plurality of predetermined Javas are downloaded from the terminal downloading the JAR file by including the plurality of predetermined Java applet programs, the batch information, and the identity checking information in the JAR file generated in the JAR file generating step. Even if you do not load the applet program from the outside, you can safely load multiple predetermined Java applet programs simply by downloading this JAR file.

상술한 바와 같은 구성의 JAR 파일 생성 방법에서, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 구성으로 할 수 있다. In the method for generating a JAR file having the above-described configuration, the identity confirmation information includes a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. You can make it a configuration.

이밖에, 상술한 바와 같은 구성의 JAR 파일 생성 방법에서, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 상기 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 것이 바람직하다. In addition, in the JAR file generation method having the above-described configuration, the JAR file generation step includes the plurality of predetermined Java applets based on the plurality of predetermined Java applet programs, the batch information, and the information for identifying the same. A JAR file containing a program, the batch information, the identity verification information, a load program for loading the plurality of predetermined Java applet programs, and a startup program for starting the load program. It is preferable to generate a JAR file in which the information, the load program, and the startup program are defined as class files in the same package.

이러한 구성으로 함으로써, 상기 JAR 파일을 로드하고, 실행하는 JRE에 대하여 아무런 변경을 가하지 않고, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지할 수 있다. With such a configuration, it is possible to easily and reliably prevent the electronically signed Java applet from being illegally reused without making any changes to the JRE that loads and executes the JAR file.

또한, 본 발명에 따른 JAR 파일 생성 프로그램은, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 처리를 컴퓨터에 실행시키는 JAR 파일 생성 프로그램으로서, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 상기 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성 단계와, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 단계를 컴퓨터에 실행시키는 것을 특징으로 한다. Moreover, the JAR file generation program which concerns on this invention is a JAR file generation program which makes a computer perform the process which produces | generates the JAR file containing a Java applet which runs a some predetermined Java applet program on a computer, The said several predetermined An identity verification information generating step of generating identity verification information for detecting alteration of the batch information based on the batch information defined for each material of the Java applet program of the Java applet program, and the batch information and the identity verification information. Based on the above information, the JAR file comprising the batch information and the identity confirmation information, wherein the computer executes a JAR file generation step of generating a JAR file in which the identity confirmation information is defined as a class file in a predetermined package. It features.

상술한 바와 같은 구성의 JAR 파일 생성 프로그램에서, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 것이 바람직하다. In the JAR file generation program having the above-described configuration, the identity confirmation information preferably includes a hash value of the batch information or a part or all of the data of the batch information.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 프로그램에서, 상기 JAR 파일 생성 단계는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램, 및 기동용 프 로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 구성으로 할 수도 있다. In the JAR file generating program having the above-described configuration, the JAR file generating step includes the batch information, the identity checking information, and the plurality of predetermined Java applet programs based on the batch information and the identity checking information. A JAR file comprising a load program for loading a program and a startup program for starting the load program, wherein the identity confirmation information, the load program, and the startup program are class files in the same package. It can also be configured to generate a defined JAR file.

상술한 바와 같은 구성의 JAR 파일 생성 프로그램에서, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 것이 바람직하다. In the JAR file generating program having the above-described configuration, the JAR file generating step includes the plurality of predetermined Java applet programs based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information. As a JAR file containing the batch information and the identity confirmation information, it is preferable to generate a JAR file in which the identity confirmation information is defined as a class file in a predetermined package.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 프로그램에서, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 것이 바람직하다. Further, in the JAR file generation program having the above-described configuration, the identity confirmation information may include a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. It is preferable to include.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 프로그램에서, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 구성으로 할 수도 있다. Further, in the JAR file generation program having the above-described configuration, the JAR file generation step includes the plurality of predetermined Java applet programs based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information. And a JAR file including the batch information, the identity checking information, a load program for loading the plurality of predetermined Java applet programs, and a startup program for starting the load program. The load program and the startup program may be configured to generate a JAR file defined as a class file in the same package.

이밖에, 본 발명에 따른 JAR 파일 생성 장치는, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 JAR 파일 생성 장치로서, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성부와, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성부를 구비하여 이루어지는 것을 특징으로 한다.In addition, the JAR file generating apparatus according to the present invention is a JAR file generating apparatus for generating a JAR file including a Java applet for executing a plurality of predetermined Java applet programs on a computer, each of the plurality of predetermined Java applet programs. An identity verification information generation unit that generates identity verification information based on the batch information defined for the subject matter of the subject; and the batch information and identity verification information on the basis of the batch information and the identity verification information. A JAR file, characterized by comprising a JAR file generation unit for generating a JAR file in which the identity verification information is defined as a class file in a predetermined package.

상술한 바와 같은 구성의 JAR 파일 생성 장치에서, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 것이 바람직하다. In the JAR file generating apparatus having the above-described configuration, the identification confirmation information preferably includes a hash value of the batch information or a part or all of the data of the batch information.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 장치에서, 상기 JAR 파일 생성부는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 구성으로 할 수 있다. Further, in the JAR file generating apparatus having the above-described configuration, the JAR file generating unit is configured to perform the batch information, the identity checking information, and the plurality of predetermined Java applet programs based on the batch information and the identity checking information. JAR file containing a load program for loading and a startup program for starting the load program, wherein the sameness checking information, the load program, and the startup program are defined as class files in the same package. It can be configured to generate a file.

또한, 상술한 바와 같은 구성의 JAR 파일 생성 장치에서, 상기 JAR 파일 생성부는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확 인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 것이 바람직하다. Further, in the JAR file generation apparatus having the above-described configuration, the JAR file generation unit may include the plurality of predetermined Java applet programs based on the plurality of predetermined Java applet programs, the batch information, and the identification information. As a JAR file containing the batch information and the identity verification information, it is preferable to generate a JAR file in which the identity verification information is defined as a class file in a predetermined package.

이밖에, 상술한 바와 같은 구성의 JAR 파일 생성 장치에서, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 구성으로 할 수도 있다.In addition, in the JAR file generating apparatus having the above-described configuration, the identity checking information may be a part or all of a hash value of each of the plurality of predetermined Java applet programs or data of each of the plurality of predetermined Java applet programs. It may be configured to include.

상술한 바와 같은 구성의 JAR 파일 생성 장치에서, 상기 JAR 파일 생성부는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 것이 바람직하다. In the JAR file generating apparatus having the above-described configuration, the JAR file generating unit includes the plurality of predetermined Java applet programs and the arrangement based on the plurality of predetermined Java applet programs, the arrangement information, and the information for identifying the same. A JAR file comprising information, identity identification information, a load program for loading the plurality of predetermined Java applet programs, and a startup program for starting the load program, wherein the identity check information and load program And a startup program are preferably created as JAR files defined as class files in the same package.

또한, 상술한 Java 애플릿 및 JAR 파일 생성 프로그램은, 컴퓨터에 의해 판독 가능한 기록 매체에 기억시킴으로써, 컴퓨터에 실행시키는 것이 가능하게 된다. 또한, 상기 컴퓨터에 의해 판독 가능한 기록 매체로서는, CD-ROM이나 플렉시블 디스크, DVD 디스크, 광 자기 디스크, IC 카드 등의 반도체 기억 장치 등의 가반형 기억 매체, 컴퓨터에 실장되는 ROM, RAM이나 자기 기록 장치 등의 고정형 기억 장치나, 컴퓨터 프로그램을 보유하는 데이터베이스, 혹은, 다른 컴퓨터와 그 데이터베이스나, 또한 회선 상의 전송 매체도 포함하는 것이다. In addition, the above-described Java applet and JAR file generating program can be executed in a computer by storing in a recording medium readable by the computer. In addition, the computer-readable recording medium may be a portable storage medium such as a CD-ROM, a flexible disk, a DVD disk, a magneto-optical disk, or a semiconductor storage device such as an IC card, a ROM mounted on a computer, a RAM, or a magnetic recording. It also includes a fixed storage device such as a device, a database holding a computer program, another computer and its database, and a transmission medium on a line.

이와 같이, JAR 파일 생성 프로그램을 컴퓨터에 실행시킴으로써, 상술한 JAR 파일 생성 방법에서의 각 단계가 실현된다. In this way, by executing the JAR file generation program on the computer, the steps in the above-described JAR file generation method are realized.

도 1은 본 실시예에서의 전자 서명된 애플릿의 부정 이용의 방지에 대하여 설명하기 위한 개념도. 1 is a conceptual diagram for explaining prevention of illegal use of an electronically signed applet in this embodiment.

도 2는 도 1에서 도시한 전자 서명된 애플릿의 부정 이용을 방지하기 위한 구체적인 구성의 일례를 도시하는 도면. FIG. 2 is a diagram showing an example of a specific configuration for preventing the illegal use of the electronically signed applet shown in FIG. 1; FIG.

도 3은 특수 형식 JAR 파일(2)의 내부 구성의 상세에 대하여 설명하기 위한 도면. FIG. 3 is a diagram for explaining details of an internal configuration of a special format JAR file 2. FIG.

도 4는 특수 애플릿 프로그램(24)에 대하여 설명하기 위한 도면. 4 is a diagram for explaining a special applet program 24. FIG.

도 5는 도 4에 도시한 구성의 특수 형식 JAR 파일(2)에 대하여 전자 서명을 실시한 것을 도시하는 도면. FIG. 5 is a diagram showing that the special format JAR file 2 having the configuration shown in FIG. 4 is digitally signed. FIG.

도 6은 JAR 파일 T의 구성예를 도시하는 도면. 6 is a diagram illustrating a configuration example of a JAR file T;

도 7은 JAR 파일(descriptor.jar) D의 구성을 도시하는 도면. FIG. 7 is a diagram illustrating a configuration of a JAR file (descriptor.jar) D. FIG.

도 8은 배치 기술자(cozilet.properties)의 상세 내용을 도시하는 도면. 8 shows details of a deployment descriptor (cozilet.properties).

도 9는 동일성 확인용 정보로서 해시값을 내장한 CoziletData.java의 소스 코드.Fig. 9 is a source code of CoziletData.java incorporating a hash value as information for checking identity.

도 10은 동일성 확인용 정보로서 배치 기술자 그 자체를 내장한 CoziletData.java의 소스 코드. Fig. 10 is a source code of CoziletData.java incorporating the deployment descriptor itself as the identity confirmation information.

도 11은 특수 애플릿이 기동되고 나서 대상 애플릿에의 교체가 완료될 때까지의 플로우차트. Fig. 11 is a flowchart from when the special applet is started until the replacement with the target applet is completed.

도 12는 JAR 파일(target.jar) T를 특수 형식 JAR 파일에 포함되지 않는 구성에 대하여 설명하기 위한 도면. 12 is a diagram for explaining a configuration in which a JAR file (target.jar) T is not included in a special format JAR file.

도 13은 애플릿 등 중의 일부를 클라이언트 단말기 C의 외부로부터 다운로드하고, 나머지를 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성에 대하여 설명하기 위한 도면.Fig. 13 is a view for explaining a configuration in which a part of an applet or the like is downloaded from outside of client terminal C, and the other part is placed in advance in client terminal C;

도 14는 특수 형식 JAR 파일(202)의 구성의 상세 내용을 도시하는 도면. Fig. 14 is a diagram showing details of the configuration of the special format JAR file 202;

도 15는 특수 형식 JAR 파일(203)로서, 동일성 확인용 정보로서의 CoziletData.class(24c) 및 JAR 파일(descriptor.jar) D를 포함하는 구성으로 한 경우의 도면.Fig. 15 is a diagram of a special format JAR file 203 in which CoziletData.class (24c) and JAR file (descriptor.jar) D are used as identification information.

도 16은 래퍼 메소드를 추가한 Cozilet 클래스(기동용 프로그램에 상당)의 소스 코드의 예를 도시하는 도면. Fig. 16 is a diagram showing an example of source code of a Cozilet class (corresponding to a startup program) in which a wrapper method is added.

도 17은 직렬화를 무효로 하는 실장을 실시한 Cozilet 클래스의 소스 코드의 예를 도시하는 도면. Fig. 17 is a diagram showing an example of source code of a Cozilet class that implements serialization invalidation.

도 18은 특수 형식 JAR 파일을 생성하기 위한 JAR 파일 생성 장치에 대하여 설명하기 위한 도면. Fig. 18 is a diagram for explaining a JAR file generation device for generating a special format JAR file.

도 19는 JAR 파일 생성 장치에서의 처리의 흐름에 대하여 설명하기 위한 플 로우차트. Fig. 19 is a flowchart for explaining a flow of processing in a JAR file generation device.

도 20은 그 밖의 애플릿 등을 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성에 대하여 설명하기 위한 도면. 20 is a diagram for explaining a configuration in which other applets or the like are placed in advance in the client terminal C;

도 21은 전자 서명이 없는 애플릿이 실행되는 경우의 통상의 처리에 대하여 설명하기 위한 개념도. Fig. 21 is a conceptual diagram for explaining normal processing when an applet without an electronic signature is executed.

도 22는 서명 첨부 애플릿이 실행되는 경우의 처리에 대하여 설명하기 위한 개념도. Fig. 22 is a conceptual diagram for explaining processing when a signed applet is executed.

도 23은 부정한 재구성 공격의 일례에 대하여 설명하기 위한 도면. 23 is a diagram for explaining an example of an illegal reconstruction attack.

<발명을 실시하기 위한 최량의 형태><Best Mode for Carrying Out the Invention>

이하, 본 발명의 실시예에 대하여 도면을 참조하여 상세하게 설명한다. Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

종래, 전자 서명 첨부 JAR 파일과 부정한 JAR 파일이 부정하게 재구성된 것을, 클라이언트 단말기에서의 JRE에 의해 로드한 경우, 이들 JAR 파일이 부정하게 재구성되어 있는 것을 JRE 측에서 검출할 수 없어, 서명 첨부 애플릿에만 허용되는 처리 등(보호된 시스템 자원에 대한 액세스 등)이 부정하게 실행되게 되는 경우가 있었다. 따라서, 애플릿을 정규의 구성(그 애플릿의 작성자의 의도에 따른 구성)으로만 실행시키는 구성으로 할 필요가 있다. 이하, 상술한 바와 같은 애플릿의 작성자의 의도에 따른 로드시킬 정규의 구성의 복수의 소정의 Java 애플릿 프로그램을, 대상 애플릿 프로그램으로 부른다. In the past, when an electronically signed JAR file and an illegal JAR file are incorrectly reconstructed by the JRE on a client terminal, the JRE cannot detect that these JAR files are illegally reconstructed and the signed applet cannot be detected. Processes that are allowed only to access (such as access to protected system resources) were sometimes executed illegally. Therefore, it is necessary to make the applet run only in a regular configuration (a configuration according to the intention of the applet's creator). Hereinafter, a plurality of predetermined Java applet programs having a regular configuration to be loaded in accordance with the intention of the applet creator as described above are called target applet programs.

도 1은, 본 실시예에서의 전자 서명된 애플릿의 부정 이용의 방지에 대하여 설명하기 위한 개념도이다. 또한, 도 1에서는, 도 23에서 이미 도시한 것과 동일한 부분에 대해서는 동일 부호를 붙이고, 설명은 생략한다. 1 is a conceptual diagram for explaining prevention of illegal use of an electronically signed applet in this embodiment. In addition, in FIG. 1, the same code | symbol is attached | subjected about the part same as what was already shown in FIG. 23, and description is abbreviate | omitted.

본 실시예에서는, JRE(12)에 애플릿 프로그램을 정규의 구성으로만 실행시키기 위한 기능(12c)을 갖게 하고 있다. 이에 의해, 부정하게 재구성된 JAR 파일(예를 들면 서명 첨부 JAR 파일인 foo.jar93와 부정한 JAR 파일인 evil.jar91의 재구성 파일)이 JRE(12)에서 로드된 경우(S11)에도, 애플릿 프로그램을 정규의 구성으로만 실행시키기 위한 기능(12c)에 의해, 서명 첨부 애플릿에 대하여 허가된 처리를 악용시키지 않도록(S12) 하고 있다. In this embodiment, the JRE 12 has a function 12c for executing the applet program only in a regular configuration. Thereby, even when an illegally reconfigured JAR file (for example, a reconfigured file of foo.jar93 as a signed JAR file and evil.jar91 as an illegal JAR file) is loaded from the JRE 12 (S11), the applet program is executed. The function 12c for executing only in the regular configuration prevents the exploitation of the processing permitted for the signed applet (S12).

또한, 클라이언트 단말기 C에서의 JRE(12)에, 애플릿 프로그램을 정규의 구성으로만 실행시키기 위한 기능(12c)도 갖게 하기 위한 주된 구성예로서는, (1) 상기 기능(12c)을 실현하기 위한 애플릿 등(애플릿이나 이것에 관련되는 데이터)을 클라이언트 단말기 C의 외부로부터 다운로드하고, JRE(12)에서 기동시키는 구성, (2) 상기 기능(12c)을 실현하는 애플릿 프로그램 등 중의 일부를 클라이언트 단말기 C의 외부로부터 다운로드하고, 나머지를 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성, (3) 상기 기능(12c)을 실현하는 애플릿 프로그램 등 중, 클라이언트 단말기 C의 외부에 배치할 데이터만 외부에 배치하고, 그 밖의 애플릿 프로그램 등은 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성의 3가지를 들 수 있다. Moreover, as a main structural example for making the JRE 12 in client terminal C also have the function 12c for running an applet program only in a regular structure, (1) Applet etc. for implementing the said function 12c (Applet and the data associated with it) are downloaded from the outside of the client terminal C, and started from the JRE 12, and (2) some of the applet programs for realizing the above functions 12c are external to the client terminal C. (3) Only the data to be placed outside of the client terminal C is externally placed among the configuration of downloading from the terminal and placing the rest in the inside of the client terminal C in advance, and (3) an applet program for realizing the function 12c. Outside applet programs can be exemplified by three configurations that are prearranged in the client terminal C. FIG.

우선, (1) 클라이언트 단말기 C에서의 JRE(12)에, 애플릿 프로그램을 정규의 구성으로만 실행시키기 위한 기능(12c)을 실현하기 위한 애플릿 프로그램 등(애플릿 프로그램이나 이것에 관련되는 데이터)을 클라이언트 단말기 C의 외부로부터 다 운로드하고, JRE(12)에서 기동시키는 구성에 대하여 설명한다. First, (1) A client program (such as an applet program and data related thereto) for realizing a function 12c for executing the applet program only in a regular configuration to the JRE 12 in the client terminal C. The configuration which is downloaded from the outside of the terminal C and started by the JRE 12 will be described.

도 2는, 도 1에서 도시한 전자 서명된 애플릿의 부정 이용을 방지하기 위한 구체적인 구성의 일례를 도시하는 도면이다. 또한 도 2에서도, 도 23에서 이미 도시한 것과 동일한 부분에 대해서는 동일 부호를 붙이고, 설명은 생략한다. FIG. 2 is a diagram showing an example of a specific configuration for preventing the illegal use of the electronically signed applet shown in FIG. 1. In addition, in FIG. 2, the same code | symbol is attached | subjected about the same part already shown in FIG. 23, and description is abbreviate | omitted.

도 2에 도시하는 구성에서는, 전자 서명되어 있으며 또한 내부의 구성이 특수한 특수 형식 JAR 파일(2)을 사용함으로써, 전자 서명된 애플릿의 기능의 부정 이용을 방지하고 있다. 구체적으로, 특수 형식 JAR 파일(2)은, 대상 애플릿 프로그램으로서의 bar.jar(21) 및 foo.jar(22)와, 대상 애플릿 프로그램(복수의 소정의 Java 애플릿 프로그램) 각각의 소재에 대하여 정의하는 배치 기술자(배치 정보에 상당)(23)와, 특수 애플릿 프로그램(24)을 포함하고 있다. 이들 bar.jar(21)∼특수 애플릿 프로그램(24)은, 개별로는 전자 서명이 실시되어 있지 않고, 이들 bar.jar(21)~특수 애플릿 프로그램(24)을 포함하는 JAR 파일 전체에 대하여 전자 서명이 실시되어 있다. 또한, 클라이언트 단말기 C는, 도 23에서 도시한 종래의 클라이언트 단말기와 마찬가지의 구성이다. In the configuration shown in Fig. 2, by using a special format JAR file 2 which is digitally signed and whose internal configuration is special, the illegal use of the function of the electronically signed applet is prevented. Specifically, the special format JAR file 2 is defined for each of bar.jar 21 and foo.jar 22 as target applet programs, and the material of each target applet program (a plurality of predetermined Java applet programs). The batch descriptor 23 (equivalent to the batch information) 23 and the special applet program 24 are included. These bar.jar (21) to special applet program 24 are not electronically signed individually, and the entire JAR file containing these bar.jar (21) to special applet program (24) is electronic. Signature is done. In addition, the client terminal C is the same structure as the conventional client terminal shown in FIG.

특수 형식 JAR 파일(2)이 클라이언트 단말기 C에서의 JRE(12)에 로드되면, 상기 로드된 특수 형식 JAR 파일(2)에 포함되는 특수 애플릿 프로그램(24)이 애플릿 기동부(12a)에 의해 실행되고, 특수 애플릿(12d)이 기동된다.When the special format JAR file 2 is loaded into the JRE 12 in the client terminal C, the special applet program 24 included in the loaded special format JAR file 2 is executed by the applet starter 12a. Then, the special applet 12d is started.

이와 같이 하여 기동되는 특수 애플릿(12d)(기동용 프로그램에 상당)은, 특수 형식 JAR 파일(2)에 포함된 형태로 JRE(12)에 로드되어 있는 배치 기술자(23)에 기초하여, 애플릿을 정규의 구성으로만 로드시키는 기능을 갖는 특수 애플릿 기동 부(12e)(로드용 프로그램에 상당)를 갖는다. The special applet 12d (equivalent to the startup program) launched in this way is configured to load the applet based on the deployment descriptor 23 loaded in the JRE 12 in the form contained in the special format JAR file 2. It has a special applet start-up part 12e (corresponding to a load program) having a function of loading only in a regular configuration.

이러한 구성에 의해, JRE(12)에 애플릿 프로그램을 정규의 구성으로만 실행시키기 위한 기능을 갖게 하여, 전자 서명된 애플릿이 부정하게 재이용되는 것을 방지하고 있다. By such a configuration, the JRE 12 has a function for executing an applet program only in a regular configuration, thereby preventing the electronically signed applet from being illegally reused.

이하, JRE(12)에서 상술한 바와 같은 기능을 실현시키기 위한 특수 형식 JAR 파일(2)의 내부 구성의 상세에 대하여 설명한다. 도 3에 도시하는 바와 같이, 본 실시예에서는 특수 형식 JAR 파일(2)은, 특수 애플릿 프로그램(24), JAR 파일(target.jar) T 및 JAR 파일(descriptor.jar) D를 포함한 구성으로 되어 있다. The details of the internal structure of the special format JAR file 2 for realizing the functions described above in the JRE 12 will be described below. As shown in Fig. 3, in this embodiment, the special format JAR file 2 is configured to include a special applet program 24, a JAR file (target.jar) T, and a JAR file (descriptor.jar) D. have.

우선, 특수 애플릿 프로그램(24)에 대하여 설명한다(도 4 참조). 특수 애플릿 프로그램(24)은, 실행 시에 대상 애플릿과 교체되는 기능을 갖는 특수 애플릿 프로그램(24)의 메인 클래스의 클래스 파일인 Cozilet.class(기동용 프로그램에 대응)(24a), 배치 기술자에 기초하여 대상 애플릿의 프로그램을 로드하는 기능을 갖는 특수 클래스 로더의 클래스 파일인 CoziletClassLoader.class(로드용 프로그램에 대응)(24b) 및 CoziletData.class(동일성 확인용 정보에 상당)(24c)를 포함하고 있다. 또한, 이들 클래스 파일은 모두 동일한 패키지 com.aaa.labs.sec.cozilet에 소속되어 있으므로, 특수 형식 JAR 파일(2) 전체에 대하여 전자 서명을 실시함으로써, 공격자가 이들 클래스 파일군을 부정하게 치환하는 것은 same-package-same-signer의 구조에 의해 방지된다. 도 5는, 도 4에 도시한 구성의 특수 형식 JAR 파일(2)에 대하여 전자 서명을 실시한 것을 도시하는 도면이다.First, the special applet program 24 will be described (see FIG. 4). The special applet program 24 is based on Cozilet.class (corresponding to the startup program) 24a, the deployment descriptor, which is a class file of the main class of the special applet program 24 having a function to be replaced with the target applet at the time of execution. CoziletClassLoader.class (corresponding to load program) 24b and CoziletData.class (corresponding to identity verification information) 24c, which are class files of a special class loader having a function of loading a program of a target applet. . In addition, since these class files all belong to the same package com.aaa.labs.sec.cozilet, an electronic signature on the entire special type JAR file 2 causes the attacker to replace these class file groups illegally. This is prevented by the structure of the same-package-same-signer. FIG. 5 is a diagram showing that the special format JAR file 2 having the configuration shown in FIG. 4 is digitally signed.

계속해서, 특수 형식 JAR 파일(2)에 포함되는 JAR 파일(target.jar) T에 대 하여 설명한다. 도 6에, JAR 파일 T의 구성예를 도시한다. 구체적으로, 대상 애플릿은, 상기 대상 애플릿의 실행에 필요한 클래스 파일군이나 리소스 파일군, 그리고 그들을 저장하는 JAR 파일군을 가리킨다. 도 6에서는, JAR 파일 T는, 대상 애플릿 프로그램인 JAR 파일군 target1.jar, target2.jar을 포함하고 있다. 여기에서는 JAR 파일(target.jar) T는 서명이 없는 JAR 파일이다. JAR 파일(target.jar) T에 포함되는 대상 애플릿 프로그램은, 특수 애플릿 프로그램(24)의 실행 시에 특수 클래스 로더(로드용 프로그램)에 의해서만 로드되고, JRE의 표준의 클래스 로더에서는 로드되지 않는다. 따라서, 대상 애플릿 프로그램이 공격자에게 악용되는 것을 방지할 수 있다. Subsequently, the JAR file (target.jar) T included in the special format JAR file 2 will be described. 6 shows an example of the configuration of the JAR file T. In FIG. Specifically, the target applet refers to a class file group or a resource file group required for executing the target applet, and a JAR file group for storing them. In FIG. 6, JAR file T contains JAR file group target1.jar and target2.jar which are target applet programs. In this case, the JAR file (target.jar) T is an unsigned JAR file. The target applet program included in the JAR file (target.jar) T is loaded only by the special class loader (program for loading) at the time of execution of the special applet program 24, and is not loaded by the standard class loader of the JRE. Therefore, the target applet program can be prevented from being exploited by an attacker.

다음으로, 특수 형식 JAR 파일(2)에 포함되는 JAR 파일(descriptor.jar) D에 대하여 설명한다. 도 7에, JAR 파일(descriptor.jar) D의 구성을 도시한다. 여기에서, JAR 파일(descriptor.jar) D는, Java 표준의 프로퍼티 파일 cozilet.properties(23)(도 3 참조)을 포함하고 있다. 여기에서는, 배치 기술자 cozilet.properties(23)이 대상 애플릿 프로그램의 배치 정보에 상당한다. JAR 파일 D는 서명이 없는 JAR 파일이다. 또한, JAR 파일 D(배치 정보에 상당)는 반드시 특수 형식 JAR 파일(2)에 포함되어 있다. Next, the JAR file (descriptor.jar) D included in the special format JAR file 2 will be described. 7 shows the configuration of a JAR file (descriptor.jar) D. In FIG. Here, the JAR file (descriptor.jar) D contains the Java standard property file cozilet.properties (23) (see Fig. 3). Here, the deployment descriptor cozilet.properties (23) corresponds to the deployment information of the target applet program. JAR file D is an unsigned JAR file. In addition, the JAR file D (corresponding to the layout information) is always included in the special format JAR file 2.

도 8에 배치 기술자(cozilet.properties)(23)의 상세 내용을 도시한다. main_class 프로퍼티는 대상 애플릿의 메인 클래스의 이름이다. 특수 애플릿은 프로퍼티에 기초하여 대상 애플릿 프로그램을 실행한다. class_path 프로퍼티는 대상 애플릿 프로그램 중, 특수 형식 JAR 파일에는 포함되지 않는 것이 배치되어 있 는 URL의 리스트이다. 도 8의 예에서는, 신뢰받은 사이트 상에 배치된 outer1.jar의 URL과, 유저의 로컬 디스크 상에 미리 인스톨된 outer2.jar의 패스가 기술되어 있다. 특수 클래스 로더는 프로퍼티에 기초하여 대상 애플릿 프로그램을 로드한다. 공격자에게 악용되는 것을 방지하기 위해서, 이들 URL은 JRE가 표준으로 로드 가능한 장소(익스텐션 디렉토리 등) 이외의 장소로 해 두는 것이 바람직하다. The details of the deployment descriptor (cozilet.properties) 23 are shown in FIG. The main_class property is the name of the target applet's main class. Special applets execute the target applet program based on the properties. The class_path property is a list of URLs in the target applet that are not included in the special format JAR file. In the example of FIG. 8, the URL of outer1.jar disposed on the trusted site and the path of outer2.jar preinstalled on the user's local disk are described. The special class loader loads the target applet program based on the property. In order to prevent exploitation by attackers, it is recommended that these URLs be located somewhere other than where the JRE can be loaded by default (such as extension directories).

library_path 프로퍼티는 대상 애플릿 프로그램 중, native 메소드의 실행에 필요한 native 라이브러리군이 배치되어 있는 패스의 리스트이다. native 라이브러리는 로컬 디스크 상에 인스톨되어 있을 필요가 있으므로, 프로퍼티에서는 URL이 아니라 로컬 디스크 상의 패스를 지정한다. 특수 클래스 로더는 프로퍼티에 기초하여 native 라이브러리군을 로드한다. 공격자에게 악용되는 것을 방지하기 위해서, 이들 패스는 JRE가 표준으로 로드 가능한 장소(시스템 디렉토리 등) 이외의 장소로 해 두는 것이 바람직하다.The library_path property is a list of paths in the target applet program where the native library group necessary to execute native methods is placed. Since the native library must be installed on the local disk, the property specifies the path on the local disk, not the URL. Special class loaders load native library families based on properties. In order to prevent exploitation by attackers, these paths should be in places other than where the JRE can be loaded by default (such as the system directory).

trusted_url 프로퍼티는, 특수 애플릿을 내장하는 HTML 문서가 배치될 신뢰받은 사이트의 URL의 리스트이다. 특수 애플릿은, 실행 직후에 자신이 내장되어 있는 HTML 문서가 배치되어 있는 URL을 취득하고, 프로퍼티에 포함되는 URL과 비교함으로써, 자신이 신뢰받은 사이트에 배치된 HTML 문서에 의해 내장되어 있는지의 여부를 검사할 수 있다. The trusted_url property is a list of trusted site URLs where HTML documents containing special applets will be placed. Immediately after execution, the special applet obtains the URL where the embedded HTML document is placed and compares it with the URL contained in the property to determine whether the embedded applet is embedded by the HTML document placed on the trusted site. Can be checked

exclusive_mode 프로퍼티는, 특수 애플릿의 실행 중에 신뢰할 수 없는 애플릿의 실행을 방지하는 기능을 유효하게 할지의 여부를 결정하는 플래그이다. 프로퍼티의 값이 ON인 경우, 특수 애플릿은 상술한 기능을 유효하게 한다. 한편, 프로 퍼티의 값이 off인 경우, 이 기능은 무효로 된다. The exclusive_mode property is a flag that determines whether to enable the ability to prevent untrusted applets from running during special applets. If the value of the property is ON, the special applet enables the above functionality. On the other hand, if the property value is off, this function is disabled.

다음으로, 특수 애플릿 프로그램(24)에 포함되는 CoziletData.class(24c) 에 대하여 설명한다. CoziletData.class(24c)는, 대상 애플릿 프로그램이나 배치 기술자의 개찬을 검출하기 위한 동일성 확인용 정보를 포함하는 클래스 파일이다. 도 9에, 동일성 확인용 정보로서 대상 애플릿 프로그램이나 배치 기술자의 SHA1 해시값 H를 상수 필드로서 내장한 클래스 CoziletData의 소스 코드CoziletData.java를 도시한다. 이 소스 코드를 컴파일함으로써, CoziletData.class(24c)를 생성할 수 있다. Next, CoziletData.class 24c included in the special applet program 24 will be described. CoziletData.class 24c is a class file containing information for identifying the identity for detecting alteration of a target applet program or deployment descriptor. Fig. 9 shows source code CoziletData.java of class CoziletData incorporating SHA1 hash value H of the target applet program or batch descriptor as the constant field as the information for identifying the identity. By compiling this source code, CoziletData.class (24c) can be generated.

CoziletData 클래스는, inner_hash, outer_hash, descriptor_hash의 3개의 상수 필드를 포함하고 있다. inner_hash에는 target.jar T의 SHA1 해시값이 포함된다. outer_hash에는 class_path 프로퍼티에서 지정된 URL에 배치된 대상 애플릿 프로그램 전체의 SHA1 해시값이 포함된다. descriptor_hash에는 descriptor.jar D의 SHA1 해시값이 포함된다. CoziletData 클래스는 다른 특수 애플릿 프로그램인 클래스 파일군과 동일한 패키지 com.aaa.labs.sec.cozilet에 소속되어 있고, 특수 형식 JAR 파일에 전자 서명을 실시함으로써, same-package-same-signer의 구조에 의해 공격자에 의한 부정한 치환을 방지할 수 있다.The CoziletData class contains three constant fields: inner_hash, outer_hash, and descriptor_hash. inner_hash contains the SHA1 hash value of target.jar T. outer_hash contains the SHA1 hash value of the entire target applet program located at the URL specified by the class_path property. descriptor_hash contains SHA1 hash value of descriptor.jar D. The CoziletData class belongs to the same package com.aaa.labs.sec.cozilet as the class file group, which is another special applet program, and by signing a special format JAR file electronically, the same-package-same-signer structure Unauthorized substitution by an attacker can be prevented.

그런데, 특수 형식 JAR 파일에 포함되는 target.jar T 및 descriptor.jar D는, 클래스 파일이 아니라 리소스 파일이기 때문에, 공격자에 의해 부정하게 치환될 우려가 있다. 그래서, 특수 클래스 로더가 이들 리소스 파일을 로드할 때에, 로드한 리소스의 SHA1 해시값을 CoziletData 클래스의 상수 필드에 포함되는 SHA1 해시값 H와 각각 비교함으로써, 리소스 파일이 개찬되어 있지 않은지의 여부를 검출할 수 있다. By the way, since target.jar T and descriptor.jar D included in the special format JAR file are resource files instead of class files, there is a possibility that an attacker may replace them illegally. Therefore, when the special class loader loads these resource files, it compares the SHA1 hash value of the loaded resource with the SHA1 hash value H contained in the constant field of the CoziletData class to detect whether or not the resource file has been modified. can do.

또한, 상술한 예에서는 CoziletData.class(24c)에, target.jar T 및 descriptor.jar D의 SHA1 해시값 H를 포함시키는 구성으로 하고 있지만, 이것에 한정되는 것이 아니라, target.jar T 및 descriptor.jar D의 데이터의 일부 또는 전부를 포함하는 상수 필드를 포함하는 구성으로 해도 된다. 도 10에, descriptor.jar D 그 자체를 포함하는 상수 필드 descriptor_value를 포함하는 CoziletData.class(24c)의 소스 코드의 예를 도시한다. 이 경우에는, 특수 형식 JAR 파일(2)은 descriptor.jar D를 포함할 필요는 없으며, 특수 애플릿 프로그램(24)의 실행 시에 상수 필드 descriptor_value로부터 descriptor.jar D의 값을 취출할 수 있다. In the above-described example, the CoziletData.class 24c is configured to include the SHA1 hash value H of the target.jar T and the descriptor.jar D. However, the present invention is not limited thereto, but the target.jar T and descriptor. The configuration may include a constant field that includes some or all of the data of jar D. 10 shows an example of the source code of CoziletData.class 24c including the constant field descriptor_value including descriptor.jar D itself. In this case, the special format JAR file 2 does not need to include descriptor.jar D, and the value of descriptor.jar D can be extracted from the constant field descriptor_value when the special applet program 24 is executed.

계속해서, 상술한 특수 애플릿 프로그램(24)을 JRE에서 실행시키는 경우의 동작에 대하여, 도 11의 플로우차트를 이용하여 설명한다. Subsequently, the operation in the case where the above-mentioned special applet program 24 is executed by the JRE will be described using the flowchart of FIG.

우선, 본 실시예에 의한 특수 형식 JAR 파일(2)은, 예를 들면 서버 상에 배치되고, Web 브라우저 등을 통해 JRE에 의해 로드됨으로써, 특수 애플릿 프로그램(24)이 JRE에 의해 실행된다. First, the special format JAR file 2 according to the present embodiment is disposed on a server, for example, and loaded by the JRE through a web browser or the like, whereby the special applet program 24 is executed by the JRE.

통상적으로, 복수의 소정의 Java 애플릿 프로그램은, 예를 들면Typically, a plurality of predetermined Java applet programs are, for example,

<applet code="jp.example.SomeApplet"<applet code = "jp.example.SomeApplet"

archive="target1.jar,target2.jar"      archive = "target1.jar, target2.jar"

width="400"height="400"></applet>     width = "400" height = "400"> </ applet>

과 같은 applet 태그를 포함하는 HTML 문서에 의해 기동된다. It is invoked by an HTML document that contains an applet tag such as

한편, 본 실시예에서의 특수 형식 JAR 파일(2)을 이용하여 복수의 소정의 Java 애플릿 프로그램을 JRE에 의해 기동시키는 경우, On the other hand, when a plurality of predetermined Java applet programs are started by JRE using the special format JAR file 2 in this embodiment,

<applet code="com.aaa.labs.sec.cozilet.Cozilet"<applet code = "com.aaa.labs.sec.cozilet.Cozilet"

archive="cozilet.jar"      archive = "cozilet.jar"

width="400"height="400"></applet>      width = "400" height = "400"> </ applet>

과 같은 applet 태그를 포함하는 HTML 문서에 의해, 대상 애플릿 대신에 특수 애플릿을 배치하여 이것을 기동시키고(S21), 대상 애플릿 프로그램을 기동시키면 된다.With an HTML document containing an applet tag such as this, a special applet is placed in place of the target applet to start it (S21), and the target applet program can be started.

계속해서, JRE에 의해 Cozilet 클래스(24a)가 로드되고 인스턴스가 생성된다(S22). Cozilet 클래스는 정적 초기화자에 있어서 특수 형식 JAR 파일(2)에 포함되는 cozilet.properties(23)를 취출한다. CoziletData.class(24c)에 의한 개찬 방지가 이루어져 있는 경우에는, cozilet.properties(23)가 개찬되어 있는지의 여부를 검증하고(개찬 검출 단계)(S23), 개찬되어 있는 경우(S24, 있음)에는 실행을 강제 종료한다(S29). 개찬되어 있지 않으면(S24, 없음), cozilet.properties(23)로부터 java.util.Properties 인스턴스를 생성한다. 이하, 이 인스턴스를 cozilet 배치 기술자로 부른다. 이와 같이, 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보에 기초하여, 배치 정보의 개찬을 검출한다. Subsequently, the Cozilet class 24a is loaded by the JRE and an instance is created (S22). The Cozilet class retrieves the cozilet.properties (23) contained in the special format JAR file (2) in the static initializer. When alteration prevention by CoziletData.class (24c) is performed, it is checked whether or not cozilet.properties (23) has been altered (false detection step) (S23), and when altered (S24, present). The execution is forcibly terminated (S29). If not modified (S24, none), create a java.util.Properties instance from cozilet.properties (23). Hereinafter, this instance is called a cozilet deployment descriptor. Thus, the alteration of batch information is detected based on the identity confirmation information for detecting the alteration of batch information defined for each of a plurality of predetermined Java applet programs.

다음으로, cozilet 배치 기술자로부터 exclusive_mode 프로퍼티의 값을 참조하여, ON이면 특수 애플릿 프로그램(24)의 실행 중에 신뢰할 수 없는 애플릿의 실 행을 방지하는 기능을 유효하게 한다(S25). 이 기능에서는, JRE에 포함되는 Java 가상 머신에서의 클래스 로딩과 클래스 정의의 제한 기능을 이용하고 있다. 클래스 로딩 제한 기능에서는, 시큐러티 프로퍼티 "package.access"에 지정된 문자열로 시작되는 패키지군에 포함되는 클래스에 대하여, 신뢰할 수 없는 프로그램이 로드되는 것을 금지할 수 있다. 또한, 클래스 정의 제한 기능에서는, 시큐러티 프로퍼티 "package.definition"에 지정된 문자열로 시작되는 패키지군에 대하여, 신뢰할 수 없는 프로그램이 새로운 클래스를 정의하는 것을 금지할 수 있다. 그래서, 이러한 프로퍼티에 「java.」, 「javax.」, 「com.」 및 「org」 등과 같은 값을 설정함으로써, 신뢰할 수 없는 프로그램은 실행에 필요한 클래스(예를 들면 java.applet.Applet 클래스)를 로드할 수 없게 되기 때문에, 결과적으로 실행할 수 없게 된다. Next, referring to the value of the exclusive_mode property from the cozilet deployment descriptor, if ON, the function of preventing the execution of untrusted applets during the execution of the special applet program 24 is enabled (S25). This feature takes advantage of class loading and class definition restrictions in the Java virtual machine included in the JRE. The class loading restriction function can prevent an untrusted program from being loaded for classes included in a package group starting with a string specified in the security property "package.access". In addition, the class definition restriction function can prohibit an untrusted program from defining a new class for a package group that starts with a string specified in the security property "package.definition". Thus, by setting values such as "java.", "Javax.", "Com.", And "org" to these properties, untrusted programs need to run the classes (for example, the java.applet.Applet class). Because it can't be loaded, it can't run as a result.

다음으로, JRE는 Cozilet 클래스의 init()를 호출한다(S26). Cozilet 클래스는 init() 메소드에서, 자신의 내장원인 HTML 문서가 배치된 사이트의 URL이, cozilet 배치 기술자의 trusted_url 프로퍼티의 값에 포함되는 URL의 리스트와 비교하여 신뢰할 수 있는 것인지의 여부를 조사한다(S27). 내장원인 HTML 문서가 배치된 사이트의 URL은, java.applet.Applet 클래스의 getDocumentBase()에 의해 취득할 수 있다. 여기에서는, 이 URL이 trusted_url 프로퍼티에 포함되는 각 URL 중 어느 1개와 일치하면 충분하다. 또한, URL을 전방 일치로 비교하는 구성으로 할 수도 있다. 만일, trusted_url 프로퍼티에 포함되는 어떠한 URL과도 일치하지 않은 경우(S27, 할 수 없다), 실행을 강제 종료한다(S29).Next, the JRE calls init () of the Cozilet class (S26). In the init () method, the Cozilet class checks whether the URL of the site where the HTML document of its built-in source is placed is trusted by comparing it with the list of URLs included in the value of the trusted_url property of the cozilet deployment descriptor. S27). The URL of the site where the built-in HTML document is placed can be obtained by getDocumentBase () of the java.applet.Applet class. It is sufficient here that this URL matches any one of each URL contained in the trusted_url property. Moreover, it can also be set as the structure which compares URL by forward matching. If it does not match any URL included in the trusted_url property (S27, it cannot), execution is forcibly terminated (S29).

상술한 체크에 문제가 없으면(S27, 할 수 있다), Cozilet 클래스(24a)는, 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램으로서의 CoziletClassLoader 클래스(24b)의 인스턴스를 생성한다(로드용 프로그램 기동 단계)(S28). CoziletClassLoader 클래스(24b)는 콘스트랙터에서, 특수 형식 JAR 파일(2)에 포함되는 target.jar T, cozilet 배치 기술자의 class_path 프로퍼티에서 지정된 URL, 그리고 cozilet 배치 기술자의 library_path 프로퍼티에서 지정된 패스에 존재하는 대상 애플릿 프로그램에 대하여, 로드 가능한 상태로 한다. 만일 CoziletData.class(24c)에 의한 개찬 방지가 이루어져 있는 경우에는, 대상 애플릿 프로그램의 완전성을 검증하고(S2a), 개찬이 검출된 경우(S2b, 있다), 실행을 강제 종료한다(S29).If there is no problem with the above-described check (S27), the Cozilet class 24a creates an instance of the CoziletClassLoader class 24b as a loading program for loading a plurality of predetermined Java applet programs (for loading). Program start step) (S28). The CoziletClassLoader class (24b) is a target applet that exists in the constructor in the target.jar T included in the special format JAR file (2), the URL specified in the class_path property of the cozilet deployment descriptor, and the path specified in the library_path property of the cozilet deployment descriptor. Make the program loadable. If tampering is prevented by CoziletData.class 24c, the completeness of the target applet program is verified (S2a), and if tampering is detected (S2b), execution is forcibly terminated (S29).

CoziletClassLoader 클래스(24b)의 인스턴스의 생성에 성공하면, Cozilet 클래스(24a)는 cozilet 배치 기술자의 main_class 프로퍼티로부터 취득할 수 있는 대상 애플릿의 메인 클래스의 이름을, CoziletClassLoader 클래스(24b)의 loadClass()에 인수로서 전달하여 호출함으로써, 대상 애플릿의 메인 클래스의 클래스 인스턴스를 얻는다(로드 단계). 즉, 개찬 검출 단계에서 개찬이 검출되지 않은 경우에, 배치 정보에 기초하여, 로드용 프로그램에 복수의 소정의 Java 애플릿 프로그램을 로드시킨다. 그리고, 그 클래스 인스턴스의 콘스트랙터를 Java의 리플렉션의 구조에 의해 호출하여, 그 대상 애플릿의 메인 클래스의 인스턴스를 얻는다(S2c).Upon successful creation of an instance of the CoziletClassLoader class 24b, the Cozilet class 24a takes the name of the target applet's main class, which can be obtained from the main_class property of the cozilet deployment descriptor, into loadClass () of the CoziletClassLoader class 24b. By passing in as a call, you get a class instance of the target applet's main class (load step). 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 placement information. Then, the constructor of the class instance is called by the Java reflection structure to obtain an instance of the main class of the target applet (S2c).

애플릿의 몇 개의 처리는 애플릿 스터브에 위양되어 있다(getDocumentBase() 의 호출 등). 애플릿 스터브는 처음에는 특수 애플릿에 세트된다. Cozilet 클래스는 자신의 애플릿 스터브를 대상 애플릿의 setStub()를 호출하여 세트한다(S2d). 애플릿 스터브는 대상 애플릿을 정상적으로 실행시키기 위해 필요하다. 애플릿 스터브는 java.applet.Applet 클래스의 private 필드로서 저장되어 있고, Cozilet 클래스(24a)는 그 필드에는 액세스할 수 없다. 여기에서, Java 가상 머신에서, Cozilet 클래스의 인스턴스가 등록되어 있는 특수 애플릿의 모 패널이 애플릿 스터브의 기능을 갖고 있는 경우, Cozilet 클래스로부터 모 패널의 인스턴스를 얻는 것은 용이하므로, 그 인스턴스를 애플릿 스터브로서 대상 애플릿에 세트한다(S2d).Some processing of applets is delegated to applet stubs (such as calling getDocumentBase ()). Applet stubs are initially set in special applets. The Cozilet class sets its applet stub by calling setStub () of the target applet (S2d). Applet stubs are required to run the target applet normally. The applet stub is stored as a private field of the java.applet.Applet class, and the Cozilet class 24a does not have access to that field. Here, in the Java virtual machine, if the parent panel of a special applet in which an instance of the Cozilet class is registered has the function of applet stub, it is easy to obtain an instance of the parent panel from the Cozilet class, so that instance is used as an applet stub. It is set in the target applet (S2d).

애플릿은 모 패널에 등록되어 있음으로써, 브라우저 상에 표시되거나, GUI 이벤트를 처리할 수 있게 되어 있다. 모 패널에는 처음에는 특수 애플릿이 등록되어 있기 때문에, Cozilet 클래스(24a)는 모 패널에 등록된 자신의 인스턴스를 삭제하고, 대신에 특수 애플릿 프로그램(24)의 메인 클래스의 인스턴스를 등록한다(S2e). 이것에 의해, JRE로부터 보내지는 GUI 이벤트가 특수 애플릿(24)에 대해서가 아니라 대상 애플릿에 통지되게 되어, 대상 애플릿이 애플릿으로서 정상적으로 동작할 수 있게 된다. Applets are registered in the parent panel so that they can be displayed on a browser or handle GUI events. Since a special applet is initially registered in the mother panel, the Cozilet class 24a deletes its own instance registered in the mother panel, and instead registers an instance of the main class of the special applet program 24 (S2e). . As a result, the GUI event sent from the JRE is notified to the target applet, but to the special applet 24, so that the target applet can operate normally as an applet.

그리고, Cozilet 클래스(24a)는 대상 애플릿의 메인 글래스의 init()를 호출한다(S2f). 이 이후, 특수 애플릿 대신에 대상 애플릿이 애플릿으로서 동작하게 되어, 애플릿의 교체가 완료한다(S2g).The Cozilet class 24a calls init () of the main glass of the target applet (S2f). After this, the target applet operates as an applet instead of the special applet, and the applet replacement is completed (S2g).

이와 같이, 동일성 확인용 정보에 기초하여 개찬되어 있지 않은 것이 확인된 배치 정보에 의해 복수의 소정의 Java 애플릿 프로그램을 로드하는 구성으로 함으 로써, Java 애플릿이 개찬되어 그 Java 애플릿의 작성자의 의도와는 상이한 다른 Java 애플릿 프로그램이 로드되는 것을 방지할 수 있다. 즉, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지할 수 있다. In this way, the configuration is such that a plurality of predetermined Java applet programs are loaded based on the batch information which has been confirmed not to be modified based on the identity confirmation information. Thus, the Java applet is modified to be different from the intention of the creator of the Java applet. You can prevent different Java applet programs from loading. In other words, it is possible to simply and reliably prevent an electronically signed Java applet from being illegally reused.

또한, 특수 애플릿의 public 메소드는 공격자에게 악용될 우려가 있으므로, 각 메소드의 첫머리에서, 스택 검사에 의한 호출원의 검사를 행하고 있다. 구체적으로는, 각 메소드의 첫머리에서, java.security.AccessController 클래스의 checkPermission()을, 인수로서 java.security.AllPermission 클래스의 인스턴스를 전달하여 호출하고 있다. 이에 의해, 액세스권 AllPermission을 갖지 않는 클래스, 즉 공격자의 클래스는 상술한 특수 애플릿의 public 메소드를 호출할 수 없게 된다. checkPermission()에 전달하는 액세스권은, 반드시 AllPermission이 아니어도 되며, 공격자의 호출을 방해하는 데에 충분한 액세스권이면 된다. In addition, public methods of special applets can be exploited by an attacker. At the beginning of each method, the caller is examined by stack inspection. Specifically, at the beginning of each method, you call checkPermission () in the java.security.AccessController class, passing an instance of the java.security.AllPermission class as an argument. This prevents classes that do not have the permission AllPermission, that is, the class of the attacker, from calling the public methods of the special applet described above. The permission passed to checkPermission () may not necessarily be AllPermission, but may be sufficient to prevent an attacker from calling it.

또한, 상술한 특수 형식 JAR 파일(2)은, 기동용 프로그램으로서의 Cozilet.class(24a), 로드용 프로그램으로서의 CoziletClassLoader.class(24b), 동일성 확인용 정보로서의 CoziletData.class(24c), JAR 파일(target.jar) T 및 JAR 파일(descriptor.jar) D를 포함하는 구성으로 되어 있지만(도 3 참조), 이것에 한정되는 것이 아니라, 예를 들면 target.jar T는 반드시 특수 형식 JAR 파일(2)에 포함될 필요는 없다. 또한, 도 12에 도시하는 특수 형식 JAR 파일(201)과 같이 , JAR 파일(target.jar) T를 특수 형식 JAR 파일에 포함되지 않는 구성으로 하는 경우, JAR 파일(target.jar) T는 JRE에 의해 로드 가능한 장소에 배치될 필요가 있다. The above-described special format JAR file 2 includes Cozilet.class 24a as a startup program, CoziletClassLoader.class 24b as a load program, CoziletData.class 24c as identity information, and JAR file ( target.jar) T and JAR file (descriptor.jar) D, but it is configured (see Fig. 3), but not limited to this, for example, target.jar T must be a special type JAR file (2) It does not need to be included in. Also, as in the special format JAR file 201 shown in FIG. 12, when the JAR file (target.jar) T is configured to not be included in the special format JAR file, the JAR file (target.jar) T is stored in the JRE. It needs to be placed in the place which can be loaded by.

이밖에, 상술한 바와 같이, (2) 애플릿을 정규의 구성으로만 실행시키기 위한 기능(12c)을 실현하는 애플릿 등 중의 일부를 클라이언트 단말기 C의 외부로부터 다운로드하고, 나머지를 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성으로 할 수도 있다(도 13 참조). 도 13에서는, 특수 형식 JAR 파일(202)로서, 동일성 확인용 정보로서의 CoziletData.class(24c), JAR 파일(target.jar) T 및 JAR 파일(descriptor.jar) D를 포함하는 구성을 도시하고 있다. 도 13에 도시하는 구성의 특수 형식 JAR 파일(202)을 사용하는 경우, 기동용 프로그램으로서의 Cozilet.class(24a) 및 로드용 프로그램으로서의 CoziletClassLoader.class(24b)는, JRE를 구비한 클라이언트 단말기의 기억 영역에 미리 저장되어 있는 것이 바람직하다. 도 14는, 특수 형식 JAR 파일(202)의 구성의 상세 내용을 도시하는 도면이다. In addition, as described above, (2) a part of the applet or the like which implements the function 12c for executing the applet only in a regular configuration is downloaded from outside the client terminal C, and the rest is downloaded into the client terminal C. It can also be set as the structure arrange | positioned previously (refer FIG. 13). In FIG. 13, the special format JAR file 202 shows a configuration including CoziletData.class 24c, a JAR file (target.jar) T, and a JAR file (descriptor.jar) D as information for identifying identity. . When using the special format JAR file 202 of the structure shown in FIG. 13, Cozilet.class 24a as a starting program and CoziletClassLoader.class 24b as a loading program store the client terminal provided with JRE. It is preferably stored in the area beforehand. 14 is a diagram showing details of the configuration of the special format JAR file 202.

또한, 특수 형식 JAR 파일(203)로서, 동일성 확인용 정보로서의 CoziletData.class(24c) 및 JAR 파일(descriptor.jar) D를 포함하는 구성으로 할 수도 있다(도 15 참조). 이 경우, 기동용 프로그램으로서의 Cozilet.class(24a) 및 로드용 프로그램으로서의 CoziletClassLoader.class(24b)는, JRE를 구비한 클라이언트 단말기의 기억 영역에 미리 저장되고, JAR 파일(target.jar) T는 JRE에 의해 로드 가능한 장소에 배치되어 있을 필요가 있다. The special format JAR file 203 can also be configured to include CoziletData.class 24c and JAR file (descriptor.jar) D as the information for identifying the identity (see FIG. 15). In this case, Cozilet.class 24a as a startup program and CoziletClassLoader.class 24b as a loading program are stored in advance in a storage area of a client terminal having a JRE, and a JAR file (target.jar) T is a JRE. It must be arranged in the place which can be loaded by.

이와 같이, 본 실시예에서의 특수 형식 JAR 파일은, 도 3, 도 12, 도 13 및 도 15에 도시하는 바와 같이, 여러 가지 형식으로 분할하는 것이 가능하지만, 상술한 어느 형식의 특수 형식 JAR 파일에서도, 결과적으로 분할된 구성 요소 모두가 JRE에 로드되고, 도 11에 도시한 각 단계가 실행되는 점에서는 공통되어 있다. As described above, the special format JAR file in the present embodiment can be divided into various formats as shown in FIGS. 3, 12, 13, and 15, but the special format JAR file of any of the above-described formats Also, as a result, all of the divided components are loaded into the JRE, and are common in that each step shown in FIG. 11 is executed.

상술한 바와 같이, 대상 애플릿을 특수 애플릿 대신에 모 패널에 등록함으로써, GUI 이벤트는 정상적으로 통지되기 때문에, GUI 관련의 대상 애플릿의 메소드에 대해서는 JRE에 의해 정상적으로 실행된다. 그러나, GUI 관련 이외의 대상 애플릿의 메소드에 대해서는, JRE가 내부적으로 유지하고 있는 동작 중 애플릿의 리스트에 대상 애플릿이 등록되어 있지 않기 때문에, JRE에 의해 정상적으로 실행되지 않고, 여전히 특수 애플릿의 메소드가 실행되게 된다. 그래서, 이러한 메소드에 대해서는, 특수 애플릿의 각 메소드에서, JRE로부터의 메소드 호출을 대상 애플릿의 상기 메소드에 위양하도록 하고 있다. As described above, since the GUI event is normally notified by registering the target applet in the parent panel instead of the special applet, the method of the target applet related to the GUI is normally executed by the JRE. However, for target applet methods other than GUI-related, the target applet is not registered in the list of applets in the JRE's internally maintained operation, so it is not normally executed by the JRE and the special applet method is still executed. Will be. Thus, for these methods, each method in the special applet delegates method calls from the JRE to the above method in the target applet.

구체적으로는, 대상 애플릿 배치 정보로서 입력된 메소드 시그너쳐군과 동일한 시그너쳐를 갖는 래퍼 메소드군을 특수 애플릿의 메인 클래스에 추가하고, 래퍼 메소드군이 자기 자신에의 메소드 호출 처리를 대상 애플릿의 메인 클래스의 동일한 시그너쳐를 갖는 메소드에 위양시키는 구성으로 하고 있다. Specifically, you add a set of wrapper methods that have the same signature as the method signature group entered as target applet placement information to the special applet's main class, and the wrapper method group handles method calls to itself in the target applet's main class. It is configured to delegate to methods with the same signature.

도 16에, 래퍼 메소드를 추가한 Cozilet 클래스(기동용 프로그램에 상당)의 소스 코드의 예를 도시한다. 이 소스 코드를 컴파일함으로써, 래퍼 메소드가 추가된 Cozilet.class를 생성할 수 있다. 도 16의 예에서는, 배치 정보로서 입력된 메소드 시그너쳐 doSomething(java.lang.String)와 같은 시그너쳐를 갖는 래퍼 메소드를 추가하고, 래퍼 메소드 내에서 동일한 시그너쳐를 갖는 대상 애플릿의 메인 클래스의 메소드를, Java의 리플렉션의 구조를 이용하여 호출하고 있다. FIG. 16 shows an example of source code of a Cozilet class (corresponding to a startup program) in which a wrapper method is added. By compiling this source code, you can create Cozilet.class with wrapper methods added. In the example of FIG. 16, a wrapper method having a signature such as the method signature doSomething (java.lang.String) input as the deployment information is added, and the method of the main class of the target applet having the same signature in the wrapper method is Java. Called using the reflection structure of.

JavaScript로부터 애플릿의 메소드의 호출이 있으면, 호출 의뢰가 JRE에 전 해진다. JRE는 동작 중의 애플릿 리스트를 보유하고 있으며, 이 리스트에 기초하여 해당하는 애플릿의 메소드를 호출한다. 단, 애플릿 리스트는 특수 애플릿으로부터 조작할 수 없다. 그래서, 상술한 특수 형식 JAR 파일에 포함되는 특수 애플릿의 메인 클래스에 상기 메소드의 래퍼 메소드를 추가함으로써, 래퍼 메소드가 호출된 경우에는, 스크립트 코드가 래퍼 메소드를 경유하여 대상 애플릿의 메소드를 호출할 수 있도록 할 수 있다. When an applet's method is called from JavaScript, the request is sent to the JRE. The JRE maintains a list of applets in action, and invokes the applet's methods based on this list. However, applet lists cannot be manipulated by special applets. Thus, by adding the wrapper method of the method to the main class of the special applet contained in the special format JAR file described above, when the wrapper method is called, the script code can call the target applet's method via the wrapper method. You can do that.

또한, 본 실시예에서의 특수 애플릿은 자신의 직렬화가 무효로 되도록 실장되어 있다. 특수 애플릿의 직렬화가 유효로 되어 있으면, 공격자는 직렬화나 직렬화로부터의 복원을 행하는 인터페이스를 이용하여, 특수 애플릿의 시큐러티상 중요한 private 필드의 값을 훔쳐내거나 개찬하거나 하는 것이 가능하다. java.applet.Applet 클래스는 직렬화 가능하게 하여 실장되어 있으므로, 그것을 계승하고 있는 Cozilet 클래스도 직렬화 가능하게 되어 있다. 그래서, Cozilet.class(24a)는, 직렬화에 관련되는 메소드에서 강제적으로 예외를 발생하도록 실장함으로써, 자신의 직렬화를 무효로 하고 있다. 도 17에 직렬화를 무효로 하는 실장을 실시한 Cozilet 클래스의 소스 코드의 예를 도시한다. In addition, the special applet in this embodiment is implemented so that its serialization is invalid. If serialization of the special applet is enabled, an attacker can steal or alter the value of the special applet's security-critical private fields using an interface that serializes or restores from serialization. Since the java.applet.Applet class is implemented to be serializable, the Cozilet class that inherits it is also serializable. Therefore, Cozilet.class (24a) invalidates its serialization by implementing forcibly throwing an exception in the method related to serialization. Fig. 17 shows an example of the source code of the Cozilet class in which the serialization is disabled.

계속해서, 도 18을 이용하여 상술한 바와 같은 구성의 특수 형식 JAR 파일(도 3, 도 12, 도 13 및 도 15)을 생성하기 위한 JAR 파일 생성 장치(5)에 대하여 설명한다. 본 장치는, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 기능을 갖고, 대상 애플릿 프로그램 및 배치 정보를 입력함으로써, 대상 애플릿 프로그램을 특수 형식 JAR 파일로 변환하는(대상 애플릿 프로그램의 캡슐화) 것이다. Next, the JAR file generation apparatus 5 for generating the special format JAR file (FIGS. 3, 12, 13, and 15) of the structure mentioned above using FIG. 18 is demonstrated. This apparatus has a function of generating a JAR file containing a Java applet for executing a plurality of predetermined Java applet programs on a computer, and converts the target applet program into a special format JAR file by inputting the target applet program and batch information. (Encapsulation of the target applet program).

본 실시예에 따른 JAR 파일 생성 장치(5)는, 동일성 확인용 정보 생성부(51), JAR 파일 생성부(52), 기억부(53), CPU(54) 및 특수 애플릿 생성부(55)를 구비하여 이루어지는 구성으로 되어 있다. The JAR file generation device 5 according to the present embodiment includes an information confirmation unit 51 for confirmation of identity, a JAR file generation unit 52, a storage unit 53, a CPU 54, and a special applet generation unit 55. It is configured as having a configuration.

동일성 확인용 정보 생성부(51)는, 대상 애플릿 프로그램(복수의 소정의 Java 애플릿 프로그램) 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를 생성하는 역할을 갖는다. The identity confirmation information generation unit 51 generates the identity verification information for detecting the alteration of the batch information based on the batch information defined for each of the target applet programs (a plurality of predetermined Java applet programs). Has a role to play.

JAR 파일 생성부(52)는, 복수의 소정의 Java 애플릿 프로그램, 배치 정보 및 동일성 확인용 정보에 기초하여, 복수의 소정의 Java 애플릿 프로그램, 배치 정보, 동일성 확인용 정보, 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성한다. 또한, JAR 파일 생성부(52)는, 생성하는 JAR 파일에 대하여 전자 서명을 실시하는 기능을 갖고 있다. The JAR file generation unit 52, based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information, the plurality of predetermined Java applet programs, the batch information, the identity checking information, and the plurality of predetermined Java applets. JAR file containing a load program for loading a program and a startup program for starting a load program, wherein the information for identity confirmation, the load program, and the startup program are defined as class files in the same package. Create a file. In addition, the JAR file generation unit 52 has a function of digitally signing the generated JAR file.

특수 애플릿 생성부(55)는, 상술한 기동용 프로그램으로서의 Cozilet.class(24a) 및 로드용 프로그램으로서의 CoziletClassLoader.class(24b)를 생성하는 역할을 갖는다. The special applet generation unit 55 has a role of generating Cozilet.class 24a as a startup program and CoziletClassLoader.class 24b as a load program.

기억부(컴퓨터에 의해 판독 가능한 기록 매체)(53)는, RAM이나 ROM 등의 기억 영역으로 구성되어 있으며, JAR 파일 생성 장치(5)에서 실행되는 프로그램이나 여러 가지의 애플릿 등을 저장하는 역할을 갖고 있다. CPU(컴퓨터)(54)는, JAR 파일 생성 장치(5)에서의 각종 처리를 행하기 위해, 기억부(53)에 저장되어 있는 프로그램을 실행하는 역할 등을 갖고 있다. The storage unit (recordable medium that can be read by a computer) 53 is composed of a storage area such as RAM or ROM, and stores a program executed in the JAR file generating device 5, various applets, and the like. Have 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 generation device 5.

도 19는, 상술한 바와 같은 JAR 파일 생성 장치(5)에서의 처리의 흐름(JAR 파일 생성 방법)에 대하여 설명하기 위한 플로우차트이다. 여기에서는, 도 3에 도시하는 데이터 형식의 특수 형식 JAR 파일을 생성하는 경우에 대하여 설명한다. FIG. 19 is a flowchart for explaining the flow of processing (the JAR file generating method) in the JAR file generating apparatus 5 as described above. Here, the case where the special format JAR file of the data format shown in FIG. 3 is produced | generated is demonstrated.

우선, JAR 파일 생성 장치(5)에서, 입력 데이터로서 대상 애플릿 프로그램(여기에서는, bar.jar(21) 및 foo.jar(22)) 및 그 대상 애플릿 프로그램의 소재에 대하여 정의하는 배치 정보(저장 장소나 URL 등)를 취득한다(S61).First, in the JAR file generating apparatus 5, as input data, layout information (storage) defined for the target applet programs (here, bar.jar (21) and foo.jar (22)) and the location of the target applet program Location, URL, etc.) (S61).

다음으로, 동일성 확인용 정보 생성부(51)는, 취득된 배치 정보에 기초하여, 상기 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보로서의 JAR 파일(descriptor.jar) D를 생성한다(동일성 확인용 정보 생성 단계)(S62). 구체적으로, 동일성 확인용 정보 생성부(51)는, 동일성 확인용 정보로서, 배치 정보의 해시값 또는 배치 정보의 데이터의 일부 또는 전부를 포함하는 JAR 파일, 대상 애플릿 프로그램 각각의 해시값 또는 대상 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 JAR 파일, 배치 정보 및 대상 애플릿 프로그램 양쪽의 해시값 또는 각각의 데이터의 일부 또는 전부를 포함하는 JAR 파일을 생성할 수 있다. Next, the identity confirmation information generation unit 51 generates a JAR file (descriptor.jar) D as identity verification information for detecting alteration of the batch information based on the acquired batch information (identity check). Information generation step) (S62). Specifically, the identity confirmation information generation unit 51 is a JAR file including hash values of batch information or part or all of the data of batch information as the identity check information, hash values of target applet programs, or target applets. It is possible to create a JAR file containing some or all of the data of each program, a hash value of both the batch information and the target applet program, or a JAR file containing some or all of the respective data.

계속해서, JAR 파일 생성부(52)는, 대상 애플릿 프로그램(bar.jar(21) 및 foo.jar(22)), 배치 정보 및 동일성 확인용 정보에 기초하여 대상 애플릿 프로그램, 배치 정보, 동일성 확인용 정보, 대상 애플릿 프로그램을 로드하기 위한 로드 용 프로그램 및 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일을 생성한다. 이 때, 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램은, 도 3에 도시하는 바와 같이, 생성되는 JAR 파일에서 동일 패키지에서의 클래스 파일로서 정의된다(JAR 파일 생성 단계)(S63). 이와 같이, 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를, 소정의 패키지에서의 클래스 파일로서 정의함으로써, 상기 JAR 파일에 전자 서명이 실시된 경우에, 「same-package-same-signer」의 구조에 의해, 상기 동일성 확인용 정보의 부정한 개찬을 방지할 수 있다. 또한, 생성하는 JAR 파일에, 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함시키도록 함으로써, 상기 JAR 파일을 다운로드하는 단말기에서 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 기능을 실현하는 프로그램을 미리 인스톨해 두지 않아도, 이 JAR 파일을 다운로드하기만 하면 복수의 소정의 Java 애플릿 프로그램을 안전하게 로드시킬 수 있다. 즉, 상기 JAR 파일을 로드하고, 실행하는 JRE에 대하여 아무런 변경을 가하지 않고, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지할 수 있다. Subsequently, the JAR file generation unit 52 checks the target applet program, the batch information, and the identity on the basis of the target applet programs (bar.jar (21) and foo.jar (22)), the batch information, and the identity checking information. Creates a JAR file that contains the application information, the load program to load the target applet program, and the startup program to start the load program. At this time, the identity confirmation information, the load program, and the startup program are defined as class files in the same package in the generated JAR file (JAR file generation step) (S63). Thus, by defining the identity identification information for detecting alteration of batch information as a class file in a predetermined package, when the JAR file is digitally signed, the "same-package-same-signer" By the structure, an incorrect alteration of the identity confirmation information can be prevented. The JAR file to be generated includes a load program for loading a plurality of predetermined Java applet programs and a startup program for starting the load program, thereby allowing a plurality of terminals to download the JAR file. It is possible to safely load a plurality of predetermined Java applet programs simply by downloading this JAR file without having to install a program that realizes a function for loading a given Java applet program in advance. In other words, it is possible to simply and reliably prevent an electronically signed Java applet from being illegally reused without making any changes to the JRE that loads and executes the JAR file.

상술한 바와 같이 하여 생성된 JAR 파일은, 필요에 따라 JAR 파일 생성부(52)에서 전자 서명이 실시되어 출력된다(S64).The JAR file generated as described above is digitally signed by the JAR file generation unit 52 and output as necessary (S64).

상술한 JAR 파일 생성 방법에서의 각 단계는, 기억부(53)에 저장되어 있는 JAR 파일 생성 프로그램을, CPU(54)에 실행시킴으로써 실현된다. Each step in the above-described JAR file generation method is realized by executing the JAR file generation program stored in the storage unit 53 on the CPU 54.

상술한 바와 같은 단계에 의해, 특수 애플릿 프로그램인 클래스 파일군, 대 상 애플릿 프로그램 및 배치 정보를 포함하는 도 3에서 도시한 바와 같은 특수 형식 JAR 파일을 생성할 수 있다. By the steps as described above, a special format JAR file as shown in FIG. 3 including a class file group, a target applet program, and deployment information, which are special applet programs, can be generated.

또한, JAR 파일 생성부(52)는, 특수 형식 JAR 파일에 포함시키는 특수 애플릿 프로그램인 클래스 파일군(로드용 프로그램 및 기동용 프로그램 등)을, 기억부(53)에 미리 저장되어 있는 데이터 중에서 선택할 수 있다. 물론, 특수 애플릿 생성부(55)에서 생성된 특수 애플릿을, 특수 형식 JAR 파일에 포함시키는 클래스 파일군으로 하도록 생성할 수도 있다. In addition, the JAR file generation unit 52 selects a class file group (loading program, startup program, etc.), which are special applet programs to be included in the special format JAR file, from among the data previously stored in the storage unit 53. Can be. Of course, the special applet generated by the special applet generation unit 55 may be generated to be a class file group included in the special format JAR file.

또한, JAR 파일 생성부(52)는, 도 12에 도시하는 데이터 형식의 특수 형식 JAR 파일(201)과 같이, 대상 애플릿 프로그램을 특수 형식 JAR 파일에는 포함시키지 않고 생성할 수도 있다. 이 경우, JAR 파일 생성부(52)는, 배치 정보 및 동일성 확인용 정보에 기초하여, 배치 정보, 동일성 확인용 정보, 대상 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일을 생성한다. 이 때, JAR 파일 생성부(52)에 의해, 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의된다. The JAR file generation unit 52 can also generate the target applet program without including the target applet program in the special format JAR file, like the special format JAR file 201 shown in FIG. 12. In this case, the JAR file generation unit 52 starts up the batch information, the identity verification information, the load program for loading the target applet program, and the load program for starting the load, based on the batch information and the identity verification information. Create a JAR file containing your application. At this time, the JAR file generation unit 52 defines the identity confirmation information, the load program and the startup program as class files in the same package.

또한, JAR 파일 생성부(52)는, 도 13에 도시하는 데이터 형식의 특수 형식 JAR 파일(202)과 같이, 특수 애플릿 프로그램(로드용 프로그램 및 기동용 프로그램 등)을 특수 형식 JAR 파일에는 포함시키지 않고 생성할 수도 있다. 이 경우, JAR 파일 생성부(52)는, 대상 애플릿 프로그램, 배치 정보 및 동일성 확인용 정보에 기초하여, 대상 애플릿 프로그램, 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일을 생성한다. 이 때, JAR 파일 생성부(52)에 의해, 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의된다. In addition, like the special format JAR file 202 of the data format shown in FIG. 13, the JAR file generation unit 52 does not include special applet programs (loading program, startup program, etc.) in the special format JAR file. It can also be created without. In this case, the JAR file generation unit 52 generates a JAR file containing the target applet program, the batch information, and the identity checking information, based on the target applet program, the batch information, and the identity checking information. At this time, the JAR file generation unit 52 defines the information for identifying the identity as a class file in a predetermined package.

이밖에, JAR 파일 생성부(52)는, 도 15에 도시하는 데이터 형식의 특수 형식 JAR 파일(203)과 같이, 대상 애플릿 프로그램 및 특수 애플릿 프로그램(로드용 프로그램 및 기동용 프로그램 등)을 특수 형식 JAR 파일에는 포함시키지 않고 생성할 수도 있다. 이 경우, JAR 파일 생성부(52)는, 배치 정보 및 동일성 확인용 정보에 기초하여, 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일을 생성한다. 이 때, JAR 파일 생성부(52)에 의해, 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의된다. In addition, the JAR file generation unit 52 stores the target applet program and the special applet program (loading program, startup program, etc.) in a special format, like the special format JAR file 203 of the data format shown in FIG. 15. You can also create them without including them in the JAR file. In this case, the JAR file generation unit 52 generates a JAR file containing the batch information and the information for identifying the same, based on the batch information and the information for identifying the identity. At this time, the JAR file generation unit 52 defines the information for identifying the identity as a class file in a predetermined package.

또한, 상술한 구성 외에, (3) 애플릿을 정규의 구성으로만 실행시키기 위한 기능(12c)을 실현하는 애플릿 등 중, 클라이언트 단말기 C의 외부에 배치할 데이터만 외부에 배치하고, 그 밖의 애플릿 등은 클라이언트 단말기 C의 내부에 미리 배치해 두는 구성으로 할 수도 있다(도 20). 도 20에서는, 클라이언트 단말기 C의 내부에 미리 배치된 애플릿 프로그램 등을 기동함으로써, 로드용 프로그램, 및 기동용 프로그램으로서의 역할을 갖는 특수 애플릿 기동부(12a')가 실현되어 있는 모습을 도시하고 있다. In addition to the above-described configuration, (3) among the applets and the like which realize the function 12c for executing the applet only in the regular configuration, only the data to be placed outside the client terminal C is placed outside, and the other applets and the like. May be arranged in advance in the client terminal C (FIG. 20). In FIG. 20, the applet program etc. which were arrange | positioned previously in the client terminal C are started, and the special applet start part 12a 'which has a role as a load program and a start program is shown.

이상에서 설명한 바와 같이, 본 발명에 따르면, 전자 서명된 Java 애플릿이 부정하게 재이용되는 것을 간단하고 또한 확실하게 방지할 수 있다. As described above, according to the present invention, it is possible to easily and reliably prevent an electronically signed Java applet from being illegally reused.

Claims (23)

복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체로서, A computer-readable recording medium having recorded thereon a Java applet for executing a plurality of predetermined Java applet programs on a computer, 상기 Java 애플릿은 출처를 보증하기 위한 전자 서명이 실시된 것이며,The Java applet has been electronically signed to ensure its origin, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보의 개찬(改竄)을 검출하기 위한 동일성 확인용 정보에 기초하여, 상기 배치 정보의 개찬을 검출하는 개찬 검출 단계와, An alteration detection step of detecting alteration of the arrangement information on the basis of identification information for detecting alteration of arrangement information defined for each of the plurality of predetermined Java applet programs; 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램을 기동시키는 로드용 프로그램 기동 단계와, A load program starting step of starting a load program for loading the plurality of predetermined Java applet programs; 상기 개찬 검출 단계에서 개찬이 검출되지 않은 경우에, 상기 배치 정보에 기초하여, 상기 기동시킨 로드용 프로그램에 의해 상기 복수의 소정의 Java 애플릿 프로그램을 로드시키는 로드 단계A load step of loading the plurality of predetermined Java applet programs by the loaded load program based on the batch information when no alteration is detected in the alteration detection step; 를 컴퓨터에 실행시키는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체.A computer-readable recording medium having recorded thereon a Java applet for executing a program on a computer. 제1항에 있어서,The method of claim 1, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체.And the identification information includes a hash value of the batch information or a part or all of the data of the batch information. 제1항에 있어서,The method of claim 1, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하고, The identity confirmation information includes a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs, 상기 개찬 검출 단계는, 상기 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 개찬을 검출하는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체.The alteration detection step is a computer-readable recording medium having recorded thereon a Java applet for detecting alteration of each of the plurality of predetermined Java applet programs based on the identity confirmation information. 제1항에 있어서,The method of claim 1, 상기 Java 애플릿에서의 메인 클래스에 대하여, Java 스크립트를 사용한 메소드 호출 요구가 있었던 경우에, 상기 호출 요구에 기초하는 메소드 호출 처리를, 상기 복수의 소정의 Java 애플릿 프로그램 중의 상기 호출된 메소드에 대응하는 메소드에 위양시키는 위양 단계를 갖는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체.When a method call request using Java script is made for the main class in the Java applet, the method call processing based on the call request is the method corresponding to the called method in the plurality of predetermined Java applet programs. A computer-readable recording medium having recorded thereon a Java applet having a delegation step. 제1항에 있어서,The method of claim 1, 상기 Java 애플릿에 대하여 설정되어 있는 애플릿 스터브를, 상기 로드 단계에서 로드된 복수의 소정의 Java 애플릿 프로그램에 대하여 설정하는 애플릿 스터브 설정 단계를 갖는 Java 애플릿이 기록된 컴퓨터 판독가능한 기록 매체.A computer-readable recording medium having recorded thereon an applet stub setting step of setting an applet stub set for the Java applet for a plurality of predetermined Java applet programs loaded in the loading step. 컴퓨터가, 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 처리를 행하는 JAR 파일 생성 방법으로서, A method of generating a JAR file in which a computer performs a process of generating a JAR file containing a Java applet for executing a plurality of predetermined Java applet programs on a computer, 상기 컴퓨터가, The computer, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 상기 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성 단계와, An identity verification information generation step of generating identity verification information for detecting alteration of the batch information based on batch information defined for each of the plurality of predetermined Java applet programs; 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 단계A JAR file including the batch information and the information for identifying the identity, based on the batch information and the information for identifying the identity, wherein a JAR for generating a JAR file in which the information for identifying the identity is defined as a class file in a predetermined package; File Generation Steps 를 실행하는 것을 특징으로 하는 JAR 파일 생성 방법.JAR file generation method characterized in that for executing. 제6항에 있어서,The method of claim 6, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 방법.The identity checking information includes a hash value of the batch information or a part or all of data of the batch information. 제6항에 있어서,The method of claim 6, 상기 JAR 파일 생성 단계는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 방법.The JAR file generating step starts the batch information, the identity verification information, a load program for loading the plurality of predetermined Java applet programs, and the load program based on the batch information and the identity verification information. A JAR file containing a startup program for causing a JAR file to be generated, wherein the identification information, the load program, and the startup program are defined as class files in the same package. 제6항에 있어서,The method of claim 6, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 방법.The JAR file generating step includes a JAR file including the plurality of predetermined Java applet programs, the batch information, and the identity checking information, based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information. And a JAR file generation method for generating a JAR file in which said identity confirmation information is defined as a class file in a predetermined package. 제9항에 있어서,The method of claim 9, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 방법.The identity checking information includes a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. 제6항에 있어서,The method of claim 6, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 방법.The JAR file generating step includes the plurality of predetermined Java applet programs, the batch information, the identity checking information, and the plurality of predetermined Java applets based on the plurality of predetermined Java applet programs, the batch information, and the information for identifying the same. A JAR file containing a load program for loading a Java applet program of the program and a startup program for starting the load program, wherein the identification information, the load program, and the startup program are class files in the same package. A JAR file generation method that generates a JAR file that is defined as. 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 처리를 컴퓨터에 실행시키는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체로서, A computer-readable recording medium having recorded thereon a JAR file generating program for causing a computer to execute a process for generating a JAR file containing a Java applet for executing a plurality of predetermined Java applet programs on a computer, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 상기 배치 정보의 개찬을 검출하기 위한 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성 단계와, An identity verification information generation step of generating identity verification information for detecting alteration of the batch information based on batch information defined for each of the plurality of predetermined Java applet programs; 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 단계를 컴퓨터에 실행시키는 것을 특징으로 하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.A JAR file including the batch information and the information for identifying the identity, based on the batch information and the information for identifying the identity, wherein a JAR for generating a JAR file in which the information for identifying the identity is defined as a class file in a predetermined package; A computer-readable recording medium having a JAR file generating program recorded thereon, wherein the file generating step is executed on a computer. 제12항에 있어서,The method of claim 12, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.And the identity checking information includes a hash value of the batch information or a part or all of the data of the batch information. 제12항에 있어서,The method of claim 12, 상기 JAR 파일 생성 단계는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.The JAR file generating step starts the batch information, the identity verification information, a load program for loading the plurality of predetermined Java applet programs, and the load program based on the batch information and the identity verification information. A JAR file containing a startup program for causing a computer to read, wherein the identity confirmation information, the load program, and the startup program record a JAR file generation program that generates a JAR file defined as a class file in the same package. Record carrier. 제12항에 있어서,The method of claim 12, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.The JAR file generating step includes a JAR file including the plurality of predetermined Java applet programs, the batch information, and the identity checking information, based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information. And a JAR file generation program for generating a JAR file in which said identity confirmation information is defined as a class file in a predetermined package. 제15항에 있어서,The method of claim 15, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.And the identification checking information includes a JAR file generating program including a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. 제12항에 있어서,The method of claim 12, 상기 JAR 파일 생성 단계는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 프로그램을 기록한 컴퓨터 판독가능한 기록매체.The JAR file generating step includes the plurality of predetermined Java applet programs, the batch information, the identity checking information, and the plurality of predetermined Java applets based on the plurality of predetermined Java applet programs, the batch information, and the information for identifying the same. A JAR file containing a load program for loading a Java applet program of the program and a startup program for starting the load program, wherein the identification information, the load program, and the startup program are class files in the same package. A computer-readable recording medium having recorded thereon a JAR file generating program which generates a JAR file which is defined as. 복수의 소정의 Java 애플릿 프로그램을 컴퓨터에 실행시키는 Java 애플릿을 포함하는 JAR 파일을 생성하는 JAR 파일 생성 장치로서, A JAR file generating device for generating a JAR file containing a Java applet for executing a plurality of predetermined Java applet programs on a computer, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 소재에 대하여 정의하는 배치 정보에 기초하여, 동일성 확인용 정보를 생성하는 동일성 확인용 정보 생성부와, An identity verification information generation unit for generating identity verification information based on layout information defined for each of the plurality of predetermined Java applet programs; 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성부를 구비하여 이루어지는 JAR 파일 생성 장치.A JAR file including the batch information and the information for identifying the identity, based on the batch information and the information for identifying the identity, wherein a JAR for generating a JAR file in which the information for identifying the identity is defined as a class file in a predetermined package; JAR file generation device comprising a file generation unit. 제18항에 있어서,The method of claim 18, 상기 동일성 확인용 정보는, 상기 배치 정보의 해시값 또는 상기 배치 정보의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 장치.The identity checking information includes a hash value of the batch information or a part or all of data of the batch information. 제18항에 있어서,The method of claim 18, 상기 JAR 파일 생성부는, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 장치.The JAR file generation unit activates the batch information, the identity verification information, a load program for loading the plurality of predetermined Java applet programs, and the load program based on the batch information and the identity verification information. A JAR file containing a startup program for generating a JAR file, wherein the identification information, the load program, and the startup program are defined as a class file in the same package. 제18항에 있어서,The method of claim 18, 상기 JAR 파일 생성부는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보를 포함하는 JAR 파일로서, 상기 동일성 확인용 정보가 소정의 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 장치.The JAR file generation unit is a JAR file including the plurality of predetermined Java applet programs, the batch information, and the identity checking information, based on the plurality of predetermined Java applet programs, the batch information, and the identity checking information. And a JAR file generating device for generating a JAR file in which said identity confirmation information is defined as a class file in a predetermined package. 제21항에 있어서,The method of claim 21, 상기 동일성 확인용 정보는, 상기 복수의 소정의 Java 애플릿 프로그램 각각의 해시값 또는 상기 복수의 소정의 Java 애플릿 프로그램 각각의 데이터의 일부 또는 전부를 포함하는 JAR 파일 생성 장치.And the identity checking information includes a hash value of each of the plurality of predetermined Java applet programs or a part or all of data of each of the plurality of predetermined Java applet programs. 제18항에 있어서,The method of claim 18, 상기 JAR 파일 생성부는, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보 및 동일성 확인용 정보에 기초하여, 상기 복수의 소정의 Java 애플릿 프로그램, 상기 배치 정보, 동일성 확인용 정보, 상기 복수의 소정의 Java 애플릿 프로그램을 로드하기 위한 로드용 프로그램 및 상기 로드용 프로그램을 기동시키기 위한 기동용 프로그램을 포함하는 JAR 파일로서, 상기 동일성 확인용 정보, 로드용 프로그램 및 기동용 프로그램이 동일 패키지에서의 클래스 파일로서 정의되어 있는 JAR 파일을 생성하는 JAR 파일 생성 장치.The JAR file generation unit includes the plurality of predetermined Java applet programs, the batch information, the identity checking information, and the plurality of predetermined Java applets based on the plurality of predetermined Java applet programs, the batch information, and the information for identifying the same. A JAR file comprising a load program for loading a Java applet program and a startup program for starting the load program, wherein the identity confirmation information, the load program, and the startup program are class files in the same package. JAR file generator that generates a defined JAR file.
KR1020067024096A 2006-11-17 2004-08-12 Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device KR100839296B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067024096A KR100839296B1 (en) 2006-11-17 2004-08-12 Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020067024096A KR100839296B1 (en) 2006-11-17 2004-08-12 Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device

Publications (2)

Publication Number Publication Date
KR20070018956A KR20070018956A (en) 2007-02-14
KR100839296B1 true KR100839296B1 (en) 2008-06-17

Family

ID=43652180

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067024096A KR100839296B1 (en) 2006-11-17 2004-08-12 Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device

Country Status (1)

Country Link
KR (1) KR100839296B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020096616A (en) * 2001-06-21 2002-12-31 한국전자통신연구원 The Mechanism And Processing Flow Of Generating And Verifying Digital Signature For Electronic Documents In The Form Of XML

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020096616A (en) * 2001-06-21 2002-12-31 한국전자통신연구원 The Mechanism And Processing Flow Of Generating And Verifying Digital Signature For Electronic Documents In The Form Of XML

Also Published As

Publication number Publication date
KR20070018956A (en) 2007-02-14

Similar Documents

Publication Publication Date Title
JP4745238B2 (en) Java applet, JAR file generation method, JAR file generation program, JAR file generation apparatus
Oaks Java security: writing and deploying secure applications
US5974549A (en) Security monitor
Sun et al. Android rooting: Methods, detection, and evasion
Xu et al. Taint-Enhanced Policy Enforcement: A Practical Approach to Defeat a Wide Range of Attacks.
US7516477B2 (en) Method and system for ensuring that computer programs are trustworthy
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
Burns Developing secure mobile applications for android
Long et al. Java coding guidelines: 75 recommendations for reliable and secure programs
US20170011218A1 (en) Computer security system and method
JP2010205270A (en) Device for providing tamper evident property to executable code stored in removable medium
Cifuentes et al. Understanding caller-sensitive method vulnerabilities: A class of access control vulnerabilities in the java platform
CN114651253A (en) Virtual environment type verification for policy enforcement
Xu et al. N-version obfuscation
KR100839296B1 (en) Recording medium for recording java applet, jar file creating method, recording medium for recording jar file creating program, and jar file creating device
Hwang et al. All about activity injection: Threats, semantics, detection, and defense
Koved et al. The evolution of Java security
Metula Managed code rootkits: hooking into runtime environments
Wheeler et al. Java security extensions for a java server in a hostile environment
JP2004118433A (en) Operation control method for outside program, operation control program, operation controller, and operation control program providing device
Hu et al. Protecting android apps against reverse engineering
Jadhav Protecting the integrity of Android applications by employing automated self-introspection methods
Vasileiadis Remote runtime detection of tampering and of dynamic analysis attempts for Android apps
Cai et al. Research on Dynamic Safe Loading Techniques in Android Application Protection System
Chess et al. Is Java still secure?

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130524

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee