[go: up one dir, main page]

JP2011081654A - Information processor, program protection system, program protection method and program - Google Patents

Information processor, program protection system, program protection method and program Download PDF

Info

Publication number
JP2011081654A
JP2011081654A JP2009234251A JP2009234251A JP2011081654A JP 2011081654 A JP2011081654 A JP 2011081654A JP 2009234251 A JP2009234251 A JP 2009234251A JP 2009234251 A JP2009234251 A JP 2009234251A JP 2011081654 A JP2011081654 A JP 2011081654A
Authority
JP
Japan
Prior art keywords
program
virtual machine
encrypted
storage means
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009234251A
Other languages
Japanese (ja)
Inventor
Takuya Araki
拓也 荒木
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009234251A priority Critical patent/JP2011081654A/en
Publication of JP2011081654A publication Critical patent/JP2011081654A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide an information processor for reducing the burden on a program distributor and preventing a decrypted program from being altered or illegally analyzed without using special hardware. <P>SOLUTION: The information processor includes: a program storage means for storing a program for virtual machine generation which is obfuscated by complicating the program while keeping functions to be achieved when the program is executed;and a generation means for generating a virtual machine by executing the program for the virtual machine generation in the program storage means. The virtual machine includes a storage means for storing a decryption key, and a processing means for decrypting an encrypted program using the decryption key in the storage means when receiving the encrypted program and executing the decrypted program. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

本発明は、情報処理装置、プログラム保護システム、プログラム保護方法およびプログラムに関し、特には、プログラムを保護できる情報処理装置、プログラム保護システム、プログラム保護方法およびプログラムに関する。   The present invention relates to an information processing apparatus, a program protection system, a program protection method, and a program, and more particularly to an information processing apparatus, a program protection system, a program protection method, and a program that can protect a program.

ユーザにて使用されるコンピュータが、サーバ等のコンピュータから配布されたプログラムを受信し、そのプログラムを実行することがある。   A computer used by a user may receive a program distributed from a computer such as a server and execute the program.

この場合、ユーザが悪意を有していると、配布されたプログラムは、そのユーザによって改変される可能性がある。例えば、プログラムを違法コピーから保護する処理がスキップされたり、オンラインゲームにおいて不正に得点が上がるように、ユーザはプログラムを改変する可能性がある。   In this case, if the user has malicious intent, the distributed program may be altered by the user. For example, the user may modify the program so that the process of protecting the program from illegal copying is skipped or the score is raised illegally in an online game.

また、ユーザにプログラムの内容が知られてしまうと、そのプログラムで用いられている技術が流出する可能性がある。   Moreover, if the contents of the program are known to the user, the technology used in the program may be leaked.

非特許文献1には、悪意のあるユーザからプログラムを保護するためのプログラム保護システムが記載されている。   Non-Patent Document 1 describes a program protection system for protecting a program from a malicious user.

このプログラム保護システムは、プログラムに難読化処理を施すことによって、プログラムを保護する。難読化処理は、プログラムが実行された際に実現される機能を保ったまま、そのプログラムを複雑化する処理であり、暗号化処理とは異なる。このため、難読化処理が施されたプログラムの解析は困難になる。   This program protection system protects a program by performing an obfuscation process on the program. The obfuscation process is a process that complicates the program while maintaining the function realized when the program is executed, and is different from the encryption process. This makes it difficult to analyze a program that has been obfuscated.

特許文献1には、プログラムを保護するプログラム実行装置が記載されている。   Patent Literature 1 describes a program execution device that protects a program.

このプログラム実行装置は、プログラム鍵を用いて暗号化されたプログラムと、マスタ鍵を用いて暗号化されたプログラム鍵と、を受け付けて格納する。   The program execution device accepts and stores a program encrypted using a program key and a program key encrypted using a master key.

そして、プログラムを実行する状況になると、プログラム実行装置は、暗号化されたプログラム鍵を、マスタ鍵を用いて復号する。続いて、プログラム実行装置は、暗号化されたプログラムを、復号されたプログラム鍵を用いて復号し、復号されたプログラムを実行する。   When the program is executed, the program execution device decrypts the encrypted program key using the master key. Subsequently, the program execution device decrypts the encrypted program using the decrypted program key, and executes the decrypted program.

このプログラム実行装置は、暗号化されたプログラムと暗号化されたプログラム鍵とを格納することによって、プログラムを保護する。   The program execution device protects the program by storing the encrypted program and the encrypted program key.

特許文献2には、内部にプロセッサ固有鍵を秘匿可能なプロセッサという特殊なハードウェアを用いることによって、プログラムを保護するデータ利用装置が記載されている。   Patent Document 2 describes a data utilization device that protects a program by using special hardware called a processor that can conceal a processor unique key.

このデータ利用装置は、コンテンツ鍵を用いて暗号化されたプログラムと、コンテンツ鍵と、を受信すると、プロセッサ固有鍵を用いてコンテンツ鍵を暗号化し、暗号化されたプログラムと、暗号化されたコンテンツ鍵と、を格納する。   When the data utilization apparatus receives the program encrypted using the content key and the content key, the data utilization device encrypts the content key using the processor specific key, and encrypts the encrypted program and the encrypted content. Store the key.

そして、プログラムを実行する状況になると、データ利用装置内のプロセッサは、暗号化されたコンテンツ鍵を、プロセッサ固有鍵を用いて、プロセッサ内部で復号する。続いて、このプロセッサは、暗号化されたプログラムを、復号されたコンテンツ鍵を用いて、プロセッサ内部で復号し、復号されたプログラムを、プロセッサが有する内部メモリに配置し、そのプログラムを実行する。   Then, when the program is executed, the processor in the data utilization device decrypts the encrypted content key using the processor unique key. Subsequently, the processor decrypts the encrypted program inside the processor using the decrypted content key, places the decrypted program in an internal memory of the processor, and executes the program.

このデータ利用装置は、暗号化されたプログラムと暗号化されたコンテンツ鍵とを格納し、さらに、復号されたプログラムを、プロセッサの外には出力しないことによって、プログラムを保護する。   This data utilization device stores the encrypted program and the encrypted content key, and further protects the program by not outputting the decrypted program to the outside of the processor.

特開2005−100378号公報Japanese Patent Laid-Open No. 2005-100378 特開2004−272594号公報JP 2004-272594 A

「耐タンパ技術」[online]、特許庁、[2009年6月4日検索]、インターネット<URL http://www.jpo.go.jp/shiryou/s#sonota/hyoujun#gijutsu/info#sec#tech/f-2-2.html >"Tamper resistant technology" [online], JPO, [Search June 4, 2009], Internet <URL http://www.jpo.go.jp/shiryou/s#sonota/hyoujun#gijutsu/info#sec # tech / f-2-2.html>

非特許文献1に記載のプログラム保護システムが利用された場合、プログラム配布者自身が、プログラムを難読化しなければならない。プログラムを難読化するには、プログラミング言語に応じた専用のツールが必要であり、プログラムを難読化することは容易ではない。このため、プログラム配布者の負担が大きいという課題があった。   When the program protection system described in Non-Patent Document 1 is used, the program distributor must obfuscate the program. In order to obfuscate the program, a dedicated tool corresponding to the programming language is required, and it is not easy to obfuscate the program. For this reason, there is a problem that the burden on the program distributor is large.

特許文献1に記載の技術では、暗号化技術が使用されることにより、プログラム配布者がプログラムを難読化するという負担をなくすことが可能になる。しかしながら、特許文献1には、プログラムを実行する際に復号されたプログラムに対する保護については記載されていないため、プログラムを実行する際に復号されたプログラムが改変されたり不正に解析されたりする可能性が生じるという課題があった。   With the technique described in Patent Document 1, it is possible to eliminate the burden of the program distributor obfuscating the program by using the encryption technique. However, since Patent Document 1 does not describe protection for a program decrypted when the program is executed, the decrypted program may be altered or illegally analyzed when the program is executed. There was a problem that occurred.

