JP2008234248A - Program execution device and program execution method - Google Patents

Program execution device and program execution method Download PDF

Info

Publication number
JP2008234248A
JP2008234248A JP2007071884A JP2007071884A JP2008234248A JP 2008234248 A JP2008234248 A JP 2008234248A JP 2007071884 A JP2007071884 A JP 2007071884A JP 2007071884 A JP2007071884 A JP 2007071884A JP 2008234248 A JP2008234248 A JP 2008234248A
Authority
JP
Japan
Prior art keywords
dll
program execution
isolation
execution unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007071884A
Other languages
Japanese (ja)
Inventor
Hideaki Okada
英明 岡田
Ryozo Kiyohara
良三 清原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007071884A priority Critical patent/JP2008234248A/en
Publication of JP2008234248A publication Critical patent/JP2008234248A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To improve security at the time of calling a function of a DLL (dynamic link library). <P>SOLUTION: A DDL isolation load determination part 205 of a DDL using program execution part 251 instructs load of an encrypted library 105 to a DDL isolation load program execution part 253. The DDL isolation load execution part 253 loads the encrypted library 105 to an isolation area according to the instruction. A DDL calling part 107 of the DLL using program execution part 251 instructs the DLL isolation load program execution part 253 to call a function mounted on a code in the encrypted library 105 loaded to the isolation area. The DLL isolation load program execution part 253 executes the code mounted on the encrypted library 105 in the isolation area according to the instruction, and reports the execution result to the DLL using program execution part 251. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、プログラム実行装置及びプログラム実行方法に関するものである。本発明は、特に、実行コードのセキュリティ向上方法に関するものである。   The present invention relates to a program execution device and a program execution method. The present invention particularly relates to an execution code security improvement method.

オペレーティングシステム開発メーカや、組み込み機器開発メーカは、プリインストールされるソフトウェアに対して、十分試験し、信頼できる状態(システム)で出荷する。試験され、信頼できるシステムに対して、ソフトウェア、特にC/C++言語などで記述され、CPU(Central・Processing・Unit)などのハードウェアで直接実行されるソフトウェアの追加・実行を許可すると、悪意のあるソフトウェアの追加や、悪意はなくとも脆弱性のあるソフトウェアの追加により、システムのセキュリティは低下する。   Operating system developers and embedded device developers thoroughly test preinstalled software and ship it in a reliable state (system). Allowing a tested and trusted system to add or execute software, especially software written in C / C ++ language, etc. and executed directly on hardware such as a CPU (Central Processing Unit) The addition of some software or the addition of software that is not malicious but vulnerable can reduce system security.

このような問題に対し、例えばソフトウェアを十分試験して、信頼できるとしたものに特定の署名者による電子署名を付与し、その特定の署名者による電子署名を持つソフトウェアのみダウンロード・実行を許可するといった、運用で解決する方法がある。   For such a problem, for example, the software is thoroughly tested, an electronic signature by a specific signer is given to what is deemed to be reliable, and only software having an electronic signature by the specific signer is allowed to be downloaded and executed. There is a method to solve by operation.

あるいはまた、例えばインターネットブラウザに対して、ソフトウェアのダウンロード・実行を許可する場合には、特許文献1に記載の発明のように、信頼できない実行コード、即ちダウンロードした実行コードを別の境界領域で実行させてセキュリティの低下を防ぐ方法がある。   Alternatively, for example, when permitting an Internet browser to download and execute software, as in the invention described in Patent Document 1, an unreliable executable code, that is, a downloaded executable code is executed in another boundary region. There is a way to prevent the deterioration of security.

あるいはまた、Java(登録商標)のようなハードウェアで直接実行しない中間言語によるソフトウェアや、Perlのようなスクリプト言語によるソフトウェアのみ、ダウンロード・実行を許可し、そのような言語でアクセス可能な範囲にセキュリティ問題の影響範囲を限定する方法がある。   Alternatively, only software in an intermediate language that is not directly executed by hardware such as Java (registered trademark) or software in a script language such as Perl is permitted to be downloaded and executed, and can be accessed in such a language. There are ways to limit the scope of security issues.

あるいはまた、Symbian(登録商標)OSのように(例えば、非特許文献1参照)、プロセスの単位で権限を設定し、オペレーティングシステムの機能の呼び出しにあたって、その機能ごとに特定の権限を有しないプロセスに対してはその機能の利用を拒否することで、セキュリティの低下を防ぐ、あるいはセキュリティ問題が発生した場合の影響範囲を(権限が及ぶ範囲内に)限定する方法がある。
特表2001−514411号公報 Craig Heath, “Symbian OS Platform Security: Software Development Using the Symbian OS Security Architecture”, Wiley, April 2006
Alternatively, as in the Symbian (registered trademark) OS (see, for example, Non-Patent Document 1), the authority is set in units of processes, and when calling the function of the operating system, the process does not have specific authority for each function. For example, there is a method of preventing the deterioration of security by limiting the use of the function or limiting the scope of influence when a security problem occurs (within the scope of authority).
JP-T-2001-514411 Craig Heath, “Symbian OS Platform Security: Software Development Usage the Symbian OS Security Architecture”, Wiley, April 2006.

多くのソフトウェアで共通的に利用される機能は、動的リンクライブラリ(Dynamic・Link・Library;DLL)として提供されることがある。DLLは、プログラム本体のメモリ領域内にロードされ、一体となって動作し、全体として1つのソフトウェアとして完成する。例えば、データベースソフトウェアにおいて、データベース内のデータの暗号化のため、データベースアプリケーションの要求に合った暗号ライブラリを使用することがある。   A function commonly used in many software may be provided as a dynamic link library (DLL). The DLL is loaded into the memory area of the program body, operates as a whole, and is completed as one piece of software as a whole. For example, database software may use a cryptographic library that meets the requirements of a database application for the encryption of data in the database.

あるいはまた、Java(登録商標)やPerlのように、ハードウェアで直接実行しない種類の言語で記述されているプログラムに対し、一部機能は性能向上、あるいはC/C++などで記述された既存ソフトウェア資産の活用のため、C/C++などのハードウェアで直接実行する種類の言語で記述し、この部分をDLLとして、Java(登録商標)やPerlのプログラム本体から実行時に必要に応じて動的にロードし、実行することがある。   Or, for programs written in a language not directly executed by hardware, such as Java (registered trademark) or Perl, some functions are improved in performance, or existing software written in C / C ++, etc. In order to utilize the assets, it is described in a language of a type that is directly executed by hardware such as C / C ++, and this part is dynamically converted as necessary from a Java (registered trademark) or Perl program body as a DLL. May load and execute.

このようにソフトウェアが複数のモジュールにより構成され、主たるモジュールではなく従たるモジュールであるDLLが、必ずしも信頼できるソフトウェアではない場合、主たるモジュールであるプログラム本体を信頼できるとしても、ソフトウェア全体としては信頼できない、セキュリティ上問題のあるものになってしまう。悪意あるいは脆弱性のあるDLLのため、プログラム本体が改竄されることもあり得る。   In this way, when the software is composed of a plurality of modules and the DLL, which is a subordinate module rather than the main module, is not necessarily reliable software, even if the main program body can be trusted, the software as a whole cannot be trusted. It becomes a security problem. The program body may be tampered with because of malicious or vulnerable DLL.

