JP4664055B2 - Program dividing device, program executing device, program dividing method, and program executing method - Google Patents

Program dividing device, program executing device, program dividing method, and program executing method Download PDF

Info

Publication number
JP4664055B2
JP4664055B2 JP2004358724A JP2004358724A JP4664055B2 JP 4664055 B2 JP4664055 B2 JP 4664055B2 JP 2004358724 A JP2004358724 A JP 2004358724A JP 2004358724 A JP2004358724 A JP 2004358724A JP 4664055 B2 JP4664055 B2 JP 4664055B2
Authority
JP
Japan
Prior art keywords
code
protection
program
normal
function
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.)
Expired - Fee Related
Application number
JP2004358724A
Other languages
Japanese (ja)
Other versions
JP2006164184A (en
Inventor
賢 太田
浩 稲村
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2004358724A priority Critical patent/JP4664055B2/en
Publication of JP2006164184A publication Critical patent/JP2006164184A/en
Application granted granted Critical
Publication of JP4664055B2 publication Critical patent/JP4664055B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法に関する。   The present invention relates to a program dividing device, a program executing device, a program dividing method, and a program executing method.

従来、計算機上で動作するプログラムを保護するために、様々な技術が開示されている。   Conventionally, various techniques have been disclosed in order to protect a program running on a computer.

例えば、鍵やパスワード、電子価値等の重要データを扱うプログラムを、保護が必要な部分(保護コード)とそれ以外の通常コードにあらかじめ分割して用意し、各々を保護環境と通常環境という1つのPC上の独立した2つの計算機環境で連係動作させる技術がある(例えば、特許文献1参照。)。分割の例として、プログラムをライセンス検査やコンテンツの復号化に関わる不正操作から保護したい部分と、ユーザインタフェース処理に係わる部分に分け、それぞれ保護環境、通常環境で動作させることで、著作権付きコンテンツの視聴用プログラムの解析、改ざんを困難にする利用例が説明されている。導入前のプログラムは、保護環境上で動作する部分と通常環境上で動作する部分と、デジタル署名を持ち、通常環境上で動作する部分のプログラムが、保護環境と通常環境間の通信方法により、保護環境側へインストール命令を送信する。保護環境側では、デジタル署名を用いて正規のコードであることを確認したら、インストールを行う。   For example, a program that handles important data such as keys, passwords, electronic values, etc. is prepared in advance by dividing it into parts that require protection (protection code) and other normal codes, and each of them is a protected environment and a normal environment. There is a technique for performing linked operation in two independent computer environments on a PC (see, for example, Patent Document 1). As an example of division, the program is divided into a part that wants to be protected from unauthorized operations related to license inspection and content decryption, and a part that is related to user interface processing. An example of use that makes it difficult to analyze and tamper with a viewing program is described. Before installation, the program that operates in the protected environment, the part that operates in the normal environment, the digital signature, and the program that operates in the normal environment depends on the communication method between the protected environment and the normal environment. Send installation instructions to the protected environment. On the protected environment side, if the digital code is used to confirm that the code is legitimate, installation is performed.

このようにして、計算機上で動作するプログラムの保護したい部分の解析、改ざんを防止し、安全性を確保したプログラム実行環境が提供できる。
特開2002−251326号公報
In this way, it is possible to provide a program execution environment that prevents the analysis and falsification of the portion of the program that runs on the computer that is desired to be protected and ensures safety.
JP 2002-251326 A

しかしながら、上記従来技術における第一の課題として、通常コードが改ざんされたり、権限が奪取されたりした場合、通常コードが保護コード中の本来呼び出しが必要な関数1をバイパスして関数2を呼び出してしまうなどの不正な手順でプログラムが実行される可能性がある。   However, as a first problem in the above prior art, when the normal code is falsified or the authority is taken, the normal code calls the function 2 by bypassing the function 1 that originally needs to be called in the protection code. There is a possibility that the program is executed by an illegal procedure such as

又、第二の課題としてプログラムの分割基準と実行場所が固定的であるため、異なるデバイス種別や異なるセキュリティ要求に対して、コードの分割基準を変更したり、保護コードの実行場所を変更したりすることができない。このため、デバイス種別や実行環境ごとに利用可能なリソースが異なる場合、保護コードに入れられた関数が、ある保護環境で必要なリソースにアクセスできない場合がある。この場合、当該関数を通常コードに含めたり、別のデバイス上の保護環境で実行したりするなどの柔軟性が必要となる。   Also, as the second issue, the program division criteria and execution location are fixed, so the code division criteria can be changed or the protection code execution location can be changed for different device types and different security requirements. Can not do it. For this reason, when the resources that can be used differ depending on the device type and the execution environment, the function included in the protection code may not be able to access the resources necessary in a certain protection environment. In this case, flexibility is required such that the function is included in normal code or executed in a protected environment on another device.

更に、頻繁な通常コードから保護コードへの呼び出しは、処理・通信遅延や通常・保護計算機環境間の切り替え処理による負荷の増加を引き起こす。性能と安全性のバランスをとるため、プログラムを動作させる環境の安全性と、ユーザやプログラム提供者のセキュリティ要求に従って最適なコードの分割基準や起動・導入場所が決定されることが望ましい。起動・導入場所として、同一の装置上の耐タンパハードウェアの保護環境、ソフトウェアベースの保護環境、別の装置上の保護環境など、安全性や性能が異なる複数の保護環境が利用可能である。   Further, frequent calls from the normal code to the protection code cause an increase in load due to processing / communication delay and switching processing between the normal / protection computer environment. In order to balance performance and safety, it is desirable to determine the optimum code division criteria and start-up / introduction location according to the safety of the environment in which the program is operated and the security requirements of the user and the program provider. As a start-up / introduction place, a plurality of protection environments having different safety and performance can be used, such as a tamper resistant hardware protection environment on the same device, a software-based protection environment, and a protection environment on another device.

そこで、本発明は、上記の課題に鑑み、保護環境と通常環境という2つの計算機環境でプログラムを動作させ、適切なリソースにアクセスでき、処理負荷を増大させずに、プログラムの解析や改ざん、権限の奪取による秘密データの漏洩や不正な動作を防止し、安全性を確保することができるプログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法を提供することを目的とする。   Therefore, in view of the above problems, the present invention allows a program to be operated in two computer environments, a protected environment and a normal environment, to access appropriate resources, and to analyze and falsify the program without increasing the processing load. An object of the present invention is to provide a program dividing device, a program executing device, a program dividing method, and a program executing method capable of preventing leakage of secret data and illegal operations due to the capture of the data and ensuring safety.

上記目的を達成するため、本発明の第1の特徴は、1つのプログラムを、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割するプログラム分割装置であって、(a)分割コードの生成における規則を与えるポリシーを入力して、与えられたソースコードの保護が必要な関数と変数に保護属性を付与するソースコード解析部と、(b)ソースコード解析部による解析結果を利用して、保護属性を持つ関数を含む保護コードを生成する保護コード生成部と、(c)ソースコード解析部による解析結果を利用して、保護属性を持たない関数と保護コードの関数を呼び出す関数を含む通常コードを生成する通常コード生成部とを備えるプログラム分割装置であることを要旨とする。   In order to achieve the above object, a first feature of the present invention is a program dividing apparatus that divides one program into protection code that requires execution in a protected execution environment and other normal code. (A) a source code analysis unit that inputs a policy that gives a rule for generating a divided code and gives a protection attribute to a function and a variable that require protection of the given source code; and (b) a source code analysis unit A protection code generation unit that generates a protection code including a function having a protection attribute using the analysis result of (c), and (c) a function and a protection code having no protection attribute using the analysis result of the source code analysis unit The gist of the present invention is that the program dividing apparatus includes a normal code generation unit that generates a normal code including a function that calls the function.

第1の特徴に係るプログラム分割装置によると、プログラムのソースコードを解析し、与えられたポリシーに従って、プログラムを保護が必要な関数と変数を含む保護コードとそれ以外の通常コードに分割することができる。このため、プログラムの提供者が、自身のポリシーに従ってコード分割基準を与えてプログラムを分割することができ、適切なセキュリティと性能のバランスをとることができる。   According to the program dividing apparatus according to the first feature, the program source code is analyzed, and the program is divided into a protection code including a function and a variable that need to be protected and a normal code other than that according to a given policy. it can. Therefore, the program provider can divide the program by giving a code division standard according to its own policy, and an appropriate balance between security and performance can be achieved.

又、第1の特徴に係るプログラム分割装置のソースコード解析部は、ファイルシステムやネットワーク上のサーバ装置からプログラムのソースコードを入力するソースコード入力部と、ソースコードを入力した装置とは同一あるいは別の装置上のファイルシステムやネットワーク上のサーバ装置からポリシーを入力するポリシー入力部とを備えてもよい。   The source code analysis unit of the program dividing device according to the first feature is the same as the source code input unit that inputs the source code of the program from the file system or the server device on the network and the device that inputs the source code. You may provide the policy input part which inputs a policy from the file system on another apparatus, or the server apparatus on a network.

このプログラム分割装置によると、ソースコードおよびポリシーをファイルシステムやネットワークから取得することができる。プログラム分割装置は遠隔のサーバ装置からソースコードやポリシーを取得して、分割コードを作成できると共に、ソースコードやポリシーを別々のサーバ装置から取得して組み合わせることができるため、任意のタイミングで動的に分割コードを生成できるだけでなく、サービス提供者やユーザなどの異なるセキュリティポリシーに対応した分割コードを生成することができる。   According to this program dividing apparatus, the source code and the policy can be acquired from the file system or the network. The program dividing device can acquire source code and policy from a remote server device to create a divided code, and can acquire and combine source code and policy from different server devices, so it can be dynamically generated at any time. In addition to generating split codes, it is also possible to generate split codes corresponding to different security policies such as service providers and users.

又、第1の特徴に係るプログラム分割装置の保護コード生成部は、ポリシーを利用して、保護コードと通常コードの少なくともいずれか1つの動作の検証を行うコードを生成し、保護コードに埋め込む自己検証コード埋め込み部を備えてもよい。   The protection code generation unit of the program dividing apparatus according to the first feature uses a policy to generate a code for verifying the operation of at least one of the protection code and the normal code, and embeds the code in the protection code A verification code embedding unit may be provided.

このプログラム分割装置によると、与えられたポリシーに従って、保護された環境で動作する保護コードに、保護コードと通常コードとを含むプログラム自身の動作の検証を行うコードを埋め込むことができる。このため、安全な環境からプログラム全体の動作を監査でき、ライセンスチェックのバイパスや許可されていない特権操作など(ライブラリ/システムコール等)のアプリの不正動作を検知、防止できる。   According to this program dividing apparatus, it is possible to embed a code for verifying the operation of the program itself including the protection code and the normal code in the protection code that operates in a protected environment according to a given policy. Therefore, it is possible to audit the operation of the entire program from a safe environment, and it is possible to detect and prevent unauthorized operation of an application such as bypassing a license check or unauthorized privileged operations (such as library / system call).

又、第1の特徴に係るプログラム分割装置の通常コード生成部は、ポリシーを利用して、保護コードの起動を制御するコードを生成し、保護コードあるいは通常コードに埋め込む起動制御コード埋め込み部を備えてもよい。   In addition, the normal code generation unit of the program dividing apparatus according to the first feature includes a start control code embedding unit that generates a code for controlling the activation of the protection code using a policy and embeds the code in the protection code or the normal code. May be.

このプログラム分割装置によると、与えられたポリシーに従って保護コードの起動を制御するコードを生成し、保護コードか通常コードに埋め込むことができる。このため、ポリシーに従って保護コードの実行場所を決定することができ、適切なセキュリティと性能を達成することができる。   According to this program dividing apparatus, it is possible to generate a code for controlling activation of a protection code according to a given policy and embed it in the protection code or the normal code. For this reason, the execution place of the protection code can be determined according to the policy, and appropriate security and performance can be achieved.

又、第1の特徴に係るプログラム分割装置の通常コード生成部は、ポリシーを利用して、保護コードの導入を制御するコードを生成し、通常コードに埋め込む導入制御コード埋め込み部を備えてもよい。   In addition, the normal code generation unit of the program dividing apparatus according to the first feature may include an introduction control code embedding unit that generates a code for controlling the introduction of the protection code using a policy and embeds the code in the normal code .

このプログラム分割装置によると、与えられたポリシーに従って、保護コードの導入を制御するコードを生成し、保護コードあるいは通常コードに埋め込むことができる。このため、ポリシーに従って保護コードの導入場所を決定することができ、適切なセキュリティと性能を達成することができる。   According to the program dividing apparatus, a code for controlling the introduction of the protection code can be generated and embedded in the protection code or the normal code according to a given policy. For this reason, it is possible to determine the installation location of the protection code according to the policy, and to achieve appropriate security and performance.

又、第1の特徴に係るプログラム分割装置の保護コード生成部及び通常コード生成部は、認証と暗号化、改ざんの検査の少なくともいずれか一つの通信の保護機能を通信の関数に組み込む通信保護部を備えてもよい。   The protection code generation unit and the normal code generation unit of the program dividing apparatus according to the first feature include a communication protection unit that incorporates at least one communication protection function of authentication, encryption, and tampering inspection into a communication function. May be provided.

このプログラム分割装置によると、保護コードや通常コードに認証や暗号化、署名などの通信保護機能を加えることができる。このため、保護コードと通常コード間の通信の盗聴や改ざんなどの攻撃を防御でき、プログラムを安全に実行することができる。   According to this program dividing apparatus, communication protection functions such as authentication, encryption, and signature can be added to the protection code and the normal code. For this reason, attacks such as wiretapping and tampering of communication between the protection code and the normal code can be prevented, and the program can be executed safely.

本発明の第2の特徴は、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割されたプログラムの実行環境を提供するプログラム実行装置であって、(a)保護コードのための保護環境と通常コードのための通常環境との、2つの環境の隔離と制御を行う複数プログラム実行環境管理部と、(b)保護コードの導入及び起動を管理する保護コード管理部と、(c)通常コードの導入及び起動を管理する通常コード管理部と備えるプログラム実行装置であることを要旨とする。   A second feature of the present invention is a program execution device that provides a protection code that requests execution in a protected execution environment and an execution environment for a program that is divided into other normal codes. A multi-program execution environment management unit that isolates and controls two environments, a protection environment for the protection code and a normal environment for the normal code; and (b) protection code management that manages the introduction and activation of the protection code. And (c) a normal code management unit that manages the introduction and activation of normal codes.

第2の特徴に係るプログラム実行装置によると、保護を要求するコードとそれ以外のコードに分割されたプログラムをそれぞれ保護環境と通常環境において、導入および起動させる手段と、相互で通信可能とする手段と、2つの環境の隔離手段を提供することができる。このため、保護を要求するコードとそれ以外のコードに分割されたプログラムのために安全な実行環境を提供することができる。   According to the program execution device according to the second feature, the means for introducing and starting the code divided into the code requiring protection and the other code in the protection environment and the normal environment, and the means for enabling mutual communication And two environmental isolation means. Therefore, it is possible to provide a safe execution environment for a program divided into code that requires protection and other code.

又、第2の特徴に係るプログラム実行装置において、保護環境と通常環境はそれぞれ仮想マシンであり、複数プログラム実行環境管理部は、仮想マシンの隔離と制御を行う仮想マシンモニタであってもよい。   In the program execution device according to the second feature, the protection environment and the normal environment may each be a virtual machine, and the multiple program execution environment management unit may be a virtual machine monitor that isolates and controls the virtual machine.

このプログラム実行装置によると、仮想マシンモニタベースのデバイスにおいて、保護を要求するコードとそれ以外のコードに分割されたプログラムのために安全な実行環境を提供することができる。   According to this program execution device, in a virtual machine monitor-based device, a safe execution environment can be provided for a program divided into code that requires protection and other code.

又、第2の特徴に係るプログラム実行装置の保護コード管理部は、保護コードのデジタル署名を検証する署名検証部と、署名検証部による署名の検証が成功した場合、保護コードを保護環境で実行可能に組み込む保護導入部と、保護コードの完全性の検証に成功した場合、保護コードを起動する保護起動部とを備えてもよい。   The protection code management unit of the program execution device according to the second feature executes a protection code in a protection environment when the signature verification unit verifies the digital signature of the protection code and when the signature verification by the signature verification unit is successful A protection introduction unit that can be incorporated and a protection activation unit that activates the protection code when the verification of the integrity of the protection code is successful may be provided.

このプログラム実行装置によると、保護を要求するコードの起動時に、その完全性を検証し、成功した際にのみ、起動することができる。又、保護環境においてはコードの署名を検証した後、導入を行うことができる。このため、信頼できないコードを導入したり、改ざんされたコードを実行したりする危険性を回避し、安全なプログラム保護環境実行を維持することができる。   According to this program execution device, the integrity of the code that requires protection is verified and can be activated only when it is successful. Also, in a protected environment, the code signature can be verified before installation. For this reason, it is possible to avoid the danger of introducing untrusted code or executing altered code and maintain safe program protection environment execution.

又、第2の特徴に係るプログラム実行装置の複数プログラム実行環境管理部は、保護コードと通常コードが安全に通信するための保護手段を提供する環境間通信制御部を備えてもよい。   Further, the multiple program execution environment management unit of the program execution device according to the second feature may include an inter-environment communication control unit that provides a protection means for safely communicating the protection code and the normal code.

このプログラム実行装置によると、通信のなりすましや改ざん、盗聴を防ぎ、プログラム実行における秘密情報の流出や処理の不整合を防止することができる。   According to this program execution apparatus, it is possible to prevent communication spoofing, falsification, and eavesdropping, and to prevent leakage of confidential information and processing inconsistency during program execution.

又、第2の特徴に係るプログラム実行装置の複数プログラム実行環境管理部は、保護コードが、通常コードの動作あるいは状態を取得し、検証する環境間監視制御部を備えてもよい。   In addition, the multiple program execution environment management unit of the program execution device according to the second feature may include an inter-environment monitoring control unit in which the protection code acquires and verifies the operation or state of the normal code.

このプログラム実行装置によると、安全な環境に存在する保護コードが保護コード、通常コードを含むプログラム全体の動作を監査でき、ライセンスチェックのバイパスや許可されていない特権操作(ライブラリ/システムコール等)の実行などのアプリの不正動作を検知、防止できる。   According to this program execution device, the protection code existing in a safe environment can audit the operation of the entire program including the protection code and normal code, bypassing the license check and unauthorized privileged operations (libraries / system calls, etc.) It can detect and prevent unauthorized operations such as execution.

本発明の第3の特徴は、1つのプログラムを、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割するプログラム分割方法であって、(a)分割コードの生成における規則を与えるポリシーを入力して、与えられたソースコードの保護が必要な関数と変数に保護属性を付与するステップと、(b)解析結果を利用して、保護属性を持つ関数を含む保護コードを生成するステップと、(c)解析結果を利用して、保護属性を持たない関数と保護コードの関数を呼び出す関数を含む通常コードを生成するステップとを含むプログラム分割方法であることを要旨とする。   A third feature of the present invention is a program dividing method for dividing one program into a protection code that requests execution in a protected execution environment and other normal code, and (a) A step of inputting a policy that gives a rule for generation and assigning a protection attribute to a function and a variable that require protection of the given source code; and (b) including a function having a protection attribute using the analysis result A program dividing method including a step of generating a protection code, and (c) generating a normal code including a function that has no protection attribute and a function that calls a function of the protection code by using an analysis result. The gist.

第3の特徴に係るプログラム分割方法によると、プログラムのソースコードを解析し、与えられたポリシーに従って、プログラムを保護が必要な関数と変数を含む保護コードとそれ以外の通常コードに分割することができる。このため、プログラムの提供者が、自身のポリシーに従ってコード分割基準を与えてプログラムを分割することができ、適切なセキュリティと性能のバランスをとることができる。   According to the program dividing method according to the third feature, the program source code is analyzed, and the program is divided into a protection code including a function and a variable that need protection and a normal code other than that according to a given policy. it can. Therefore, the program provider can divide the program by giving a code division standard according to its own policy, and an appropriate balance between security and performance can be achieved.

本発明の第4の特徴は、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割されたプログラムの実行環境を提供するプログラム実行方法であって、(a)保護コードのための保護環境と通常コードのための通常環境との、2つの環境の隔離と制御を行うステップと、(b)保護コードの導入及び起動を管理するステップと、(c)通常コードの導入及び起動を管理するステップとを含むプログラム実行方法であることを要旨とする。   A fourth feature of the present invention is a program execution method for providing a protection code that requests execution in a protected execution environment and an execution environment for a program that is divided into other normal codes. A step of isolating and controlling two environments, a protection environment for the protection code and a normal environment for the normal code; (b) a step of managing the introduction and activation of the protection code; and (c) a normal code. And a step of managing the introduction and activation of the program.

第4の特徴に係るプログラム実行方法によると、保護を要求するコードとそれ以外のコードに分割されたプログラムのために安全な実行環境を提供することができる。   According to the program execution method according to the fourth feature, it is possible to provide a safe execution environment for a program divided into a code requiring protection and a code other than that.

本発明によると、保護環境と通常環境という2つの計算機環境でプログラムを動作させ、適切なリソースにアクセスでき、処理負荷を増大させずに、プログラムの解析や改ざん、権限の奪取による秘密データの漏洩や不正な動作を防止し、安全性を確保することができるプログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法を提供することができる。   According to the present invention, it is possible to operate a program in two computer environments, that is, a protected environment and a normal environment, to access appropriate resources, and to leak confidential data by analyzing and falsifying the program and acquiring authority without increasing the processing load. In addition, it is possible to provide a program dividing device, a program executing device, a program dividing method, and a program executing method that can prevent an illegal operation and ensure safety.

次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。   Next, embodiments of the present invention will be described with reference to the drawings. In the following description of the drawings, the same or similar parts are denoted by the same or similar reference numerals. However, it should be noted that the drawings are schematic.

<第1の実施の形態>
(プログラム分割装置)
第1の実施の形態に係るプログラム分割装置は、1つのプログラムを、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割する。
<First Embodiment>
(Program dividing device)
The program dividing apparatus according to the first embodiment divides one program into protected code that requests execution in a protected execution environment and other normal code.

第1の実施の形態に係るプログラム分割装置は、図1に示すように、ソースコード解析部110と、保護コード生成部130と、通常コード生成部140と、これらを制御する制御部120とを備える。更に、ソースコード解析部110は、ソースコード入力部111とポリシー入力部112とを含み、保護コード生成部130は、自己検証コード埋め込み部131と通信保護部132とを含み、通常コード生成部140は、起動制御コード埋め込み部141と導入制御コード埋め込み部142と通信保護部143とを含む。   As shown in FIG. 1, the program dividing apparatus according to the first embodiment includes a source code analysis unit 110, a protection code generation unit 130, a normal code generation unit 140, and a control unit 120 that controls them. Prepare. Further, the source code analysis unit 110 includes a source code input unit 111 and a policy input unit 112, and the protection code generation unit 130 includes a self-verification code embedding unit 131 and a communication protection unit 132, and a normal code generation unit 140. Includes an activation control code embedding unit 141, an introduction control code embedding unit 142, and a communication protection unit 143.

{ソースコード解析部}
ソースコード解析部110は、分割コードの生成における規則を与えるポリシーを入力して、与えられたソースコードにおいて保護が必要な関数と変数に対して保護属性を付与する。ソースコードとポリシーの具体例を以下で述べた後、解析や保護属性の付与手順について説明する。
{Source code analysis part}
The source code analysis unit 110 inputs a policy that gives a rule for generating a divided code, and gives a protection attribute to a function and a variable that need to be protected in the given source code. Specific examples of source code and policy will be described below, and then analysis and protection attribute assignment procedures will be described.

ソースコード入力部111は、プログラムのソースコードをファイルシステムやネットワークから入力して、その後の解析やコード生成のための準備を行う。プログラムは、C言語やC++言語、Java言語など言語を問わないが、関数呼び出しや変数の利用をするものであるとする。又、プログラマは保護を必要とする部分に注釈(アノテーション)を付けてもよい。   The source code input unit 111 inputs a source code of a program from a file system or a network, and prepares for subsequent analysis or code generation. The program may be any language such as C language, C ++ language, Java language, etc., but is assumed to be a function call or use of a variable. In addition, the programmer may annotate the part that needs protection.

図2に具体例として、著作権付きの曲を扱う音楽再生用プログラムの元のソースコードの一部を示す。関数宣言やその本体、エラー処理などは説明の簡単化のため、省略している。このソースコードのOnPlayButton関数は、ユーザがある曲(IDがmusic_id)の再生を要求する際に呼び出され、MakeRecordName関数でその曲に対応するレコード名を作成し、SimReadRecord関数により、そのレコード名に対するライセンス情報をSIMと呼ばれる耐タンパモジュールから取得する。そして、DrmCheckValid関数でライセンス情報にアクセスし、その曲の再生期限が規定されている場合、有効な再生期間であるかを検査する。再生可能である場合、AddPlayCount関数により、課金のために再生回数をカウントしてSIM内の当該のレコードに書き込む。そして、DrmGetKey関数により、ライセンス情報から暗号化された曲ファイルの復号鍵を取得し、DecryptSong関数により、曲を復号化する。最後に、OutputMusic関数で復号されたデータを、サウンドドライバなどを通じてスピーカに出力する。   As a specific example, FIG. 2 shows a part of the original source code of a music reproduction program that handles copyrighted music. The function declaration, its body, error handling, etc. are omitted for simplicity. The OnPlayButton function of this source code is called when a user requests playback of a song (ID is music_id), creates a record name corresponding to the song with the MakeRecordName function, and uses the SimReadRecord function to license the record name Information is acquired from a tamper resistant module called SIM. Then, the license information is accessed by the DrmCheckValid function, and if the playback period of the song is specified, it is checked whether it is a valid playback period. If playback is possible, the number of playbacks is counted for charging by the AddPlayCount function and written to the corresponding record in the SIM. Then, the decryption key of the encrypted music file is acquired from the license information by the DrmGetKey function, and the music is decrypted by the DecryptSong function. Finally, the data decoded by the OutputMusic function is output to the speaker through a sound driver or the like.

ポリシー入力部112は、分割コードの生成に関わるポリシーをファイルシステムやネットワークから入力して、その後の解析やコード生成のための準備を行うものである。図3にポリシーの具体例を2つ示す。ここでは、ポリシーは分割基準を指定する<sensitive>,<insensitive>部分と、検証の規則を推定する<verification>部分と、起動・導入場所を指定する<launch>,<install>部分から構成されるものとしている。これら以外にも、コード生成においてターゲットとするデバイスの種別や利用するコンパイラなど、コード分割を制御するための命令や指示をポリシーに与えてもよい。又本具体例ではXMLによる記述を示したがその他の記述方式でもよい。   The policy input unit 112 inputs a policy related to generation of a divided code from a file system or a network, and prepares for subsequent analysis or code generation. FIG. 3 shows two specific examples of policies. Here, the policy consists of <sensitive> and <insensitive> parts that specify split criteria, <verification> parts that estimate verification rules, and <launch> and <install> parts that specify launch and installation locations. It is supposed to be. In addition to these, an instruction or instruction for controlling code division, such as a target device type or a compiler to be used in code generation, may be given to the policy. In this specific example, description in XML is shown, but other description methods may be used.

ポリシー1(Policy1)では分割において保護環境に含める関数として、SimReadRecord関数に<sensitive>タグを付与している。そして検証の規則として、曲を復号する鍵を取得するDrmGetKey関数の前に、ライセンス検査のためのDrmCheckValid関数がターゲットの関数(DrmGetKey関数)と同一の引数で実行されていて、返り値がTRUEであること、再生回数のカウントのためのAddPlayCount関数が実行されていることが正常であると規定している。そして、<action>タグにより、この条件が満たされない場合、DrmGetKey関数の呼び出しを拒否(REJECT)することを規定している。ここではある関数の実行前に、特定の関数が実行されていることを検証規則として与えたが、他にも呼び出しの引数が想定した値の範囲にあること、単位時間あたりの呼び出しの回数が指定の閾値以下であることなどの検証規則が考えられる。更に、このポリシーでは、保護コード(<monitor>タグにより指定している)を、securevm.mydevice.mydomainという名前で表される同一デバイス上の保護環境に導入し、起動するものと指定している。   In Policy 1 (Policy 1), a <sensitive> tag is assigned to the SimReadRecord function as a function to be included in the protection environment in the division. And as a rule of verification, before the DrmGetKey function to obtain the key to decrypt the song, the DrmCheckValid function for license check is executed with the same argument as the target function (DrmGetKey function), and the return value is TRUE. It is specified that it is normal that the AddPlayCount function for counting the number of playbacks is executed. The <action> tag specifies that the DrmGetKey function call should be rejected (REJECT) if this condition is not satisfied. Here, we gave a verification rule that a specific function was executed before the execution of a function, but in addition, the call argument is within the expected value range, and the number of calls per unit time is A verification rule such as being below a specified threshold is conceivable. In addition, this policy specifies that the protection code (specified by the <monitor> tag) is to be installed and activated in a protected environment on the same device represented by the name securevm.mydevice.mydomain. .

一方、ポリシー2(Policy2)では、コード分割においてOutputMusic関数を通常環境に含めるように<insentive>タグを付与している。これは、保護環境でサウンドドライバが利用不可能である場合や、保護環境と通常環境が物理的に別のデバイスに分割されていて、通常環境のデバイスで音楽を出力したい場合を想定している。そして、保護コードを、myhandset.mydomainという名前で表される同一デバイス上の保護環境に導入し、起動するものと指定している。なお、検証規則はポリシー1と同様であるため、省略している。   On the other hand, in policy 2 (Policy 2), an <insentive> tag is assigned so that the OutputMusic function is included in the normal environment in code division. This assumes that the sound driver is not available in the protected environment, or that the protected environment and the normal environment are physically separated into separate devices and you want to output music on the normal environment device. . The protection code is specified to be installed and activated in the protection environment on the same device represented by the name myhandset.mydomain. The verification rule is omitted because it is the same as policy 1.

上述のソースコードとポリシーの具体例に基づき、ソースコード解析部が出力するソースコードの解析結果の具体例を図4に示す。ポリシーにおいてSimReadRecord関数のlicenseinfo引数とDrmGetKey関数の返り値は$sensitiveという修飾語が付与されている。この伝播を解析し、licenseinfoを引数とするDrmCheckValid関数、DrmAddPlayCount関数、DrmGetKey関数にも保護属性が付与され、sensitive_という接頭辞が付与される。更に、DrmGetKey関数の返り値である変数keyの伝播から、DecryptSong関数にも保護属性が付与される。このように、与えられたソースコードにおいて保護が必要な関数と変数に対して保護属性が付与される。   FIG. 4 shows a specific example of the analysis result of the source code output from the source code analysis unit based on the specific example of the source code and policy described above. In the policy, the licenseinfo argument of the SimReadRecord function and the return value of the DrmGetKey function are given the modifier $ sensitive. This propagation is analyzed, and the protection attribute is also given to the DrmCheckValid function, DrmAddPlayCount function, and DrmGetKey function that take licenseinfo as an argument, and the prefix sensitive_ is given. Furthermore, the protection attribute is also given to the DecryptSong function from the propagation of the variable key which is the return value of the DrmGetKey function. In this way, protection attributes are assigned to functions and variables that need to be protected in a given source code.

{通常コード生成部}
通常コード生成部140は、ソースコード解析部110による解析結果を利用して、保護属性を持たない関数と保護コードの関数を呼び出す関数を含む通常コードを生成する。
{Normal code generator}
The normal code generation unit 140 generates a normal code including a function that has no protection attribute and a function that calls a function of the protection code, using the analysis result of the source code analysis unit 110.

具体的には、通常コード生成部140は、ソースコード解析結果を利用して、保護属性が付与された関数の呼び出しを、保護コード内の対応する関数を呼び出すラッパ関数に置き換えると共に保護属性が付与された変数を保護コード内の対応する変数のインデックスとして置き換えた後、コンパイルやリンクによって通常コードを生成する。置き換えるラッパ関数や変数の名前は、sensitive_SimReadRecordやsensitive_licenseinfoのようにソースコード解析結果をそのまま利用してもよいし、別の名前としてもよい。ラッパ関数は内部で、保護コード内の対応する関数をRPC(Remote Procedure Call)や共有メモリを介して呼び出し、返り値を受け取り、ラッパ関数の呼び出し元に与えるものである。呼び出しの際に与える引数に保護属性が付与されている場合、保護コードにはその変数の実体へのインデックス値が与えられ、保護コードにおいてインデックス値から実体へと変換がなされる。返り値に保護属性が付与されている場合も、ラッパ関数が受け取る返り値はインデックス値となる。なお、ラッパ関数の実体はあらかじめ開発者などが用意しておいてもよいし、動的に生成してもよい。   Specifically, the normal code generation unit 140 uses the source code analysis result to replace the function call with the protection attribute with a wrapper function that calls the corresponding function in the protection code, and the protection attribute is given. After replacing the generated variable as the index of the corresponding variable in the protection code, normal code is generated by compiling and linking. The name of the wrapper function or variable to be replaced may be the source code analysis result as it is like sensitive_SimReadRecord or sensitive_licenseinfo, or may be another name. The wrapper function internally calls the corresponding function in the protection code via RPC (Remote Procedure Call) or shared memory, receives the return value, and gives it to the caller of the wrapper function. When a protection attribute is given to an argument given at the time of calling, the protection code is given an index value to the entity of the variable, and the protection code converts the index value to the entity. Even when a protection attribute is added to the return value, the return value received by the wrapper function is an index value. The wrapper function may be prepared in advance by a developer or may be dynamically generated.

起動制御コード埋め込み部141は、ポリシーを利用して、保護コードの起動を制御するコードを生成し、通常コードに埋め込むものである。ポリシー1の場合、同一デバイス上の保護環境における保護コードを起動するコードが埋め込まれ、ポリシー2の場合、携帯電話上の保護コードを起動するコードが埋め込まれる。図4に示す具体例では、StartMonitor()がこの起動コードに対応する。   The activation control code embedding unit 141 generates a code for controlling activation of the protection code using a policy and embeds it in the normal code. In the case of policy 1, a code for starting a protection code in the protection environment on the same device is embedded, and in the case of policy 2, a code for starting a protection code on the mobile phone is embedded. In the specific example shown in FIG. 4, StartMonitor () corresponds to this activation code.

導入制御コード埋め込み部142は、ポリシーを利用して、保護コードの導入を制御するコードを生成し、通常コードに埋め込むものである。ポリシー1の場合、同一デバイス上の保護環境に保護コードを導入するコードが埋め込まれ、ポリシー2の場合、携帯電話内の保護環境に保護コードを導入するコードが埋め込まれる。図4に示す具体例では、InstallMonitor()の呼び出しがこの導入コードに対応する。   The introduction control code embedding unit 142 generates a code for controlling the introduction of the protection code using a policy, and embeds the code in the normal code. In the case of policy 1, a code for introducing a protection code is embedded in the protection environment on the same device. In the case of policy 2, a code for introducing a protection code is embedded in the protection environment in the mobile phone. In the specific example shown in FIG. 4, the call to InstallMonitor () corresponds to this introduction code.

通信保護部143は、認証と暗号化、改ざんの検査の少なくともいずれか一つの通信の保護機能を、上記のラッパ関数による保護コードの対応する関数の呼び出しと、返り値の受け取りに関する通信機構に組み込むものである。例えば、保護コードと通常コードの間であらかじめ秘密鍵を共有しておき、チャレンジレスポンスプロトコルを利用して認証を行い、交換したセッション鍵を使ってデータを暗号化する。更に、MAC(Message Authentication Code)の利用により、通信途中の改ざんを検査する。   The communication protection unit 143 incorporates at least one communication protection function of authentication, encryption, and tampering inspection into a communication mechanism for calling a function corresponding to a protection code by the wrapper function and receiving a return value. Is. For example, a secret key is shared in advance between the protection code and the normal code, authentication is performed using a challenge response protocol, and data is encrypted using the exchanged session key. Further, the use of MAC (Message Authentication Code) checks for tampering during communication.

{保護コード生成部}
保護コード生成部130は、ソースコード解析部110による解析結果を利用して、保護属性を持つ関数を含む保護コードを生成する。
{Protection code generator}
The protection code generation unit 130 generates a protection code including a function having a protection attribute using the analysis result of the source code analysis unit 110.

具体的には、保護コード生成部130は、ソースコード解析結果を利用して、保護属性が付けられた関数を内部で呼び出すラッパ関数と、通常コードからの呼び出しを受け付け、処理する通信部と、保護が必要な変数を管理する変数管理部とを含み、保護コードを生成する。図5に、ポリシー1を適用した際の、保護コードの具体例を示す。通信部には例えば、通常コードからの呼び出しを受け付ける部分(main()内のReceiveRpc行)や、通常コードが与える引数のインデックスから実体を復元する部分(RestoreArg行)、呼び出しと引数、返り値の履歴を保存する部分(CallLog行)、ラッパ関数へ呼び出しを振り分ける部分(Dispatch行)が含まれる。ラッパ関数は、保護属性が付与されたSimReadRecord,DrmCheckValid,DrmAddPlayCount,DrmGetKey,DecryptSongの各関数に対応して、monitor_SimReadRecord,monitor_DrmCheckValid関数などが用意される。ラップ関数は内部で、インデックスから復元された引数を利用して、SimReadRecord,DrmCheckValidなどの実体の関数を呼び出し、返り値を呼び出し元の通常コードへ返す。ただし、返り値に保護属性が付与されている場合、その返り値は変数管理部によってインデックス値と共に保持され、通常コードへはそのインデックスが返される。図6に、変数管理部が保持するテーブルの具体例を示す。保護が必要な変数としてlicenseinfo、保護が必要な返り値としてkeyが、モニタの変数管理部によって保持されており、インデックス101,102によってアクセスされる。   Specifically, the protection code generation unit 130 uses a source code analysis result, a wrapper function that internally calls a function with a protection attribute, a communication unit that receives and processes a call from a normal code, Including a variable management unit that manages variables that need to be protected, and generates a protection code. FIG. 5 shows a specific example of the protection code when the policy 1 is applied. In the communication part, for example, the part that accepts a call from normal code (ReceiveRpc line in main ()), the part that restores the entity from the index of the argument given by the normal code (RestoreArg line), the call and arguments, the return value A part for saving history (CallLog line) and a part for dispatching calls to wrapper functions (Dispatch line) are included. The wrapper functions include monitor_SimReadRecord and monitor_DrmCheckValid functions corresponding to the SimReadRecord, DrmCheckValid, DrmAddPlayCount, DrmGetKey, and DecryptSong functions to which the protection attribute is assigned. The wrap function internally calls actual functions such as SimReadRecord and DrmCheckValid using the argument restored from the index, and returns the return value to the calling normal code. However, when a protection attribute is given to the return value, the return value is held together with the index value by the variable management unit, and the index is returned to the normal code. FIG. 6 shows a specific example of a table held by the variable management unit. Licenseinfo as a variable that needs to be protected and key as a return value that needs to be protected are held by the variable management unit of the monitor and are accessed by the indexes 101 and 102.

自己検証コード埋め込み部131は、ポリシーを利用して、プログラムの動作の検証を行うコードを生成し、保護コードに埋め込む。図5の具体例では、main()内のCheckPolicy関数呼び出しにおいてポリシーを検査している。ポリシー1の場合、曲を復号する鍵を取得するDrmGetKey関数が呼ばれた際、DrmCheckValid関数がDrmGetKey関数と同一の引数で実行されていて、返り値がTRUEであること、再生回数のカウントのためのAddPlayCount関数が実行されていることを検査し、この条件が満たされない場合、DrmCheckValid関数の呼び出しをブロックする。これらポリシーの検査は、例えば図7に示すように、保護コードにおいて呼び出しと引数、返り値の履歴をテーブル形式で保存しておき、このテーブルを検索することで実現できる。   The self-verification code embedding unit 131 generates a code for verifying the operation of the program using a policy and embeds it in the protection code. In the specific example of FIG. 5, the policy is checked by calling the CheckPolicy function in main (). In the case of policy 1, when the DrmGetKey function that obtains the key to decrypt a song is called, the DrmCheckValid function is executed with the same arguments as the DrmGetKey function, the return value is TRUE, and the playback count is counted. Check that the AddPlayCount function is executed, and if this condition is not met, block the call to the DrmCheckValid function. For example, as shown in FIG. 7, these policy checks can be realized by storing a history of calls, arguments, and return values in a protection code in a table format and searching this table.

通信保護部132は、通常コードと同様に、認証と暗号化、改ざんの検査の少なくともいずれか一つの通信の保護機能を、保護コードに組み込む。通常コードからの呼び出しを受け付け、処理する通信部やラッパ関数が通常コードに返り値を返す部分にこれらの保護機能を追加する。   Similar to the normal code, the communication protection unit 132 incorporates at least one communication protection function of authentication, encryption, and tampering inspection into the protection code. These protection functions are added to the part that receives the call from the normal code and returns the value returned to the normal code by the communication unit or wrapper function to be processed.

又、プログラム分割装置100は、処理制御装置(CPU)を有し、上述したソースコード解析部110、保護コード生成部130、通常コード生成部140などをモジュールとして、CPUによって実行させる構成とすることができる。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。   The program dividing apparatus 100 has a processing control unit (CPU) and is configured to be executed by the CPU with the above-described source code analysis unit 110, protection code generation unit 130, normal code generation unit 140, and the like as modules. Can do. These modules can be realized by executing a dedicated program for using a predetermined program language in a general-purpose computer such as a personal computer.

又、図示していないが、プログラム分割装置100は、ソースコード解析処理、保護コード生成処理、通常コード生成処理などをCPUに実行させるためのプログラムを蓄積するプログラム保持部を備えてもよい。プログラム保持部は、例えば、RAM、ROM、ハードディスク、フレキシブルディスク、コンパクトディスク、ICチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、プログラムの蓄積、運搬、販売などを容易に行うことができる。   Although not shown, the program dividing apparatus 100 may include a program holding unit that stores a program for causing the CPU to execute source code analysis processing, protection code generation processing, normal code generation processing, and the like. The program holding unit is a recording medium such as a RAM, a ROM, a hard disk, a flexible disk, a compact disk, an IC chip, and a cassette tape. According to such a recording medium, it is possible to easily store, transport, and sell programs.

(プログラム分割方法)
次に、第1の実施の形態に係るプログラム分割方法について、図8を用いて、説明する。本方法は、ユーザからの入力や外部装置からの入力をトリガとして、起動される。
(Program division method)
Next, the program dividing method according to the first embodiment will be described with reference to FIG. The present method is activated with an input from a user or an input from an external device as a trigger.

まず、ステップS101において、ソースコードが入力され、ステップS102においてポリシーが入力される。次に、ステップS103において、ソースコード解析部110は、ソースコードを解析し、ポリシーで与えられた保護属性を関連する関数、変数へと伝播させる。   First, in step S101, source code is input, and in step S102, a policy is input. Next, in step S103, the source code analysis unit 110 analyzes the source code and propagates the protection attribute given by the policy to related functions and variables.

次に、ステップS104及びステップS105において、ステップS103における解析結果のソースコードを利用して、通常コードと保護コードを生成する。ステップS104及びステップS105については、後に詳述する。   Next, in step S104 and step S105, a normal code and a protection code are generated using the source code of the analysis result in step S103. Steps S104 and S105 will be described in detail later.

次に、ステップS106において、通常コードと保護コードをパッケージ化した後、ステップS107において、デジタル署名と証明書をパッケージに付与する。その際、リバースエンジニアリングの防止やデータ量の削減のため、暗号化や圧縮を行ってもよい。   Next, in step S106, the normal code and the protection code are packaged, and in step S107, a digital signature and a certificate are added to the package. At that time, encryption or compression may be performed in order to prevent reverse engineering or reduce the amount of data.

図8のステップS104に示す通常コードの生成方法について、図9を用いて説明する。   The normal code generation method shown in step S104 of FIG. 8 will be described with reference to FIG.

まず、ステップS201において、解析結果のソースコード中の保護属性が付けられた関数・変数をそれぞれラッパ関数とインデックス変数に置き換える。   First, in step S201, a function / variable with a protection attribute in the source code of the analysis result is replaced with a wrapper function and an index variable, respectively.

次に、ステップS202及びステップS203において、ポリシーで指定された保護コードの起動場所、導入場所に従って起動コード、導入コードをそのソースコードに埋め込む。   Next, in step S202 and step S203, the activation code and the introduction code are embedded in the source code in accordance with the activation place and introduction place of the protection code designated by the policy.

そして、ステップS204において、そのソースコードをコンパイルし、ステップS205において、保護コードの関数を呼び出すための通信ライブラリなどをリンクして、実行可能(executable)な通常コードを生成する。   In step S204, the source code is compiled, and in step S205, an executable normal code is generated by linking a communication library for calling a function of the protection code.

又、図示していないが、通常コードにデジタル署名や証明書を付与してもよいし、リバースエンジニアリングの防止やデータ量の削減のため、暗号化や圧縮を行ってもよい。   Although not shown, a digital signature or certificate may be added to the normal code, or encryption or compression may be performed to prevent reverse engineering or reduce the amount of data.

次に、図8のステップS105に示す保護コードの生成方法について、図10を用いて説明する。   Next, the protection code generation method shown in step S105 of FIG. 8 will be described with reference to FIG.

まず、ステップS301において、解析結果のソースコードから、保護属性が付けられた関数・変数を抜き出す。そして、通常コードからの呼び出しを処理する通信部と、保護が必要な変数を管理する変数管理部のコードと、保護属性の関数それぞれに対応するラッパ関数を生成する。ラッパ関数は内部で実体の関数を呼び出すと共に、返り値に保護属性が付与されている場合はインデックス変数を返すように作成される。   First, in step S301, a function / variable with a protection attribute is extracted from the analysis source code. Then, a communication unit that processes a call from the normal code, a code of a variable management unit that manages a variable that needs to be protected, and a wrapper function corresponding to each function of the protection attribute are generated. The wrapper function is created to call the actual function internally and return an index variable if the return value has a protection attribute.

次に、ステップS302において、自己検証コード埋め込み部131は、ポリシーを利用して、プログラムの動作の検証を行うコードを生成し、保護コードに埋め込む。   Next, in step S302, the self-verification code embedding unit 131 generates a code for verifying the operation of the program using the policy, and embeds it in the protection code.

次に、ステップS303において、ソースコードをコンパイルし、ステップS304において、通信ライブラリなどをリンクし、実行可能(executable)な保護コードを生成する。   Next, in step S303, the source code is compiled, and in step S304, a communication library or the like is linked to generate an executable protection code.

次に、ステップS306において、デジタル署名と証明書を保護コードに付与する。その際、リバースエンジニアリングの防止やデータ量の削減のため、暗号化や圧縮を行ってもよい(ステップS305)。   Next, in step S306, a digital signature and a certificate are added to the protection code. At that time, encryption or compression may be performed in order to prevent reverse engineering or reduce the amount of data (step S305).

(プログラム実行装置)
第1の実施の形態に係るプログラム実行装置は、保護を要求するコード(保護コード)とそれ以外の通常コードに分割されたプログラムのための実行環境を提供する。
(Program execution device)
The program execution device according to the first embodiment provides an execution environment for a program divided into a code that requires protection (protection code) and other normal code.

第1の実施の形態に係るプログラム実行装置は、図11に示すように、複数プログラム実行環境管理部230と、保護コード管理部212と、通常コード管理部222とを備える。更に、複数プログラム実行環境管理部230は、環境間通信制御部232と、環境間監視制御部231とを含み、保護コード管理部212は、署名検証部215と、保護起動部213と、保護導入部214とを含む。   As shown in FIG. 11, the program execution device according to the first exemplary embodiment includes a multiple program execution environment management unit 230, a protection code management unit 212, and a normal code management unit 222. Further, the multiple program execution environment management unit 230 includes an inter-environment communication control unit 232 and an inter-environment monitoring control unit 231, and the protection code management unit 212 includes a signature verification unit 215, a protection activation unit 213, and protection introduction. Part 214.

{複数プログラム実行環境管理部}
複数プログラム実行環境管理部230は、保護コードの実行のための保護環境210と通常コードの実行のための通常環境220の、2つ以上の実行環境の隔離と制御を行う。実行環境の実現手段に制限はなく、複数プログラム実行環境管理部230の実現にあたり、仮想マシンモニタの技術を用いて仮想マシンレベルの複数の実行環境を管理してもよいし、オペレーティングシステムによってプロセスレベルの複数の実行環境を管理してもよい。更に、分散システム用のミドルウェアを利用して複数のデバイス上の複数の実行環境を管理させてもよい。第1の実施の形態では、保護環境210と通常環境220はそれぞれ仮想マシンであり、複数プログラム実行環境管理部230は、仮想マシンの隔離と制御を行う仮想マシンモニタであるものとして説明する。
{Multiple Program Execution Environment Management Department}
The multiple program execution environment management unit 230 isolates and controls two or more execution environments, that is, a protection environment 210 for executing protection code and a normal environment 220 for executing normal code. There are no restrictions on the means for implementing the execution environment, and in implementing the multiple program execution environment management unit 230, a plurality of execution environments at the virtual machine level may be managed using the technology of the virtual machine monitor, or the process level may be controlled by the operating system. A plurality of execution environments may be managed. Furthermore, a plurality of execution environments on a plurality of devices may be managed using middleware for a distributed system. In the first embodiment, it is assumed that the protection environment 210 and the normal environment 220 are virtual machines, and the multiple program execution environment management unit 230 is a virtual machine monitor that isolates and controls virtual machines.

環境間通信制御部232は、保護コードと通常コードが安全に通信する手段を提供する。例えば、環境間通信制御部232が鍵の割り当てを管理し、保護コードと通常コードからの要求に従って共有鍵を与えることで、チャレンジレスポンスプロトコルによる認証や、交換したセッション鍵によるデータの暗号化、MAC(Message Authentication Code)の利用による通信途中の改ざんを検査する。   The inter-environment communication control unit 232 provides means for safely communicating the protection code and the normal code. For example, the inter-environment communication control unit 232 manages key assignment and gives a shared key in accordance with a request from a protection code and a normal code, thereby authenticating by a challenge response protocol, encrypting data using an exchanged session key, MAC Check for tampering during communication due to the use of (Message Authentication Code).

環境間監視制御部231は、保護を要求するコードが、通常コードの動作あるいは状態を取得し、検証する。例えば、通常コードのシステムコールやマシン語レベルの実行系列や、実行コードのテキストセグメント、データセグメント、ヒープやスタックなどのメモリの状態を取得可能とする。   The inter-environment monitoring control unit 231 acquires and verifies the operation or state of the normal code by the code requesting protection. For example, it is possible to acquire normal code system calls, machine language level execution sequences, execution code text segments, data segments, memory states such as heaps and stacks.

{保護コード管理部}
保護コード管理部212は、保護を要求するコードの導入や起動を管理する。
{Protection code management department}
The protection code management unit 212 manages the introduction and activation of codes that require protection.

署名検証部215は、保護コードに付与されたデジタル署名や証明書の検証を行う。デジタル署名のアルゴリズムは、RSA,El Gamal,DSA,Rabin方式などいずれでもよい。又、証明書もX.509証明書フォーマットなど形式を問わない。   The signature verification unit 215 verifies the digital signature and certificate assigned to the protection code. The digital signature algorithm may be any of RSA, El Gamal, DSA, and Rabin methods. The certificate may be in any format such as X.509 certificate format.

保護導入部214は、署名および証明書の検証が成功した場合にのみ保護コードを保護環境で実行可能なように組み込む。導入の際、保護コードが暗号化、圧縮されている場合は復号化や解凍を行い、保護環境内のファイルシステムに必要なファイルをコピーしたり、環境変数や設定ファイル等の設定を行ったりする。又、保護コードのハッシュ値をSHA1などのハッシュ関数を利用して計算し、正常なハッシュ値として保護コード管理部に保存する。検証が失敗した場合、保護コードの導入の要求元に検証の失敗を示す応答を返してもよいし、応答を返さずに処理を中断してもよい。   The protection introduction unit 214 incorporates the protection code so that it can be executed in the protection environment only when the signature and the certificate are successfully verified. During installation, if the protection code is encrypted or compressed, it will be decrypted and decompressed, and the necessary files will be copied to the file system in the protected environment, and environment variables and configuration files will be set. . Further, the hash value of the protection code is calculated using a hash function such as SHA1, and stored as a normal hash value in the protection code management unit. When the verification fails, a response indicating the verification failure may be returned to the request source for introducing the protection code, or the processing may be interrupted without returning the response.

保護起動部213は、保護コードの完全性を検証し、検証が成功した際、起動する。完全性は、保護コードの実行可能ファイルのハッシュ値を計算し、保護コード管理部が保持する正常なハッシュ値と一致するかを比較することで検証できる。検証が失敗した場合、保護コードの起動の要求元に検証の失敗を示す応答を返してもよいし、応答を返さずに処理を中断してもよい。   The protection activation unit 213 verifies the integrity of the protection code, and activates when the verification is successful. The integrity can be verified by calculating the hash value of the executable file of the protection code and comparing it with the normal hash value held by the protection code management unit. When the verification fails, a response indicating the verification failure may be returned to the request source for starting the protection code, or the processing may be interrupted without returning the response.

{通常コード管理部}
通常コード管理部222は、保護を要求しない通常コードの導入や起動を管理する。導入手順においては、通常環境内のファイルシステムに必要なファイルをコピーしたり、環境変数や設定ファイル等の設定を行ったりする。このとき、保護コード管理部のように署名を検証して導入の可否を決定してもよいし、通常コードの正常なハッシュ値を計算し、保持してもよい。又、起動手順においてはユーザや外部装置からの入力にしたがって、通常コードの実行可能ファイルを起動する。このとき、保護コード管理部のように完全性を検証した後、起動処理を行ってもよい。
{Normal code management department}
The normal code management unit 222 manages the introduction and activation of normal codes that do not require protection. In the installation procedure, necessary files are copied to the file system in the normal environment, and environment variables and setting files are set. At this time, like the protection code management unit, the signature may be verified to determine whether or not to install, or a normal hash value of the normal code may be calculated and held. In the activation procedure, the executable file of the normal code is activated in accordance with an input from the user or an external device. At this time, the activation process may be performed after the integrity is verified as in the protection code management unit.

又、プログラム実行装置200は、処理制御装置(CPU)を有し、上述した複数プログラム実行環境管理部230、保護コード管理部212、通常コード管理部222などをモジュールとして、CPUによって実行させる構成とすることができる。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。   The program execution device 200 includes a processing control device (CPU) and is configured to be executed by the CPU using the above-described multiple program execution environment management unit 230, protection code management unit 212, normal code management unit 222, and the like as modules. can do. These modules can be realized by executing a dedicated program for using a predetermined program language in a general-purpose computer such as a personal computer.

又、図示していないが、プログラム実行装置200は、複数プログラム実行環境管理処理、保護コード管理処理、通常コード管理処理などをCPUに実行させるためのプログラムを蓄積するプログラム保持部を備えてもよい。プログラム保持部は、例えば、RAM、ROM、ハードディスク、フレキシブルディスク、コンパクトディスク、ICチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、プログラムの蓄積、運搬、販売などを容易に行うことができる。   Although not shown, the program execution device 200 may include a program holding unit that stores a program for causing the CPU to execute a multiple program execution environment management process, a protection code management process, a normal code management process, and the like. . The program holding unit is a recording medium such as a RAM, a ROM, a hard disk, a flexible disk, a compact disk, an IC chip, and a cassette tape. According to such a recording medium, it is possible to easily store, transport, and sell programs.

(プログラム実行方法)
次に、第1の実施の形態に係るプログラム実行方法について、図12〜14を用いて説明する。
(Program execution method)
Next, a program execution method according to the first embodiment will be described with reference to FIGS.

{保護コードの導入手順}
図12を用いて、保護コードの導入方法について説明する。
{Protection code installation procedure}
A method for introducing a protection code will be described with reference to FIG.

まず、ユーザは保護コードと通常コードが同梱されているパッケージを、ネットワーク上のサーバ装置からのダウンロードや、CD−ROMなどのストレージメディアを通して、デバイスの通常環境上に取得する。そして、パッケージから通常コードを取り出し、通常環境に導入する。通常コードの導入は、通常コード管理部や通常コード自身、あるいは外部のインストーラプログラムによって行われ、ファイルを特定の場所にコピーしたり、環境変数や設定ファイルの設定が行われたりする。通常コードの導入の完了後、通常コード管理部や通常コード自身が、保護コード管理部に保護コードの導入要求を発行する。ここから、図10の保護コードの導入手順が開始される。   First, the user acquires a package in which the protection code and the normal code are bundled on the normal environment of the device through downloading from a server device on the network or a storage medium such as a CD-ROM. Then, the normal code is taken out from the package and introduced into the normal environment. The normal code is introduced by the normal code management unit, the normal code itself, or an external installer program, and the file is copied to a specific location or an environment variable or a setting file is set. After completing the introduction of the normal code, the normal code management unit or the normal code itself issues a protection code introduction request to the protection code management unit. From here, the introduction procedure of the protection code of FIG. 10 is started.

まず、ステップS401において、保護コード管理部212は、通常コードやユーザからの保護コードの導入要求を受け付ける。そして、ステップS402において、保護コードのファイルの署名と証明書を検証する。保護コードのファイルは、ファイルシステムや通信を通じて与えられる。例えば、通常コードが保護コード管理部を呼び出して通信チャネルを確立し、保護コードのバイナリデータを転送してもよいし、通常コードが通常環境内の保護コードのファイルをOSや仮想マシンモニタが提供するファイルコピーの手段によって、保護環境にコピーしてもよい。   First, in step S401, the protection code management unit 212 receives a normal code or a protection code introduction request from a user. In step S402, the signature and certificate of the protection code file are verified. The protection code file is given through a file system or communication. For example, the normal code may call the protection code management unit to establish a communication channel and transfer the binary data of the protection code, or the normal code provides the protection code file in the normal environment by the OS or the virtual machine monitor The file may be copied to a protected environment by means of file copying.

ステップS403において、署名および証明書の検証が成功した場合は、ステップS404に進み、保護コード導入の際、保護コードが暗号化、圧縮されている場合は復号化や解凍を行う。又、ステップS405において、保護環境内のファイルシステムに必要なファイルをコピーしたり、環境変数や設定ファイル等の設定を行ったりする。又、ステップS406において、保護コードのハッシュ値をSHA1などのハッシュ関数を利用して計算し、正常なハッシュ値として保護コード管理部に保存する。   If the verification of the signature and certificate is successful in step S403, the process proceeds to step S404, and when the protection code is introduced, if the protection code is encrypted or compressed, decryption or decompression is performed. In step S405, necessary files are copied to the file system in the protected environment, and environment variables and setting files are set. In step S406, the hash value of the protection code is calculated using a hash function such as SHA1 and stored in the protection code management unit as a normal hash value.

一方、ステップS403において、検証が失敗した場合は、ステップS407に進み、保護コードの導入の要求元に検証の失敗を示す応答を返す。   On the other hand, if the verification fails in step S403, the process proceeds to step S407, and a response indicating the verification failure is returned to the protection code introduction request source.

{保護コードの起動手順}
図13を用いて、保護コードの起動方法について説明する。本手順は、通常コードやユーザからの保護コードの起動要求をトリガに実行が開始される。
{Protection code activation procedure}
A protection code activation method will be described with reference to FIG. This procedure is started when triggered by a normal code or a protection code activation request from the user.

まず、ステップS501において、保護コード管理部212は、通常コードやユーザからの保護コードの起動要求を受け付ける。そして、ステップS502において、保護コードのハッシュ値を計算し、保護コード管理部が保持する正常なハッシュ値と比較、検証する。   First, in step S501, the protection code management unit 212 receives a normal code or a protection code activation request from a user. In step S502, a hash value of the protection code is calculated and compared with a normal hash value held by the protection code management unit.

ステップS503において、検証が成功した場合、ステップS504に進み、保護コードを起動する。   In step S503, if the verification is successful, the process proceeds to step S504 to activate the protection code.

一方、ステップS503において、検証が失敗した場合、ステップS505に進み、保護コードの起動の要求元に検証の失敗を示す応答を返す。   On the other hand, if the verification fails in step S503, the process proceeds to step S505, and a response indicating the verification failure is returned to the activation source of the protection code.

{通常コードから保護コードの関数呼び出し手順}
図14を用いて、通常コードから保護コード内の保護が必要とされる関数を呼び出す方法について説明する。
{Function call procedure for protection code from normal code}
A method of calling a function that requires protection in the protection code from the normal code will be described with reference to FIG.

まず、ステップS601において、通常コード内で保護コードに含まれる関数がラップ関数を通じて呼び出される。すると、ステップS602において、通常コードからの呼び出しを保護コードが受け付け、ステップS603において、認証や改ざんの検査を行い、その呼び出しが正当なものであるかを検査する。   First, in step S601, a function included in a protection code in a normal code is called through a wrap function. Then, in step S602, the protection code accepts a call from the normal code, and in step S603, authentication and tampering are inspected to check whether the call is valid.

ステップS603において、正当でないと判断した場合、ステップS612に進み、通常コードに呼び出しの拒否を応答する。   If it is determined in step S603 that it is not valid, the process proceeds to step S612, and a call rejection is responded to the normal code.

一方、ステップS603において、正当だと判断した場合、ステップS604に進み、呼び出しの引数において保護された変数を指すインデックス変数が与えられていた場合、実体の引数を変数管理テーブルから引き出す。   On the other hand, if it is determined in step S603 that it is valid, the process advances to step S604. If an index variable indicating a protected variable is given in the call argument, the actual argument is extracted from the variable management table.

次に、ステップS605において、保護コードに埋め込まれた自己検証コードが、通常コードからの呼び出しがポリシーに沿っているかを検査する。ここで、図3で示した自己検証ポリシーと図7に示す通常コードxと通常コードyからの呼び出しの履歴例を利用して、自己検証ポリシー検査の具体例を説明する。図3で示した自己検証ポリシーに従い、保護コードはDrmGetKey関数の呼び出しの際に、DrmCheckValid関数がDrmGetKey関数と同一の引数で実行されていて、返り値がTRUEであること、再生回数のカウントのためのAddPlayCount関数が実行されていることを検査する。通常コードxからの場合、この検証規則を満たしているため、自己検証ポリシーの検査は成功する(ステップS606→ステップS607)。しかしながら、通常コードyの呼び出しではDrmGetKey関数の前にDrmCheckValid関数もAddPlayCount関数も実行されていない。そのため、検証規則を満たしておらず、保護コードはDrmGetKey関数の呼び出しを拒否する(ステップS606→ステップS612)。   Next, in step S605, the self-verification code embedded in the protection code checks whether the call from the normal code conforms to the policy. Here, a specific example of the self-verification policy check will be described using the self-verification policy shown in FIG. 3 and a history example of calls from the normal code x and the normal code y shown in FIG. In accordance with the self-verification policy shown in FIG. 3, when the DrmGetKey function is called, the protection code is executed with the same argument as the DrmGetKey function, the return value is TRUE, and the playback count is counted. Check that the AddPlayCount function is executed. In the case of the normal code x, since this verification rule is satisfied, the self-verification policy check succeeds (step S606 → step S607). However, when the normal code y is called, neither the DrmCheckValid function nor the AddPlayCount function is executed before the DrmGetKey function. Therefore, the verification rule is not satisfied, and the protection code refuses to call the DrmGetKey function (step S606 → step S612).

次に、ステップS607において、保護コードは呼び出しの関数名と引数、返り値、呼び出しを受け付けたタイムスタンプを履歴として保持する。この履歴は自己検証ポリシーの検証において利用される。   Next, in step S607, the protection code holds the function name and argument of the call, the return value, and the time stamp when the call is accepted as a history. This history is used in the verification of the self-validation policy.

そして、ステップS608において、復元された引数のもと、保護コード内のラッパ関数が呼び出される。ステップS609において、ラッパ関数内では、SimReadRecord,DrmCheckValidなどの実体の関数を呼び出し、ステップS610において、返り値を作成する。そして、ステップS610において、返り値を通常コードへ返す。ただし、返り値に保護属性が付与されている場合、返り値を変数管理テーブルにインデックス付きで保持し、そのインデックスを通常コードへ返す。   In step S608, a wrapper function in the protection code is called based on the restored argument. In step S609, actual functions such as SimReadRecord and DrmCheckValid are called in the wrapper function, and a return value is created in step S610. In step S610, the return value is returned to the normal code. However, when a protection attribute is assigned to the return value, the return value is stored with an index in the variable management table, and the index is returned to the normal code.

(作用及び効果)
第1の実施の形態に係るプログラム分割装置100は、与えられたポリシーに従って、プログラムを保護が必要な関数と変数を含む保護コードとそれ以外の通常コードに分割することができる。このため、プログラムの提供者が、自身のポリシーに従ってコード分割基準を与えてプログラムを分割することができ、適切なセキュリティと性能のバランスをとることができる。
(Action and effect)
The program dividing apparatus 100 according to the first embodiment can divide a program into a protection code including a function and a variable that need protection and a normal code other than that according to a given policy. Therefore, the program provider can divide the program by giving a code division standard according to its own policy, and an appropriate balance between security and performance can be achieved.

又、第1の実施の形態に係るプログラム分割装置100のソースコード解析部110は、ソースコード入力部111と、ポリシー入力部112とを備えるため、ソースコードおよびポリシーをファイルシステムやネットワークから取得することができる。プログラム分割装置は遠隔のサーバ装置からソースコードやポリシーを取得して、分割コードを作成できると共に、ソースコードやポリシーを別々のサーバ装置から取得して組み合わせることができるため、任意のタイミングで動的に分割コードを生成できるだけでなく、サービス提供者やユーザなどの異なるセキュリティポリシーに対応した分割コードを生成することができる。   In addition, since the source code analysis unit 110 of the program dividing apparatus 100 according to the first embodiment includes the source code input unit 111 and the policy input unit 112, the source code and the policy are acquired from the file system or the network. be able to. The program dividing device can acquire source code and policy from a remote server device to create a divided code, and can acquire and combine source code and policy from different server devices, so it can be dynamically generated at any time. In addition to generating split codes, it is also possible to generate split codes corresponding to different security policies such as service providers and users.

又、第1の実施の形態に係るプログラム分割装置100の保護コード生成部130は、自己検証コード埋め込み部131を備えるため、与えられたポリシーに従って、保護された環境で動作する保護コードに、保護コードと通常コードとを含むプログラム自身の動作の検証を行うコードを埋め込むことができる。このため、安全な環境からプログラム全体の動作を監査でき、ライセンスチェックのバイパスや許可されていない特権操作など(ライブラリ/システムコール等)のアプリの不正動作を検知、防止できる。   Further, since the protection code generation unit 130 of the program dividing apparatus 100 according to the first embodiment includes the self-verification code embedding unit 131, the protection code that operates in the protected environment according to the given policy is protected. It is possible to embed a code for verifying the operation of the program itself including the code and the normal code. Therefore, it is possible to audit the operation of the entire program from a safe environment, and it is possible to detect and prevent unauthorized operation of an application such as bypassing a license check or unauthorized privileged operations (such as library / system call).

又、第1の実施の形態に係るプログラム分割装置の通常コード生成部140は、起動制御コード埋め込み部141を備えるため、与えられたポリシーに従って保護コードの起動を制御するコードを生成し、保護コードか通常コードに埋め込むことができる。このため、ポリシーに従って保護コードの実行場所を決定することができ、適切なセキュリティと性能を達成することができる。   Moreover, since the normal code generation unit 140 of the program dividing apparatus according to the first embodiment includes the activation control code embedding unit 141, the normal code generation unit 140 generates a code for controlling activation of the protection code according to a given policy. Or it can be embedded in normal code. For this reason, the execution place of the protection code can be determined according to the policy, and appropriate security and performance can be achieved.

又、第1の実施の形態に係るプログラム分割装置100の通常コード生成部140は、導入制御コード埋め込み部142を備えるため、与えられたポリシーに従って、保護コードの導入を制御するコードを生成し、保護コードあるいは通常コードに埋め込むことができる。このため、ポリシーに従って保護コードの導入場所を決定することができ、適切なセキュリティと性能を達成することができる。   Further, since the normal code generation unit 140 of the program dividing apparatus 100 according to the first embodiment includes the introduction control code embedding unit 142, the normal code generation unit 140 generates a code for controlling the introduction of the protection code according to a given policy, It can be embedded in a protection code or a normal code. For this reason, it is possible to determine the installation location of the protection code according to the policy, and to achieve appropriate security and performance.

又、第1の実施の形態に係るプログラム分割装置100の保護コード生成部130及び通常コード生成部140は、それぞれ通信保護部132、143を備えるため、保護コードや通常コードに認証や暗号化、署名などの通信保護機能を加えることができる。このため、保護コードと通常コード間の通信の盗聴や改ざんなどの攻撃を防御でき、プログラムを安全に実行することができる。   Further, since the protection code generation unit 130 and the normal code generation unit 140 of the program dividing apparatus 100 according to the first embodiment include the communication protection units 132 and 143, respectively, the protection code and the normal code are authenticated and encrypted. Communication protection functions such as signatures can be added. For this reason, attacks such as wiretapping and tampering of communication between the protection code and the normal code can be prevented, and the program can be executed safely.

第1の実施の形態に係るプログラム実行装置は、保護を要求するコードとそれ以外のコードに分割されたプログラムをそれぞれ保護環境と通常環境において、導入および起動させる手段と、相互で通信可能とする手段と、2つの環境の遠隔手段を提供することができる。このため、保護を要求するコードとそれ以外のコードに分割されたプログラムのために安全な実行環境を提供することができる。   The program execution device according to the first embodiment enables mutual communication with means for introducing and starting a code that is required to be protected and a program divided into other codes in the protected environment and the normal environment. And remote means of two environments can be provided. Therefore, it is possible to provide a safe execution environment for a program divided into code that requires protection and other code.

又、第1の実施の形態に係るプログラム実行装置200において、保護環境と通常環境はそれぞれ仮想マシンであり、複数プログラム実行環境管理部230は、仮想マシンの隔離と制御を行う仮想マシンモニタである。このため、仮想マシンモニタベースのデバイスにおいて、保護を要求するコードとそれ以外のコードに分割されたプログラムのために安全な実行環境を提供することができる。   In the program execution device 200 according to the first embodiment, the protection environment and the normal environment are each a virtual machine, and the multiple program execution environment management unit 230 is a virtual machine monitor that isolates and controls a virtual machine. . Therefore, in a virtual machine monitor-based device, it is possible to provide a safe execution environment for a program divided into code that requires protection and other code.

又、第1の実施の形態に係るプログラム実行装置200の保護コード管理部212は、保護コードのデジタル署名を検証する署名検証部215と、署名検証部による署名の検証が成功した場合、保護コードを保護環境で実行可能に組み込む保護導入部214と、保護コードの完全性の検証に成功した場合、保護コードを起動する保護起動部213とを備えるため、保護を要求するコードの起動時に、その完全性を検証し、成功した際にのみ、起動することができる。又、保護環境においてはコードの署名を検証した後、導入を行うことができる。このため、信頼できないコードを導入したり、改ざんされたコードを実行したりする危険性を回避し、安全なプログラム保護環境実行を維持することができる。   Further, the protection code management unit 212 of the program execution device 200 according to the first embodiment includes a signature verification unit 215 that verifies the digital signature of the protection code, and a protection code when the signature verification unit succeeds in verifying the signature. Is installed in a protected environment so as to be executable in a protected environment, and a protection activation unit 213 that activates the protection code when the integrity of the protection code is successfully verified. It can be activated only when it has been verified and complete. Also, in a protected environment, the code signature can be verified before installation. For this reason, it is possible to avoid the danger of introducing untrusted code or executing altered code and maintain safe program protection environment execution.

又、第1の実施の形態に係る実行装置200の複数プログラム実行環境管理部230は、保護コードと通常コードが安全に通信するための保護手段を提供する環境間通信制御部232を備えるため、通信のなりすましや改ざん、盗聴を防ぎ、プログラム実行における秘密情報の流出や処理の不整合を防止することができる。   In addition, the multiple program execution environment management unit 230 of the execution device 200 according to the first embodiment includes the inter-environment communication control unit 232 that provides a protection unit for safely communicating the protection code and the normal code. Communication spoofing, falsification, and eavesdropping can be prevented, and leakage of confidential information and processing inconsistencies during program execution can be prevented.

又、第1の実施の形態に係るプログラム実行装置200の複数プログラム実行環境管理部230は、保護コードが、通常コードの動作あるいは状態を取得し、検証する環境間監視制御部231を備えるため、安全な環境に存在する保護コードが保護コード、通常コードを含むプログラム全体の動作を監査でき、ライセンスチェックのバイパスや許可されていない特権操作など(ライブラリ/システムコール等)のアプリの不正動作を検知、防止できる。   In addition, since the multiple code execution environment management unit 230 of the program execution device 200 according to the first embodiment includes the inter-environment monitoring control unit 231 that acquires and verifies the operation or state of the normal code, Protection code that exists in a safe environment can audit the operation of the entire program including protection code and normal code, and detect illegal operation of apps such as bypassing license checks and unauthorized privileged operations (library / system calls, etc.) Can be prevented.

このように、第1の実施の形態に係るプログラム分割装置及びプログラム実行装置によると、安全な環境内の保護コード自身がプログラム動作を監査でき、権限の奪取や改ざんによるプログラムの不正動作(ライセンス検査のバイパスや不許可のライブラリ呼び出し等)を検知、防止できる。又、プログラム提供者やユーザが、コード分割基準や保護コードの実行場所(セキュア仮想マシンや携帯機、耐タンパチップ等)を指定でき、多様なデバイス環境や異なるセキュリティポリシーに対応して、プログラムを安全に実行できる。   As described above, according to the program dividing apparatus and the program execution apparatus according to the first embodiment, the protection code itself in the safe environment can audit the program operation, and the illegal operation of the program due to the deprivation of authority or the alteration (license inspection). Can be detected and prevented). Program providers and users can specify code division criteria and protection code execution locations (secure virtual machines, portable devices, tamper-resistant chips, etc.), and programs can be executed in accordance with various device environments and different security policies. It can be executed safely.