特許文献2に記載の技術では、暗号化技術が使用されることにより、プログラム配布者がプログラムを難読化するという負担をなくすことが可能になる。さらに、特許文献2に記載の技術では、暗号されたプログラムの復号処理をプロセッサ内で行い、復号されたプログラムをプロセッサの外には出力しないことによって、復号されたプログラムが改変されたり不正に解析されたりする可能性を低くできる。   With the technique described in Patent Document 2, it is possible to eliminate the burden that the program distributor obfuscates the program by using the encryption technique. Further, in the technique described in Patent Document 2, the decrypted program is decrypted in the processor, and the decrypted program is not output to the outside of the processor, so that the decrypted program is altered or illegally analyzed. It is possible to reduce the possibility of being.

しかしながら、特許文献2に記載の技術では、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止するために、内部にプロセッサ固有鍵を秘匿可能なプロセッサという特殊なハードウェアを使用しなければならないという課題があった。   However, in the technique described in Patent Document 2, the processor unique key can be concealed in order to reduce the burden on the program distributor and prevent the decrypted program from being altered or illegally analyzed. There is a problem that special hardware called a processor must be used.

なお、非特許文献1および特許文献1には、上記課題が生じるための前提となる技術、具体的には、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止する技術が記載されていない。   In Non-Patent Document 1 and Patent Document 1, the technology that is the premise for the above problem to occur, specifically, the burden on the program distributor is reduced, and the decrypted program is modified or illegally analyzed. There is no description of a technique for preventing this.

このため、非特許文献1に記載の技術および特許文献1に記載の技術では、当然のことながら、上記課題、つまり、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止するために、内部にプロセッサ固有鍵を秘匿可能なプロセッサという特殊なハードウェアを使用しなければならないという課題は解決されていない。   For this reason, the technique described in Non-Patent Document 1 and the technique described in Patent Document 1 naturally reduce the above problem, that is, the burden on the program distributor, and the decrypted program may be altered or illegal. However, the problem that special hardware called a processor capable of concealing the processor unique key must be used has not been solved.

本発明の目的は、上述した課題を解決可能な、情報処理装置、プログラム保護システム、プログラム保護方法およびプログラムを提供することにある。   The objective of this invention is providing the information processing apparatus, program protection system, program protection method, and program which can solve the subject mentioned above.

本発明の情報処理装置は、プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムを記憶するプログラム記憶手段と、前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成手段と、を含み、前記仮想マシンは、復号用鍵を記憶する記憶手段と、暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理手段と、を含む。   The information processing apparatus of the present invention stores a program for generating a virtual machine that has been subjected to an obfuscation process that is a process of complicating the program while maintaining a function that is realized when the program is executed. Generating means for generating a virtual machine by executing a virtual machine generation program in the program storage means, wherein the virtual machine stores storage means for storing a decryption key, and an encrypted program And processing means for decrypting the encrypted program using the decryption key in the storage means and executing the decrypted program.

本発明のプログラム保護システムは、上記情報処理装置と、前記情報処理装置内の処理手段に前記暗号化されたプログラムを送信する送信装置と、を含む。   The program protection system of the present invention includes the information processing apparatus and a transmission apparatus that transmits the encrypted program to processing means in the information processing apparatus.

本発明のプログラム保護方法は、情報処理装置でのプログラム保護方法であって、プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムをプログラム記憶手段に記憶するプログラム記憶ステップと、前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成ステップと、復号用鍵を前記仮想マシン内の記憶手段に記憶する記憶ステップと、前記仮想マシンが、暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理ステップと、を含む。   The program protection method of the present invention is a program protection method in an information processing apparatus, and is subjected to an obfuscation process that is a process of complicating the program while maintaining a function realized when the program is executed. A program storage step for storing the virtual machine generation program in the program storage means, a generation step for generating a virtual machine by executing the virtual machine generation program in the program storage means, and a decryption key for the virtual machine A storage step of storing in the storage means, and when the virtual machine receives the encrypted program, the encrypted program is decrypted using the decryption key in the storage means, and the decrypted And a processing step for executing the program.

本発明のプログラムは、コンピュータに、プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムをプログラム記憶手段に記憶するプログラム記憶手順と、前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成手順と、復号用鍵を前記仮想マシン内の記憶手段に記憶する記憶手順と、前記仮想マシンが、暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理手順と、を実行させる。   The program according to the present invention stores, in a program storage unit, a virtual machine generation program that has been subjected to an obfuscation process, which is a process that complicates the program while maintaining the functions realized when the program is executed. A program storing procedure for storing, a generating procedure for generating a virtual machine by executing a virtual machine generating program in the program storing means, a storing procedure for storing a decryption key in the storing means in the virtual machine, When the virtual machine receives an encrypted program, the virtual machine decrypts the encrypted program using a decryption key in the storage unit, and executes a processing procedure for executing the decrypted program Let

本発明によれば、内部にプロセッサ固有鍵を秘匿可能なプロセッサという特殊なハードウェアを使用することなく、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止することが可能になる。   According to the present invention, the burden on the program distributor is reduced without using special hardware such as a processor capable of concealing the processor unique key, and the decrypted program is modified or illegally analyzed. It becomes possible to prevent that.

本発明の第1実施形態の構成を示すブロック図である。It is a block diagram which shows the structure of 1st Embodiment of this invention. 第1実施形態の動作を示す流れ図である。It is a flowchart which shows operation | movement of 1st Embodiment. 本発明の第2実施形態の構成を示すプロック図である。It is a block diagram which shows the structure of 2nd Embodiment of this invention. 本発明の第3実施形態の構成を示すプロック図である。It is a block diagram which shows the structure of 3rd Embodiment of this invention.

次に、本発明を実施するための形態について図面を参照して詳細に説明する。   Next, embodiments for carrying out the present invention will be described in detail with reference to the drawings.

(第1実施形態)
図1は、本発明の第1実施形態のプログラム保護システムを示したブロック図である。
(First embodiment)
FIG. 1 is a block diagram showing a program protection system according to the first embodiment of the present invention.

図1において、プログラム保護システムは、クライアントマシン100と、プログラム配布者装置150と、を含む。   In FIG. 1, the program protection system includes a client machine 100 and a program distributor device 150.

クライアントマシン100は、一般的に情報処理装置と呼ぶことができる。   Client machine 100 can generally be referred to as an information processing apparatus.

クライアントマシン100は、プログラム記憶部101と、生成部102と、仮想マシン103と、仮想ディスク104と、ホストOS105と、物理メモリ106と、を含む。   The client machine 100 includes a program storage unit 101, a generation unit 102, a virtual machine 103, a virtual disk 104, a host OS 105, and a physical memory 106.

プログラム記憶部101は、一般的にプログラム記憶手段と呼ぶことができる。   Program storage unit 101 can generally be referred to as program storage means.

プログラム記憶部101は、難読化処理が施された仮想マシン生成用プログラムを記憶する。難読化処理とは、プログラムが実行された際に実現される機能を保ったまま、そのプログラムを複雑化する処理を意味する。   The program storage unit 101 stores a virtual machine generation program that has been obfuscated. The obfuscation process means a process for complicating the program while maintaining a function realized when the program is executed.