暗号ライブラリの例のように、多くのソフトウェアにより利用される可能性のあるDLLの場合、セキュリティ問題が発生した場合に非常に深刻な問題となるプログラム(例えば会社の機密情報管理プログラム)からロードされることもあり、多大な影響を及ぼす可能性がある。   In the case of a DLL that can be used by a lot of software, as in the case of a cryptographic library, it is loaded from a program (for example, a company's confidential information management program) that becomes a very serious problem when a security problem occurs. May have a significant impact.

Java(登録商標)やPerlのような言語によるプログラムに対して、これらのプログラムから機能拡張などのためにロードされるDLLの追加ダウンロード・実行を許可すると、DLLと結び付いたJava(登録商標)やPerlの実行エンジンのセキュリティが低下する。Java(登録商標)やPerlの実行エンジンは、それぞれの言語で記述された様々なプログラムを実行可能なように、多くの機能を有している、あるいは、多くの権限を有していることがあり、1つのDLLのセキュリティの問題が大きな影響を及ぼしかねない。   When additional download and execution of DLLs loaded for function expansion etc. from these programs is permitted for programs in languages such as Java (registered trademark) and Perl, Java (registered trademark) Perl's execution engine security is reduced. The execution engines of Java (registered trademark) and Perl have many functions or have many authorities so that various programs written in the respective languages can be executed. Yes, a single DLL security issue can have a major impact.

本発明は、例えば、DLLの機能を呼び出す際のセキュリティを向上させることを目的とする。   An object of the present invention is, for example, to improve security when calling a DLL function.

本発明の一の態様に係るプログラム実行装置は、
特定の機能を実装したコードを含むDLL(動的リンクライブラリ)を利用するDLL利用プログラムを処理装置により実行するDLL利用プログラム実行部と、
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるプログラム実行装置であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードし、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知することを特徴とする。
A program execution device according to an aspect of the present invention includes:
A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit that restricts access by a processing device other than the DLL use program execution unit to a storage area of a storage device that the DLL use program execution unit accesses during execution of the DLL use program;
A program execution device comprising: a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation region which is a storage region different from the storage region where the access restriction unit restricts access by a processing device There,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit,
The DLL isolation load program execution unit loads the DLL into the isolation area according to an instruction from the DLL use program execution unit,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit,
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. The execution unit is notified.

本発明の一の態様によれば、プログラム実行装置において、DLL利用プログラム実行部が、隔離DLL通信部を介して、DLLのロードをDLL隔離ロードプログラム実行部に指示し、DLL隔離ロードプログラム実行部が、DLL利用プログラム実行部による指示に従って、隔離領域へDLLをロードし、DLL利用プログラム実行部が、隔離DLL通信部を介して、隔離領域へロードされたDLL内のコードが実装する機能の呼び出しをDLL隔離ロードプログラム実行部に指示し、DLL隔離ロードプログラム実行部が、DLL利用プログラム実行部による指示に従って、隔離領域へロードしたDLL内のコードを実行し、隔離DLL通信部を介して、当該実行結果をDLL利用プログラム実行部に通知することにより、DLLの機能を呼び出す際のセキュリティが向上する。   According to one aspect of the present invention, in the program execution device, the DLL use program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit, and the DLL isolation load program execution unit. Loads the DLL into the isolation area according to the instruction from the DLL usage program execution unit, and the DLL usage program execution unit calls the function implemented by the code in the DLL loaded into the isolation region via the isolation DLL communication unit. To the DLL isolation load program execution unit, and the DLL isolation load program execution unit executes the code in the DLL loaded into the isolation region according to the instruction by the DLL usage program execution unit, and through the isolation DLL communication unit, By notifying the DLL execution program execution unit of the execution result, the DLL function Security is improved when you call the.

以下、本発明の実施の形態について、図を用いて説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

実施の形態1.
Java(登録商標)言語を例にとり、本実施の形態を説明する。まず、一般的な例について簡単に説明する。一般に、OS(Operating・System)が提供するDLL機能は、プログラム本体(Windows(登録商標)の場合には“.exe”ファイルで提供される)が必要に応じてDLLプログラム(Windows(登録商標)の場合には、一般に“.dll”ファイルで提供される)をロードし、その関数の名前や順番(インデックス)により、プログラム本体からDLLプログラム内の関数の呼び出しが可能となる。
Embodiment 1 FIG.
This embodiment will be described by taking the Java (registered trademark) language as an example. First, a general example will be briefly described. Generally, the DLL function provided by the OS (Operating System) has a program body (provided as a “.exe” file in the case of Windows (registered trademark)) and a DLL program (Windows (registered trademark)) as necessary. In this case, the function in the DLL program can be called from the program main body by loading the function name and order (index).

Java(登録商標)言語の場合には、基本的な機能はOSの提供するDLL機能を使用するが、さらにJava(登録商標)に合わせたプログラム本体とDLLプログラムの間のインタフェースを定義している。これを、JNI(Java(登録商標)・Native・Interface)と呼ぶ。例えばJava(登録商標)言語では、データはオブジェクト単位で管理され、オブジェクトはその内部にフィールドやメソッドを持つ。JNIのAPI(Application・Programming・Interface)のGetMethodIDにより、あるオブジェクトのフィールドへのアクセスを行うことができる。また、例えば、CallDoubleMethod・APIにより、C/C++で記述されるDLLプログラムからJava(登録商標)言語で記述されたdouble型の戻り値を返す実行コードを呼び出すことができる。   In the case of the Java (registered trademark) language, the basic function uses the DLL function provided by the OS, but further defines an interface between the program main body and the DLL program according to the Java (registered trademark). . This is called JNI (Java (registered trademark) / Native / Interface). For example, in the Java (registered trademark) language, data is managed in units of objects, and objects have fields and methods therein. Access to a field of an object can be performed by using GetMethodID of JNI API (Application Programming Programming Interface). Further, for example, an execution code that returns a double type return value described in the Java (registered trademark) language can be called from a DLL program described in C / C ++ by CallDoubleMethod API.

図10に、Java(登録商標)におけるDLL利用時の構成を示す。Java(登録商標)プログラムであるDLL利用プログラム101は、Java(登録商標)言語で記述され、中間言語にコンパイルされたクラスファイルと呼ばれる形式で提供されるプログラムである。Java(登録商標)実行エンジン102(以下、単に「実行エンジン」という)は、そのDLL利用プログラム101を実行するソフトウェアであり、典型的な実装では中間言語を処理するインタプリタを含み、Windows(登録商標)などではjava.exeという実行ファイルで提供される。暗号ライブラリ105がDLL形式のangou.dllというDLLファイルで提供されるとする。java.exe、angou.dllにはそれぞれ、プログラム本体、即ち実行エンジン102と、DLLプログラム、即ち暗号ライブラリ105内にJNIのためのコードがあり、それぞれホスト側JNI103、DLL側JNI104と呼ぶ。DLL利用プログラム101により、ある機能が呼び出され、それが暗号ライブラリ105により提供されるものである場合、実行エンジン102はホスト側JNI103のDLL呼出部107により、DLL側JNI104を呼び出し、DLL側JNI104は暗号ライブラリ105内の機能(暗号化関数など)を呼び出し、結果を返す。実行エンジン102であるjava.exeは、暗号ライブラリ105であるangou.dllをJava(登録商標)プロセスであるDLL利用プロセス106内にロードし、使用する。   FIG. 10 shows a configuration when using DLL in Java (registered trademark). The DLL use program 101 which is a Java (registered trademark) program is a program provided in a format called a class file described in the Java (registered trademark) language and compiled into an intermediate language. The Java (registered trademark) execution engine 102 (hereinafter simply referred to as “execution engine”) is software that executes the DLL usage program 101, and in a typical implementation, includes an interpreter that processes an intermediate language. ) And so on. exe is provided as an executable file. The cryptographic library 105 is DLL. Assume that it is provided as a DLL file called dll. java. exe, angou. Each dll has a program body, that is, an execution engine 102, and a DLL program, that is, a code for JNI in the cryptographic library 105, and is called a host side JNI 103 and a DLL side JNI 104, respectively. When a certain function is called by the DLL use program 101 and is provided by the cryptographic library 105, the execution engine 102 calls the DLL side JNI 104 by the DLL calling unit 107 of the host side JNI 103, and the DLL side JNI 104 Call a function (encryption function or the like) in the cryptographic library 105 and return the result. The execution engine 102 is Java. exe is the encryption library 105 angou. dll is loaded into the DLL process 106 that is a Java (registered trademark) process and used.

図1は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。   FIG. 1 is a block diagram showing a configuration of a program execution device 100 according to the present embodiment.

プログラム実行装置100は、ハードウェアとして、メモリなどの記憶装置151、CPUなどの処理装置152を備える。プログラム実行装置100は、その他のハードウェアとして、プログラムをダウンロードしたり、データを入力したりする入力装置、プログラムの実行結果を画面表示したり、データを出力したりする出力装置を備えていてもよい。   The program execution device 100 includes a storage device 151 such as a memory and a processing device 152 such as a CPU as hardware. As the other hardware, the program execution device 100 may include an input device for downloading a program or inputting data, an output device for displaying a program execution result on a screen, or outputting data. Good.

また、プログラム実行装置100は、DLL利用プログラム実行部251、アクセス制限部252、DLL隔離ロードプログラム実行部253を備える。DLL利用プログラム実行部251、アクセス制限部252、DLL隔離ロードプログラム実行部253は、例えばOSに実装される。   The program execution device 100 also includes a DLL use program execution unit 251, an access restriction unit 252, and a DLL isolation load program execution unit 253. The DLL use program execution unit 251, the access restriction unit 252, and the DLL isolation load program execution unit 253 are implemented in, for example, the OS.

DLL利用プログラム実行部251は、前述したDLL利用プログラム101をDLL利用プロセス106として処理装置152により実行する。DLL利用プログラム101は、前述した暗号ライブラリ105を利用するプログラムである。暗号ライブラリ105は、特定の機能を実装したコードを含むDLLの一例であり、例えばデータの暗号化機能を実装したコードを含む。DLL利用プログラム実行部251は、DLL利用プロセス106内の実行エンジン102に含まれるホスト側JNI103に、前述したDLL呼出部107に加えて、DLL隔離ロード判断部205及び隔離DLL通信部204を有する。   The DLL use program execution unit 251 executes the DLL use program 101 described above as the DLL use process 106 by the processing device 152. The DLL use program 101 is a program that uses the encryption library 105 described above. The cryptographic library 105 is an example of a DLL including a code that implements a specific function, and includes, for example, a code that implements a data encryption function. The DLL usage program execution unit 251 includes a DLL isolation load determination unit 205 and an isolation DLL communication unit 204 in addition to the above-described DLL calling unit 107 in the host-side JNI 103 included in the execution engine 102 in the DLL usage process 106.

アクセス制限部252は、DLL利用プロセス106がDLL利用プログラム101の実行中にアクセスする記憶装置151の記憶領域(「メモリ領域」ともいう)へのDLL利用プロセス106以外のプロセスによるアクセスを処理装置152により制限する。そのために、アクセス制限部252は、OSなどのメモリ保護機能を利用することができる。   The access restriction unit 252 accesses the storage area of the storage device 151 (also referred to as “memory area”) accessed by the DLL use process 106 during execution of the DLL use program 101 by a process other than the DLL use process 106. Limited by. Therefore, the access restriction unit 252 can use a memory protection function such as an OS.

DLL隔離ロードプログラム実行部253は、DLL隔離ロードプログラム201をDLL隔離プロセス203として処理装置152により実行する。DLL隔離ロードプログラム201は、アクセス制限部200がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ暗号ライブラリ105などのDLLをロードするプログラムであり、例えばkakuri.exeという実行ファイルに実装される。DLL隔離ロードプログラム実行部253は、DLL隔離ロードプログラム201に隔離DLL通信部202を有する。この隔離DLL通信部202とホスト側JNI103の隔離DLL通信部204とは、互いに通信を行う。   The DLL isolation load program execution unit 253 executes the DLL isolation load program 201 as the DLL isolation process 203 by the processing device 152. The DLL isolation load program 201 is a program that loads the DLL such as the cryptographic library 105 to an isolation area that is a storage area different from the storage area in which the access restriction unit 200 restricts access by processes other than the DLL use process 106. For example, kakuri. It is implemented in an executable file called exe. The DLL isolation load program execution unit 253 includes an isolation DLL communication unit 202 in the DLL isolation load program 201. The isolation DLL communication unit 202 and the isolation DLL communication unit 204 of the host side JNI 103 communicate with each other.

一般に、プロセスとは、プログラムの実行インスタンスだけを指す場合もあるが、プログラムの実行インスタンス及びそのプログラムの実行のために割り当てられたリソースを意味するものである。以下では、DLL利用プロセス106がDLL利用プログラム101の実行中にアクセスする記憶領域、即ち、アクセス制限部200がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域を単にDLL利用プロセス106という場合がある。同様に、隔離領域を単にDLL隔離プロセス203という場合がある。例えば、暗号ライブラリ105が使用されるときにはangou.dllが隔離領域にロードされることとなるが、DLL隔離プロセス203に内包されるともいえる。   In general, a process may refer only to an execution instance of a program, but refers to an execution instance of a program and resources allocated for execution of the program. In the following, a storage area that the DLL use process 106 accesses during execution of the DLL use program 101, that is, a storage area that the access restriction unit 200 restricts access by a process other than the DLL use process 106 is simply referred to as a DLL use process 106. There is. Similarly, the isolation region may simply be referred to as a DLL isolation process 203. For example, when the cryptographic library 105 is used, angou. Although dll will be loaded into the isolation region, it can be said that it is included in the DLL isolation process 203.

図2は、プログラム実行装置100の外観の一例を示す図である。   FIG. 2 is a diagram illustrating an example of the appearance of the program execution device 100.