<第2の実施の形態>
第1の実施の形態では、同一デバイス上の保護環境と通常環境の間で分割したプログラムを動作させていたが、第2の実施の形態では、別々のデバイス上に存在する保護環境と通常環境の間で保護コードと通常コードを連携実行させる。ここでは、ユーザの携帯機上の保護環境と、ラップトップPCや情報家電などの周辺デバイス上の通常環境の間で、分割したプログラムを動作させるものとする。
<Second Embodiment>
In the first embodiment, the program divided between the protection environment and the normal environment on the same device is operated. However, in the second embodiment, the protection environment and the normal environment existing on different devices are used. The protection code and the normal code are executed in a coordinated manner. Here, it is assumed that a divided program is operated between a protected environment on the user's portable device and a normal environment on a peripheral device such as a laptop PC or information appliance.

第2の実施の形態に係るプログラム実行装置は、図15に示すように、保護環境210と通常環境220が物理的に別のデバイス上に配置されると共に、複数プログラム実行環境管理部230a、230bは双方のデバイス上に配置され、協調して実行環境の隔離と制御を行う。   As shown in FIG. 15, in the program execution apparatus according to the second embodiment, the protection environment 210 and the normal environment 220 are physically arranged on different devices, and the multiple program execution environment management units 230a and 230b are arranged. Are located on both devices and cooperate to isolate and control the execution environment.