難読化処理として、例えば、非特許文献1に記載された技術が用いられる。なお、難読化処理は、非特許文献1に記載された技術に限らず適宜変更可能である。例えば、難読化処理として、プログラム言語で記述されたプログラムを、コンピュータが実行できる機械語に変換する処理が用いられてもよい。   As the obfuscation process, for example, the technique described in Non-Patent Document 1 is used. The obfuscation process is not limited to the technique described in Non-Patent Document 1, and can be changed as appropriate. For example, as the obfuscation process, a process of converting a program described in a program language into a machine language that can be executed by a computer may be used.

また、プログラム記憶部101は、仮想ディスク生成用プログラムを記憶する。   The program storage unit 101 stores a virtual disk generation program.

生成部102は、一般的に生成手段と呼ぶことができる。   Generation unit 102 can generally be referred to as generation means.

生成部102は、プログラム記憶部101内の仮想マシン生成用プログラムを実行することによって、クライアントマシン100内に仮想マシン103を生成する。   The generation unit 102 generates a virtual machine 103 in the client machine 100 by executing a virtual machine generation program in the program storage unit 101.

また、生成部102は、プログラム記憶部101内の仮想ディスク生成用プログラムを実行することによって、クライアントマシン100内に仮想ディスク104を生成する。   In addition, the generation unit 102 generates a virtual disk 104 in the client machine 100 by executing a virtual disk generation program in the program storage unit 101.

仮想マシン103には、鍵103a1が埋め込まれている。なお、鍵103a1は、復号用鍵と呼ぶことができる。   A key 103a1 is embedded in the virtual machine 103. The key 103a1 can be called a decryption key.

仮想マシン103は、難読化処理が施された仮想マシン生成用プログラムに従って生成されているため、クライアントマシン100を利用するユーザが鍵103a1を取得することは非常に困難である。   Since the virtual machine 103 is generated according to a virtual machine generation program that has been obfuscated, it is very difficult for a user using the client machine 100 to acquire the key 103a1.

仮想ディスク104は、仮想マシン103用のディスクである。仮想ディスク104は、仮想マシン103用のOS(Operating System)104aと、鍵104bと、を格納する。鍵104bは、公開鍵暗号用の鍵であり、公開鍵104b1と秘密鍵104b2とから構成される。通常のPKI(Public Key Infrastructure)と同様、公開鍵104b1には署名が施されており、ユーザは、この署名を確認することで、公開鍵104b1が正規の公開鍵であるか否かを確認できる。   The virtual disk 104 is a disk for the virtual machine 103. The virtual disk 104 stores an OS (Operating System) 104a for the virtual machine 103 and a key 104b. The key 104b is a key for public key encryption, and includes a public key 104b1 and a secret key 104b2. Similar to a normal PKI (Public Key Infrastructure), the public key 104b1 is signed, and the user can confirm whether the public key 104b1 is a regular public key by confirming the signature. .

OS104aと鍵104bは、仮想マシン103内の鍵103a1にて暗号化された状態で、仮想ディスク104に格納されている。   The OS 104 a and the key 104 b are stored in the virtual disk 104 in a state encrypted with the key 103 a 1 in the virtual machine 103.

鍵104bは暗号化されているため、クライアントマシン100のユーザは、暗号化されていない鍵104bを直接取得することはできない。   Since the key 104b is encrypted, the user of the client machine 100 cannot directly acquire the unencrypted key 104b.

さらに言えば、クライアントマシン100のユーザは、鍵103a1を取得できないので、仮想ディスク104に格納された情報(OS104aと鍵104b)を正確に認識することはできない。   Furthermore, since the user of the client machine 100 cannot obtain the key 103a1, the information (OS 104a and key 104b) stored in the virtual disk 104 cannot be accurately recognized.

仮想マシン103は、記憶部103aと、復号部103bと、ゲストOS103cと、仮想メモリ103dと、仮想MMU(Memory Management Unit)103eと、を含む。なお、復号部103bとゲストOS103cとは、処理部103fに含まれる。   The virtual machine 103 includes a storage unit 103a, a decryption unit 103b, a guest OS 103c, a virtual memory 103d, and a virtual MMU (Memory Management Unit) 103e. The decryption unit 103b and the guest OS 103c are included in the processing unit 103f.

記憶部103aは、一般的に記憶手段と呼ぶことができる。記憶部103aは、鍵103a1と、乱数103a2と、を記憶する。   Storage unit 103a can generally be referred to as storage means. The storage unit 103a stores a key 103a1 and a random number 103a2.

復号部103bは、仮想マシン103および仮想ディスク104が生成部102によって生成されると、記憶部103a内の鍵103a1を利用して、仮想ディスク104内の情報(OS104aと鍵104b)を復号する。続いて、復号部103bは、仮想ディスク104内のOS104aを読み取り実行して、ゲストOS103cを起動する。   When the virtual machine 103 and the virtual disk 104 are generated by the generation unit 102, the decryption unit 103b decrypts information (OS 104a and key 104b) in the virtual disk 104 using the key 103a1 in the storage unit 103a. Subsequently, the decryption unit 103b reads and executes the OS 104a in the virtual disk 104 and activates the guest OS 103c.

ゲストOS103cは、プログラム配布者装置150から、暗号化済プログラム151を受信すると、復号部103bにて復号された鍵104bを用いて、暗号化済プログラム151を復号して、復号済プログラム141を生成し、復号済プログラム141を実行する。   When the guest OS 103c receives the encrypted program 151 from the program distributor device 150, the guest OS 103c decrypts the encrypted program 151 using the key 104b decrypted by the decryption unit 103b, and generates a decrypted program 141. Then, the decrypted program 141 is executed.

本実施形態では、プログラム配布者装置150は、公開鍵104b1を用いて、プログラム152を暗号化して暗号化済プログラム151を生成する。このため、ゲストOS103cは、暗号化済プログラム151を受信すると、秘密鍵104b2を用いて、暗号化済プログラム151を復号する。   In the present embodiment, the program distributor device 150 encrypts the program 152 using the public key 104b1 to generate the encrypted program 151. Therefore, when the guest OS 103c receives the encrypted program 151, the guest OS 103c decrypts the encrypted program 151 using the secret key 104b2.

なお、プログラム配布者装置150は、暗号化の方式として、公開鍵方式ではなく、公開鍵方式と共通鍵方式とを利用したハイブリッド方式を用いてもよい。   Note that the program distributor 150 may use a hybrid method using a public key method and a common key method instead of the public key method as an encryption method.

この場合、プログラム配布者装置150は、共通鍵を生成し、その共通鍵でプログラム152を暗号化して暗号化済プログラム151を生成する。プログラム配布者装置150は、さらに、その共通鍵を公開鍵104b1で暗号化する。プログラム配布者装置150は、暗号化済プログラム151と、共通鍵を公開鍵104b1で暗号化したものと、をゲストOS103cに送信する。   In this case, the program distributor device 150 generates a common key, encrypts the program 152 with the common key, and generates an encrypted program 151. The program distributor 150 further encrypts the common key with the public key 104b1. The program distributor device 150 transmits the encrypted program 151 and the common key encrypted with the public key 104b1 to the guest OS 103c.

ゲストOS103cは、公開鍵104b1を用いて暗号化された共通鍵を、秘密鍵104b2を用いて復号し、その復号された共通鍵を用いて、暗号化済プログラム151を復号化して、復号済プログラム141を生成する。   The guest OS 103c decrypts the common key encrypted using the public key 104b1 using the private key 104b2, decrypts the encrypted program 151 using the decrypted common key, and decrypts the decrypted program 141 is generated.

この場合、プログラムの暗号化および復号化の計算量を削減することができる。   In this case, the amount of calculation for encryption and decryption of the program can be reduced.