図2において、プログラム実行装置100は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶ディスプレイ)の表示画面を有する表示装置901、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ装置906などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット910は、コンピュータであり、LAN942(ローカルエリアネットワーク)、ゲートウェイ941を介してインターネット940に接続されている。   2, a program execution device 100 includes a system unit 910, a display device 901 having a display screen of a CRT (Cathode / Ray / Tube) or LCD (Liquid Crystal Display), a keyboard 902 (K / B), a mouse 903, and an FDD 904 ( Hardware resources such as a flexible disk drive, a CDD 905 (compact disc drive), and a printer device 906 are provided, and these are connected by cables and signal lines. The system unit 910 is a computer and is connected to the Internet 940 via a LAN 942 (local area network) and a gateway 941.

図3は、プログラム実行装置100のハードウェア資源の一例を示す図である。   FIG. 3 is a diagram illustrating an example of hardware resources of the program execution device 100.

図3において、プログラム実行装置100は、プログラムを実行するCPU911(「演算装置」、「マイクロプロセッサ」、「マイクロコンピュータ」、「プロセッサ」ともいう)を備えている。CPU911は、処理装置152の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカードリーダライタなどの記憶媒体が用いられてもよい。   In FIG. 3, the program execution device 100 includes a CPU 911 (also referred to as “arithmetic device”, “microprocessor”, “microcomputer”, or “processor”) that executes a program. The CPU 911 is an example of the processing device 152. The CPU 911 includes a ROM 913 (Read / Only / Memory), a RAM 914 (Random / Access / Memory), a communication board 915, a display device 901, a keyboard 902, a mouse 903, an FDD904, a CDD905, a printer device 906, and a magnetic disk. It is connected to the device 920 and controls these hardware devices. Instead of the magnetic disk device 920, a storage medium such as an optical disk device or a memory card reader / writer may be used.

RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置151の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905などは、入力装置の一例である。また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。   The RAM 914 is an example of a volatile memory. The storage media of the ROM 913, the FDD 904, the CDD 905, and the magnetic disk device 920 are an example of a nonvolatile memory. These are examples of the storage device 151. A communication board 915, a keyboard 902, a mouse 903, an FDD 904, a CDD 905, and the like are examples of input devices. The communication board 915, the display device 901, the printer device 906, and the like are examples of output devices.

通信ボード915は、LAN942に限らず、インターネット940、あるいは、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークなどのWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940あるいはWANなどに接続されている場合、ゲートウェイ941は不要となる。   The communication board 915 is not limited to the LAN 942, but includes the Internet 940, or a WAN (wide area network) such as an IP-VPN (Internet, Protocol, Virtual, Private, Network), a wide area LAN, and an ATM (Asynchronous, Transfer, Mode) network. It may be connected to the When connected to the Internet 940 or WAN, the gateway 941 is not necessary.

磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。また、ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として記憶されている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ディスクやメモリなどの記憶媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのCPU911の処理(動作)に用いられる。抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。   The magnetic disk device 920 stores an operating system 921 (OS), a window system 922, a program group 923, and a file group 924. The programs in the program group 923 are executed by the CPU 911, the operating system 921, and the window system 922. The program group 923 stores programs for executing functions described as “˜unit” and “˜means” in the description of the present embodiment. The program is read and executed by the CPU 911. The file group 924 includes data and information described as “˜data”, “˜information”, “˜ID (identifier)”, “˜flag”, and “˜result” in the description of this embodiment. Signal values, variable values, and parameters are stored as items of “˜file”, “˜database”, and “˜table”. The “˜file”, “˜database”, and “˜table” are stored in a storage medium such as a disk or a memory. Data, information, signal values, variable values, and parameters stored in a storage medium such as a disk or memory are read out to the main memory or cache memory by the CPU 911 via a read / write circuit, and extracted, searched, referenced, compared, and calculated. Used for processing (operation) of the CPU 911 such as calculation / control / output / printing / display. Data, information, signal values, variable values, and parameters are temporarily stored in the main memory, cache memory, and buffer memory during processing of the CPU 911 such as extraction, search, reference, comparison, calculation, control, output, printing, and display. Is remembered.

また、本実施の形態の説明において説明するブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号は、RAM914などのメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク(MD)、DVD(Digital・Versatile・Disc)などの記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体により伝送される。   In the block diagrams and flowcharts described in the description of this embodiment, the arrows indicate mainly input and output of data and signals. Data and signals are stored in a memory such as a RAM 914, a flexible disk (FD) of the FDD 904, and a CDD 905. Recording is performed on a recording medium such as a compact disk (CD), a magnetic disk of the magnetic disk device 920, other optical disks, a mini disk (MD), and a DVD (Digital Versatile Disc). Data and signals are transmitted by a bus 912, a signal line, a cable, and other transmission media.

また、本実施の形態の説明において「〜部」、「〜手段」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」、「〜手段」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVDなどの記録媒体に記憶される。このプログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、本実施の形態の説明で述べる「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。   In the description of the present embodiment, what is described as “to part” and “to means” may be “to circuit”, “to device”, and “to device”, and “to step”. , “˜step”, “˜procedure”, and “˜treatment”. That is, what is described as “˜unit” and “˜means” may be realized by firmware stored in the ROM 913. Alternatively, it may be realized only by software, or only by hardware such as an element, a device, a board, and wiring, or a combination of software and hardware, and further by a combination of firmware. Firmware and software are stored as programs in a recording medium such as a magnetic disk, flexible disk, optical disk, compact disk, minidisk, or DVD. This program is read by the CPU 911 and executed by the CPU 911. In other words, the program causes the computer to function as “to part” and “to means” described in the description of the present embodiment. Alternatively, the procedure or method of “˜unit” and “˜means” described in the description of the present embodiment is executed by a computer.

以下、本実施の形態に係るプログラム実行方法、即ち、プログラム実行装置100の動作について説明する。   Hereinafter, the program execution method according to the present embodiment, that is, the operation of the program execution device 100 will be described.

DLL利用プログラム実行部251が記録媒体やネットワーク上の暗号ライブラリ105を利用するとき、まず、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、DLL利用プログラム101と暗号ライブラリ105との少なくともいずれかの属性に応じて、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示するか、若しくは、アクセス制限部252がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域(即ち、利用プロセス106)へ暗号ライブラリ105をロードするかを判断する。前者の判断をした場合、DLL利用プログラム実行部251のDLL隔離ロード判断部205は、隔離DLL通信部204を介して、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示する。DLL隔離ロードプログラム実行部253は、DLL利用プログラム実行部251による指示に従って、上記の記録媒体やネットワークから、隔離領域(即ち、DLL隔離プロセス203)へ暗号ライブラリ105をロードする。次に、DLL利用プログラム実行部251のDLL呼出部107が、隔離DLL通信部204を介して、隔離領域へロードされた暗号ライブラリ105内のコードが実装する機能(例えば、データの暗号化機能)の呼び出しをDLL隔離ロードプログラム実行部253に指示する。DLL隔離ロードプログラム実行部253は、DLL利用プログラム実行部251による指示に従って、隔離領域へロードした暗号ライブラリ105が実装するコードを実行し、隔離DLL通信部202を介して、当該実行結果をDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251は、通知された実行結果に基づいて、所定の処理を行ったり、当該実行結果を出力装置から出力したりする。   When the DLL usage program execution unit 251 uses the cryptographic library 105 on the recording medium or the network, first, the DLL isolation load determination unit 205 of the DLL usage program execution unit 251 performs at least one of the DLL usage program 101 and the cryptographic library 105. Depending on the attribute, the DLL isolated load program execution unit 253 is instructed to load the cryptographic library 105, or the storage area in which the access restriction unit 252 restricts access by processes other than the DLL use process 106 (that is, use) It is determined whether to load the cryptographic library 105 into the process 106). When the former determination is made, the DLL isolation load determination unit 205 of the DLL use program execution unit 251 instructs the DLL isolation load program execution unit 253 to load the cryptographic library 105 via the isolation DLL communication unit 204. The DLL quarantine load program execution unit 253 loads the cryptographic library 105 from the recording medium or network to the quarantine area (that is, the DLL quarantine process 203) in accordance with an instruction from the DLL use program execution unit 251. Next, a function (for example, a data encryption function) implemented by the code in the cryptographic library 105 loaded into the quarantine area by the DLL calling unit 107 of the DLL use program execution unit 251 via the quarantine DLL communication unit 204 Is called to the DLL isolation load program execution unit 253. The DLL isolation load program execution unit 253 executes the code implemented by the cryptographic library 105 loaded into the isolation area in accordance with the instruction from the DLL usage program execution unit 251 and uses the execution result via the isolation DLL communication unit 202 as a DLL. The program execution unit 251 is notified. The DLL use program execution unit 251 performs a predetermined process based on the notified execution result and outputs the execution result from the output device.

図4に、暗号ライブラリ105をロードし、暗号ライブラリ105内の機能を呼び出す場合の処理フローを示す。DLL利用プログラム101が暗号機能の利用のため、暗号ライブラリ105の呼び出しを実行エンジン102に指示すると、実行エンジン102はホスト側JNI103に対し、暗号ライブラリ105を実現するangou.dllのロードを指示する(前述した一般的な例と同じ)。ホスト側JNI103は、DLL隔離ロード判断部205にDLLを隔離してロードすべきか、そのままロードすべきか判断させる(ステップS301)。ここでは、電子署名が付与されて配布されているDLLに対しては信頼できるソフトウェアであるとする(DLLは、電子署名が付与されている、又は、付与されていないという属性を持っているものとする)。電子署名がされている場合には、そのままロードすべきとし、ホスト側JNI103は、DLL呼出部107によりOSのDLL機能などを利用して、対象DLLであるangou.dllをDLL利用プロセス106内にロードする(ステップS302)。ホスト側JNI103は、angou.dllをDLL呼出部107からロードしたことをDLL利用プロセス106内に記録し、後の使用に備える(ステップS303)。次にDLL利用プログラム101がロードした暗号ライブラリ105の機能の呼び出しを指示した場合、実行エンジン102はホスト側JNI103に同機能の呼び出しを指示し(ステップS306)、ホスト側JNI103は、ステップS303でDLL利用プロセス106内に記録した内容に基づき、暗号ライブラリ105をDLL呼出部107によりロードしたか否かを確認する(ステップS307)。DLL呼出部107からロードした場合、DLL呼出部107により対象DLLの機能をDLL利用プロセス106内で直接呼び出し(ステップS308)、呼び出し結果を実行エンジン102、さらにはDLL利用プログラム101に返す(ステップS310)。   FIG. 4 shows a processing flow when the cryptographic library 105 is loaded and a function in the cryptographic library 105 is called. When the DLL use program 101 instructs the execution engine 102 to call the encryption library 105 to use the encryption function, the execution engine 102 instructs the host-side JNI 103 to execute the angou. Instruct to load dll (same as the general example described above). The host-side JNI 103 causes the DLL isolation load determination unit 205 to determine whether the DLL should be isolated and loaded or not (step S301). Here, it is assumed that the DLL distributed with the electronic signature is reliable software (the DLL has an attribute that the electronic signature is attached or not attached). And). If the electronic signature is applied, it should be loaded as it is, and the host side JNI 103 uses the DLL function of the OS by the DLL calling unit 107 and the like. dll is loaded into the DLL use process 106 (step S302). The host-side JNI 103 is an angou. The fact that dll has been loaded from the DLL calling unit 107 is recorded in the DLL use process 106 to prepare for later use (step S303). Next, when the DLL usage program 101 instructs to call the function of the cryptographic library 105 loaded, the execution engine 102 instructs the host-side JNI 103 to call the function (step S306), and the host-side JNI 103 executes the DLL in step S303. Based on the contents recorded in the usage process 106, it is confirmed whether or not the cryptographic library 105 is loaded by the DLL calling unit 107 (step S307). When loaded from the DLL calling unit 107, the DLL calling unit 107 directly calls the function of the target DLL within the DLL using process 106 (step S308), and returns the calling result to the execution engine 102 and further to the DLL using program 101 (step S310). ).