この異なるデバイス上に存在する保護環境と通常環境にプログラムを分割して実行するため、プログラム分割装置に、図3で示したポリシー2を渡して、通常コードと保護コードを生成させる。このポリシーにより、周辺デバイス上で動作する通常コードと、携帯機上で動作する保護コードが生成されると共に、通常コードには、携帯機に保護コードを導入する導入コードと携帯機上の保護コードを起動する起動コードが埋め込まれる。第1の実施の形態と同様に、図12の手順に従って保護コードが導入されるが、第1の実施の形態と異なるのは通常コードから保護コード管理部への要求が周辺デバイスと携帯機の間の通信路を通っていく点である。   In order to divide and execute the program into the protected environment and the normal environment existing on the different devices, the policy dividing unit shown in FIG. 3 is passed to the program dividing apparatus to generate the normal code and the protection code. This policy generates a normal code that runs on the peripheral device and a protection code that runs on the mobile device. The normal code includes an introduction code that introduces the protection code on the mobile device and a protection code on the mobile device. The activation code that activates is embedded. As in the first embodiment, the protection code is introduced according to the procedure of FIG. 12, but the difference from the first embodiment is that the request from the normal code to the protection code management unit is different between the peripheral device and the portable device. It is a point that goes through the communication path between.

第2の実施の形態に係るプログラム実行装置200によると、別々のデバイス上に保護環境と通常環境が存在しても、保護環境と通常環境の間で保護コードと通常コードを連携実行させることができる。   According to the program execution device 200 according to the second embodiment, even if the protection environment and the normal environment exist on different devices, the protection code and the normal code can be executed in cooperation between the protection environment and the normal environment. it can.