なお、ゲストOS103cは、仮想メモリ103d上で、暗号化済プログラム151を復号し、仮想メモリ103d内のサンドボックス103d1で、復号済プログラム141を実行する。   The guest OS 103c decrypts the encrypted program 151 on the virtual memory 103d, and executes the decrypted program 141 on the sandbox 103d1 in the virtual memory 103d.

サンドボックス103d1は、復号済プログラム141が、ゲストOS103c上の他の領域にアクセスできないようにするために使用される。Linux(登録商標)の場合、Linux-VserverやOpenVZ等が、サンドボックス103d1に相当する。   The sandbox 103d1 is used to prevent the decrypted program 141 from accessing other areas on the guest OS 103c. In the case of Linux (registered trademark), Linux-Vserver, OpenVZ, and the like correspond to the sandbox 103d1.

サンドボックス103d1を用いることにより、もし、復号済プログラム141にコンピュータウィルスが組み込まれていたとしても、コンピュータウィルスが、ほかの復号済プログラムにアクセスして、その内容を変更したり、その内容を取得したりすることはできない。   By using the sandbox 103d1, even if a computer virus is incorporated in the decrypted program 141, the computer virus accesses another decrypted program to change its contents or acquire its contents. You can't do it.

本実施形態では、仮想マシン103は、ゲストOS103cを実行するために、仮想ディスク104だけではなく、クライアントマシン100内の物理メモリ106も利用する。なお、物理メモリ106は、複数の物理領域(ページ)に分割されている。   In this embodiment, the virtual machine 103 uses not only the virtual disk 104 but also the physical memory 106 in the client machine 100 in order to execute the guest OS 103c. The physical memory 106 is divided into a plurality of physical areas (pages).

物理メモリ106に格納された情報を、悪意のあるユーザが見ることで、悪意のあるユーザが、仮想マシン103で実行中のプログラムの内容を変更したり、仮想マシン103で実行中のプログラムの内容を取得したりできるかも知れない。   By viewing the information stored in the physical memory 106 by a malicious user, the malicious user changes the content of the program being executed in the virtual machine 103 or the content of the program being executed by the virtual machine 103. Or you might be able to get

これを防ぐため、仮想マシン103内の仮想MMU103eは、以下のように動作する。なお、仮想MMU103eは、一般的にメモリ管理手段と呼ぶことができる。   In order to prevent this, the virtual MMU 103e in the virtual machine 103 operates as follows. Note that the virtual MMU 103e can be generally referred to as memory management means.

MMUとは、OS内で動作するプロセスのメモリアドレス(仮想メモリ103dのメモリアドレス)を、物理的なメモリアドレス(物理メモリ106のメモリアドレス)に変換するハードウェアであり、仮想マシン103内にも、仮想ハードウェア(仮想MMU103e)として存在する。メモリアドレスの変換は、ページと呼ばれる単位で変換される。   The MMU is hardware that converts a memory address of a process operating in the OS (memory address of the virtual memory 103 d) into a physical memory address (memory address of the physical memory 106). And exist as virtual hardware (virtual MMU 103e). The memory address is converted in units called pages.

なお、仮想メモリ103dは、複数の仮想領域(ページ)に分割され、仮想領域のそれぞれは、物理メモリ106の複数の物理領域のいずれかに、記憶部103a内の乱数103a2に基づいて対応づけられている。   The virtual memory 103d is divided into a plurality of virtual areas (pages), and each of the virtual areas is associated with one of the plurality of physical areas of the physical memory 106 based on the random number 103a2 in the storage unit 103a. ing.

仮想MMU103eは、ゲストOS103c内のプロセスが利用するメモリアドレスを、ホストOS105から取得したメモリアドレスに変換する。例えば、仮想MMU103eは、ゲストOS103cが仮想メモリ103dのアドレスにアクセスする際、そのアドレスを、そのアドレスを有する仮想領域に対応づけられた物理領域のアドレスに変換し、その物理領域のアドレスを用いて、物理メモリ106にアクセスする。   The virtual MMU 103e converts a memory address used by a process in the guest OS 103c into a memory address acquired from the host OS 105. For example, when the guest OS 103c accesses the address of the virtual memory 103d, the virtual MMU 103e converts the address into an address of a physical area associated with the virtual area having the address, and uses the address of the physical area. The physical memory 106 is accessed.

ここで、仮想MMU103eは、このアドレス変換を、記憶部103a内の乱数103a2を用いて行う。このため、ホストOS105上の物理メモリ106をページ単位で入れ替えないと、ゲストOS103c内のプロセスが利用している仮想メモリ103d内の情報を正確に得ることはできない。   Here, the virtual MMU 103e performs this address conversion using the random number 103a2 in the storage unit 103a. For this reason, unless the physical memory 106 on the host OS 105 is replaced in units of pages, information in the virtual memory 103d used by processes in the guest OS 103c cannot be obtained accurately.

変換に用いられた乱数103a2は、仮想マシン103内にしか存在しない。このため、利用ページ数が十分に多い場合、悪意のあるユーザが、物理メモリ106内の情報からゲストOS103c内で動作するプロセスの仮想メモリ103d内の情報を復元することを、十分に困難にすることができる。   The random number 103 a 2 used for the conversion exists only in the virtual machine 103. Therefore, when the number of used pages is sufficiently large, it is difficult for a malicious user to restore the information in the virtual memory 103d of the process operating in the guest OS 103c from the information in the physical memory 106. be able to.

処理部103fは、一般的に処理手段と呼ぶことができる。   Processing unit 103f can be generally referred to as processing means.

処理部103fは、暗号化済プログラム151を受信すると、暗号化済プログラム151を、記憶部103a内の鍵103a1を利用して復号し、その復号されたプログラム141を実行する。本実施形態では、処理部103fは、仮想ディスク104内の暗号化された鍵104bを、記憶部103a内の鍵103a1を用いて復号し、暗号化済プログラム151を、その復号された鍵104bを用いて復号し、復号済プログラム141を実行する。   When receiving the encrypted program 151, the processing unit 103f decrypts the encrypted program 151 using the key 103a1 in the storage unit 103a, and executes the decrypted program 141. In the present embodiment, the processing unit 103f decrypts the encrypted key 104b in the virtual disk 104 using the key 103a1 in the storage unit 103a, and converts the encrypted program 151 into the decrypted key 104b. The decrypted program 141 is executed.

プログラム配布者装置150は、一般的に送信装置と呼ぶことができる。   Program distributor device 150 can generally be referred to as a transmitting device.

プログラム配布者装置150は、プログラム152を配布する際、公開鍵104b1をゲストOS103cから取得する。プログラム配布者装置150は、公開鍵104b1が正規の公開鍵であることを確認した後、暗号化部150aで、プログラム152を公開鍵104b1で暗号化して、暗号化済プログラム151を生成する。   When distributing the program 152, the program distributor device 150 acquires the public key 104b1 from the guest OS 103c. After confirming that the public key 104b1 is a legitimate public key, the program distributor device 150 encrypts the program 152 with the public key 104b1 by the encryption unit 150a to generate the encrypted program 151.

プログラム配布者装置150は、暗号化済プログラム151をゲストOS103cに送信する。暗号化済プログラム151は、ユーザに取得されても復号化できないので、見られてもよい。   The program distributor device 150 transmits the encrypted program 151 to the guest OS 103c. The encrypted program 151 may be viewed because it cannot be decrypted even if acquired by the user.

次に、動作を説明する。   Next, the operation will be described.

図2は、本実施形態の全体の動作を説明するためのフローチャートである。   FIG. 2 is a flowchart for explaining the overall operation of the present embodiment.