暗号ライブラリ105であるangou.dllが電子署名をつけて配布されていない場合について説明する。電子署名されていないため(ステップS301)、ホスト側JNI103は、隔離DLL通信部204を介して、対象DLLであるangou.dllをロードする(ステップS304)。このとき、ホスト側JNI103は、隔離DLL通信部204を介して、暗号ライブラリ105であるangou.dllをロードするようにDLL隔離ロードプログラム実行部253に指示して、DLL隔離ロードプログラム201を起動する(ステップS311)。起動したDLL隔離ロードプログラム201は、DLL隔離プロセス203を構成し、指示されたDLLであるangou.dllを自プロセス内にロードし(ステップS312)、隔離DLL通信部202を介して、ホスト側JNI103内の隔離DLL通信部204にロードが完了したことを通知する(ステップS313)。ホスト側JNI103は、隔離DLL通信部204を介して、DLLをロードしたことをDLL利用プロセス106内に記録する(ステップS305)。DLL機能の呼び出しに対して(ステップS307)、DLLがDLL隔離プロセス203にロードされたため(ステップS307)、隔離DLL通信部204を介して対象DLLの機能を呼び出す(ステップS309)。即ち、ホスト側JNI103の隔離DLL通信部204は、DLL隔離ロードプログラム201の隔離DLL通信部202に機能の呼び出しをプロセス間通信などにより指示する。それを受信(ステップS314)したDLL隔離ロードプログラム201の隔離DLL通信部202は、angou.dll内のJNI機能を介して指定されたDLL機能を呼び出し(ステップS315)、やはりプロセス間通信などにより呼び出し結果をDLL利用プロセス106に返す(ステップS316)。   The encryption library 105 angou. A case where dll is not distributed with an electronic signature will be described. Since the electronic signature has not been given (step S301), the host-side JNI 103 passes through the isolated DLL communication unit 204 and the target DLL, “angou. dll is loaded (step S304). At this time, the host-side JNI 103 passes through the isolation DLL communication unit 204 and the angou. The DLL isolation load program execution unit 253 is instructed to load dll, and the DLL isolation load program 201 is activated (step S311). The activated DLL isolation load program 201 constitutes the DLL isolation process 203 and is the specified DLL, angou. dll is loaded into its own process (step S312), and the isolation DLL communication unit 204 in the host side JNI 103 is notified of the completion of the load via the isolation DLL communication unit 202 (step S313). The host-side JNI 103 records that the DLL has been loaded into the DLL use process 106 via the isolated DLL communication unit 204 (step S305). In response to the call of the DLL function (step S307), since the DLL is loaded into the DLL isolation process 203 (step S307), the function of the target DLL is called via the isolation DLL communication unit 204 (step S309). That is, the isolated DLL communication unit 204 of the host side JNI 103 instructs the isolated DLL communication unit 202 of the DLL isolated load program 201 to call a function by inter-process communication. The quarantine DLL communication unit 202 of the DLL quarantine load program 201 that has received it (step S314) receives the angou. The DLL function designated via the JNI function in the dll is called (step S315), and the call result is also returned to the DLL using process 106 by inter-process communication or the like (step S316).

このように信頼できないDLLの実行コードをプログラム本体と別のメモリ領域を持つDLL隔離プロセス203に分離することにより、OSの提供するプロセスのメモリ保護機能などにより、DLL隔離プロセス203内において、ロードしたDLLがメモリ破壊、実行コード書き換えなどの行為に及んだとしても、その被害はDLL隔離プロセス203内に閉じ込められ、DLL利用プロセス106には及ばない。また、DLL隔離ロードプログラム201とホスト側JNI103の間でDLL機能呼び出しの変換を行うため、DLLであるangou.dllはそのままロードされる場合でも、隔離ロードされる場合でも同じものでよい。   As described above, by separating the unreliable DLL execution code into the DLL isolation process 203 having a memory area different from that of the program body, it is loaded in the DLL isolation process 203 by the memory protection function of the process provided by the OS. Even if the DLL reaches actions such as memory destruction and execution code rewriting, the damage is confined in the DLL isolation process 203 and does not reach the DLL use process 106. Further, in order to convert DLL function calls between the DLL isolation load program 201 and the host-side JNI 103, the DLL “angou. The dll may be the same whether it is loaded as is or isolated.

本実施の形態では、DLLのロードの選択を電子署名の有無(DLLの属性の一例)で判断したが、その電子署名の署名者(DLLの属性の一例)により判断する方法もある。例えば、OSメーカや使用している機器メーカが署名者である場合は信用できるものとして隔離せずにそのままロードする。あるいはまた、上記の記録媒体やネットワーク上でDLLとともに記憶される情報から識別可能なDLLの作成者(DLLの属性の一例)によって判断する。   In this embodiment, the selection of DLL loading is determined based on the presence or absence of an electronic signature (an example of an attribute of a DLL), but there is also a method of determining based on the signer of the electronic signature (an example of an attribute of a DLL). For example, when the OS manufacturer or the device manufacturer in use is a signer, it is loaded as it is without being isolated as being reliable. Alternatively, the determination is made by the creator of the DLL (an example of the attribute of the DLL) that can be identified from the information stored together with the DLL on the recording medium or the network.

また、DLLのロードの選択をプログラム本体の機能や権限(DLL利用プログラム101の属性の一例)によって判断してもよい。例えばセキュリティチップへのアクセスを行うプログラムには高いセキュリティが求められるため、隔離してDLLをロードする。また、一定以上の高い権限を有するプログラムでは、隔離してDLLをロードする。あるいはまた、プログラム本体とDLLの権限の大小(包含)関係によって判断することも考えられる。例えば、DLL実行に必要な権限をすべてプログラム本体が有する場合には、隔離せずにDLLをロードする。あるいはまた、高いセキュリティは要求されていない場合に、高速な呼び出しが必要であるDLLに対しては隔離ロードとせずにそのままロードすることも考えられる。   The selection of DLL loading may be determined by the function and authority of the program main body (an example of the attribute of the DLL use program 101). For example, since a program for accessing the security chip requires high security, the DLL is loaded in isolation. In addition, in a program having a certain level of authority, the DLL is loaded in isolation. Alternatively, it may be determined based on the magnitude relationship (inclusion) between the program body and the DLL authority. For example, if the program body has all the authority necessary for DLL execution, the DLL is loaded without isolation. Alternatively, when high security is not required, it may be possible to load a DLL requiring a high speed call as it is without being isolated load.

以上のように、本実施の形態に係るプログラム実行装置100は、
プログラム実行時にリンク・ロードされ、実行されるソフトウェアモジュール(DLL)をロードするプログラム本体(DLL利用プログラム101)とは別に、DLLロード用の別プログラム(DLL隔離ロードプログラム201)を設け、
DLL利用プログラム101によるDLLロード指示に対して、DLLをロードするDLL利用プログラム101とは別のメモリ領域(隔離領域)を割り当て、
隔離領域内でDLL隔離ロードプログラム201を実行し、同隔離領域内においてDLL隔離ロードプログラム201は対象DLLをロードし、
DLL利用プログラム101及びDLL隔離ロードプログラム201に隔離DLL通信部202,204を設け、
これらの隔離DLL通信部202,204により、DLL利用プログラム101とDLL内実行コードの間の呼び出しを、DLL利用プログラム101とDLL隔離ロードプログラム201の間の呼び出しと、DLL隔離ロードプログラム201とDLL内実行コードの間の呼び出しに代替して実行する。
As described above, the program execution device 100 according to the present embodiment is
Apart from the program body (DLL utilization program 101) that loads and executes the software module (DLL) that is linked and loaded when the program is executed, a separate program for DLL loading (DLL isolation load program 201) is provided,
In response to a DLL load instruction from the DLL usage program 101, a memory area (isolation area) different from the DLL usage program 101 for loading the DLL is allocated,
The DLL isolation load program 201 is executed in the isolation area, and the DLL isolation load program 201 loads the target DLL in the isolation area,
The DLL use program 101 and the DLL isolation load program 201 are provided with isolation DLL communication units 202 and 204,
By these isolated DLL communication units 202 and 204, calls between the DLL usage program 101 and the DLL execution code, calls between the DLL usage program 101 and the DLL isolation load program 201, and the DLL isolation load program 201 and the DLL Execute as an alternative to calls between executable code.

これにより、DLLの機能を呼び出す際のセキュリティが向上する。   This improves the security when calling the DLL function.

また、プログラム実行装置100は、
DLL利用プログラム101及びDLLの機能、権限、作成者などの属性に応じて、DLLを上記のように隔離してロード・実行するか、通常のようにDLL利用プログラム101のメモリ領域内にロード・実行するかを選択するDLL隔離ロード判断部205を有する。
In addition, the program execution device 100
Depending on attributes such as the DLL usage program 101 and DLL functions, authority, creator, etc., the DLL is isolated and loaded and executed as described above, or loaded into the memory area of the DLL usage program 101 as usual. It has a DLL isolation load determination unit 205 that selects whether to execute.

これにより、信頼性のあるDLLの機能を呼び出す際の実行時間が短縮できる。   As a result, the execution time when calling a reliable DLL function can be shortened.

実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 2. FIG.
In the present embodiment, differences from the first embodiment will be mainly described.

図5は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。   FIG. 5 is a block diagram showing the configuration of the program execution device 100 according to the present embodiment.

本実施の形態では、プログラム実行装置100は、実施の形態1で図1に示したもののほか、DLL隔離ロードプログラム権限設定部254を備える。DLL隔離ロードプログラム権限設定部254は、例えばOSに実装される。   In the present embodiment, the program execution apparatus 100 includes a DLL isolation load program authority setting unit 254 in addition to the one shown in FIG. The DLL isolation load program authority setting unit 254 is implemented in the OS, for example.

DLL隔離ロードプログラム権限設定部254は、暗号ライブラリ105などのDLL内のコードを実行するために必要なレベルの権限(例えば、DLLごとに予め設定され、上記の記録媒体やネットワーク上でDLLとともに記憶されている)をDLL隔離ロードプログラム実行部253に処理装置152により設定する。即ち、DLL隔離プロセス203の権限を設定する。DLL隔離ロードプログラム権限設定部254は、設定した権限を記憶装置151に記憶する。記憶装置151に記憶された権限は、DLL隔離プロセス203がOSの特定の機能を呼び出したり、記憶装置151の特定の記憶領域にアクセスしたりする場合に参照される。   The DLL isolation load program authority setting unit 254 has an authority of a level necessary for executing the code in the DLL such as the cryptographic library 105 (for example, preset for each DLL and stored together with the DLL on the recording medium or network). Is set in the DLL isolation load program execution unit 253 by the processing device 152. That is, the authority of the DLL isolation process 203 is set. The DLL isolation load program authority setting unit 254 stores the set authority in the storage device 151. The authority stored in the storage device 151 is referred to when the DLL isolation process 203 calls a specific function of the OS or accesses a specific storage area of the storage device 151.

例えば、プロセスに権限を付与する機能を提供するOSを使用している場合、DLL隔離プロセス203に、ロードするDLLに必要な権限のみを与えることにより、DLLに必要な権限以上の権限を、DLLをロードするプログラム本体(DLL利用プログラム101)が有していた場合には、セキュリティ低下の影響範囲を狭めることができる。必要な権限は、DLLファイル内に格納してもよいし、別途ファイルを用意してそのファイルに格納し、DLLファイルと権限を格納したファイルをセットで配布してもよい。DLLファイル内に格納する場合には、DLL利用プログラム101から直接ロードされる場合の権限と、隔離ロードされる場合の権限の双方を格納してもよい。   For example, when using an OS that provides a function for granting authority to a process, by giving only the authority necessary for the DLL to be loaded to the DLL isolation process 203, the authority higher than that required for the DLL is granted. If the program main body (DLL utilization program 101) that loads the program has an influence range of security degradation can be narrowed. The necessary authority may be stored in the DLL file, or a separate file may be prepared and stored in the file, and the DLL file and the file storing the authority may be distributed as a set. When storing in the DLL file, both the authority when directly loading from the DLL use program 101 and the authority when being isolatedly loaded may be stored.