<第3の実施の形態>
第3の実施の形態として、プログラム実行装置に、外部からの盗聴や改ざんなどの攻撃に対して内部の秘密データや重要な処理を保護するための耐タンパハードウェアが組み込まれている場合を説明する。耐タンパハードウェアは、例えばSIM(Subscriber Information Module)のようなスマートカード(ICカード)やTrusted Computing Group(www.trustedcomputing)が仕様を規定しているTPM(Trusted Platform Module)を利用して実装することができる。
<Third Embodiment>
As a third embodiment, a case where a tamper resistant hardware for protecting internal secret data and important processing against attacks such as eavesdropping and tampering from the outside is incorporated in the program execution device will be described. To do. Tamper resistant hardware is implemented using smart cards (IC cards) such as SIM (Subscriber Information Module) and TPM (Trusted Platform Module) whose specifications are defined by Trusted Computing Group (www.trustedcomputing), for example. be able to.

第1の実施の形態との違いは、耐タンパ保護環境が付け加えられたため、プログラム分割装置100において、保護コードと通常コードと、耐タンパ保護コードの3つに分割する点と、プログラム実行装置において保護環境と通常環境、耐タンパ保護環境に分割して実行する点が異なる。   The difference from the first embodiment is that a tamper resistant protection environment has been added. Therefore, the program dividing apparatus 100 divides the protection code, the normal code, and the tamper resistant protection code into three parts, and the program execution apparatus. The difference is that it is divided into a protection environment, a normal environment, and a tamper resistant protection environment.