まず、クライアントマシン100では、仮想マシン103および仮想ディスク104が生成部102によって生成されると、仮想マシン103内の復号部103bが、鍵103a1を用いて、仮想ディスク104内の情報を復号化し、その復号された情報(OS104a)を用いて、ゲストOS103cを起動する(ステップ200)。   First, in the client machine 100, when the virtual machine 103 and the virtual disk 104 are generated by the generation unit 102, the decryption unit 103b in the virtual machine 103 decrypts the information in the virtual disk 104 using the key 103a1, The guest OS 103c is activated using the decrypted information (OS 104a) (step 200).

続いて、ゲストOS103cは、プログラム配布者装置150に対し、公開鍵104b1を渡し、プログラムの配布を要求する(ステップ201)。   Subsequently, the guest OS 103c passes the public key 104b1 to the program distributor device 150 and requests distribution of the program (step 201).

プログラム配布者装置150は、クライアントマシン100上のゲストOS103cから公開鍵104b1を受け取り(ステップ210)、公開鍵104b1の署名の正当性確認し、さらに、公開鍵104b1が、漏洩した秘密鍵に対応する公開鍵でないことを確認する(ステップ211)。   The program distributor device 150 receives the public key 104b1 from the guest OS 103c on the client machine 100 (step 210), confirms the validity of the signature of the public key 104b1, and the public key 104b1 corresponds to the leaked secret key. It is confirmed that it is not a public key (step 211).

もし署名が正当でない、あるいは、その公開鍵104b1が、漏洩した秘密鍵に対応する公開鍵であれば、プログラム配布者装置150は、エラー処理を行う(ステップ212)。   If the signature is not valid or the public key 104b1 is a public key corresponding to the leaked secret key, the program distributor device 150 performs error processing (step 212).

そうでない場合、プログラム配布者装置150は、公開鍵104b1でプログラム152を暗号化して、暗号化済プログラム151を生成する(ステップ213)。なお、プログラム配布者装置150が、暗号化の方式として、ハイブリッド方式を用いる場合には、プログラム配布者装置150は、ステップ213で、任意に共通鍵を作成し、この共通鍵を用いてプログラム152を暗号化した上、その共通鍵を公開鍵104b1で暗号化する。   Otherwise, the program distributor device 150 encrypts the program 152 with the public key 104b1 to generate the encrypted program 151 (step 213). When the program distributor device 150 uses the hybrid method as the encryption method, the program distributor device 150 arbitrarily creates a common key in step 213, and uses this common key to create the program 152. And the common key is encrypted with the public key 104b1.

続いて、プログラム配布者装置150は、クライアントマシン100上のゲストOS103cに対し、暗号化済プログラム151を渡す(ステップ214)。なお、プログラム配布者装置150が、暗号化の方式として、ハイブリッド方式を用いる場合には、プログラム配布者装置150は、ステップ214で、ゲストOS103cに対し、暗号化済プログラム151と、公開鍵104b1で暗号化された共通鍵と、を渡す。   Subsequently, the program distributor device 150 passes the encrypted program 151 to the guest OS 103c on the client machine 100 (step 214). When the program distributor device 150 uses the hybrid method as the encryption method, the program distributor device 150 uses the encrypted program 151 and the public key 104b1 to the guest OS 103c in step 214. Pass the encrypted common key.

続いて、クライアントマシン100上のゲストOS103cは、暗号化済プログラム151を取得する(ステップ202)。なお、プログラム配布者装置150が、暗号化の方式として、ハイブリッド方式を用いる場合には、ゲストOS103cは、ステップ202で、暗号化済プログラム151と、公開鍵104b1で暗号化された共通鍵と、を取得する。   Subsequently, the guest OS 103c on the client machine 100 acquires the encrypted program 151 (step 202). When the program distributor device 150 uses the hybrid method as the encryption method, the guest OS 103c, in step 202, the encrypted program 151, the common key encrypted with the public key 104b1, and To get.

その後、ゲストOS103cは、暗号化済プログラム151を、秘密鍵104b2を用いて復号化して復号済プログラム141を生成する。なお、プログラム配布者装置150が、暗号化の方式として、ハイブリッド方式を用いる場合には、ゲストOS103cは、暗号化された共通鍵を秘密鍵104b2で復号化した後、その復号化された共通鍵で、暗号化済プログラム151を復号化して、復号済プログラム141を生成する。   Thereafter, the guest OS 103c decrypts the encrypted program 151 using the secret key 104b2 to generate the decrypted program 141. When the program distributor device 150 uses the hybrid method as the encryption method, the guest OS 103c decrypts the encrypted common key with the private key 104b2, and then decrypts the decrypted common key. The decrypted program 151 is generated by decrypting the encrypted program 151.

その後、ゲストOS103cは、サンドボックス103d1内で、復号済プログラム141を実行する(ステップ203)。   Thereafter, the guest OS 103c executes the decrypted program 141 in the sandbox 103d1 (step 203).

本実施形態によれば、仮想マシン103内のゲストOS103cが、暗号化済プログラムの復号および実行を、仮想マシン103内で行う。   According to the present embodiment, the guest OS 103 c in the virtual machine 103 performs decryption and execution of the encrypted program in the virtual machine 103.

仮想マシン103は、難読化処理が施された仮想マシン生成用プログラムの実行によって生成される。このため、仮想マシン103の動作(ゲストOS103cの動作)は解析困難である。   The virtual machine 103 is generated by executing a virtual machine generation program that has been obfuscated. For this reason, the operation of the virtual machine 103 (the operation of the guest OS 103c) is difficult to analyze.

よって、仮想マシン103内のゲストOS103cにて復号されたプログラムが改変されたり不正に解析されたりする可能性を低くできる。また、仮想マシン103を用いるため、特許文献2に記載された特殊なハードウェアを使用する必要が無くなる。また、プログラム配布者がプログラムを難読化するという負担をなくすことが可能になる。   Therefore, the possibility that the program decrypted by the guest OS 103c in the virtual machine 103 is modified or illegally analyzed can be reduced. Further, since the virtual machine 103 is used, it is not necessary to use special hardware described in Patent Document 2. In addition, it is possible to eliminate the burden of the program distributor obfuscating the program.

なお、プログラム記憶部101と生成部102と仮想マシン103と仮想ディスク104とからなるクライアントマシンでも、特許文献2に記載された特殊なハードウェアを使用することなく、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止することが可能になるという効果を生じることができる。   Note that the client machine including the program storage unit 101, the generation unit 102, the virtual machine 103, and the virtual disk 104 also reduces the burden on the program distributor without using special hardware described in Patent Document 2. At the same time, it is possible to prevent the decrypted program from being altered or illegally analyzed.

また、本実施形態では、仮想メモリ103d内の仮想領域と物理メモリ106内の物理領域とを対応づけるために用いた乱数が、解析困難な仮想マシン103内に記憶されている。   In the present embodiment, random numbers used for associating the virtual area in the virtual memory 103 d with the physical area in the physical memory 106 are stored in the virtual machine 103 that is difficult to analyze.

このため、乱数を入手することが困難となり、よって、物理メモリ106内の情報から、仮想メモリ103d内の情報(例えば、復号済プログラム141)を復元することは困難となる。   For this reason, it becomes difficult to obtain a random number, and thus it is difficult to restore information (for example, the decrypted program 141) in the virtual memory 103d from information in the physical memory 106.

また、本実施形態では、ゲストOS103cは、復号済プログラム141をサンドボックス103d1内で実行する。   In this embodiment, the guest OS 103c executes the decrypted program 141 in the sandbox 103d1.

このため、もし、復号済プログラム141にコンピュータウィルスが組み込まれていたとしても、コンピュータウィルスが、ほかの復号化済プログラムにアクセスして、その内容を変更したり、その内容を取得したりすることを防止することが可能になる。   For this reason, even if a computer virus is incorporated in the decrypted program 141, the computer virus accesses another decrypted program to change the content or acquire the content. Can be prevented.