以上のように、本実施の形態に係るプログラム実行装置100は、
プログラムの実行にあたって権限を付与され、権限のある範囲でのみOSなどの提供する機能が利用可能である環境において、DLL隔離ロードプログラム201に対して対象DLLの実行に必要な権限のみを設定するDLL隔離ロードプログラム権限設定部254を有する。
As described above, the program execution device 100 according to the present embodiment is
In an environment where authority is given to the execution of the program and the function provided by the OS or the like can be used only within an authorized range, a DLL that sets only the authority necessary for executing the target DLL for the DLL isolation load program 201 An isolation load program authority setting unit 254 is included.

これにより、DLLの機能を呼び出す際のセキュリティがさらに向上する。   This further improves the security when calling the DLL function.

実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 3 FIG.
In the present embodiment, differences from the first embodiment will be mainly described.

図6は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。   FIG. 6 is a block diagram showing a configuration of the program execution device 100 according to the present embodiment.

本実施の形態では、プログラム実行装置100において、DLL利用プログラム実行部251は、実施の形態1で図1に示したもののほか、ホスト側JNI103に、セキュリティ違反記録・通知部401を有する。また、DLL隔離ロードプログラム実行部253は、実施の形態1で図1に示したもののほか、DLL隔離ロードプログラム201にセキュリティ違反記録・通知部402を有する。   In the present embodiment, in the program execution device 100, the DLL using program execution unit 251 includes a security violation recording / notification unit 401 in the host-side JNI 103 in addition to the one shown in FIG. In addition to the one shown in FIG. 1 in the first embodiment, the DLL isolation load program execution unit 253 includes a security violation recording / notification unit 402 in the DLL isolation load program 201.

DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、隔離領域で暗号ライブラリ105などのDLL内のコードを実行中に隔離領域とは別の記憶領域へアクセスした場合、隔離DLL通信部202を介して、当該アクセスがあったことをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当するアクセスがあったことを記憶領域に記憶したり、出力装置から出力したりする。   The security violation recording / notifying unit 402 of the DLL isolation load program execution unit 253, when accessing a storage area different from the isolation area while executing code in the DLL such as the cryptographic library 105 in the isolation area, the isolation DLL communication unit The DLL utilization program execution unit 251 is notified of the access via the 202. Based on the notification, the security violation recording / notification unit 401 of the DLL using program execution unit 251 stores the access corresponding to the security violation in the storage area or outputs it from the output device.

実施の形態1において、暗号ライブラリ105は、DLL隔離プロセス203に隔離され、OSなどのメモリ保護機能により、DLL隔離プロセス203内でのみメモリアクセスが可能である。OSのメモリ保護機能に違反する、即ちアクセス許可されていないメモリにアクセスしようとすると、OSが定める方法によりその旨がプロセスに通知される。   In the first embodiment, the cryptographic library 105 is isolated by the DLL isolation process 203 and can be accessed only within the DLL isolation process 203 by a memory protection function such as an OS. If an attempt is made to access a memory that violates the memory protection function of the OS, that is, access is not permitted, the process is notified by a method determined by the OS.

そこで、上記のように、DLL隔離ロードプログラム201内に、セキュリティ違反記録・通知部402を設けている。DLL利用プロセス106は、OSによるメモリ保護違反の通知を受信すると、セキュリティ違反記録・通知部402を呼び出す。セキュリティ違反記録・通知部402は、隔離DLL通信部202を介してその旨をDLL利用プロセス106側の隔離DLL通信部204に通知し、ホスト側JNI103内のセキュリティ違反記録・通知部401により、その旨をファイルなどに記録あるいはユーザやシステム管理者に通知する。   Therefore, as described above, the security violation recording / notifying unit 402 is provided in the DLL isolation load program 201. When the DLL use process 106 receives a notification of memory protection violation by the OS, it calls the security violation recording / notification unit 402. The security violation recording / notification unit 402 notifies the isolation DLL communication unit 204 on the DLL use process 106 side via the isolation DLL communication unit 202, and the security violation recording / notification unit 401 in the host side JNI 103 Record the effect in a file or notify the user or system administrator.

セキュリティ違反記録・通知部401による記録あるいは通知から、暗号ライブラリ105に不具合がある、あるいは不正な動作をしようとしていることがわかり、以降、暗号ライブラリ105は使用しないことにより(単にユーザが使用しないようにしてもよいし、プログラム実行装置100にて暗号ライブラリ105の使用を禁止する設定を自動的に行ってもよい)、セキュリティの低下を回避できる。セキュリティ違反記録・通知部401,402は、DLL隔離プロセス203及びDLL利用プロセス106を強制終了させることにより、起こりうるセキュリティ被害を未然に防ぐことも可能である。あるいはまた、DLL隔離ロード判断部205は、セキュリティ違反記録・通知部401の記録を参照し、直接行うか、隔離して行うかにかかわらず当該DLLのロードを拒否することもできる。   From the record or notification by the security breach recording / notification unit 401, it can be seen that the cryptographic library 105 has a defect or is trying to perform an illegal operation. Thereafter, the cryptographic library 105 is not used (simply used by the user). Alternatively, the program execution apparatus 100 may automatically set to prohibit the use of the cryptographic library 105), and a reduction in security can be avoided. The security violation recording / notification units 401 and 402 can prevent potential security damage by forcibly terminating the DLL isolation process 203 and the DLL use process 106. Alternatively, the DLL isolation load determination unit 205 can refer to the record of the security violation recording / notification unit 401 and reject the DLL load regardless of whether it is performed directly or isolated.

実施の形態4.
本実施の形態について、主に実施の形態3との差異を説明する。
Embodiment 4 FIG.
The difference between the present embodiment and the third embodiment will be mainly described.

本実施の形態に係るプログラム実行装置100の構成は、実施の形態3で図6に示したものと同様である。   The configuration of the program execution device 100 according to the present embodiment is the same as that shown in FIG. 6 in the third embodiment.

本実施の形態では、アクセス制限部252は、記憶装置151の一部の記憶領域への特定の操作を制限する。例えば、アクセス制限部252は、複数のページのそれぞれについて、ページに対するデータの書き込みやページからのデータの読み込み、といった操作を制限する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、隔離領域で暗号ライブラリ105などのDLL内のコードを実行中に、アクセス制限部252が特定の操作を制限する記憶領域へ当該操作を実施した場合、隔離DLL通信部202を介して、当該操作があったことをDLL利用プログラム実行部251に通知する。例えば、アクセス制限部252により書き込みが制限されているページへDLL隔離プロセス203がデータを書き込んだ場合、その旨がDLL利用プロセス106に通知される。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当する操作があったことを記憶領域に記憶したり、出力装置から出力したりする。   In the present embodiment, the access restriction unit 252 restricts a specific operation to a part of the storage area of the storage device 151. For example, the access restriction unit 252 restricts operations such as writing data to the page and reading data from the page for each of the plurality of pages. The security violation recording / notifying unit 402 of the DLL quarantine load program execution unit 253 performs the operation to the storage area where the access restriction unit 252 restricts a specific operation while executing code in the DLL such as the cryptographic library 105 in the quarantine area. When the operation is performed, the DLL use program execution unit 251 is notified of the operation through the isolation DLL communication unit 202. For example, when the DLL isolation process 203 writes data to a page that is restricted by the access restriction unit 252, the fact is notified to the DLL use process 106. Based on the notification, the security violation recording / notification unit 401 of the DLL using program execution unit 251 stores the operation corresponding to the security violation in the storage area or outputs it from the output device.

OSによるメモリ保護機能は、多くの場合、OSの動作するCPUやMMU(Memory・Management・Unit)のメモリ保護機能により実現する。多くのCPUやMMUでは、例えば4KBごとのページと呼ばれる単位でメモリを確保し、ページに属性を付けることができる。例えば、実行コード用に読み込みのみが可能であるページがアドレス0x1000から0x2000に1ページ設定され、データやスタック用に読み書き可能なページが0xC000から0xF000に3ページ設定されているとする。このとき、あるプログラムが動作するプロセスが、読み込みのみ可能なページに書き込みアクセスを行った場合、ページ保護違反が検知され、CPU例外などが発生する。このCPU例外はOSに通知され、OSは実施の形態3で述べたようなメモリ保護違反の通知をする。DLL利用プロセス106は、このOSによる通知を受信すると、セキュリティ違反記録・通知部402を呼び出す。セキュリティ違反記録・通知部402は、隔離DLL通信部202を介して、その旨をDLL利用プロセス106側の隔離DLL通信部204に通知し、ホスト側JNI103内のセキュリティ違反記録・通知部401により、その旨をファイルなどに記録あるいはユーザやシステム管理者に通知する。   In many cases, the memory protection function by the OS is realized by a memory protection function of a CPU or MMU (Memory / Management / Unit) on which the OS operates. In many CPUs and MMUs, for example, a memory can be secured in units called pages every 4 KB, and attributes can be attached to the pages. For example, it is assumed that one page is set from addresses 0x1000 to 0x2000 for reading only for the execution code, and three pages are set from 0xC000 to 0xF000 for reading and writing for data and stack. At this time, if a process in which a certain program operates performs a write access to a page that can only be read, a page protection violation is detected and a CPU exception or the like occurs. This CPU exception is notified to the OS, and the OS notifies the memory protection violation as described in the third embodiment. The DLL using process 106 calls the security violation recording / notifying unit 402 when receiving the notification by the OS. The security violation recording / notification unit 402 notifies the isolation DLL communication unit 204 on the DLL use process side via the isolation DLL communication unit 202, and the security violation recording / notification unit 401 in the host side JNI 103 Record this in a file or notify the user or system administrator.

以上のように、実施の形態3に係るプログラム実行装置100は、
隔離領域で実行されるDLL実行コードの、隔離領域外のメモリのアクセスを検知し、同アクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。
As described above, the program execution device 100 according to Embodiment 3
Security violation recording / notification units 401 and 402 are provided for detecting access to a memory outside the isolation area of a DLL execution code executed in the isolation area, and recording / notifying the access as a security warning.

また、実施の形態4に係るプログラム実行装置100は、
プログラム本体(DLL利用プログラム101)とDLL実行コード間のインタフェースを制限し、その制限の範囲内では不可能なメモリアクセスを検知し、同アクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。
Further, the program execution device 100 according to the fourth embodiment includes:
A security violation record that restricts the interface between the program body (DLL usage program 101) and the DLL execution code, detects memory access that is impossible within the scope of the restriction, and records / notifies the access as a security warning Notification units 401 and 402 are included.

これにより、過去に利用したDLLを再度利用する際に、そのDLLの信頼性を確認することができる。   Thereby, when the DLL used in the past is used again, the reliability of the DLL can be confirmed.