第3の実施の形態に係るプログラム分割装置は、図16に示すように、保護コード生成部130に耐タンパ保護コード生成部133が追加されている。耐タンパ保護コード生成部133は、耐タンパ保護環境で実行可能なコードを生成し、保護コードから呼び出し可能とする。通常コードに保護コードの起動や導入を制御するコードを組み込むように、保護コードに耐タンパ保護コードの起動や導入を制御するコードを組み込んでもよいし、保護コードと同様に耐タンパ保護コードに自己検証コードを組み込んでもよい。   In the program dividing apparatus according to the third embodiment, as shown in FIG. 16, a tamper resistant protection code generation unit 133 is added to the protection code generation unit 130. The tamper resistant protection code generation unit 133 generates a code that can be executed in a tamper resistant protection environment, and can be called from the protection code. Just like the code that controls the activation and introduction of the protection code, the code that controls the activation and introduction of the tamper-resistant protection code may be incorporated into the protection code. A verification code may be incorporated.

耐タンパ保護コード生成部133以外の機能については、第1の実施の形態と同様であるので、ここでは説明を省略する。   Since functions other than the tamper resistant protection code generation unit 133 are the same as those in the first embodiment, description thereof is omitted here.

第3の実施の形態に係るプログラム実行装置200は、図17に示すように、耐タンパ保護環境240を備える。上記のプログラム分割装置100によって生成された耐タンパ保護コードが、この耐タンパ保護環境で実行される。第1の実施の形態の保護コードの導入や起動手順と同様に、署名やハッシュの検証により導入や起動の可否を決定してもよい。   The program execution device 200 according to the third embodiment includes a tamper resistant protection environment 240 as shown in FIG. The tamper resistant protection code generated by the program dividing apparatus 100 is executed in this tamper resistant protected environment. Similar to the introduction and activation procedure of the protection code of the first embodiment, whether or not introduction or activation can be performed may be determined by verifying the signature or hash.