また、上記実施形態では、鍵104bは仮想ディスク104内に存在するものとしたが、鍵104bは仮想マシン103内の仮想ハードウェアとして実現されてもよい。この場合、ゲストOS103cは、仮想ハードウェアにアクセスすることで、鍵104bを取得する。   Further, in the above embodiment, the key 104 b is present in the virtual disk 104, but the key 104 b may be realized as virtual hardware in the virtual machine 103. In this case, the guest OS 103c acquires the key 104b by accessing the virtual hardware.

(第2実施形態)
第1実施形態では、仮想ディスク104と仮想マシン103を別のものとして扱ったが、これらを一体とすることもできる。この場合、仮想ディスク104は仮想マシン103に取り込まれるため、仮想ディスク104内の情報を、鍵103a1を用いて暗号および復号することは不要となる。
(Second Embodiment)
In the first embodiment, the virtual disk 104 and the virtual machine 103 are handled as separate ones, but they may be integrated. In this case, since the virtual disk 104 is taken into the virtual machine 103, it is not necessary to encrypt and decrypt information in the virtual disk 104 using the key 103a1.

図3は、仮想ディスク104Aが仮想マシン103Aに取り込まれたクライアントマシン100A(第2実施形態)を示したブロック図である。なお、図3において、図1に示したものと同一構成のものには同一符号を付してある。   FIG. 3 is a block diagram showing the client machine 100A (second embodiment) in which the virtual disk 104A is taken into the virtual machine 103A. In FIG. 3, the same components as those shown in FIG.

図3において、クライアントマシン100Aは、一般的に情報処理装置と呼ぶことができる。   In FIG. 3, the client machine 100A can be generally called an information processing apparatus.

クライアントマシン100Aは、プログラム記憶部101Aと、生成部102Aと、仮想マシン103Aと、ホストOS105と、物理メモリ106と、を含む。   The client machine 100A includes a program storage unit 101A, a generation unit 102A, a virtual machine 103A, a host OS 105, and a physical memory 106.

プログラム記憶部101Aは、一般的にプログラム記憶手段と呼ぶことができる。   Program storage unit 101A can generally be referred to as program storage means.

プログラム記憶部101Aは、難読化処理が施された仮想マシン生成用プログラムを記憶する。   The program storage unit 101A stores a virtual machine generation program that has been obfuscated.

生成部102Aは、一般的に生成手段と呼ぶことができる。   Generation unit 102A can be generally referred to as generation means.

生成部102Aは、プログラム記憶部101A内の仮想マシン生成用プログラムを実行することによって、クライアントマシン100A内に仮想マシン103Aを生成する。   The generation unit 102A generates a virtual machine 103A in the client machine 100A by executing a virtual machine generation program in the program storage unit 101A.

仮想マシン103Aは、記憶部103aと、ゲストOS103cAと、仮想メモリ103dと、仮想MMU103eと、仮想ディスク104Aと、を含む。   The virtual machine 103A includes a storage unit 103a, a guest OS 103cA, a virtual memory 103d, a virtual MMU 103e, and a virtual disk 104A.

なお、クライアントマシン100Aでは、記憶部103aには、鍵103a1は記憶されない。また、クライアントマシン100Aでは、仮想ディスク104Aは記憶手段の一例となり、鍵104bは復号用鍵の一例となる。また、クライアントマシン100Aでは、仮想ディスク104A内の情報は暗号化されていない。   In the client machine 100A, the key 103a1 is not stored in the storage unit 103a. In the client machine 100A, the virtual disk 104A is an example of a storage unit, and the key 104b is an example of a decryption key. In the client machine 100A, information in the virtual disk 104A is not encrypted.

ゲストOS103cAは、一般的に処理手段と呼ぶことができる。   The guest OS 103cA can generally be called a processing unit.

ゲストOS103cAは、プログラム配布者装置150から、暗号化済プログラム151を受信すると、秘密鍵104b2を用いて、暗号化済プログラム151を復号し、暗号化済プログラム151をサンドボックス103d1内で実行する。   When the guest OS 103cA receives the encrypted program 151 from the program distributor device 150, the guest OS 103cA decrypts the encrypted program 151 using the private key 104b2, and executes the encrypted program 151 in the sandbox 103d1.

本実施形態によれば、仮想マシン103A内のゲストOS103cAが、暗号化済プログラム151の復号および実行を、仮想マシン103A内で行う。このため、第1実施形態と同様の効果を奏する。   According to the present embodiment, the guest OS 103cA in the virtual machine 103A performs decryption and execution of the encrypted program 151 in the virtual machine 103A. For this reason, there exists an effect similar to 1st Embodiment.

また、本実施形態によれば、ゲストOS103cAは、仮想ディスク104A内の情報を復号する必要がなく、第1実施形態のゲストOS103cに比べて、ゲストOS103cAの処理を簡略化することが可能になる。   Further, according to the present embodiment, the guest OS 103cA does not need to decrypt the information in the virtual disk 104A, and the processing of the guest OS 103cA can be simplified compared to the guest OS 103c of the first embodiment. .

なお、プログラム記憶部101Aと生成部102Aと仮想マシン103Aとからなるクライアントマシンでも、特許文献2に記載された特殊なハードウェアを使用することなく、プログラム配布者の負担を少なくすると共に、復号されたプログラムが改変されたり不正に解析されたりすることを防止することが可能になるという効果を生じることができる。   Note that the client machine including the program storage unit 101A, the generation unit 102A, and the virtual machine 103A can be decrypted while reducing the burden on the program distributor without using special hardware described in Patent Document 2. It is possible to prevent the modified program from being altered or illegally analyzed.

また、本実施形態では、仮想メモリ103d内の仮想領域と物理メモリ106内の物理領域とを対応づけるために用いた乱数が、解析困難な仮想マシン103A内に記憶されている。   In the present embodiment, random numbers used to associate the virtual area in the virtual memory 103d with the physical area in the physical memory 106 are stored in the virtual machine 103A that is difficult to analyze.

このため、乱数を入手することが困難となり、よって、物理メモリ106内の情報から、仮想メモリ103d内の情報を復元することは困難となる。   For this reason, it is difficult to obtain a random number, and thus it is difficult to restore the information in the virtual memory 103d from the information in the physical memory 106.

また、本実施形態では、ゲストOS103cAは、復号済プログラム141をサンドボックス103d1内で実行する。   In this embodiment, the guest OS 103cA executes the decrypted program 141 in the sandbox 103d1.

このため、もし、復号済プログラム141にコンピュータウィルスが組み込まれていたとしても、コンピュータウィルスが、ほかの復号化済プログラムにアクセスして、その内容を変更したり、その内容を取得したりすることを防止することが可能になる。   For this reason, even if a computer virus is incorporated in the decrypted program 141, the computer virus accesses another decrypted program to change the content or acquire the content. Can be prevented.

なお、本実施形態においても、プログラム配布者装置150は、暗号化の方式として、公開鍵方式と共通鍵方式とを利用したハイブリッド方式を用いてもよい。   Also in the present embodiment, the program distributor apparatus 150 may use a hybrid method using a public key method and a common key method as an encryption method.

この場合、プログラム配布者装置150は、で共通鍵を生成し、その共通鍵でプログラム152を暗号化して暗号化済プログラム151を生成する。プログラム配布者装置150は、さらに、その共通鍵を公開鍵104b1で暗号化する。プログラム配布者装置150は、暗号化済プログラム151と、共通鍵を公開鍵104b1で暗号化したものと、をゲストOS103cAに送信する。   In this case, the program distributor device 150 generates a common key, encrypts the program 152 with the common key, and generates an encrypted program 151. The program distributor 150 further encrypts the common key with the public key 104b1. The program distributor 150 transmits the encrypted program 151 and the common key encrypted with the public key 104b1 to the guest OS 103cA.