さて、JNIの機能には、例えば指定した実行エンジン102内の文字列の内容を読み出すGetStringCharsというAPIがあり、その文字列の利用が終了したことを実行エンジン102に伝えるReleaseStringCharsというAPIがある。DLLからのGetStringCharsのAPI呼び出しに対して、DLL側JNI104は隔離DLL通信部202,204、ホスト側JNI103を介して、実行エンジン102から指定した文字列の内容を暗号ライブラリ105に提供する。ここで、DLL側JNI104は文字列の内容をそのまま提供するのではなく、OSの機能などを用いて独立したページに割り当てる。また、DLL側JNI104はReleaseStringCharsのAPI呼び出しに対してそのページ割り当てを消去する。消去されたページに後でアクセスするとメモリ保護違反が発生し、DLLプログラムに不具合あるいは不正な処理があることがわかる。   The JNI function includes, for example, an API called GetStringChars that reads the contents of a specified character string in the execution engine 102, and an API called ReleaseStringChars that notifies the execution engine 102 that the use of the character string has ended. In response to an API call for GetStringChars from the DLL, the DLL JNI 104 provides the content of the character string designated by the execution engine 102 to the cryptographic library 105 via the isolated DLL communication units 202 and 204 and the host JNI 103. Here, the DLL-side JNI 104 does not provide the contents of the character string as they are, but assigns them to independent pages using the OS function or the like. In addition, the DLL JNI 104 deletes the page assignment in response to the API call to ReleaseStringChars. When an erased page is accessed later, a memory protection violation occurs, and it can be seen that the DLL program has a defect or an illegal process.

あるいはまた、DLLは、実行エンジン102から配列オブジェクトを取得する。実行エンジン102の典型的な実装では、配列オブジェクトは、配列の内容の型情報、配列の長さ情報などの管理情報に続いて、配列の中身を収容する。Java(登録商標)言語では、配列の長さは変更できないが、DLLにおいて配列の長さ部分を書き換えてしまうことが考えられる。このような場合に、DLL側JNI104では配列の管理情報と配列の中身の情報を別のページとし、DLL内の実行コードを実行中には管理情報部分はメモリ保護機能により読み込みのみとし、配列の中身は読み書き可能なページとすることができる。この場合、管理情報を書き換えようとすると、メモリ保護違反が発生し、DLLプログラムに不具合あるいは不正な処理があることがわかる。   Alternatively, the DLL obtains an array object from the execution engine 102. In a typical implementation of the execution engine 102, the array object contains the contents of the array following management information such as type information of the contents of the array and length information of the array. In Java (registered trademark) language, the length of the array cannot be changed, but it is conceivable that the length of the array is rewritten in the DLL. In such a case, the DLL-side JNI 104 sets the array management information and the array contents information as separate pages. During execution of the DLL execution code, the management information portion is only read by the memory protection function. The content can be a readable / writable page. In this case, when the management information is rewritten, it is found that a memory protection violation occurs and the DLL program has a defect or an illegal process.

あるいはまた、上記配列の例において、配列の中身のアクセスをJNIの提供するGetObjectArrayElement、SetObjectArrayElementのような配列の中身へのアクセス専用のAPIの呼び出し時にのみ許可し、それ以外の場合にはメモリ保護機能でセキュリティ違反の監視及び検出を行ってもよい。このようにしてセキュリティを向上させることができる。   Alternatively, in the above example of the array, access to the contents of the array is permitted only when calling an API dedicated to accessing the contents of the array, such as GetObjectArrayElement and SetObjectArrayElement provided by JNI, and in other cases, the memory protection function You may monitor and detect security violations. In this way, security can be improved.

実施の形態3及び4の変形例として、メモリ保護機能を利用する代わりに、DLL実行コードの実行をCPUで直接行うのではなく、CPUの命令を解釈し実行するインタプリタで実行し、1命令ごとにその処理内容を確認してもよい。この場合、性能が劣化する可能性があるが、後に述べる実施の形態5では試験中のみ性能が劣化するため、問題とはならない。   As a modification of the third and fourth embodiments, instead of using the memory protection function, the DLL execution code is not directly executed by the CPU, but is executed by an interpreter that interprets and executes the instructions of the CPU. The processing content may be confirmed. In this case, there is a possibility that the performance is deteriorated. However, in Embodiment 5 described later, the performance is deteriorated only during the test, so that this is not a problem.

ここで、他の変形例について説明する。この例では、プログラム実行装置100は、プログラム本体(DLL利用プログラム101)において、セキュリティを高くする必要があるデータを指定し、同データあるいは同データが参照するデータへのアクセスを監視し、不要と判断されるアクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。   Here, another modification will be described. In this example, the program execution device 100 designates data in the program main body (DLL utilization program 101) that requires higher security, monitors access to the same data or data referred to by the same data, and is considered unnecessary. Security violation recording / notification units 401 and 402 for recording / notifying the determined access as a security warning are provided.

例えば、プログラム本体(DLL利用プログラム101)では、セキュリティチップへのアクセスを行うとする。このようなプログラムに対しては、高いセキュリティが要求される。そこで、そのアクセスに高いセキュリティが要求されるデータを区別する。図7にJava(登録商標)オブジェクト403(以下、単に「オブジェクト」という)における実現例を示す。典型的な実行エンジン102の実装では、あるオブジェクト403は、各オブジェクト403に共通のデータとオブジェクト403ごとに異なるデータを収容する。共通データの例としては、オブジェクト403の種類(型)情報や、サイズなどがある。この例では、共通データとして、セキュリティフラグを追加する。DLL側JNI104において、このセキュリティフラグの立ったオブジェクト403へのアクセスを検知した場合、セキュリティ違反であると判断することにより、本来アクセスされないはずの、高いセキュリティのデータからの情報漏洩などによるセキュリティ事故を防ぐことができる。   For example, assume that the program body (DLL usage program 101) accesses the security chip. Such a program requires high security. Therefore, data that requires high security for the access is distinguished. FIG. 7 shows an implementation example in a Java (registered trademark) object 403 (hereinafter simply referred to as “object”). In a typical execution engine 102 implementation, an object 403 contains data common to each object 403 and different data for each object 403. Examples of common data include the type (type) information and size of the object 403. In this example, a security flag is added as common data. When the DLL side JNI 104 detects an access to the object 403 with this security flag, it is determined that it is a security violation, so that a security accident due to information leakage from high security data that should not be accessed originally is considered. Can be prevented.

このセキュリティフラグの設定には、Java(登録商標)APIによる方法のほか、特定のJava(登録商標)APIにより生成されたデータについて自動的に設定する、セキュリティフラグが立っているデータから参照されているデータについて自動的に設定するなどの方法を用いることができる。   This security flag is set by referring to data with a security flag that is automatically set for data generated by a specific Java (registered trademark) API, in addition to a method using the Java (registered trademark) API. It is possible to use a method such as automatically setting for existing data.

実施の形態5.
本実施の形態について、主に実施の形態3との差異を説明する。
Embodiment 5. FIG.
The difference between the present embodiment and the third embodiment will be mainly described.

本実施の形態では、DLL隔離ロードプログラム実行部253は、隔離領域で暗号ライブラリ105が実装するコードを試験として実行する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、当該実行中に隔離領域とは別の記憶領域へのアクセスがあったかどうかを記憶装置151に記憶する。そして、隔離DLL通信部202を介して、記憶装置151に記憶した内容、即ち、当該アクセスがあったかどうかをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当するアクセスがあったかどうかを記憶領域に記憶したり、出力装置から出力したりする。DLL利用プログラム実行部251が暗号ライブラリ105を利用するときには、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、上記試験中に隔離領域とは別の記憶領域へのアクセスがあったことが記憶装置に記憶されていた場合、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示することを判断する。一方、上記試験中に隔離領域とは別の記憶領域へのアクセスがなかったことが記憶装置に記憶されていた場合、DLL利用プロセス106へ直接暗号ライブラリ105をロードすることを判断する。   In the present embodiment, the DLL isolation load program execution unit 253 executes the code implemented by the cryptographic library 105 in the isolation area as a test. The security violation recording / notification unit 402 of the DLL isolation load program execution unit 253 stores in the storage device 151 whether or not a storage area other than the isolation area has been accessed during the execution. Then, the content stored in the storage device 151, that is, whether or not the access has been made is notified to the DLL use program execution unit 251 via the isolation DLL communication unit 202. Based on the notification, the security violation recording / notification unit 401 of the DLL using program execution unit 251 stores whether the access corresponding to the security violation has occurred in the storage area or outputs it from the output device. When the DLL usage program execution unit 251 uses the cryptographic library 105, the DLL isolation load determination unit 205 of the DLL usage program execution unit 251 may have accessed a storage area different from the isolation area during the test. If it is stored in the storage device, it is determined to instruct the DLL isolation load program execution unit 253 to load the cryptographic library 105. On the other hand, if it is stored in the storage device that there was no access to a storage area different from the quarantine area during the test, it is determined to load the cryptographic library 105 directly into the DLL use process 106.

実施の形態6.
本実施の形態について、主に実施の形態4との差異を説明する。
Embodiment 6 FIG.
In the present embodiment, differences from the fourth embodiment will be mainly described.

本実施の形態では、DLL隔離ロードプログラム実行部253は、実施の形態5と同様に、隔離領域で暗号ライブラリ105が実装するコードを試験として実行する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、当該実行中に、アクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施があったかどうかを記憶装置151に記憶する。そして、隔離DLL通信部202を介して、記憶装置151に記憶した内容、即ち、当該操作があったかどうかをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当する操作があったかどうかを記憶領域に記憶したり、出力装置から出力したりする。DLL利用プログラム実行部251が暗号ライブラリ105を利用するときには、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、上記試験中にアクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施があったことが記憶装置に記憶されていた場合、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示することを判断する。一方、上記試験中にアクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施がなかったことが記憶装置に記憶されていた場合、DLL利用プロセス106へ直接暗号ライブラリ105をロードすることを判断する。   In the present embodiment, the DLL isolation load program execution unit 253 executes, as a test, the code implemented by the cryptographic library 105 in the isolation area, as in the fifth embodiment. The security violation recording / notification unit 402 of the DLL quarantine load program execution unit 253 stores in the storage device 151 whether or not the access restriction unit 252 has performed the operation on the storage area that restricts the specific operation during the execution. To do. Then, the content stored in the storage device 151, that is, whether or not the operation has been performed is notified to the DLL use program execution unit 251 via the isolation DLL communication unit 202. Based on the notification, the security violation recording / notification unit 401 of the DLL using program execution unit 251 stores whether or not there is an operation corresponding to the security violation in the storage area or outputs it from the output device. When the DLL use program execution unit 251 uses the cryptographic library 105, the DLL isolation load determination unit 205 of the DLL use program execution unit 251 determines that the access restriction unit 252 restricts a specific operation during the test. When it is stored in the storage device that the operation has been performed, it is determined to instruct the DLL isolation load program execution unit 253 to load the cryptographic library 105. On the other hand, if it is stored in the storage device that the access restriction unit 252 did not perform the operation on the storage area for restricting the specific operation during the test, the cryptographic library 105 is loaded directly into the DLL usage process 106. Judging what to do.

実施の形態1では、DLL内の機能の呼び出しは、一般的な同一プロセス内での関数呼び出しではなく、プロセス間通信を使用した呼び出しとなる。これは呼び出しそのものの時間が長くなるほか、大量のデータを処理する場合にはデータの通信時間も必要となり、速度性能が低下する要因となる。そこで、実施の形態5及び6では、DLL隔離ロード判断部205において、その判断基準にDLLの試験中か否かという情報を加えている。試験中にはDLLを隔離し、セキュリティ違反記録・通知部401,402などを動作させる。ここでセキュリティ違反が記録・通知されないことを確認し、その他(DLLが実現する機能そのものなど)の試験が合格であれば、DLLを隔離せず、DLL利用プロセス106内にロードする。このようにしてセキュリティを保ちながら、性能の劣化を抑えることができる。   In the first embodiment, the function call in the DLL is not a general function call in the same process but a call using inter-process communication. This increases the time for the call itself, and also requires a data communication time when processing a large amount of data, which causes a reduction in speed performance. Therefore, in the fifth and sixth embodiments, the DLL isolation load determination unit 205 adds information indicating whether or not a DLL test is in progress to the determination criteria. During the test, the DLL is isolated and the security violation recording / notification units 401 and 402 are operated. Here, it is confirmed that a security violation is not recorded / notified, and if other tests (such as the function realized by the DLL itself) pass, the DLL is not isolated and loaded into the DLL use process 106. In this way, it is possible to suppress degradation of performance while maintaining security.