耐タンパ保護環境240を備えること以外は、第1の実施の形態と同様であるので、ここでは説明を省略する。   Since it is the same as that of 1st Embodiment except providing the tamper resistant protection environment 240, description is abbreviate | omitted here.

第3の実施の形態に係るプログラム分割装置100及びプログラム実行装置200によると、保護環境、通常環境に加え、耐タンパ保護環境に分割するため、多様なデバイス環境や異なるセキュリティポリシーに対応して、プログラムをより安全に実行することができる。   According to the program dividing apparatus 100 and the program execution apparatus 200 according to the third embodiment, in order to divide into a tamper-resistant protected environment in addition to a protected environment and a normal environment, it supports various device environments and different security policies. The program can be executed more safely.

第1の実施の形態に係るプログラム分割装置の構成ブロック図である。It is a block diagram of the configuration of the program dividing apparatus according to the first embodiment. 第1の実施の形態に係るプログラム分割装置が入力するソースコードの一例である。It is an example of the source code which the program division | segmentation apparatus concerning 1st Embodiment inputs. 第1の実施の形態に係るプログラム分割装置が入力するポリシーの一例である。It is an example of the policy which the program division | segmentation apparatus concerning 1st Embodiment inputs. 第1の実施の形態に係るプログラム分割装置が生成する通常コードの一例である。It is an example of the normal code which the program dividing device concerning a 1st embodiment generates. 第1の実施の形態に係るプログラム分割装置が生成する保護コードの一例である。It is an example of the protection code which the program dividing device concerning a 1st embodiment generates. 第1の実施の形態に係る保護コードが管理する変数管理テーブルの一例である。It is an example of the variable management table which the protection code which concerns on 1st Embodiment manages. 第1の実施の形態に係る保護コードが保持する呼び出しの履歴の一例である。It is an example of the log | history of the call which the protection code which concerns on 1st Embodiment hold | maintains. 第1の実施の形態に係るプログラム分割方法を示すフローチャートである。It is a flowchart which shows the program division | segmentation method concerning 1st Embodiment. 図8のステップS104の詳細を示すフローチャートである。It is a flowchart which shows the detail of step S104 of FIG. 図8のステップS105の詳細を示すフローチャートである。It is a flowchart which shows the detail of step S105 of FIG. 第1の実施の形態に係るプログラム実行装置の構成ブロック図である。1 is a configuration block diagram of a program execution device according to a first embodiment. FIG. 第1の実施の形態に係る保護コードの導入方法を示すフローチャートである。It is a flowchart which shows the introduction method of the protection code which concerns on 1st Embodiment. 第1の実施の形態に係る保護コードの起動方法を示すフローチャートである。It is a flowchart which shows the starting method of the protection code which concerns on 1st Embodiment. 第1の実施の形態に係る保護コード内の関数を呼び出す方法を示すフローチャートである。It is a flowchart which shows the method of calling the function in the protection code which concerns on 1st Embodiment. 第2の実施の形態に係るプログラム実行装置の構成ブロック図である。It is a block diagram of a configuration of a program execution device according to a second embodiment. 第3の実施形態に係わるプログラム分割装置の構成ブロック図である。It is a block diagram of the configuration of the program dividing apparatus according to the third embodiment. 第3の実施形態に係わるプログラム実行装置の構成ブロック図である。It is a block diagram of a configuration of a program execution device according to a third embodiment.