ゲストOS103cAは、公開鍵104b1を用いて暗号化された共通鍵を、秘密鍵104b2を用いて復号し、その復号された共通鍵を用いて、暗号化済プログラム151を復号化して、復号済プログラム141を生成する。   The guest OS 103cA decrypts the common key encrypted using the public key 104b1 using the private key 104b2, decrypts the encrypted program 151 using the decrypted common key, and decrypts the decrypted program 141 is generated.

この場合、プログラムの暗号化および復号化の計算量を削減することができる。   In this case, the amount of calculation for encryption and decryption of the program can be reduced.

なお、上記各実施形態において、鍵104bはユーザごとに異なるようにしてもよい。   In each of the above embodiments, the key 104b may be different for each user.

この場合、万が一、鍵104bが漏洩した場合でも、漏洩した鍵104bの公開鍵104b1を知ることができれば、プログラム配布者装置150が、漏洩した鍵104bの公開鍵104b1を利用したプログラム配布要求を拒否することで、今後配布するプログラム152については、改変や漏洩を防ぐことができる。   In this case, even if the key 104b is leaked, if the public key 104b1 of the leaked key 104b can be known, the program distributor device 150 rejects the program distribution request using the public key 104b1 of the leaked key 104b. As a result, the program 152 to be distributed in the future can be prevented from being altered or leaked.

また、上記各実施形態では、プログラムを明示的に暗号化するものとして扱ったが、ゲストOSと、プログラム配布者装置150と、の間で、SSL(Secure Socket Layer)などにより暗号化された通信路が構成され、その通信路を通して、プログラムが配布されてもよい。   In each of the above embodiments, the program is treated as being explicitly encrypted, but communication encrypted between the guest OS and the program distributor device 150 by SSL (Secure Socket Layer) or the like. A path may be configured, and the program may be distributed through the communication path.

(第3実施形態)
次に、本発明の第3実施形態について図面を参照して詳細に説明する。
(Third embodiment)
Next, a third embodiment of the present invention will be described in detail with reference to the drawings.

図4を参照すると、本発明の第3実施形態は、プログラム制御により動作するクライアントコンピュータ300と、プログラム制御により動作するサーバコンピュータ310と、を含む。   Referring to FIG. 4, the third embodiment of the present invention includes a client computer 300 that operates under program control and a server computer 310 that operates under program control.

クライアントコンピュータ300は、クライアント側プログラム301を搭載している。   The client computer 300 includes a client side program 301.

例えば、クライアントコンピュータ300は、クライアント側プログラム301が記載された、コンピュータにて読み取り可能な記録媒体(例えば、バードディスク)を含む。   For example, the client computer 300 includes a computer-readable recording medium (for example, a bird disk) in which the client-side program 301 is described.

クライアントコンピュータ300は、その記録媒体からクライアント側プログラム301を読み取り実行することによって、図1に示したクライアントマシン100、または、図3に示したクライアントマシン100Aとして機能する。   The client computer 300 functions as the client machine 100 shown in FIG. 1 or the client machine 100A shown in FIG. 3 by reading and executing the client-side program 301 from the recording medium.

サーバコンピュータ310は、プログラム配布プログラム311を搭載している。   The server computer 310 has a program distribution program 311 installed.

例えば、サーバコンピュータ310は、プログラム配布プログラム311が記載された、コンピュータにて読み取り可能な記録媒体(例えば、バードディスク)を含む。   For example, the server computer 310 includes a computer-readable recording medium (for example, a bird disk) in which the program distribution program 311 is described.

サーバコンピュータ310は、その記録媒体からプログラム配布プログラム311を読み取り実行することによって、図1に示したプログラム配布者装置150として機能する。   The server computer 310 functions as the program distributor device 150 shown in FIG. 1 by reading and executing the program distribution program 311 from the recording medium.

上記各実施形態は、プログラムを販売、配布するといった用途に適用できる。また、Webアプリケーションをオフラインで実行する際、サーバ側プログラムをクライアントに配布する、といった用途にも適用可能である。   Each of the above embodiments can be applied to uses such as selling and distributing a program. Further, the present invention can also be applied to a case where a server side program is distributed to clients when a Web application is executed offline.

以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。   In each embodiment described above, the illustrated configuration is merely an example, and the present invention is not limited to the configuration.

100、100A クライアントマシン
101、101A プログラム記憶部
102、102A 生成部
103、103A 仮想マシン
103a 記憶部
103b 復号部
103c、103A ゲストOS
103d 仮想メモリ
103d1 サンドボックス
103e 仮想MMU
103f 処理部
104 仮想ディスク
105 ホストOS
106 物理メモリ
150 プログラム配布者装置
300 クライアントコンピュータ
310 サーバコンピュータ
100, 100A Client machine 101, 101A Program storage unit 102, 102A Generation unit 103, 103A Virtual machine 103a Storage unit 103b Decryption unit 103c, 103A Guest OS
103d Virtual memory 103d1 Sandbox 103e Virtual MMU
103f Processing unit 104 Virtual disk 105 Host OS
106 physical memory 150 program distributor 300 client computer 310 server computer

Claims (9)

プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムを記憶するプログラム記憶手段と、
前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成手段と、を含み、
前記仮想マシンは、
復号用鍵を記憶する記憶手段と、
暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理手段と、を含む、情報処理装置。
Program storage means for storing a virtual machine generation program that has been subjected to an obfuscation process, which is a process that complicates the program while maintaining a function that is realized when the program is executed;
Generating means for generating a virtual machine by executing a virtual machine generating program in the program storage means,
The virtual machine is
Storage means for storing a decryption key;
An information processing apparatus comprising: processing means for receiving an encrypted program and decrypting the encrypted program using a decryption key in the storage means and executing the decrypted program.
請求項1に記載の情報処理装置において、
暗号化された鍵を格納する格納手段をさらに含み、
前記処理手段は、前記格納手段内の暗号化された鍵を、前記記憶手段内の復号用鍵を用いて復号し、前記暗号化されたプログラムを、当該復号された鍵を用いて復号し、当該復号されたプログラムを実行する、情報処理装置。
The information processing apparatus according to claim 1,
Further comprising storage means for storing the encrypted key;
The processing means decrypts the encrypted key in the storage means using the decryption key in the storage means, decrypts the encrypted program using the decrypted key, An information processing apparatus that executes the decrypted program.
請求項1または2に記載の情報処理装置において、
複数の物理領域に分割された物理メモリをさらに含み、
前記記憶手段は、さらに、乱数を記憶し、
前記仮想マシンは、
複数の仮想領域に分割され、前記仮想領域のそれぞれが、前記複数の物理領域のいずれかに、前記記憶手段内の乱数に基づいて対応づけられた仮想メモリと、
前記処理手段が前記仮想メモリのアドレスにアクセスする際、当該アドレスを、当該アドレスを有する仮想領域に対応づけられた物理領域のアドレスに変換し、当該物理領域のアドレスを用いて、前記物理メモリにアクセスするメモリ管理手段と、をさらに含む、情報処理装置。
The information processing apparatus according to claim 1 or 2,
Further including physical memory divided into a plurality of physical areas;
The storage means further stores a random number,
The virtual machine is
A virtual memory that is divided into a plurality of virtual areas, and each of the virtual areas is associated with one of the plurality of physical areas based on a random number in the storage unit;
When the processing means accesses the address of the virtual memory, the address is converted into an address of a physical area associated with a virtual area having the address, and the physical memory is used to convert the address into the physical memory. An information processing apparatus further comprising: a memory management means for accessing.
請求項1から3のいずれか1項に記載に情報処理装置において、
前記仮想マシンは、サンドボックスをさらに含み、
前記処理手段は、前記復号されたプログラムを前記サンドボックス内で実行する、情報処理装置。
In the information processing apparatus according to any one of claims 1 to 3,
The virtual machine further includes a sandbox,
The information processing apparatus, wherein the processing means executes the decrypted program in the sandbox.
請求項1から4のいずれか1項に記載の情報処理装置と、
前記情報処理装置内の処理手段に、前記暗号化されたプログラムを送信する送信装置と、を含むプログラム保護システム。
An information processing apparatus according to any one of claims 1 to 4,
A program protection system comprising: a transmission device that transmits the encrypted program to processing means in the information processing device.
情報処理装置でのプログラム保護方法であって、
プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムをプログラム記憶手段に記憶するプログラム記憶ステップと、
前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成ステップと、
復号用鍵を前記仮想マシン内の記憶手段に記憶する記憶ステップと、
前記仮想マシンが、暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理ステップと、を含むプログラム保護方法。
A program protection method in an information processing apparatus,
A program storage step of storing in the program storage means a virtual machine generation program that has been subjected to an obfuscation process, which is a process of complicating the program while maintaining the functions realized when the program is executed;
Generating a virtual machine by executing a program for generating a virtual machine in the program storage means;
Storing a decryption key in a storage means in the virtual machine;
When the virtual machine receives an encrypted program, the virtual machine decrypts the encrypted program using a decryption key in the storage means, and executes the decrypted program. Program protection method.
請求項6に記載のプログラム保護方法において、
暗号化された鍵を格納手段に格納する格納ステップをさらに含み、
前記処理ステップでは、前記格納手段内の暗号化された鍵を、前記記憶手段内の復号用鍵を用いて復号し、前記暗号化されたプログラムを、当該復号された鍵を用いて復号し、当該復号されたプログラムを実行する、プログラム保護方法。
The program protection method according to claim 6,
A storage step of storing the encrypted key in the storage means;
In the processing step, the encrypted key in the storage means is decrypted using the decryption key in the storage means, and the encrypted program is decrypted using the decrypted key, A program protection method for executing the decrypted program.
コンピュータに、
プログラムが実行された際に実現される機能を保ったまま当該プログラムを複雑化する処理である難読化処理が施された仮想マシン生成用プログラムをプログラム記憶手段に記憶するプログラム記憶手順と、
前記プログラム記憶手段内の仮想マシン生成用プログラムを実行することによって仮想マシンを生成する生成手順と、
復号用鍵を前記仮想マシン内の記憶手段に記憶する記憶手順と、
前記仮想マシンが、暗号化されたプログラムを受信すると、当該暗号化されたプログラムを、前記記憶手段内の復号用鍵を用いて復号し、当該復号されたプログラムを実行する処理手順と、を実行させるためのプログラム。
On the computer,
A program storage procedure for storing, in the program storage means, a virtual machine generation program that has been subjected to an obfuscation process, which is a process that complicates the program while maintaining the functions realized when the program is executed;
A generation procedure for generating a virtual machine by executing a virtual machine generation program in the program storage means;
A storage procedure for storing the decryption key in the storage means in the virtual machine;
When the virtual machine receives an encrypted program, the virtual machine decrypts the encrypted program using a decryption key in the storage unit, and executes a processing procedure for executing the decrypted program Program to let you.
請求項8に記載のプログラムにおいて、
前記コンピュータに、暗号化された鍵を格納手段に格納する格納手順をさらに実行させ、
前記処理手順では、前記格納手段内の暗号化された鍵を、前記記憶手段内の復号用鍵を用いて復号し、前記暗号化されたプログラムを、当該復号された鍵を用いて復号し、当該復号されたプログラムを実行する、プログラム。
The program according to claim 8, wherein
Causing the computer to further execute a storage procedure for storing the encrypted key in the storage means;
In the processing procedure, the encrypted key in the storage means is decrypted using the decryption key in the storage means, and the encrypted program is decrypted using the decrypted key, A program for executing the decrypted program.
JP2009234251A 2009-10-08 2009-10-08 Information processor, program protection system, program protection method and program Pending JP2011081654A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009234251A JP2011081654A (en) 2009-10-08 2009-10-08 Information processor, program protection system, program protection method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009234251A JP2011081654A (en) 2009-10-08 2009-10-08 Information processor, program protection system, program protection method and program

Publications (1)

Publication Number Publication Date
JP2011081654A true JP2011081654A (en) 2011-04-21

Family

ID=44075634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009234251A Pending JP2011081654A (en) 2009-10-08 2009-10-08 Information processor, program protection system, program protection method and program

Country Status (1)

Country Link
JP (1) JP2011081654A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013031446A1 (en) * 2011-08-29 2013-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション Device and method for converting logical address to physical address
JP2013058006A (en) * 2011-09-07 2013-03-28 Fuji Xerox Co Ltd Information processor and information processing program

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013031446A1 (en) * 2011-08-29 2013-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション Device and method for converting logical address to physical address
CN103765395A (en) * 2011-08-29 2014-04-30 国际商业机器公司 Device and method for converting logical address to physical address
GB2507922A (en) * 2011-08-29 2014-05-14 Ibm Device and method for converting logical address to physical address
JP5576565B2 (en) * 2011-08-29 2014-08-20 インターナショナル・ビジネス・マシーンズ・コーポレーション Apparatus and method for converting logical address to physical address
GB2507922B (en) * 2011-08-29 2014-11-05 Ibm Apparatus and method for converting logical address to physical address
US9104602B2 (en) 2011-08-29 2015-08-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US9703723B2 (en) 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
JP2013058006A (en) * 2011-09-07 2013-03-28 Fuji Xerox Co Ltd Information processor and information processing program

Similar Documents

Publication Publication Date Title
US11979388B2 (en) System and method for enhanced data protection
JP6949972B2 (en) Digital rights management based on blockchain
US8826037B2 (en) Method for decrypting an encrypted instruction and system thereof
KR101055091B1 (en) Computer-implemented methods, apparatus, information processing systems, and computer readable recording media
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
US8504826B2 (en) Client and host validation based on hash of key and validation of encrypted data
KR100746030B1 (en) Method and apparatus for generating a rights object on behalf of a rights delegation
CN104318135B (en) A kind of Java code Safety actuality loading method based on credible performing environment
TWI420339B (en) Software authorization system and method
KR20190109419A (en) Addressing Techniques for Trusted Execution Environments Using Encryption Keys
JP2016513840A (en) Method, server, host, and system for protecting data security
KR20130039354A (en) Database management system and encrypting method thereof
KR20190108580A (en) Addressing Techniques for Trusted Execution Environments Using Signature Keys
JP2007511810A (en) Proof of execution using random number functions
RU2019117050A (en) ENCRYPTED DATA CONTROL THROUGH MULTIPLE CONTROLS
CN111656345B (en) Enable encrypted software modules in container files
CN114584295B (en) Universal black-box traceability method and apparatus for attribute-based proxy re-encryption systems
US12147508B2 (en) Systems and methods for securely processing content
US20210248245A1 (en) Calculation device, calculation method, calculation program and calculation system
CN103258152A (en) System, devices and methods for collaborative execution of a software application comprising encrypted instruction
JP2011118592A (en) Access-controlling system, access-controlling method, and program
KR20090014575A (en) Shared Device and Method of DRM Agent
EP3977670A1 (en) Key-ladder protected personalization data conversion from global to unique encryption
JP2011081654A (en) Information processor, program protection system, program protection method and program
CN110166425B (en) Data processing method, device, system and computer readable storage medium