試験に合格したことは、例えば試験が合格した場合には、特定の署名者による電子署名が付与するが、そうでない場合には異なる署名者による電子署名を付与することなどで判断できる。また、試験用に構成された機器ではDLL利用プログラム実行部251が、DLLを隔離してロードし、製品用に構成された機器ではDLL利用プログラム実行部251が、DLLをそのままロードするようにしてもよい。   Whether the test has passed can be determined, for example, by giving an electronic signature by a specific signer when the test passes, but by giving an electronic signature by a different signer otherwise. Also, in the device configured for testing, the DLL use program execution unit 251 loads and isolates the DLL, and in the device configured for the product, the DLL use program execution unit 251 loads the DLL as it is. Also good.

以上のように、実施の形態5及び6に係るプログラム実行装置100は、
DLLの試験時には実施の形態3及び4と同様のセキュリティ違反記録・通知部401,402を使用してセキュリティ違反の有無を確認し、セキュリティ違反が無く試験合格の場合に隔離せずにDLLのロード・実行を許可するDLL隔離ロード判断部205を有する。
As described above, the program execution device 100 according to the fifth and sixth embodiments is
At the time of a DLL test, the same security violation recording / notification units 401 and 402 as in the third and fourth embodiments are used to check for the presence of a security violation. If there is no security violation and the test passes, the DLL is loaded without isolation. It has a DLL isolation load determination unit 205 that permits execution.

これにより、一旦信頼性を確認したDLLの機能を呼び出す際の実行時間が短縮できる。   As a result, the execution time when calling the DLL function whose reliability has been confirmed can be shortened.

実施の形態7.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 7 FIG.
In the present embodiment, differences from the first embodiment will be mainly described.

図8は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。   FIG. 8 is a block diagram showing the configuration of the program execution device 100 according to the present embodiment.

本実施の形態では、DLL利用プログラム実行部251とDLL隔離ロードプログラム実行部253とが有する隔離DLL通信部202,204は、記憶装置151の特定の記憶領域を共有メモリ502(共有メモリ領域)として共有し、互いに通信する際にこの共有メモリ502を用いる。また、DLL利用プログラム実行部251は、ホスト側JNI103に、共有メモリ502を管理する共有メモリ管理部501を有する。   In the present embodiment, the isolated DLL communication units 202 and 204 included in the DLL use program execution unit 251 and the DLL isolated load program execution unit 253 use the specific storage area of the storage device 151 as the shared memory 502 (shared memory area). The shared memory 502 is used when sharing and communicating with each other. The DLL use program execution unit 251 includes a shared memory management unit 501 that manages the shared memory 502 in the host-side JNI 103.

前述したように、DLLの隔離により性能が劣化する可能性がある。性能劣化を改善する方法として、本実施の形態では、DLL利用プロセス106とDLL隔離プロセス203の間で共有メモリ502を設けている。   As described above, performance may be degraded by DLL isolation. As a method for improving performance degradation, in this embodiment, a shared memory 502 is provided between the DLL use process 106 and the DLL isolation process 203.

DLLが、実行エンジン102のどのデータにアクセスするかはわからない。したがって、実行エンジン102内の全ての(データ)メモリ領域が潜在的な共有メモリ502の対象領域となる。しかし、そのように共有メモリ502の対象を拡張すると、セキュリティが低下する。そこで、できる限りそのようなメモリ領域を集中させることで共有対象を限定させることが必要である。   It is not known which data of the execution engine 102 the DLL accesses. Therefore, all (data) memory areas in the execution engine 102 are potential target areas of the shared memory 502. However, if the target of the shared memory 502 is expanded in this way, the security is lowered. Therefore, it is necessary to limit the sharing target by concentrating such memory areas as much as possible.

JNIにおいて、実行エンジン102からDLLに渡したことのあるデータ、あるいはDLLから実行エンジン102に渡したことのあるデータを今後も共有される可能性のあるデータとして、出来る限り集中させる。共有メモリ管理部501は、共有メモリ502の設定を行うほか、データアクセスの情報を収集する。Java(登録商標)言語の場合には、データは一度確保すると場所を動かないのではなく、ガベージコレクションのコンパクションによりデータの位置が移動する。共有メモリ管理部501は実行エンジン102のガベージコレクタ(メモリ管理機構)にヒント情報として渡し、集中させて欲しいデータをコンパクション実行時に集めてもらうようにする(図9参照)。あるいはまた、DLL側が生成したデータははじめから共有メモリ502に配置してもよい。このようにすることで、例えばあるDLLの機能の呼び出し中に大きなデータをアクセスするためにメモリを共有化し、そのDLLの機能の呼び出し中にさらに別のメモリにアクセスする場合に、同じページにデータがあれば、既に共有済みとなり、DLLが本来アクセスすべきでないデータを保護できる可能性が高まる。   In JNI, data that has been passed from the execution engine 102 to the DLL or data that has been passed from the DLL to the execution engine 102 is concentrated as much as possible as data that may be shared in the future. In addition to setting the shared memory 502, the shared memory management unit 501 collects data access information. In the case of the Java (registered trademark) language, once the data is secured, the location does not move, but the data position is moved by garbage collection compaction. The shared memory management unit 501 provides hint information to the garbage collector (memory management mechanism) of the execution engine 102 so that the data desired to be collected is collected at the time of compaction execution (see FIG. 9). Alternatively, the data generated on the DLL side may be arranged in the shared memory 502 from the beginning. In this way, for example, when a memory is shared in order to access a large amount of data during a call to a function of a DLL and another memory is accessed during a call to the function of the DLL, the data is stored in the same page. If it exists, it has already been shared, and the possibility of protecting data that should not be accessed by the DLL increases.

上記説明では、同じページにあるデータは保護できないが、前述したようにJNIの特性や制限を利用し、JNIでアクセスできる範囲外のチェックを行うことが考えられる。即ち、あるページを共有設定するとともに、そのコピーをとる。DLL呼び出し終了後に共有を解除し、コピーと比較し、JNIでアクセスできる範囲外の領域が書き換えられているかチェックする。共有範囲を集中し限定することにより、チェック範囲を狭め、性能劣化を抑えることができる。また、プログラムのソースコードや実行コードの静的解析、試験時の実行ログ取得解析などにより、実行時ではなく、予め共有のために集中させるデータを予測することもできる。   In the above description, data on the same page cannot be protected. However, as described above, it is conceivable to check outside the range accessible by JNI using the characteristics and restrictions of JNI. That is, a certain page is set to be shared and a copy thereof is taken. After the DLL call is finished, sharing is canceled, and compared with the copy, it is checked whether the area outside the range accessible by JNI has been rewritten. By concentrating and limiting the shared range, it is possible to narrow the check range and suppress performance degradation. In addition, it is possible to predict data to be concentrated in advance for sharing, not at the time of execution, by static analysis of program source code and execution code, execution log acquisition analysis at the time of testing, and the like.

以上のように、本実施の形態に係るプログラム実行装置100は、
プログラム本体(DLL利用プログラム101)と隔離領域内のDLLの間に共有メモリ502を設定し、
DLL実行コードが作成したデータ、DLL実行コードがアクセスしたデータ、DLL実行コードの同じ関数内でアクセスされたデータを、DLL利用プログラム101のメモリ管理機構に通知する共有メモリ管理部501を有する。
As described above, the program execution device 100 according to the present embodiment is
Set the shared memory 502 between the program body (DLL usage program 101) and the DLL in the isolation area,
The shared memory management unit 501 notifies the memory management mechanism of the DLL using program 101 of data created by the DLL execution code, data accessed by the DLL execution code, and data accessed in the same function of the DLL execution code.

これにより、隔離したDLLの機能を呼び出す際の実行時間が短縮できる。   This can shorten the execution time when calling the isolated DLL function.

以上、本発明の実施の形態について説明したが、これらのうち、2つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、2つ以上の実施の形態を部分的に組み合わせて実施しても構わない。   As mentioned above, although embodiment of this invention was described, you may implement combining 2 or more embodiment among these. Alternatively, one of these embodiments may be partially implemented. Or you may implement combining two or more embodiment among these partially.

実施の形態1に係るプログラム実行装置の構成を示すブロック図である。1 is a block diagram illustrating a configuration of a program execution device according to Embodiment 1. FIG. 実施の形態1に係るプログラム実行装置の外観の一例を示す図である。1 is a diagram illustrating an example of an appearance of a program execution device according to Embodiment 1. FIG. 実施の形態1に係るプログラム実行装置のハードウェア資源の一例を示す図である。3 is a diagram illustrating an example of hardware resources of the program execution device according to Embodiment 1. FIG. 実施の形態1に係るプログラム実行方法を示すフローチャートである。3 is a flowchart showing a program execution method according to the first embodiment. 実施の形態2に係るプログラム実行装置の構成を示すブロック図である。FIG. 6 is a block diagram illustrating a configuration of a program execution device according to a second embodiment. 実施の形態3及び4に係るプログラム実行装置の構成を示すブロック図である。5 is a block diagram showing a configuration of a program execution device according to Embodiments 3 and 4. FIG. 実施の形態3及び4の変形例におけるオブジェクトの構成を示すブロック図である。FIG. 10 is a block diagram showing a configuration of an object in a modification of the third and fourth embodiments. 実施の形態7に係るプログラム実行装置の構成を示すブロック図である。FIG. 20 is a block diagram illustrating a configuration of a program execution device according to a seventh embodiment. 実施の形態7におけるメモリ集中化の例を示す概念図である。FIG. 19 is a conceptual diagram illustrating an example of memory concentration in the seventh embodiment. 一般的なDLLの利用例を示す図である。It is a figure which shows the usage example of a general DLL.

符号の説明Explanation of symbols

100 プログラム実行装置、101 DLL利用プログラム、102 実行エンジン、103 ホスト側JNI、104 DLL側JNI、105 暗号ライブラリ、106 DLL利用プロセス、107 DLL呼出部、151 記憶装置、152 処理装置、201 DLL隔離ロードプログラム、202 隔離DLL通信部、203 DLL隔離プロセス、204 隔離DLL通信部、205 DLL隔離ロード判断部、251 DLL利用プログラム実行部、252 アクセス制限部、253 DLL隔離ロードプログラム実行部、254 DLL隔離ロードプログラム権限設定部、401 セキュリティ違反記録・通知部、402 セキュリティ違反記録・通知部、403 オブジェクト、501 共有メモリ管理部、502 共有メモリ、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群、940 インターネット、941 ゲートウェイ、942 LAN。   100 program execution device, 101 DLL use program, 102 execution engine, 103 host side JNI, 104 DLL side JNI, 105 cryptographic library, 106 DLL use process, 107 DLL calling unit, 151 storage device, 152 processing device, 201 DLL isolated load Program, 202 isolation DLL communication unit, 203 DLL isolation process, 204 isolation DLL communication unit, 205 DLL isolation load determination unit, 251 DLL use program execution unit, 252 access restriction unit, 253 DLL isolation load program execution unit, 254 DLL isolation load Program authority setting unit 401 Security violation recording / notification unit 402 Security violation recording / notification unit 403 object 501 shared memory management unit 502 shared memory 90 Display device, 902 keyboard, 903 mouse, 904 FDD, 905 CDD, 906 printer device, 910 system unit, 911 CPU, 912 bus, 913 ROM, 914 RAM, 915 communication board, 920 magnetic disk device, 921 operating system, 922 window System, 923 programs, 924 files, 940 Internet, 941 gateway, 942 LAN.

Claims (9)

特定の機能を実装したコードを含むDLL(動的リンクライブラリ)を利用するDLL利用プログラムを処理装置により実行するDLL利用プログラム実行部と、
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるプログラム実行装置であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードし、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知することを特徴とするプログラム実行装置。
A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit that restricts access by a processing device other than the DLL use program execution unit to a storage area of a storage device that the DLL use program execution unit accesses during execution of the DLL use program;
A program execution device comprising: a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation region which is a storage region different from the storage region where the access restriction unit restricts access by a processing device There,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit,
The DLL isolation load program execution unit loads the DLL into the isolation area according to an instruction from the DLL use program execution unit,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit,
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. A program execution apparatus that notifies an execution unit.
前記DLL利用プログラム実行部は、前記DLL利用プログラムと前記DLLとの少なくともいずれかの属性に応じて、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示するか、若しくは、前記アクセス制限部がアクセスを制限する記憶領域へ前記DLLをロードするかを判断することを特徴とする請求項1に記載のプログラム実行装置。   The DLL usage program execution unit instructs the DLL isolation load program execution unit to load the DLL according to at least one attribute of the DLL usage program and the DLL, or the access restriction unit The program execution device according to claim 1, wherein it is determined whether to load the DLL into a storage area where access is restricted. 前記プログラム実行装置は、さらに、
前記DLL内のコードを実行するために必要なレベルの権限を前記DLL隔離ロードプログラム実行部に設定するDLL隔離ロードプログラム権限設定部を備えることを特徴とする請求項1に記載のプログラム実行装置。
The program execution device further includes:
2. The program execution apparatus according to claim 1, further comprising a DLL isolation load program authority setting unit that sets authority of a level necessary for executing the code in the DLL in the DLL isolation load program execution unit.
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを実行中に前記隔離領域とは別の記憶領域へアクセスした場合、前記隔離DLL通信部を介して、当該アクセスがあったことを前記DLL利用プログラム実行部に通知することを特徴とする請求項1に記載のプログラム実行装置。   When the DLL isolation load program execution unit accesses a storage area different from the isolation area while executing the code in the DLL loaded to the isolation area, the DLL isolation load program execution part has the access via the isolation DLL communication section. The program execution apparatus according to claim 1, wherein the DLL usage program execution unit is notified of the fact. 前記アクセス制限部は、記憶装置の一部の記憶領域への特定の操作を制限し、
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを実行中に前記アクセス制限部が特定の操作を制限する記憶領域へ当該操作を実施した場合、前記隔離DLL通信部を介して、当該操作があったことを前記DLL利用プログラム実行部に通知することを特徴とする請求項1に記載のプログラム実行装置。
The access restriction unit restricts a specific operation to a partial storage area of the storage device,
The DLL isolation load program execution unit executes the operation to a storage area where the access restriction unit restricts a specific operation while executing the code in the DLL loaded to the isolation region. The program execution apparatus according to claim 1, wherein the DLL use program execution unit is notified of the operation.
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを試験として実行し、当該実行中に前記隔離領域とは別の記憶領域へのアクセスがあったかどうかを記憶装置に記憶し、
前記DLL利用プログラム実行部は、前記試験中に前記隔離領域とは別の記憶領域へのアクセスがなかったことが記憶装置に記憶されていた場合、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示する代わりに、前記アクセス制限部がアクセスを制限する記憶領域へ前記DLLをロードすることを特徴とする請求項1に記載のプログラム実行装置。
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area as a test, and stores in the storage device whether or not a storage area other than the isolation area has been accessed during the execution. ,
When the DLL use program execution unit stores in the storage device that there was no access to a storage area different from the isolation area during the test, the DLL isolation program execution part executes the DLL load. 2. The program execution apparatus according to claim 1, wherein the access restriction unit loads the DLL into a storage area for restricting access instead of instructing the access to the storage area.
前記アクセス制限部は、記憶装置の一部の記憶領域への特定の操作を制限し、
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを試験として実行し、当該実行中に前記アクセス制限部が特定の操作を制限する記憶領域への当該操作の実施があったかどうかを記憶装置に記憶し、
前記DLL利用プログラム実行部は、前記試験中に前記アクセス制限部が特定の操作を制限する記憶領域への当該操作の実施がなかったことが記憶装置に記憶されていた場合、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示する代わりに、前記アクセス制限部がアクセスを制限する記憶領域へ前記DLLをロードすることを特徴とする請求項1に記載のプログラム実行装置。
The access restriction unit restricts a specific operation to a partial storage area of the storage device,
Whether the DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area as a test, and whether the access restriction unit restricted a specific operation during the execution. Memorize in the storage device,
When the DLL use program execution unit stores in the storage device that the access restriction unit has not performed the operation to the storage area that restricts the specific operation during the test, the DLL use program execution unit loads the DLL. 2. The program execution device according to claim 1, wherein instead of instructing the DLL isolation load program execution unit, the access restriction unit loads the DLL into a storage area where access is restricted.
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とが有する隔離DLL通信部は、記憶装置の特定の記憶領域を共有メモリ領域として共有し、互いに通信する際に前記共有メモリ領域を用いることを特徴とする請求項1に記載のプログラム実行装置。   The isolated DLL communication unit included in the DLL using program execution unit and the DLL isolated load program execution unit shares a specific storage area of the storage device as a shared memory area, and uses the shared memory area when communicating with each other. The program execution device according to claim 1. 特定の機能を実装したコードを含むDLL(動的リンクライブラリ)を利用するDLL利用プログラムを処理装置により実行するDLL利用プログラム実行部と、
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるコンピュータを用いたプログラム実行方法であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記プログラム実行方法は、
前記DLL利用プログラム実行部が、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示するステップと、
前記DLL隔離ロードプログラム実行部が、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードするステップと、
前記DLL利用プログラム実行部が、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示するステップと、
前記DLL隔離ロードプログラム実行部が、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知するステップとを備えることを特徴とするプログラム実行方法。
A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit for restricting access by a processing device other than the DLL use program execution unit to a storage area of a storage device accessed by the DLL use program execution unit during execution of the DLL use program;
A computer comprising a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation area which is a storage area different from the storage area where the access restriction unit restricts access is executed by a processing device. A program execution method,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The program execution method includes:
The DLL using program execution unit directing the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit;
The DLL isolation load program execution unit loading the DLL into the isolation region according to an instruction from the DLL use program execution unit;
The DLL using program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit;
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation region in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. And a step of notifying the execution unit.
JP2007071884A 2007-03-20 2007-03-20 Program execution device and program execution method Pending JP2008234248A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007071884A JP2008234248A (en) 2007-03-20 2007-03-20 Program execution device and program execution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007071884A JP2008234248A (en) 2007-03-20 2007-03-20 Program execution device and program execution method

Publications (1)

Publication Number Publication Date
JP2008234248A true JP2008234248A (en) 2008-10-02

Family

ID=39906949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007071884A Pending JP2008234248A (en) 2007-03-20 2007-03-20 Program execution device and program execution method

Country Status (1)

Country Link
JP (1) JP2008234248A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009149A (en) * 2008-06-24 2010-01-14 Fujitsu Ltd Dynamic library loading method and device
CN102799815A (en) * 2012-06-29 2012-11-28 安科智慧城市技术(中国)有限公司 Method and device for safely loading program library
CN103745138A (en) * 2013-11-28 2014-04-23 福建天晴数码有限公司 Method for hiding dll module derivative function
JP2014085772A (en) * 2012-10-22 2014-05-12 Nippon Telegr & Teleph Corp <Ntt> Illegal program execution system, illegal program execution method, and illegal program execution program
JP2014238870A (en) * 2009-12-15 2014-12-18 マカフィー, インコーポレイテッド System and method for behavior sandbox
JP2016540282A (en) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. Method and apparatus for protecting a dynamic library

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009149A (en) * 2008-06-24 2010-01-14 Fujitsu Ltd Dynamic library loading method and device
JP2014238870A (en) * 2009-12-15 2014-12-18 マカフィー, インコーポレイテッド System and method for behavior sandbox
CN105893228A (en) * 2009-12-15 2016-08-24 迈克菲股份有限公司 Systems and methods for behavioral sandboxing
CN102799815A (en) * 2012-06-29 2012-11-28 安科智慧城市技术(中国)有限公司 Method and device for safely loading program library
JP2014085772A (en) * 2012-10-22 2014-05-12 Nippon Telegr & Teleph Corp <Ntt> Illegal program execution system, illegal program execution method, and illegal program execution program
JP2016540282A (en) * 2013-10-10 2016-12-22 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. Method and apparatus for protecting a dynamic library
CN103745138A (en) * 2013-11-28 2014-04-23 福建天晴数码有限公司 Method for hiding dll module derivative function
CN103745138B (en) * 2013-11-28 2016-09-07 福建天晴数码有限公司 A kind of method of hiding dll module derivative function

Similar Documents

Publication Publication Date Title
RU2510074C2 (en) System and method of checking executable code before execution thereof
US9021605B2 (en) Method and system for protecting sensitive data in a program
US10810309B2 (en) Method and system for detecting kernel corruption exploits
RU2513909C1 (en) Restricting memory areas for instruction reading depending on hardware mode and security flag
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
KR100708356B1 (en) Handling faults associated with operation of guest software in the virtual-machine architecture
TWI464575B (en) Method and system for transparently instrumenting an application program, and computing system
EP2541453B1 (en) System and method for malware protection using virtualization
US7836299B2 (en) Virtualization of software configuration registers of the TPM cryptographic processor
US7251735B2 (en) Buffer overflow protection and prevention
US20030188173A1 (en) Hardened extended firmware interface framework
US20080201540A1 (en) Preservation of integrity of data across a storage hierarchy
US20050086517A1 (en) Page granular curtained memory via mapping control
Block et al. Windows memory forensics: Detecting (un) intentionally hidden injected code by examining page table entries
JP6370098B2 (en) Information processing apparatus, information processing monitoring method, program, and recording medium
JP2009140485A (en) Method and system for whitelisting software component
US9197446B2 (en) Address pinning
Zhang et al. Android ion hazard: The curse of customizable memory management system
US20080028180A1 (en) Inappropriate access detector based on system segmentation faults
JP2008234248A (en) Program execution device and program execution method
van de Ven New security enhancements in red hat enterprise linux v. 3, update 3
US7484239B1 (en) Detecting heap and stack execution in the operating system using regions
Melotti et al. Reversing and fuzzing the google titan m chip
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
Piromsopa et al. Survey of protections from buffer-overflow attacks