符号の説明Explanation of symbols

100…プログラム分割装置
110…ソースコード解析部
111…ソースコード入力部
112…ポリシー入力部
120…制御部
130…保護コード生成部
131…自己検証コード埋め込み部
132…通信保護部
133…耐タンパ保護コード生成部
140…通常コード生成部
141…起動制御コード埋め込み部
142…導入制御コード埋め込み部
143…通信保護部
200…プログラム実行装置
210…保護環境
212…保護コード管理部
213…保護起動部
214…保護導入部
215…署名検証部
220…通常環境
222…通常コード管理部
230…複数プログラム実行環境管理部
231…環境間監視制御部
232…環境間通信制御部
240…耐タンパ保護環境
DESCRIPTION OF SYMBOLS 100 ... Program division | segmentation apparatus 110 ... Source code analysis part 111 ... Source code input part 112 ... Policy input part 120 ... Control part 130 ... Protection code generation part 131 ... Self-verification code embedding part 132 ... Communication protection part 133 ... Tamper-proof protection code Generating unit 140 ... Normal code generating unit 141 ... Startup control code embedding unit 142 ... Installation control code embedding unit 143 ... Communication protection unit 200 ... Program execution device 210 ... Protected environment 212 ... Protected code management unit 213 ... Protection starting unit 214 ... Protection Introduction unit 215 ... Signature verification unit 220 ... Normal environment 222 ... Normal code management unit 230 ... Multiple program execution environment management unit 231 ... Inter-environment monitoring control unit 232 ... Inter-environment communication control unit 240 ... Tamper resistant protection environment

Claims (12)

1つのプログラムを、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割するプログラム分割装置であって、
分割コードの生成における規則を与えるポリシーをファイルシステムまたはネットワークから入力して、与えられたソースコードの保護が必要な関数と変数に保護属性を付与するソースコード解析部と、
前記ソースコード解析部によって前記保護属性が付与された関数を含む前記保護コードを生成する保護コード生成部と、
前記ソースコード解析部によって前記保護属性が付与されなかった関数と前記保護コードの関数を呼び出す関数を含む前記通常コードを生成する通常コード生成部と
を備え
前記保護コード生成部は、前記保護属性が付与された関数を内部で呼び出すラッパ関数と、前記通常コードからの呼び出しを受け付け処理する通信部と、保護が必要な変数を管理する変数管理部とを含む前記保護コードを生成し、
前記通常コード生成部は、前記保護属性が付与された関数の呼び出しを、前記保護コード内の対応する関数を呼び出すラッパ関数に置き換えると共に、前記保護属性が付与された変数を前記保護コード内の対応する変数のインデックスとして置き換えることによって前記通常コードを生成する
ことを特徴とするプログラム分割装置。
A program dividing apparatus that divides one program into protection code that requests execution in a protected execution environment and other normal code,
A source code analysis unit that inputs a policy that gives rules for generation of a divided code from a file system or a network, and assigns a protection attribute to a function and a variable that require protection of the given source code;
A protection code generating unit for generating the protection code that contains functions which the protection attribute is granted me by the source code analyzer,
And a normal code generation unit for generating the normal code comprising function that calls the function of the source code analyzer function and the protective code the protection attribute is not granted me by the,
The protection code generation unit includes a wrapper function that internally calls the function to which the protection attribute is assigned, a communication unit that receives and processes a call from the normal code, and a variable management unit that manages a variable that needs protection. Generating said protection code comprising:
The normal code generation unit replaces the call of the function assigned the protection attribute with a wrapper function that calls the corresponding function in the protection code, and the variable assigned the protection attribute corresponds to the correspondence in the protection code. The program dividing apparatus, characterized in that the normal code is generated by replacing it as an index of a variable to be performed.
前記ソースコード解析部は、
ファイシステムやネットワーク上のサーバ装置からプログラムのソースコードを入力するソースコード入力部と、
ソースコードを入力した装置とは同一あるいは別の装置上のファイルシステムやネットワーク上のサーバ装置からポリシーを入力するポリシー入力部と
を備えることを特徴とする請求項1に記載のプログラム分割装置。
The source code analysis unit
A source code input section for inputting a program source code from the server device on the file system or network,
The program dividing apparatus according to claim 1, further comprising: a policy input unit that inputs a policy from a file system on a device that is the same as or different from the device that has input the source code, or a server device on the network.
前記保護コード生成部は、前記ポリシーを利用して、前記保護コードと前記通常コードの少なくともいずれか1つの動作の検証を行うコードを生成し、前記保護コードに埋め込む自己検証コード埋め込み部を備えることを特徴とする請求項1又は2に記載のプログラム分割装置。   The protection code generation unit includes a self-verification code embedding unit that generates a code for verifying the operation of at least one of the protection code and the normal code using the policy, and embeds the code in the protection code. The program dividing apparatus according to claim 1, wherein: 前記通常コード生成部は、前記ポリシーを利用して、前記保護コードの起動を制御するコードを生成し、前記保護コードあるいは前記通常コードに埋め込む起動制御コード埋め込み部を備えることを特徴とする請求項1〜3のいずれか1項に記載のプログラム分割装置。   The normal code generation unit includes an activation control code embedding unit that generates a code for controlling activation of the protection code using the policy and embeds the code in the protection code or the normal code. The program dividing device according to any one of 1 to 3. 前記通常コード生成部は、前記ポリシーを利用して、前記保護コードの導入を制御するコードを生成し、前記通常コードに埋め込む導入制御コード埋め込み部を備えることを特徴とする請求項1〜4のいずれか1項に記載のプログラム分割装置。   The normal code generation unit includes an introduction control code embedding unit that generates a code for controlling the introduction of the protection code using the policy and embeds the code in the normal code. The program dividing device according to any one of the above. 前記保護コード生成部及び前記通常コード生成部は、認証と暗号化、改ざんの検査の少なくともいずれか一つの通信の保護機能を通信の関数に組み込む通信保護部を備えることを特徴とする請求項1〜5のいずれか1項に記載のプログラム分割装置。   The said protection code production | generation part and the said normal code production | generation part are provided with the communication protection part which incorporates the protection function of at least any one of authentication, encryption, and the inspection of tampering in the function of communication. The program dividing device according to any one of? 保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割されたプログラムの実行環境を提供するプログラム実行装置であって、
前記保護コードのための保護環境と前記通常コードのための通常環境との、2つの環境の隔離と制御を行う複数プログラム実行環境管理部と、
前記保護コードの導入及び起動を管理する保護コード管理部と、
前記通常コードの導入及び起動を管理する通常コード管理部と
備え
前記複数プログラム実行環境管理部は、前記保護コードが、前記通常コードの動作あるいは状態を取得し、検証する環境間監視制御部を備える
ことを特徴とするプログラム実行装置。
A program execution device that provides an execution environment for a program divided into protection code for requesting execution in a protected execution environment and other normal code,
A multiple program execution environment management unit that isolates and controls two environments, a protection environment for the protection code and a normal environment for the normal code;
A protection code management unit for managing the introduction and activation of the protection code;
A normal code management unit for managing the introduction and activation of the normal code ,
The program execution apparatus, wherein the multiple program execution environment management unit includes an inter-environment monitoring control unit that acquires and verifies the operation or state of the normal code as the protection code .
保護環境と通常環境はそれぞれ仮想マシンであり、
前記複数プログラム実行環境管理部は、仮想マシンの隔離と制御を行う仮想マシンモニタであることを特徴とする請求項7に記載のプログラム実行装置。
The protection environment and the normal environment are virtual machines,
The program execution apparatus according to claim 7, wherein the multiple program execution environment management unit is a virtual machine monitor that performs isolation and control of a virtual machine.
前記保護コード管理部は、
前記保護コードのデジタル署名を検証する署名検証部と、
前記署名検証部による署名の検証が成功した場合、前記保護コードを保護環境で実行可能に組み込む保護導入部と、
前記保護コードの完全性の検証に成功した場合、前記保護コードを起動する保護起動部と
を備えることを特徴とする請求項7又は8に記載のプログラム実行装置。
The protection code management unit
A signature verification unit for verifying a digital signature of the protection code;
If the signature verification by the signature verification unit is successful, a protection introduction unit that incorporates the protection code so as to be executable in a protected environment;
The program execution device according to claim 7, further comprising: a protection activation unit that activates the protection code when the verification of the integrity of the protection code is successful.
前記複数プログラム実行環境管理部は、前記保護コードと前記通常コードが安全に通信するための保護手段を提供する環境間通信制御部を備えることを特徴とする請求項7〜9のいずれか1項に記載のプログラム実行装置。   The said multiple program execution environment management part is equipped with the communication control part between environments which provides the protection means for the said protection code and the said normal code to communicate safely, The any one of Claims 7-9 characterized by the above-mentioned. The program execution device described in 1. 1つのプログラムを、保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割するプログラム分割装置におけるプログラム分割方法であって、
前記プログラム分割装置が、分割コードの生成における規則を与えるポリシーをファイルシステムまたはネットワークから入力して、与えられたソースコードの保護が必要な関数と変数に保護属性を付与するステップと、
前記プログラム分割装置が、前記保護属性を付与するステップにおいて前記保護属性が付与された関数を含む前記保護コードを生成するステップと、
前記プログラム分割装置が、前記保護属性を付与するステップにおいて前記保護属性が付与されなかった関数と前記保護コードの関数を呼び出す関数を含む前記通常コードを生成するステップと
を含み、
前記保護コードを生成するステップでは、前記保護属性が付与された関数を内部で呼び出すラッパ関数と、前記通常コードからの呼び出しを受け付け処理する通信部と、保護が必要な変数を管理する変数管理部とを含む前記保護コードを生成し、
前記通常コードを生成するステップでは、前記保護属性が付与された関数の呼び出しを、前記保護コード内の対応する関数を呼び出すラッパ関数に置き換えると共に、前記保護属性が付与された変数を前記保護コード内の対応する変数のインデックスとして置き換えることによって前記通常コードを生成する
ことを特徴とするプログラム分割方法。
A program dividing method in a program dividing apparatus that divides one program into protection code that requests execution in a protected execution environment and other normal code,
The program dividing apparatus inputs a policy that gives rules for generating a divided code from a file system or a network, and assigns a protection attribute to a function and a variable that require protection of the given source code;
The program dividing device generating the protection code including the function to which the protection attribute is given in the step of giving the protection attribute ;
The program dividing device, viewed contains and generating the normal code comprising function that calls the function of the protection attribute functions and the protective code the protection attribute is not granted in the step of imparting,
In the step of generating the protection code, a wrapper function that internally calls the function to which the protection attribute is given, a communication unit that receives and processes a call from the normal code, and a variable management unit that manages a variable that needs to be protected Generating the protection code including:
In the step of generating the normal code, the function call with the protection attribute is replaced with a wrapper function that calls a corresponding function in the protection code, and the variable with the protection attribute is replaced in the protection code. The program dividing method , wherein the normal code is generated by substituting as an index of a corresponding variable .
保護された実行環境での実行を要求する保護コードと、それ以外の通常コードに分割されたプログラムの実行環境を提供するプログラム実行装置におけるプログラム実行方法であって、
前記プログラム実行装置が、前記保護コードのための保護環境と前記通常コードのための通常環境との、2つの環境の隔離と制御を行うステップと、
前記プログラム実行装置が、前記保護コードの導入及び起動を管理するステップと、
前記プログラム実行装置が、前記通常コードの導入及び起動を管理するステップと
を含み、
前記隔離と制御を行うステップでは、前記保護コードが、前記通常コードの動作あるいは状態を取得し、検証することを特徴とするプログラム実行方法。
A program execution method in a program execution device that provides a protection code that requests execution in a protected execution environment and a program execution environment that is divided into other normal code,
The program execution device performing isolation and control of two environments, a protection environment for the protection code and a normal environment for the normal code;
The program execution device managing the introduction and activation of the protection code;
Said program execution device, viewed contains a step of managing the introduction and activation of the normal code,
In the step of performing isolation and control, the protection code acquires and verifies the operation or state of the normal code .
JP2004358724A 2004-12-10 2004-12-10 Program dividing device, program executing device, program dividing method, and program executing method Expired - Fee Related JP4664055B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004358724A JP4664055B2 (en) 2004-12-10 2004-12-10 Program dividing device, program executing device, program dividing method, and program executing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004358724A JP4664055B2 (en) 2004-12-10 2004-12-10 Program dividing device, program executing device, program dividing method, and program executing method

Publications (2)

Publication Number Publication Date
JP2006164184A JP2006164184A (en) 2006-06-22
JP4664055B2 true JP4664055B2 (en) 2011-04-06

Family

ID=36666102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004358724A Expired - Fee Related JP4664055B2 (en) 2004-12-10 2004-12-10 Program dividing device, program executing device, program dividing method, and program executing method

Country Status (1)

Country Link
JP (1) JP4664055B2 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4770425B2 (en) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 Program, method and apparatus for creating protected execution program
WO2008010508A1 (en) * 2006-07-18 2008-01-24 Panasonic Corporation Command generation device
JP4653230B2 (en) * 2008-09-22 2011-03-16 株式会社エヌ・ティ・ティ・ドコモ API inspection device and condition monitoring device
KR101049718B1 (en) * 2008-12-29 2011-07-19 에스케이 텔레콤주식회사 How to perform software separation, device, and computer-readable recording media
DE102009011679A1 (en) * 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Method and device for creating a user program for a safety control
KR101432989B1 (en) 2009-07-30 2014-08-27 에스케이플래닛 주식회사 System for providing code block for separating execution based contents, method thereof and computer recordable medium storing the method
KR101412465B1 (en) * 2009-07-30 2014-06-30 에스케이플래닛 주식회사 Verification system and verification method of code block for separating execution based contents
JP4886063B2 (en) * 2009-12-04 2012-02-29 株式会社エヌ・ティ・ティ・ドコモ Status notification device, status notification method, and program
KR101436536B1 (en) 2013-06-19 2014-09-01 숭실대학교산학협력단 File server, file transfer method thereof and file tamperproof system
KR101328012B1 (en) 2013-08-12 2013-11-13 숭실대학교산학협력단 Apparatus for tamper protection of application code and method thereof
KR101350390B1 (en) * 2013-08-14 2014-01-16 숭실대학교산학협력단 A apparatus for code obfuscation and method thereof
KR101490047B1 (en) * 2013-09-27 2015-02-04 숭실대학교산학협력단 Apparatus for tamper protection of application code based on self modification and method thereof
SG10201602449PA (en) * 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
KR101688814B1 (en) * 2016-07-11 2016-12-22 (주)케이사인 Application code hiding apparatus through modifying code in memory and method for hiding application code using the same
RU2638000C1 (en) 2017-02-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Method of monitoring execution system of programmable logic controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04163627A (en) * 1990-10-29 1992-06-09 Hitachi Ltd Program conversion method
JP2001337864A (en) * 2000-03-22 2001-12-07 Hitachi Ltd Access control system
JP2002353960A (en) * 2001-05-30 2002-12-06 Fujitsu Ltd Code performing device and code distributing method
JP2005528665A (en) * 2001-09-27 2005-09-22 インテル コーポレイション Methods for providing system integrity and legacy environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04163627A (en) * 1990-10-29 1992-06-09 Hitachi Ltd Program conversion method
JP2001337864A (en) * 2000-03-22 2001-12-07 Hitachi Ltd Access control system
JP2002353960A (en) * 2001-05-30 2002-12-06 Fujitsu Ltd Code performing device and code distributing method
JP2005528665A (en) * 2001-09-27 2005-09-22 インテル コーポレイション Methods for providing system integrity and legacy environments

Also Published As

Publication number Publication date
JP2006164184A (en) 2006-06-22

Similar Documents

Publication Publication Date Title
KR101067399B1 (en) Saving and retrieving data based on symmetric key encryption
KR100996784B1 (en) Saving and retrieving data based on public key encryption
KR100946042B1 (en) Tamper-resistant trusted virtual machine
JP5821034B2 (en) Information processing apparatus, virtual machine generation method, and application distribution system
US7181603B2 (en) Method of secure function loading
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US20110289294A1 (en) Information processing apparatus
JP4844102B2 (en) Subprogram and information processing apparatus for executing the subprogram
JP4664055B2 (en) Program dividing device, program executing device, program dividing method, and program executing method
US20050198645A1 (en) Run-time call stack verification
KR20040094724A (en) Multi-token seal and unseal
CN111159658B (en) Byte code processing method, system, device, computer equipment and storage medium
JP4978896B2 (en) Communication terminal device, server terminal device, and communication system using them
US7552092B2 (en) Program distribution method and system
JP2007233426A (en) Application execution device
JP6951375B2 (en) Information processing equipment, information processing methods and programs
WO2013039527A1 (en) Security mechanism for developmental operating systems
KR101203722B1 (en) Apparatus and method for data protection
Lee et al. Classification and analysis of security techniques for the user terminal area in the internet banking service
CN112507302B (en) Calling party identity authentication method and device based on execution of cryptographic module
WO2023089668A1 (en) Method, device, and program for generating secret calculation execution environment
Halpin A Roadmap for High Assurance Cryptography
CN112860306A (en) File generation method and device, file operation method and device, and electronic equipment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees