JP2010217975A - Information processor, application program, and method for executing application program - Google Patents

Information processor, application program, and method for executing application program Download PDF

Info

Publication number
JP2010217975A
JP2010217975A JP2009060875A JP2009060875A JP2010217975A JP 2010217975 A JP2010217975 A JP 2010217975A JP 2009060875 A JP2009060875 A JP 2009060875A JP 2009060875 A JP2009060875 A JP 2009060875A JP 2010217975 A JP2010217975 A JP 2010217975A
Authority
JP
Japan
Prior art keywords
program
partial
partial program
decoding
execution memory
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
JP2009060875A
Other languages
Japanese (ja)
Inventor
Ken Nishiyama
健 西山
Takaaki Utsuhara
孝彰 宇津原
Tomoo Nishigaki
智郎 西垣
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 Solution Innovators Ltd
Original Assignee
NEC System Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC System Technologies Ltd filed Critical NEC System Technologies Ltd
Priority to JP2009060875A priority Critical patent/JP2010217975A/en
Publication of JP2010217975A publication Critical patent/JP2010217975A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To makes it difficult to analyze a program by making it difficult to specify timing when a program to be made secret is arranged in a memory for execution in a decrypted state. <P>SOLUTION: An application 110 includes programs A120 and B140 to be started in parallel with a multi-programming environment. The program B140 includes a partial program 143 to be arranged so as to be encrypted in a memory 11 for execution. The program B140 makes a computer execute: (a) processing for receiving a processing request message from the program A120 by using inter-program communication, and decrypting the partial program 143; (b) processing for calling the decrypted partial program 143, and making it perform an arithmetic operation corresponding to the processing request message; (c) processing for erasing the decrypted partial program 143 from the memory 11 for execution after the completion of an arithmetic operation, and (d) transmitting the arithmetic result to the program A120 by using inter-program communication. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、暗号化されたデジタルコンテンツを取り扱うアプリケーションプログラムを情報処理装置で実行する場合に秘密情報の漏洩を抑止する技術に関する。   The present invention relates to a technique for suppressing leakage of secret information when an application program that handles encrypted digital content is executed by an information processing apparatus.

音声、映像、プログラム等のデジタルコンテンツに関するDRM(Digital Rights Management)の重要性が増している。デジタルコンテンツの不正利用、不正な複製、改竄などを防止するために、暗号化技術が用いられている。具体的には、デジタルコンテンツを暗号化しておき、権限のある利用が行われる場合に限り、暗号化されたコンテンツを復号化プログラムによって復号することが行われている。しかし、逆アセンブラ等の解析ツール、オペレーティングシステム(OS)が有するメモリダンプ機能、デバッガプログラム等を用いたプログラム解析によって、復号化プログラムの復号処理手順や復号処理に使用される復号鍵等の秘密情報が不正取得されるおそれがある。これらのプログラム解析に対処する技術として特許文献1〜4がある。   The importance of DRM (Digital Rights Management) related to digital contents such as audio, video and programs is increasing. Encryption technology is used to prevent unauthorized use, unauthorized duplication, and falsification of digital content. Specifically, the digital content is encrypted, and the encrypted content is decrypted by the decryption program only when authorized use is performed. However, confidential information such as the decryption procedure of the decryption program and the decryption key used for the decryption process by analyzing the program using the analysis tool such as the disassembler, the memory dump function of the operating system (OS), the debugger program, etc. May be illegally acquired. As techniques for dealing with these program analysis, there are Patent Documents 1 to 4.

特許文献1は、暗号化したプログラムをファイル装置に格納しておき、当該プログラムを使用する際に復号化することを開示している。しかしながら、この方法では、復号されたプログラムが情報処理装置内の実行用メモリ(つまりRAM:Random Access Memory)に配置されたままの状態となる。この状態では、メモリダンプ機能を用いて実行用メモリに配置されたプログラムが容易に取得されるおそれがある。また、デバッガプログラムによっても復号化されたプログラムが解析されてしまうおそれがある。   Patent Document 1 discloses that an encrypted program is stored in a file device and decrypted when the program is used. However, in this method, the decrypted program remains in the execution memory (that is, RAM: Random Access Memory) in the information processing apparatus. In this state, the program arranged in the execution memory may be easily obtained using the memory dump function. In addition, the decrypted program may be analyzed by the debugger program.

特許文献2は、デバッガ等による割り込みの発生を検出した場合に、以降の実行プログラムをダミープログラムに置き換えるかプログラム実行を停止することによって、プログラムコード解析を防止する技術を開示している。しかしながら、特許文献2の方法では、実行用メモリには復号済みのプログラムが配置された状態であるため、メモリダンプ機能を使用したプログラム解析には十分に対処することができないおそれがある。   Patent Document 2 discloses a technique for preventing program code analysis by replacing a subsequent execution program with a dummy program or stopping program execution when the occurrence of an interrupt by a debugger or the like is detected. However, in the method of Patent Document 2, since the decrypted program is arranged in the execution memory, there is a possibility that the program analysis using the memory dump function cannot be sufficiently handled.

特許文献3は、暗号化されたデータの復号にハッシュ値を用い、デバッガ等の不正アクセスを検出した場合にハッシュ演算手順を変更して異なるハッシュ値を生成することにより、暗号化されたデータの復号を停止する技術を開示している。この手法は、復号鍵に相当するハッシュ値を生成するハッシュ演算システムがハードウェア化されデバッガやメモリダンプ等によるプログラム解析から保護されている場合には有効である。しかしながら、ハッシュ値生成が復号処理プログラムによって行われる場合には、実行用メモリには復号済みのプログラムが配置されている状態となる。このため、メモリダンプ機能を使用したプログラム解析に十分に対処することができないおそれがある。   Patent Document 3 uses a hash value for decryption of encrypted data, and when an unauthorized access by a debugger or the like is detected, the hash calculation procedure is changed to generate a different hash value. A technique for stopping decoding is disclosed. This technique is effective when a hash calculation system that generates a hash value corresponding to a decryption key is hardware-protected and protected from program analysis by a debugger, a memory dump, or the like. However, when the hash value generation is performed by the decryption processing program, the decrypted program is placed in the execution memory. For this reason, there is a possibility that the program analysis using the memory dump function cannot be sufficiently dealt with.

特許文献4は、(i) プログラムを複数のブロック(部分プログラム)に分割して個別に暗号化した状態で記憶装置に保持しておくこと、(ii) 部分プログラムを順次読み出して復号して実行用メモリに配置すること、(iii) 実行の終了した部分プログラムが配置されている実行メモリ内の領域を他のデータ(新たな部分プログラム又はダミーデータ)によって上書きすること、を開示している。これにより、特定の部分プログラムが復号された状態で実行用メモリに存在する時間を短くし、実行用メモリにロードされた部分プログラムが不正に参照されることを抑制できる。また、特許文献4は、最初の部分プログラムがロードされる実行用メモリ上の位置を動的に決定することを開示している。これにより、実行用メモリ上のロード位置がプログラム実行の度に変化するため、ロード位置を予測したメモリ観察によるプログラム内容の不正取得が防止される。   In Patent Document 4, (i) a program is divided into a plurality of blocks (partial programs) and individually stored in a storage device, and (ii) partial programs are sequentially read out, decrypted and executed. And (iii) overwriting the area in the execution memory where the partial program whose execution has been completed is overwritten with other data (new partial program or dummy data). Thereby, it is possible to shorten the time existing in the execution memory in a state where the specific partial program is decrypted, and to prevent the partial program loaded in the execution memory from being illegally referred to. Patent Document 4 discloses that the position on the execution memory to which the first partial program is loaded is dynamically determined. As a result, since the load position on the execution memory changes each time the program is executed, unauthorized acquisition of the program contents by memory observation predicting the load position is prevented.

なお、特許文献5及び6は、コンテンツデータを複数のブロックに分割し、ブロック毎に異なる暗号鍵を用いて暗号化を行う技術を開示している。しかしながら、これらの文献は、実行用メモリに展開された状態の復号化プログラムに対するメモリダンプやデバッガを用いた解析に対処する技術を開示するものではない。   Patent Documents 5 and 6 disclose a technique for dividing content data into a plurality of blocks and performing encryption using different encryption keys for each block. However, these documents do not disclose a technique for dealing with an analysis using a memory dump or a debugger with respect to a decryption program expanded in an execution memory.

特開2000−122861号公報JP 2000-122861 A 特開2002−082732号公報JP 2002-083732 A 特開2006−107274号公報JP 2006-107274 A 特開2005−018725号公報JP 2005-018725 A 特開2004−287566号公報Japanese Patent Laid-Open No. 2004-287466 特開平07−140896号公報Japanese Patent Application Laid-Open No. 07-140896

上述したように、特許文献4に開示された技術は、復号された状態の部分プログラムが実行用メモリに存在する時間を短くし、部分プログラムがロードされる実行用メモリ内の位置を変化させることで、メモリダンプを利用したプログラム解析を困難にすることができる。しかしながら、特許文献4に開示された技術は、デバッガ等を用いたプログラム動作の解析に対する耐性が十分でないという問題を有する。具体的には、部分プログラムがアプリケーションプログラムから関数呼び出しによって直接的に呼び出されているような場合、デバッガによって部分プログラムの呼び出しが特定されてしまうと、そのときのメモリダンプを行うことで復号化された部分プログラムが解析されてしまうおそれがある。   As described above, the technique disclosed in Patent Document 4 shortens the time that the partial program in the decoded state exists in the execution memory, and changes the position in the execution memory where the partial program is loaded. Thus, it is possible to make program analysis using a memory dump difficult. However, the technique disclosed in Patent Document 4 has a problem that the resistance to the analysis of the program operation using a debugger or the like is not sufficient. Specifically, when a partial program is called directly from an application program by a function call, if the partial program call is specified by the debugger, it is decoded by performing a memory dump at that time. The partial program may be analyzed.

本発明は、上述した問題点を考慮してなされたものであり、暗号化によって保護されているプログラムが復号された状態で実行用メモリに配置されるタイミングの特定を困難にすることで、メモリダンプやデバッガによるプログラム解析を困難にし、耐タンパ性を向上させることを目的とする。   The present invention has been made in consideration of the above-described problems, and makes it difficult to specify the timing at which the program protected by encryption is placed in the execution memory in a decrypted state. The purpose is to make it difficult to analyze a program using a dump or a debugger, and to improve tamper resistance.

本発明の第1の態様にかかる情報処理装置は、マルチプログラミング環境を提供可能な少なくとも1つのプロセッサと、実行用メモリとを有する。前記少なくとも1つのプロセッサは、以下に示す処理(a)〜(f)を行うよう構成されている。
(a)前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを前記実行用メモリに配置する処理と、
ここで前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含み、前記第1及び第2のプログラムは、プログラム間通信機能を利用して互いにメッセージを送受信可能である、
(b)前記第1のプログラムから前記第2のプログラムに前記プログラム間通信によって処理要求メッセージを送信する処理と、
(c)前記第2のプログラムを実行することにより、前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置する処理と、
(d)復号後の前記部分プログラムを実行することにより、前記処理要求メッセージに対応した演算を行う処理と、
(e)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去する処理と、
(f)前記プログラム間通信によって、前記部分プログラムによる演算結果を前記第2のプログラムから前記第1のプログラムに送信する処理。
The information processing apparatus according to the first aspect of the present invention includes at least one processor capable of providing a multiprogramming environment and an execution memory. The at least one processor is configured to perform the following processes (a) to (f).
(A) a process of arranging in the execution memory first and second programs started in parallel in the multiprogramming environment;
Here, the second program includes a partial program that is placed in an encrypted form in the execution memory, and the first and second programs can send and receive messages to each other using an inter-program communication function. Is,
(B) processing for transmitting a processing request message from the first program to the second program by inter-program communication;
(C) By executing the second program, the partial program is decrypted when the processing request message is received, and the decrypted partial program is placed in the execution memory;
(D) a process of performing an operation corresponding to the processing request message by executing the partial program after decoding;
(E) a process of erasing the partial program after decoding from the execution memory after completion of the operation by the partial program after decoding;
(F) Processing for transmitting a calculation result by the partial program from the second program to the first program by the inter-program communication.

本発明の第2の態様にかかるアプリケーションプログラムは、マルチプログラミング環境を提供可能な少なくとも1つのプロセッサ及び実行用メモリを含むコンピュータに実行される。当該アプリケーションプログラムは、前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを含む。また、前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含む。
前記第1のプログラムは、以下の処理(i)及び(ii)を前記コンピュータに行わせる。
(i)プログラム間通信機能を利用して前記第1のプログラムから前記第2のプログラムに処理要求メッセージを送信する処理と、
(ii)前記処理要求メッセージに対応する演算結果を前記第2のプログラムから前記プログラム間通信機能を利用して受信する処理。
また、前記第2のプログラムは、以下の処理(a)〜(d)を前記コンピュータに行わせる。
(a)前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置する処理と、
(b)復号後の前記部分プログラムを呼び出して前記処理要求メッセージに対応した演算を行わせる処理と、
(c)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去する処理と、
(d)前記プログラム間通信機能を利用して、復号後の前記部分プログラムによって生成された前記演算結果を前記第1のプログラムに送信する処理。
The application program according to the second aspect of the present invention is executed by a computer including at least one processor capable of providing a multiprogramming environment and an execution memory. The application program includes first and second programs that are started in parallel on the multiprogramming environment. In addition, the second program includes a partial program that is arranged in the execution memory while being encrypted.
The first program causes the computer to perform the following processes (i) and (ii).
(I) processing for transmitting a processing request message from the first program to the second program using an inter-program communication function;
(Ii) Processing for receiving an operation result corresponding to the processing request message from the second program using the inter-program communication function.
The second program causes the computer to perform the following processes (a) to (d).
(A) Decoding the partial program triggered by reception of the processing request message, and placing the partial program after decoding in the execution memory;
(B) processing for calling the partial program after decoding and performing an operation corresponding to the processing request message;
(C) a process of erasing the partial program after decoding from the execution memory after completion of the calculation by the partial program after decoding;
(D) Processing for transmitting the calculation result generated by the partial program after decoding to the first program using the inter-program communication function.

本発明の第3の態様にかかる方法は、マルチプログラミング環境を提供可能な少なくとも1つのプロセッサ及び実行用メモリを含むコンピュータにおけるアプリケーションプログラムの実行方法である。ここで、前記アプリケーションプログラムは、前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを含む。また、前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含む。前記方法は、以下のステップ(a)〜(f)を含む。
(a)前記第1及び第2のプログラムを前記実行用メモリに配置すること、
(b)前記第1のプログラムから前記第2のプログラムに前記プログラム間通信によって処理要求メッセージを送信すること、
(c)前記第2のプログラムを実行することにより、前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置すること、
(d)復号後の前記部分プログラムを実行することにより、前記処理要求メッセージに対応した演算を行うこと、
(e)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去すること、及び
(f)前記プログラム間通信を利用して、前記部分プログラムによる演算結果を前記第2のプログラムから前記第1のプログラムに送信すること。
A method according to a third aspect of the present invention is a method for executing an application program in a computer including at least one processor and an execution memory capable of providing a multiprogramming environment. Here, the application program includes first and second programs that are started in parallel on the multi-programming environment. In addition, the second program includes a partial program that is arranged in the execution memory while being encrypted. The method includes the following steps (a) to (f).
(A) arranging the first and second programs in the execution memory;
(B) transmitting a processing request message from the first program to the second program by inter-program communication;
(C) executing the second program to decrypt the partial program triggered by the reception of the processing request message, and placing the decrypted partial program in the execution memory;
(D) performing an operation corresponding to the processing request message by executing the partial program after decoding;
(E) deleting the partial program after decoding from the execution memory after completion of the calculation by the partial program after decoding; and (f) calculating by the partial program using the inter-program communication. Sending the result from the second program to the first program;

上述した本発明の第1〜第3の態様によれば、暗号化によって保護されているプログラムが復号された状態で実行用メモリに配置されるタイミングの特定を困難にすることできる。よって、メモリダンプやデバッガによるプログラム解析を困難にし、耐タンパ性を向上させることが可能な情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法を提供できる。   According to the first to third aspects of the present invention described above, it is possible to make it difficult to specify the timing at which the program protected by encryption is placed in the execution memory in a decrypted state. Therefore, it is possible to provide an information processing apparatus, an application program, and an application program execution method that make it difficult to analyze a program using a memory dump or a debugger and improve tamper resistance.

発明の実施の形態1にかかる情報処理装置の構成を示すブロック図である。It is a block diagram which shows the structure of the information processing apparatus concerning Embodiment 1 of invention. 図1の不揮発性メモリ12に格納されたアプリケーションプログラム110を示す図である。It is a figure which shows the application program 110 stored in the non-volatile memory 12 of FIG. 図1の実行用メモリ11にロードされたアプリケーションプログラム110を示す図である。It is a figure which shows the application program 110 loaded into the memory 11 for execution of FIG. 復号された部分プログラム143が実行用メモリ11にロードにロードされる様子を示す図である。It is a figure which shows a mode that the decrypted partial program 143 is loaded to the execution memory 11. 復号された部分プログラム143が配置されていた領域が上書きされる様子を示す図である。It is a figure which shows a mode that the area | region where the decrypted partial program 143 was arrange | positioned is overwritten. 発明の実施の形態1におけるアプリケーションプログラムの実行手順を示すフローチャートである。It is a flowchart which shows the execution procedure of the application program in Embodiment 1 of invention. 発明の実施の形態1におけるアプリケーションプログラムの実行手順を示すフローチャートである。It is a flowchart which shows the execution procedure of the application program in Embodiment 1 of invention. 図1の不揮発性メモリ12に格納されたアプリケーションプログラム110を示す図である。It is a figure which shows the application program 110 stored in the non-volatile memory 12 of FIG. 復号されたコンテンツ暗号鍵生成プログラム143Aが実行用メモリ11にロードにロードされる様子を示す図である。It is a figure which shows a mode that the decrypted content encryption key generation program 143A is loaded to the execution memory 11. 復号されたコンテンツ復号プログラム143Bが実行用メモリ11にロードにロードされる様子を示す図である。It is a figure which shows a mode that the decrypted content decoding program 143B is loaded to the execution memory 11. コンテンツ復号後に、実行用メモリ11からプログラム削除が行われる様子を示す図である。It is a figure which shows a mode that a program deletion is performed from the memory 11 for execution after content decoding. 発明の実施の形態2にかかる情報処理装置の構成を示すブロック図である。It is a block diagram which shows the structure of the information processing apparatus concerning Embodiment 2 of invention. 図11に示した情報処理装置の動作を説明するための概念図である。It is a conceptual diagram for demonstrating operation | movement of the information processing apparatus shown in FIG. 図11に示した情報処理装置の動作を説明するための概念図である。It is a conceptual diagram for demonstrating operation | movement of the information processing apparatus shown in FIG. 図11に示した情報処理装置の動作を説明するための概念図である。It is a conceptual diagram for demonstrating operation | movement of the information processing apparatus shown in FIG. 図11に示した情報処理装置の動作を説明するための概念図である。It is a conceptual diagram for demonstrating operation | movement of the information processing apparatus shown in FIG. 図11に示した情報処理装置の動作を説明するための概念図である。It is a conceptual diagram for demonstrating operation | movement of the information processing apparatus shown in FIG. 図11に示した情報処理装置の処理手順を示すフローチャートである。12 is a flowchart illustrating a processing procedure of the information processing apparatus illustrated in FIG. 11.

以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。   Hereinafter, specific embodiments to which the present invention is applied will be described in detail with reference to the drawings. In the drawings, the same elements are denoted by the same reference numerals, and redundant description is omitted as necessary for the sake of clarity.

<発明の実施の形態1>
図1は、本実施の形態にかかる情報処理装置1の構成例を示すブロック図である。プロセッサ10は、プログラムの取得、プログラムの解析、プログラムの解析結果に応じた演算処理を行う。なお、図1では、1つのプロセッサ10のみを示しているが、情報処理装置1は、複数のプロセッサ10を有するマルチプロセッサ構成であってもよい。プロセッサ10は、オペレーティングシステム(OS)100を実行することによりマルチプログラミング環境を提供する。マルチプログラミング環境とは、複数のプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するプログラムを切り替えたりすることによって、複数のプログラムがあたかも並列実行されているような環境を意味する。
<Embodiment 1 of the Invention>
FIG. 1 is a block diagram illustrating a configuration example of the information processing apparatus 1 according to the present embodiment. The processor 10 performs program acquisition, program analysis, and arithmetic processing according to the program analysis result. Although only one processor 10 is shown in FIG. 1, the information processing apparatus 1 may have a multiprocessor configuration having a plurality of processors 10. The processor 10 provides a multi-programming environment by executing an operating system (OS) 100. A multi-programming environment is an environment in which multiple programs are executed in parallel by periodically switching and executing multiple programs, or by switching the programs to be executed in response to the occurrence of a certain event. means.

マルチプログラミングは、マルチプロセス、マルチスレッド、マルチタスク等と呼ばれる場合もある。プロセス、スレッド及びタスクは、マルチプログラミング環境で並列実行されるプログラム単位を意味する。これらの用語はしばしば混同して用いられるが、一般的には、プロセスは、メモリ空間などのプログラム実行環境が独立に割り当てられ、他のプロセスとの独立性の高いプログラムモジュールである。一方、スレッドは、並列処理されるプロセスに含まれるさらに細かな並列処理単位である。マルチスレッド環境では、プロセスは複数のスレッドを含む。各スレッドはプロセスに割り当てられた資源にアクセス可能であり、スレッド間はメモリ空間を共有する。本実施の形態のプロセッサ10が具備するマルチプログラミング環境は、マルチプロセス環境でもよいし、マルチスレッド環境でもよい。   Multiprogramming is sometimes called multiprocess, multithread, multitask, and the like. A process, a thread, and a task mean a program unit that is executed in parallel in a multiprogramming environment. Although these terms are often used confusedly, in general, a process is a program module to which a program execution environment such as a memory space is allocated independently and is highly independent of other processes. On the other hand, a thread is a finer parallel processing unit included in processes to be processed in parallel. In a multi-thread environment, a process includes multiple threads. Each thread can access resources allocated to the process, and the threads share a memory space. The multi-programming environment included in the processor 10 of the present embodiment may be a multi-process environment or a multi-thread environment.

実行用メモリ11は、プロセッサ10によるプログラム実行のために使用されるメモリである。実行用メモリ11には、不揮発性メモリ12からロードされたプログラム(OS100及びアプリケーションプログラム110)、プロセッサ10の入出力データ等が記憶される。具体的には、実行用メモリ11は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等のランダムアクセス可能な揮発性メモリとすればよい。なお、図1の実行用メモリ11は、論理的な構成単位を示している。すなわち、実行用メモリ11は、例えば、複数のSRAMデバイスの組み合わせ、複数のDRAMデバイスの組み合わせ、又はSRAMデバイスとDRAMデバイスの組み合わせでもよい。   The execution memory 11 is a memory used for program execution by the processor 10. The execution memory 11 stores a program (OS 100 and application program 110) loaded from the nonvolatile memory 12, input / output data of the processor 10, and the like. Specifically, the execution memory 11 may be a random accessible volatile memory such as SRAM (Static Random Access Memory) or DRAM (Dynamic Random Access Memory). Note that the execution memory 11 in FIG. 1 represents a logical unit. That is, the execution memory 11 may be, for example, a combination of a plurality of SRAM devices, a combination of a plurality of DRAM devices, or a combination of an SRAM device and a DRAM device.

不揮発性メモリ12は、電力の供給を受けることなく、実行用メモリ11に比べて安定的に記憶内容を維持することが可能なメモリデバイスである。例えば、不揮発性メモリ12は、ROM(Read Only Memory)、フラッシュメモリ、ハードディスクドライブ若しくは光ディスクドライブ、又はこれらの組み合わせである。不揮発性メモリ12は、OS100及びアプリケーションプログラム110を格納する。また、不揮発性メモリ12の少なくとも一部は情報処理装置1から取り外し可能に構成されてもよい。例えば、アプリケーションプログラム110を格納したメモリを取り外し可能としてもよい。また、不揮発性メモリ12の少なくとも一部は、情報処理装置1の外部に配置されてもよい。   The non-volatile memory 12 is a memory device capable of maintaining stored contents more stably than the execution memory 11 without receiving power supply. For example, the nonvolatile memory 12 is a ROM (Read Only Memory), a flash memory, a hard disk drive, an optical disk drive, or a combination thereof. The nonvolatile memory 12 stores the OS 100 and the application program 110. Further, at least a part of the nonvolatile memory 12 may be configured to be removable from the information processing apparatus 1. For example, the memory storing the application program 110 may be removable. Further, at least a part of the nonvolatile memory 12 may be disposed outside the information processing apparatus 1.

OS100は、プロセッサ10によって実行されることにより、プロセッサ10及びメモリ11及び12等のハードウェア資源を利用して、タスク管理、メモリ管理、時間管理、デバイス管理等を実行する。   The OS 100 is executed by the processor 10 to execute task management, memory management, time management, device management, and the like using hardware resources such as the processor 10 and the memories 11 and 12.

アプリケーションプログラム110は、OS100を実行するプロセッサ10によって提供されるマルチプログラミング環境で実行される。なお以下では、アプリケーションプログラム110を単にアプリケーション110と呼ぶ。図2は、不揮発性メモリ12に配置された状態のアプリケーション110を示す図である。アプリケーション110は、プログラムA120及びB140を含む。プログラムA及びプログラムBは、プロセッサ10において並列処理される。プログラムA及びプログラムBは、プロセスであってもよし、スレッドであってもよい。図2の例では、プログラムBは、暗号化された状態で暗号部130としてメモリ12に格納されている。このようにプログラムB140を暗号化しておけば、逆アセンブラツールを使用してプログラムB140の静的な解析を行うことが困難となる。   The application program 110 is executed in a multiprogramming environment provided by the processor 10 that executes the OS 100. Hereinafter, the application program 110 is simply referred to as an application 110. FIG. 2 is a diagram illustrating the application 110 in a state of being arranged in the nonvolatile memory 12. The application 110 includes programs A120 and B140. Program A and program B are processed in parallel in the processor 10. Program A and program B may be processes or threads. In the example of FIG. 2, the program B is stored in the memory 12 as the encryption unit 130 in an encrypted state. If the program B140 is encrypted in this way, it becomes difficult to perform a static analysis of the program B140 using the disassembler tool.

さらに、プログラムB140は、部分暗号部142として暗号化された部分プログラム143を含んでいる。部分プログラム143は、外部に対して秘匿されるプログラムである。例えば、部分プログラム143は、DRM実現に必要な、暗号鍵等の秘密情報を扱うプログラムモジュール(暗号鍵生成プログラム、コンテンツ復号プログラム等)である。アプリケーション110が起動される場合、プログラムB140は、プログラムA120によってデコードされた後に実行用メモリ11にロードされる。しかしながら、プログラムB140内の部分プログラム143は、暗号化されたまま実行用メモリ11に配置される。部分プログラム143が暗号化されているため、この状態の実行用メモリ11のメモリダンプを取得された場合であっても部分プログラム143の漏洩を防止できる。   Further, the program B 140 includes a partial program 143 encrypted as the partial encryption unit 142. The partial program 143 is a program that is hidden from the outside. For example, the partial program 143 is a program module (encryption key generation program, content decryption program, etc.) that handles confidential information such as an encryption key necessary for realizing DRM. When the application 110 is activated, the program B140 is loaded into the execution memory 11 after being decoded by the program A120. However, the partial program 143 in the program B 140 is placed in the execution memory 11 while being encrypted. Since the partial program 143 is encrypted, leakage of the partial program 143 can be prevented even when a memory dump of the execution memory 11 in this state is acquired.

以下では、図2に示したアプリケーション110に含まれる各プログラム要素について説明する。プログラムA120に含まれるプログラム間通信部121は、プロセッサ10によって提供されるプログラム間通信(プロセス間通信又はスレッド間通信)機能を利用して、少なくともプログラムB140を含む他の並列処理単位(プロセス又はスレッド)との間で通信を行うプログラムモジュールである。プログラム間通信機能を実現する具体的なメカニズムには、パイプ、ネームドパイプ、ソケット、メッセージキュー等が知られている。本実施の形態におけるプログラムA120とB140の間のプログラム間通信には、これらの公知の具体的メカニズムを利用すればよい。   Hereinafter, each program element included in the application 110 illustrated in FIG. 2 will be described. The inter-program communication unit 121 included in the program A 120 uses the inter-program communication (inter-process communication or inter-thread communication) function provided by the processor 10 to use another parallel processing unit (process or thread) including at least the program B 140. ) Is a program module that communicates with the user. As specific mechanisms for realizing the inter-program communication function, pipes, named pipes, sockets, message queues, and the like are known. These known specific mechanisms may be used for inter-program communication between the programs A 120 and B 140 in the present embodiment.

暗号部・復号プログラム122は、暗号化されたプログラムB140を含む暗号部130を復号化するプログラムモジュールである。プログラム配置部123は、復号されたプログラムB140を実行用メモリ11に配置するプログラムモジュールである。   The encryption unit / decryption program 122 is a program module that decrypts the encryption unit 130 including the encrypted program B140. The program placement unit 123 is a program module that places the decrypted program B140 in the execution memory 11.

プログラムBが有するプログラム間通信部141は、少なくともプログラムB140を含む他の並列処理単位(プロセス又はスレッド)との間で通信を行うプログラムモジュールである。部分暗号部・復号プログラム144は、暗号化された部分プログラム143を含む部分暗号部142を復号化するプログラムモジュールである。   The inter-program communication unit 141 included in the program B is a program module that performs communication with another parallel processing unit (process or thread) including at least the program B140. The partial encryption unit / decryption program 144 is a program module that decrypts the partial encryption unit 142 including the encrypted partial program 143.

プログラム配置部145は、復号された部分プログラム143を実行用メモリ11に配置するプログラムモジュールである。なお、プログラム配置部145は、部分プログラム143のロードを行う度にロード先領域を変更するとよい。ロード先を変更することによって、部分プログラム143の解析を困難にすることができる。   The program placement unit 145 is a program module that places the decrypted partial program 143 in the execution memory 11. The program placement unit 145 may change the load destination area each time the partial program 143 is loaded. By changing the load destination, analysis of the partial program 143 can be made difficult.

部分プログラム143の復号処理は、以下のようにして行われる。実行用メモリ11にロードされ起動されたプログラムA120は、プログラムB140に対する処理要求メッセージをプログラム間通信によって送信する。実行用メモリ11にロードされ起動されたプログラムB140は、プログラムA120からの処理要求メッセージの受信に応じて復号プログラム144を呼び出し、部分プログラム143の復号を行う。つまり、プログラムA120からプログラムB140を関数呼び出しによって直接呼び出していない。このため、仮にデバッガ等によってプログラムA120が解析されたとしてもプログラムB140の解析は容易にできない。よって、暗号化によって保護されている部分プログラム143が復号された状態で実行用メモリ11に配置されるタイミングの特定を困難にすることができる。   The decoding process of the partial program 143 is performed as follows. The program A120 loaded and started in the execution memory 11 transmits a processing request message for the program B140 by inter-program communication. The program B 140 loaded and activated in the execution memory 11 calls the decryption program 144 in response to the reception of the processing request message from the program A 120 and decrypts the partial program 143. That is, the program A120 does not directly call the program B140 by function call. For this reason, even if the program A120 is analyzed by a debugger or the like, the program B140 cannot be easily analyzed. Therefore, it is possible to make it difficult to specify the timing at which the partial program 143 protected by encryption is placed in the execution memory 11 in a decrypted state.

メモリスクランブル部150は、秘匿すべきデータおよびプログラムをメモリ11上から消去する役割を果たす。メモリスクランブル部150は、実行用メモリ11内の記憶領域を乱数データ(厳密には疑似乱数データ)によって上書きするプログラムモジュールである。メモリスクランブル部150は、プログラムA120又はB140から呼び出され、プログラムA120又はB140によって指定された領域に乱数データを書き込む。メモリスクランブル部150は、書き込みの都度例えば時刻情報を用いて乱数を発生させればよい。これにより、書き込みを行う度に書き込みデータ内容を変更することができる。これにより、同じデータで繰り返し上書きされる実行用メモリ11内の領域を特定する手法を用いたプログラム解析を困難にすることができる。   The memo risk rumble unit 150 serves to erase data and programs to be concealed from the memory 11. The memo risk rumble unit 150 is a program module that overwrites the storage area in the execution memory 11 with random number data (strictly speaking, pseudo-random number data). The memory risk rumble unit 150 is called from the program A120 or B140, and writes random number data in an area designated by the program A120 or B140. The memo risk rumble unit 150 may generate a random number using, for example, time information each time writing is performed. As a result, the contents of the write data can be changed each time writing is performed. As a result, it is possible to make it difficult to perform program analysis using a technique for specifying an area in the execution memory 11 that is repeatedly overwritten with the same data.

後述するように、本実施の形態では、復号された部分プログラム143が配置されている記憶領域をメモリスクランブル部150が生成する乱数データによって上書きする。これにより、復号された部分プログラム143が実行用メモリ11に配置されたままとなることを防止し、秘匿すべき部分プログラム143が解析されてしまうことを効果的に防止できる。なお、メモリスクランブル部150が書き込むデータは、乱数データでなくてもよい。ただし、メモリスクランブル部150は、実行用メモリ11に書き込みを行う度に書き込みデータを変更するとよい。書き込みデータの変更はランダムに行ってもよいし、周期的に行ってもよい。ただし、周期的に変更する場合の繰り返し周期はできるだけ長くするとよい。   As will be described later, in the present embodiment, the storage area where the decrypted partial program 143 is placed is overwritten with random number data generated by the memory scrambler 150. Thereby, it is possible to prevent the decrypted partial program 143 from being placed in the execution memory 11 and to effectively prevent the partial program 143 to be concealed from being analyzed. Note that the data written by the memory scrambler 150 may not be random number data. However, the memory scramble unit 150 may change the write data every time writing is performed to the execution memory 11. The write data may be changed randomly or periodically. However, the repetition cycle when changing periodically should be as long as possible.

なお、図2には、プログラムB140が1つの部分暗号部142を含む例を示した。しかしながら、プログラムB140は、それぞれが暗号化された別個の部分プログラム143を含む複数の部分暗号部142を含んでもよい。この場合、処理要求メッセージに応じた処理を実行する過程で、(i) 部分暗号部142の復号、(ii) 部分プログラム143の実行、および (iii) 復号された部分プログラム143の実行用メモリ11からの消去、を部分プログラム143ごとに順に繰り返すとよい。つまり、一連の処理を行うための複数の部分プログラム143が同時に復号されて実行用メモリ11に配置されている状態を回避するとよい。これにより、仮に、1つの復号された部分プログラム143が実行用メモリ11に配置されているときのメモリダンプを取得された場合でも、他の部分プログラム143は暗号化されているため、メモリダンプを用いてプログラム解析を行うことは困難となる。   FIG. 2 shows an example in which the program B 140 includes one partial encryption unit 142. However, the program B 140 may include a plurality of partial encryption units 142 each including a separate partial program 143 that is encrypted. In this case, in the process of executing the processing according to the processing request message, (i) decryption of the partial encryption unit 142, (ii) execution of the partial program 143, and (iii) execution memory 11 of the decrypted partial program 143 It is preferable that the erasure from is repeated for each partial program 143 in order. That is, it is preferable to avoid a state where a plurality of partial programs 143 for performing a series of processes are simultaneously decoded and arranged in the execution memory 11. Thus, even if a memory dump is obtained when one decrypted partial program 143 is placed in the execution memory 11, the other partial programs 143 are encrypted, so the memory dump It becomes difficult to perform program analysis by using it.

続いて以下では、プログラムA120及びB140を実行する際の実行用メモリ11の記憶状態の遷移について図3〜5を用いて説明する。始めに図3は、復号されたプログラムB140がロードされる様子を示す図である。アプリケーション110が起動する際に、暗号部・復号プログラム122が暗号部130に対する復号処理を行う。プログラム配置部123は、暗号部・復号プログラム122によって復号されたプログラムB140を実行用メモリ11に配置する。このとき、プログラムB140内の部分プログラム143は、暗号化されたまま実行用メモリ11に配置されているため、この状態の実行用メモリ11のメモリダンプを取得された場合であっても部分プログラム143の漏洩を防止できる。   Subsequently, the transition of the storage state of the execution memory 11 when the programs A120 and B140 are executed will be described below with reference to FIGS. First, FIG. 3 is a diagram illustrating how the decrypted program B140 is loaded. When the application 110 is activated, the encryption unit / decryption program 122 performs a decryption process on the encryption unit 130. The program placement unit 123 places the program B 140 decrypted by the encryption unit / decryption program 122 in the execution memory 11. At this time, since the partial program 143 in the program B 140 is placed in the execution memory 11 in an encrypted state, even if a memory dump of the execution memory 11 in this state is acquired, the partial program 143 Leakage can be prevented.

図4は、プログラムA120からプログラムB140への処理要求メッセージの送信を契機として、プログラムB140が部分プログラム143をロードし、処理要求に応じた処理を行う様子を示す図である。プログラムA120は、アプリケーション110から処理要求があると、プログラム間通信部121からプログラムB140のプログラム間通信部141に対して処理要求メッセージを送信する。プログラムB140は、プログラム間通信部141で受信されたメッセージの内容に従って処理を行う。具体的には、プログラムB140が処理要求メッセージを受信した場合、部分暗号部・復号プログラム144が部分暗号部142に対する復号処理を行う。プログラム配置部145は、部分暗号部・復号プログラム144によって復号された部分プログラム143を実行用メモリ11に配置する。この後、プログラムB140は、実行用メモリ11に配置された部分プログラム143を呼び出し、プログラムAからの処理要求に対応した処理を行う。   FIG. 4 is a diagram illustrating a state in which the program B 140 loads the partial program 143 and performs processing according to the processing request, triggered by transmission of the processing request message from the program A 120 to the program B 140. When receiving a processing request from the application 110, the program A 120 transmits a processing request message from the inter-program communication unit 121 to the inter-program communication unit 141 of the program B 140. The program B140 performs processing according to the content of the message received by the inter-program communication unit 141. Specifically, when the program B 140 receives the processing request message, the partial encryption unit / decryption program 144 performs a decryption process on the partial encryption unit 142. The program placement unit 145 places the partial program 143 decrypted by the partial encryption unit / decryption program 144 in the execution memory 11. Thereafter, the program B 140 calls the partial program 143 arranged in the execution memory 11 and performs processing corresponding to the processing request from the program A.

図5は、部分プログラム143による処理が完了した後に、部分プログラム143が配置されている実行用メモリ11内の記憶領域を解放する様子を示す図である。プログラムB140は、部分プログラム143による処理が完了したことに応じて、復号された部分プログラム143が展開されている記憶領域を乱数データで上書きするようメモリスクランブル部150に要求する。これに応じて、メモリスクランブル部150は、部分プログラム143が展開されている記憶領域に乱数データを書き込んだ後に当該領域を解放する。プログラムB140のプログラム間通信部141は、プログラムA120のプログラム間通信部121に対して処理要求に応じた処理結果を含むメッセージを送信する。   FIG. 5 is a diagram illustrating a state in which the storage area in the execution memory 11 in which the partial program 143 is arranged is released after the processing by the partial program 143 is completed. In response to the completion of the processing by the partial program 143, the program B140 requests the memory scrambler 150 to overwrite the storage area where the decrypted partial program 143 is expanded with random number data. In response to this, the memory scrambler 150 writes the random number data in the storage area where the partial program 143 is expanded and then releases the area. The inter-program communication unit 141 of the program B140 transmits a message including a processing result corresponding to the processing request to the inter-program communication unit 121 of the program A120.

続いて以下では、アプリケーション110の起動から終了までの処理手順の具体例について図6及び7のフローチャートを用いて説明する。ステップS101では、アプリケーション110が起動する。既に述べたように、アプリケーション110の起動時には、暗号部130に対する復号処理が行われ、デコードされたプログラムB140が実行用メモリ11にロードされる(ステップS102及びS103)。ステップS104では、プログラムA120は、暗号部120の復号に使用される暗号部・復号プログラム122を実行用メモリ11から消去する。具体的には、プログラムA120は、暗号部・復号プログラム122が配置されている記憶領域を乱数データで上書きするようメモリスクランブル部150に要求すればよい。   Subsequently, a specific example of the processing procedure from the start to the end of the application 110 will be described below with reference to the flowcharts of FIGS. In step S101, the application 110 is activated. As described above, when the application 110 is activated, the decryption process is performed on the encryption unit 130, and the decoded program B140 is loaded into the execution memory 11 (steps S102 and S103). In step S <b> 104, the program A 120 deletes the encryption unit / decryption program 122 used for decryption of the encryption unit 120 from the execution memory 11. Specifically, the program A120 may request the memory scrambler 150 to overwrite the storage area in which the encryption part / decryption program 122 is arranged with random number data.

アプリケーション110からプログラムA120に処理要求が発生すると(S105)、プログラムA120は、プログラム間通信によって処理要求メッセージをプログラムB140に送信する(S106)。プログラムB140は、受信した処理要求メッセージを解析し、メッセージに応じた処理を開始する(S107)。   When a processing request is generated from the application 110 to the program A120 (S105), the program A120 transmits a processing request message to the program B140 by inter-program communication (S106). The program B140 analyzes the received processing request message and starts processing according to the message (S107).

ステップS108では、プログラムB140は、部分プログラム143を使用する必要があるか否かを判定する。部分プログラム143を使用する場合(S108でYES)、部分暗号部・復号プログラム144を実行することにより、部分暗号部142を復号する(S109)。ステップS110では、プログラム配置部145は、復号された部分プログラム143を実行用メモリ11にロードする。   In step S108, the program B140 determines whether or not the partial program 143 needs to be used. When the partial program 143 is used (YES in S108), the partial encryption unit 142 is decrypted by executing the partial encryption unit / decryption program 144 (S109). In step S110, the program placement unit 145 loads the decrypted partial program 143 into the execution memory 11.

ステップS111では、実行用メモリ11にロードされた部分プログラム143を呼び出して処理を実行する。ステップS112では、処理の完了した部分プログラム143を実行用メモリ11から消去する。具体的には、上述したように、復号された部分プログラム143が配置されている記憶領域を乱数データによって上書きすればよい。   In step S111, the partial program 143 loaded in the execution memory 11 is called to execute processing. In step S112, the processed partial program 143 is deleted from the execution memory 11. Specifically, as described above, the storage area where the decrypted partial program 143 is arranged may be overwritten with random number data.

ステップS113では、更に部分プログラム143の実行が必要か否かを判定する。部分プログラム143の更なる実行が必要であれば、ステップS109に戻る。一方、部分プログラム143の更なる実行が必要なければステップS114に進む。   In step S113, it is further determined whether or not the partial program 143 needs to be executed. If further execution of the partial program 143 is necessary, the process returns to step S109. On the other hand, if further execution of the partial program 143 is not necessary, the process proceeds to step S114.

ステップS114では、プログラムB140は、部分プログラム143を実行することで得た処理結果を、プログラム間通信を利用してプログラムA120に送信する。ステップS115では、プログラムA120は、プログラム間通信によって受信した処理結果を解析し、アプリケーション110に処理結果を返す。ステップS116では、アプリケーション110は、プログラムA120から受信した処理結果に基づく処理を行う。   In step S114, the program B140 transmits the processing result obtained by executing the partial program 143 to the program A120 using inter-program communication. In step S115, the program A 120 analyzes the processing result received by the inter-program communication and returns the processing result to the application 110. In step S116, the application 110 performs processing based on the processing result received from the program A120.

ステップS117では、アプリケーション110の終了判定を行う。アプリケーション110が終了しない場合、ステップS105〜S116が繰り返し行われる。一方、アプリケーション110が終了する場合(S117でYES)、復号後のプログラムB140を実行用メモリ11から消去する。具体的には、メモリスクランブル部150を起動し、復号後のプログラムB140が配置されている実行用メモリ11内の記憶領域を乱数データによって上書きすればよい。最後に、ステップS119では、アプリケーション110が終了する。   In step S117, the end of application 110 is determined. If the application 110 does not end, steps S105 to S116 are repeated. On the other hand, when the application 110 is terminated (YES in S117), the decrypted program B140 is deleted from the execution memory 11. Specifically, the memory scramble unit 150 is activated and the storage area in the execution memory 11 in which the decrypted program B 140 is arranged is overwritten with random number data. Finally, in step S119, the application 110 ends.

上述したように、本実施の形態にかかる情報処理装置1は、秘匿すべき部分プログラム143を必要なときにのみ復号化して実行用メモリ11にロードする。このため、復号化された部分プログラム143が実行用メモリ11に存在する時間を短くし、メモリダンプによるプログラム解析に対する耐性を向上させる。   As described above, the information processing apparatus 1 according to the present embodiment decrypts and loads the partial program 143 to be concealed into the execution memory 11 only when necessary. For this reason, the time during which the decrypted partial program 143 exists in the execution memory 11 is shortened, and the resistance to the program analysis by the memory dump is improved.

また、情報処理装置1は、部分プログラム143の実行用メモリ11からの消去を行う都度、異なるデータ(疑似乱数データ等)によって部分プログラム143が配置されていた記憶領域を上書きする。これにより、同じデータで繰り返し上書きされる実行用メモリ11内の領域を特定する手法を用いたプログラム解析を困難にすることができる。   Further, each time the partial program 143 is deleted from the execution memory 11, the information processing apparatus 1 overwrites the storage area in which the partial program 143 is arranged with different data (pseudo-random number data or the like). As a result, it is possible to make it difficult to perform program analysis using a technique for specifying an area in the execution memory 11 that is repeatedly overwritten with the same data.

また、情報処理装置1では、プログラムA120がプログラムB140に処理要求メッセージを送信し、処理要求メッセージの受信に応じてプログラムB140が部分プログラム143の復号化とロードを行う。つまり、プログラムAからプログラムBを関数呼び出しによって明示的に呼び出していないため、仮にデバッガ等によってプログラムA120が解析されたとしてもプログラムB140の解析は容易にできない。   In the information processing apparatus 1, the program A 120 transmits a processing request message to the program B 140, and the program B 140 decrypts and loads the partial program 143 in response to reception of the processing request message. That is, since the program A is not explicitly called from the program A by the function call, even if the program A 120 is analyzed by a debugger or the like, the program B 140 cannot be easily analyzed.

以下では、情報処理装置1の具体的な適用先の一例について説明する。ここでは、プログラムB140が2つの部分プログラム143A及びBを含み、これらの部分プログラム143A及びBを用いてデジタルコンテンツの復号処理が行われる場合について説明する。   Hereinafter, an example of a specific application destination of the information processing apparatus 1 will be described. Here, a case will be described in which the program B 140 includes two partial programs 143A and B, and the digital content decryption processing is performed using these partial programs 143A and B.

図8は、ロード前のアプリケーション110を示す図であり、図2に対応する。図8の例では、プログラムB140は、2つの部分暗号部142A及び142Bを含む。部分暗号部142Aは、暗号化されたコンテンツ暗号鍵生成プログラム143Aを含む。また、部分暗号部142Bは、暗号化されたコンテンツ復号プログラム143Bを含む。暗号鍵生成プログラム143Aは、デジタルコンテンツの復号化に使用される暗号化鍵を生成する。コンテンツ復号プログラム143Bは、暗号鍵生成プログラム143Aによって生成された暗号鍵を用いてデジタルコンテンツの復号化処理を行う。   FIG. 8 is a diagram showing the application 110 before loading, and corresponds to FIG. In the example of FIG. 8, the program B140 includes two partial encryption units 142A and 142B. The partial encryption unit 142A includes an encrypted content encryption key generation program 143A. The partial encryption unit 142B includes an encrypted content decryption program 143B. The encryption key generation program 143A generates an encryption key used for decrypting the digital content. The content decryption program 143B decrypts the digital content using the encryption key generated by the encryption key generation program 143A.

図9は、アプリケーション11が起動された状態の実行用メモリ11の状態を示している。より具体的に述べると、図9は、プログラムA120からプログラムB140への "コンテンツ復号要求メッセージ"の送信を契機として、プログラムB140が暗号鍵生成プログラム143Aをロードし、暗号鍵データ146を生成する様子を示している。プログラムA120は、アプリケーション110からコンテンツ復号要求があると、プログラム間通信部121からプログラムB140のプログラム間通信部141に対して復号要求メッセージを送信する。   FIG. 9 shows a state of the execution memory 11 in a state where the application 11 is activated. More specifically, FIG. 9 shows that the program B 140 loads the encryption key generation program 143A and generates the encryption key data 146 when the “content decryption request message” is transmitted from the program A 120 to the program B 140. Is shown. When there is a content decryption request from the application 110, the program A120 transmits a decryption request message from the inter-program communication unit 121 to the inter-program communication unit 141 of the program B140.

プログラムB140は、プログラム間通信部141で受信されたメッセージの内容に従って処理を行う。具体的には、プログラムB140が復号要求メッセージを受信した場合、部分暗号部・復号プログラム144が部分暗号部142Aに対する復号処理を行う。プログラム配置部145は、部分暗号部・復号プログラム144によって復号された暗号鍵生成プログラム143Aを実行用メモリ11に配置する。この後、プログラムB140は、実行用メモリ11に配置された暗号鍵生成プログラム143Aを呼び出し、暗号鍵データ146の生成処理を行う。図9に示す状態のメモリダンプを取得されても、暗号化されているコンテンツ復号プログラム143Bまで解析することは困難である。   The program B140 performs processing according to the content of the message received by the inter-program communication unit 141. Specifically, when the program B 140 receives the decryption request message, the partial encryption unit / decryption program 144 performs a decryption process on the partial encryption unit 142A. The program placement unit 145 places the encryption key generation program 143A decrypted by the partial encryption unit / decryption program 144 in the execution memory 11. Thereafter, the program B 140 calls the encryption key generation program 143A arranged in the execution memory 11, and performs generation processing of the encryption key data 146. Even if the memory dump in the state shown in FIG. 9 is acquired, it is difficult to analyze the encrypted content decryption program 143B.

図10は、暗号鍵データ146の生成が完了した後に、暗号鍵生成プログラム143Aが配置されている実行用メモリ11内の記憶領域を解放する様子を示している。また、図10は、暗号鍵生成プログラム143Aの消去後に、コンテンツ復号プログラム143Bがロードされる様子を示している。プログラムB140は、暗号鍵データ146の生成が完了したことに応じて、暗号鍵生成プログラム143Aが展開されている記憶領域を乱数データで上書きするようメモリスクランブル部150に要求する。これに応じて、メモリスクランブル部150は、暗号鍵生成プログラム143Aが展開されている記憶領域に乱数データを書き込んだ後に当該領域を解放する。次に、部分暗号部・復号プログラム144が部分暗号部142Bに対する復号処理を行う。プログラム配置部145は、部分暗号部・復号プログラム144によって復号されたコンテンツ復号プログラム143Bを実行用メモリ11に配置する。この後、プログラムB140は、実行用メモリ11に配置されたコンテンツ復号プログラム143Bを呼び出し、暗号鍵データ146を用いてデジタルコンテンツの復号化を行う。   FIG. 10 shows a state where the storage area in the execution memory 11 in which the encryption key generation program 143A is arranged is released after the generation of the encryption key data 146 is completed. FIG. 10 shows how the content decryption program 143B is loaded after the encryption key generation program 143A is deleted. In response to the completion of generation of the encryption key data 146, the program B140 requests the memory scrambler 150 to overwrite the storage area in which the encryption key generation program 143A is expanded with random number data. In response to this, the memory scrambler 150 writes the random number data to the storage area where the encryption key generation program 143A is expanded and then releases the area. Next, the partial encryption unit / decryption program 144 performs a decryption process on the partial encryption unit 142B. The program placement unit 145 places the content decryption program 143B decrypted by the partial encryption unit / decryption program 144 in the execution memory 11. Thereafter, the program B 140 calls the content decryption program 143B arranged in the execution memory 11, and decrypts the digital content using the encryption key data 146.

図11は、デジタルコンテンツの復号が完了した後に、コンテンツ復号プログラム143Bが配置されている実行用メモリ11内の記憶領域を解放する様子を示している。プログラムB140は、デジタルコンテンツの復号が完了したことに応じて、コンテンツ復号プログラム143Bが展開されている記憶領域を乱数データで上書きするようメモリスクランブル部150に要求する。これに応じて、メモリスクランブル部150は、コンテンツ復号プログラム143Bが展開されている記憶領域に乱数データを書き込んだ後に当該領域を解放する。なお、このとき、暗号鍵データ146が保持されている記憶領域も乱数データで上書きした後に解放するとよい。これにより、部分プログラム143だけでなく、部分プログラム143によって生成される一時的なデータも消去でき、漏洩を防止できる。   FIG. 11 shows a state in which the storage area in the execution memory 11 in which the content decryption program 143B is disposed is released after the decryption of the digital content is completed. The program B140 requests the memory scrambler 150 to overwrite the storage area where the content decryption program 143B is expanded with random number data in response to the completion of the decryption of the digital content. In response to this, the memory scrambler 150 writes the random number data in the storage area where the content decryption program 143B is expanded and then releases the area. At this time, the storage area holding the encryption key data 146 may be released after being overwritten with random number data. As a result, not only the partial program 143 but also temporary data generated by the partial program 143 can be deleted, and leakage can be prevented.

<発明の実施の形態2>
本実施の形態では、(i) プログラム生成する秘密情報を暗号化したうえでメモリに格納すること、(ii) 暗号化後の秘密情報を格納する領域を毎回変化させること、(iii)メモリ上に展開されている平文の(暗号化されていない)秘密情報が不要になった場合には、平文の秘密情報が格納されていた領域を疑似乱数などの規則性のないデータによって上書きした後に記憶領域を解放すること、について述べる。本実施の形態は、例えば図9に示した暗号鍵データ146をメモリ11に配置する際に適用可能である。
<Embodiment 2 of the Invention>
In this embodiment, (i) the program-generated secret information is encrypted and stored in the memory, (ii) the area for storing the encrypted secret information is changed each time, and (iii) the memory is stored. If the plaintext (non-encrypted) secret information deployed in is no longer needed, the area where the plaintext secret information was stored is overwritten with non-regular data such as pseudorandom numbers and stored. Describe freeing up space. This embodiment can be applied when, for example, the encryption key data 146 shown in FIG.

図12は、本実施の形態にかかる情報処理装置2の構成を示すブロック図である。秘密情報生成プログラム24は、秘密情報を生成するプログラムである。秘密情報使用プログラム25は、プログラム24によって生成された秘密情報を使用するプログラムである。例えば、秘密情報生成プログラム24は暗号鍵を生成するプログラムであり、秘密情報使用プログラム25は暗号鍵を使用して復号処理を行うプログラムである。   FIG. 12 is a block diagram showing a configuration of the information processing apparatus 2 according to the present embodiment. The secret information generation program 24 is a program that generates secret information. The secret information use program 25 is a program that uses the secret information generated by the program 24. For example, the secret information generation program 24 is a program that generates an encryption key, and the secret information use program 25 is a program that performs a decryption process using the encryption key.

秘密情報管理部23は、メモリ21に配置される秘密情報の管理を行う。具体的に述べると、秘密情報管理部23は、秘密情報の暗号化と、メモリ21に配置された平文の秘密情報の消去を制御する。秘密情報保護装置22は、秘密情報管理部23の制御に基づいてメモリ21にアクセスし、秘密情報の暗号化、平文の秘密情報の消去を行う。   The secret information management unit 23 manages secret information arranged in the memory 21. Specifically, the secret information management unit 23 controls encryption of secret information and erasure of plaintext secret information arranged in the memory 21. The secret information protection device 22 accesses the memory 21 based on the control of the secret information management unit 23, and encrypts the secret information and erases the plaintext secret information.

次に、図13〜18を参照して、情報処理装置2の動作について説明する。図13は、秘密情報生成プログラム24が秘密情報を生成する様子を示す図である。秘密情報生成プログラム24は、生成した平文の秘密情報211をメモリ21に格納する(図18のS201)。   Next, the operation of the information processing apparatus 2 will be described with reference to FIGS. FIG. 13 is a diagram showing how the secret information generation program 24 generates secret information. The secret information generation program 24 stores the generated plaintext secret information 211 in the memory 21 (S201 in FIG. 18).

図14は、平文の秘密情報211を暗号化する様子を示す図である。平文の秘密情報211を生成した秘密情報生成プログラム24は、秘密情報管理部23に秘密情報211の暗号化を要求する(図18のS202)。プログラム24から暗号化要求を受信した暗号処理部231は、秘密情報保護装置22内の変数暗号鍵生成部222に対して、変数暗号鍵の生成を要求する。ここで、変数暗号鍵とは、秘密情報を暗号化するために暗号鍵である。変数暗号鍵生成部222は、変数暗号鍵212を生成してメモリ21に格納する(図18のS203)。なお、変数暗号鍵生成部222は、変数暗号鍵の漏洩に対処するため、変数暗号鍵を生成する度に異なる暗号鍵を生成するとよい。   FIG. 14 is a diagram showing how the plaintext secret information 211 is encrypted. The secret information generation program 24 that has generated the plaintext secret information 211 requests the secret information management unit 23 to encrypt the secret information 211 (S202 in FIG. 18). The encryption processing unit 231 that has received the encryption request from the program 24 requests the variable encryption key generation unit 222 in the secret information protection device 22 to generate a variable encryption key. Here, the variable encryption key is an encryption key for encrypting secret information. The variable encryption key generation unit 222 generates the variable encryption key 212 and stores it in the memory 21 (S203 in FIG. 18). Note that the variable encryption key generation unit 222 may generate a different encryption key each time a variable encryption key is generated in order to deal with the leakage of the variable encryption key.

また、暗号処理部231は、変数暗号部221に対して秘密情報211の暗号化を要求する。変数暗号部221は、変数暗号鍵212を用いて秘密情報211を暗号化し、暗号化された秘密情報(暗号化秘密情報)213をメモリ21に格納する(図18のS204)。なお、暗号化秘密情報213のメモリ21における格納位置の特定を困難にするため、変数暗号部221は、暗号化秘密情報213の生成の度に格納先を変更するとよい。   The encryption processing unit 231 requests the variable encryption unit 221 to encrypt the secret information 211. The variable encryption unit 221 encrypts the secret information 211 using the variable encryption key 212, and stores the encrypted secret information (encrypted secret information) 213 in the memory 21 (S204 in FIG. 18). In order to make it difficult to specify the storage location of the encrypted secret information 213 in the memory 21, the variable encryption unit 221 may change the storage destination each time the encrypted secret information 213 is generated.

図15は、秘密情報管理部23が、平文の秘密情報211を削除する様子を示す図である。暗号処理部231は、メモリ破棄部233に対して秘密情報211の消去を要求する(図18のS205)。メモリ破棄部233は、秘密情報保護装置22内のメモリスクランブル部223に対して、秘密情報211の格納領域を乱数データによって上書きするよう指示する。メモリスクランブル部223は、平文の秘密情報211が格納されている領域に乱数データを書き込んだ後に当該領域を解放する(図18のS206)。なお、同一データによって上書きされる記憶領域をトレースする手法によるプログラム解析に対処するため、メモリスクランブル部223は、上書き処理を行う度に異なる乱数データを生成するとよい。図15の状態でメモリダンプが取得されても、平文の秘密情報211が存在していないため、秘密情報211がメモリ21から容易に読み取られてしまうことを防止できる。   FIG. 15 is a diagram illustrating how the secret information management unit 23 deletes the plaintext secret information 211. The encryption processing unit 231 requests the memory discard unit 233 to delete the secret information 211 (S205 in FIG. 18). The memory discard unit 233 instructs the memory scramble unit 223 in the secret information protection device 22 to overwrite the storage area of the secret information 211 with random number data. The memo risk rumble unit 223 writes the random number data in the area where the plaintext secret information 211 is stored, and then releases the area (S206 in FIG. 18). Note that the memory scrambler 223 may generate different random numbers each time overwriting is performed in order to cope with program analysis by a method of tracing a storage area that is overwritten by the same data. Even if the memory dump is acquired in the state of FIG. 15, since the plaintext secret information 211 does not exist, it is possible to prevent the secret information 211 from being easily read from the memory 21.

図16は、秘密情報使用プログラム25の要求に応じて、暗号化秘密情報213の復号化を行う様子を示す図である。秘密情報使用プログラム25は、復号処理部232に対して暗号化秘密情報213の復号化を要求する(図18のS207)。復号処理部232は、秘密情報保護装置22内の変数復号部224に対して暗号化秘密情報213の復号化を指示する。変数復号部224は、変数暗号鍵212を用いて暗号化秘密情報213を復号し、復号された秘密情報211をメモリ21に格納する(図18のS208)。この後、秘密情報使用プログラム25は、復号された秘密情報211を用いた処理を行う(図18のS209)。   FIG. 16 is a diagram showing how the encrypted secret information 213 is decrypted in response to a request from the secret information use program 25. The secret information use program 25 requests the decryption processing unit 232 to decrypt the encrypted secret information 213 (S207 in FIG. 18). The decryption processing unit 232 instructs the variable decryption unit 224 in the secret information protection device 22 to decrypt the encrypted secret information 213. The variable decryption unit 224 decrypts the encrypted secret information 213 using the variable encryption key 212, and stores the decrypted secret information 211 in the memory 21 (S208 in FIG. 18). Thereafter, the secret information use program 25 performs a process using the decrypted secret information 211 (S209 in FIG. 18).

図17は、秘密情報使用プログラム25の要求に応じて、平文の秘密情報211の消去を行う様子を示す図である。復号された秘密情報211を用いた処理の完了後、秘密情報使用プログラム25は、メモリ破棄部233に対して、メモリ21からの秘密情報211の消去を要求する(図18のS210)。メモリ破棄部233は、メモリスクランブル部223に対して、秘密情報211の格納領域を乱数データによって上書きするよう指示する。メモリスクランブル部223は、平文の秘密情報211が格納されている領域に乱数データを書き込んだ後に当該領域を解放する(図18のS211)。   FIG. 17 is a diagram showing how the plaintext secret information 211 is deleted in response to a request from the secret information use program 25. After the process using the decrypted secret information 211 is completed, the secret information use program 25 requests the memory discard unit 233 to delete the secret information 211 from the memory 21 (S210 in FIG. 18). The memory discard unit 233 instructs the memory scramble unit 223 to overwrite the storage area of the secret information 211 with random number data. The memo risk rumble unit 223 writes the random number data in the area where the plaintext secret information 211 is stored, and then releases the area (S211 in FIG. 18).

上述したように、本実施の形態にかかる情報処理装置2は、メモリ21上の秘密情報を暗号化している。このため、メモリ21上のデータ変化等をモニタすることによる秘密情報の検出が困難となる。また、暗号化秘密情報213の配置先を毎回変更することによって、メモリ21をモニタすることによる秘密情報の検出を一層困難にすることができる。   As described above, the information processing apparatus 2 according to the present embodiment encrypts the secret information on the memory 21. This makes it difficult to detect secret information by monitoring data changes on the memory 21. In addition, by changing the arrangement destination of the encrypted secret information 213 every time, detection of the secret information by monitoring the memory 21 can be made more difficult.

また、情報処理装置2は、秘密情報の暗号化に使用する変数暗号鍵212を毎回変更することによって、メモリ21上の変数暗号鍵212の格納位置や変数暗号鍵212自体の検出を困難にすることができる。   Further, the information processing apparatus 2 makes it difficult to detect the storage location of the variable encryption key 212 on the memory 21 and the variable encryption key 212 itself by changing the variable encryption key 212 used for encryption of the secret information every time. be able to.

また、情報処理装置2は、平文の秘密情報211を消去する際に、平文の秘密情報211の記憶領域を乱数等の規則性の無いデータで上書きしてから解放する。このため、メモリ21上に秘密情報を残存させず、秘密情報を保護できる。また、上書きに使用するデータを毎回変更するとよい。これにより、秘密情報211が展開されるメモリ21上の位置の特定を困難にすることができる。   Also, when erasing the plaintext secret information 211, the information processing apparatus 2 overwrites the storage area of the plaintext secret information 211 with data having no regularity such as a random number and then releases it. For this reason, the secret information can be protected without leaving the secret information on the memory 21. Moreover, it is good to change the data used for overwriting each time. This makes it difficult to specify the position on the memory 21 where the secret information 211 is developed.

なお、上述した例では、1つの秘密情報211が生成される場合を示したが、秘密情報211は、1又は複数の秘密情報生成プログラム24によって複数個生成されてもよい。この場合、変数暗号鍵生成部222は秘密情報ごとに異なる暗号鍵を生成し、変数暗号部221は各秘密情報を異なる暗号鍵によって暗号化するとよい。   In the example described above, the case where one piece of secret information 211 is generated is shown, but a plurality of pieces of secret information 211 may be generated by one or a plurality of secret information generation programs 24. In this case, the variable encryption key generation unit 222 may generate a different encryption key for each secret information, and the variable encryption unit 221 may encrypt each secret information with a different encryption key.

さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。   Furthermore, the present invention is not limited to the above-described embodiments, and various modifications can be made without departing from the gist of the present invention described above.

1、2 情報処理装置
10 プロセッサ
11 実行用メモリ
12 不揮発性メモリ
100 オペレーティングシステム(OS)
110 アプリケーションプログラム
120 プログラムA
121 プログラム間通信部
122 暗号部・復号プログラム
123 プログラム配置部
130 暗号部
140 プログラムB
141 プログラム間通信部
142、142A、142B 部分暗号部
143 部分プログラム
143A コンテンツ暗号鍵生成プログラム
143B コンテンツ復号プログラム
144 部分暗号部・復号プログラム
145 プログラム配置部
146 暗号鍵データ
150 メモリスクランブル部
21 メモリ
22 秘密情報保護装置
23 秘密情報管理部
24 秘密情報生成プログラム
25 秘密情報使用プログラム
211 平文の秘密情報
212 変数暗号鍵
213 暗号化された秘密情報
221 変数暗号部
222 変数暗号鍵生成部
223 メモリスクランブル部
224 変数復号部
231 暗号処理部
232 復号処理部
233 メモリ破棄部
DESCRIPTION OF SYMBOLS 1, 2 Information processing apparatus 10 Processor 11 Execution memory 12 Non-volatile memory 100 Operating system (OS)
110 Application program 120 Program A
121 inter-program communication unit 122 encryption unit / decryption program 123 program placement unit 130 encryption unit 140 program B
141 Inter-program communication unit 142, 142A, 142B Partial encryption unit 143 Partial program 143A Content encryption key generation program 143B Content decryption program 144 Partial encryption unit / decryption program 145 Program allocation unit 146 Encryption key data 150 Memo risk rumble unit 21 Memory 22 Secret information Protection device 23 Secret information management unit 24 Secret information generation program 25 Secret information use program 211 Plain text secret information 212 Variable encryption key 213 Encrypted secret information 221 Variable encryption unit 222 Variable encryption key generation unit 223 Memo risk rumble unit 224 Variable decryption 231 Encryption processing unit 232 Decryption processing unit 233 Memory discarding unit

Claims (20)

マルチプログラミング環境を提供可能な少なくとも1つのプロセッサと、
実行用メモリと、
を備え、
前記少なくとも1つのプロセッサは、
(a)前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを前記実行用メモリに配置する処理と、
ここで前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含み、前記第1及び第2のプログラムは、プログラム間通信機能を利用して互いにメッセージを送受信可能である、
(b)前記第1のプログラムから前記第2のプログラムに前記プログラム間通信によって処理要求メッセージを送信する処理と、
(c)前記第2のプログラムを実行することにより、前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置する処理と、
(d)復号後の前記部分プログラムを実行することにより、前記処理要求メッセージに対応した演算を行う処理と、
(e)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去する処理と、
(f)前記プログラム間通信によって、前記部分プログラムによる演算結果を前記第2のプログラムから前記第1のプログラムに送信する処理と、
を行うよう構成されている、
情報処理装置。
At least one processor capable of providing a multi-programming environment;
Execution memory, and
With
The at least one processor comprises:
(A) a process of arranging in the execution memory first and second programs started in parallel in the multiprogramming environment;
Here, the second program includes a partial program that is placed in an encrypted form in the execution memory, and the first and second programs can send and receive messages to each other using an inter-program communication function. Is,
(B) processing for transmitting a processing request message from the first program to the second program by inter-program communication;
(C) By executing the second program, the partial program is decrypted when the processing request message is received, and the decrypted partial program is placed in the execution memory;
(D) a process of performing an operation corresponding to the processing request message by executing the partial program after decoding;
(E) a process of erasing the partial program after decoding from the execution memory after completion of the operation by the partial program after decoding;
(F) a process of transmitting an operation result by the partial program from the second program to the first program by the inter-program communication;
Configured to do the
Information processing device.
前記処理(e)における前記部分プログラムの消去は、復号後の前記部分プログラムが配置されていた前記実行用メモリ内の領域を前記部分プログラムとは異なる他のデータで上書きすることにより行われ、前記他のデータは、前記上書き処理が行われる都度変更される、請求項1に記載の情報処理装置。   The erasing of the partial program in the process (e) is performed by overwriting the area in the execution memory where the partial program after the decryption is arranged with other data different from the partial program, The information processing apparatus according to claim 1, wherein the other data is changed each time the overwriting process is performed. 前記処理(c)において復号後の前記部分プログラムが配置される前記実行用メモリ内の領域は、復号後の前記部分プログラムの配置が行われる都度変更される、請求項1又は2に記載の情報処理装置。   The information according to claim 1 or 2, wherein an area in the execution memory in which the partial program after decoding is arranged in the processing (c) is changed every time the partial program after decoding is arranged. Processing equipment. 前記部分プログラムは、第1及び第2の部分プログラムを含み、
前記処理(c)では、前記第1及び第2の部分プログラムが復号化され、
前記処理(d)では、復号後の前記第1の部分プログラムの実行によって第1の演算結果を得るとともに、復号後の前記第2の部分プログラムの実行によって前記第1の演算結果を利用した演算を行って第2の演算結果を得て、
前記処理(f)では、前記第2の演算結果が前記プログラム間通信によって前記第1のプログラムに送信される、
請求項1〜3のいずれか1項に記載の情報処理装置。
The partial program includes first and second partial programs,
In the process (c), the first and second partial programs are decrypted,
In the process (d), a first calculation result is obtained by executing the first partial program after decoding, and an operation using the first calculation result by executing the second partial program after decoding To obtain the second calculation result,
In the process (f), the second calculation result is transmitted to the first program by the inter-program communication.
The information processing apparatus according to any one of claims 1 to 3.
前記少なくとも1つのプロセッサは、前記処理(c)〜(e)を繰り返し行い、
先の前記処理(c)〜(e)において前記第1の部分プログラムの復号化、復号された前記第1の部分プログラムによる前記第1の演算結果の生成、復号された前記第1の部分プログラムの前記実行用メモリからの消去を行った後に、
後の前記処理(c)〜(e)において前記第2の部分プログラムの復号化、復号された前記第2の部分プログラムによる前記第2の演算結果の生成、復号された前記第2の部分プログラムの前記実行用メモリからの消去を行う、
請求項4に記載の情報処理装置。
The at least one processor repeatedly performs the processes (c) to (e);
Decoding the first partial program in the previous processes (c) to (e), generating the first operation result by the decoded first partial program, and decoding the first partial program After erasing from the execution memory
In the subsequent processes (c) to (e), the second partial program is decoded, the second calculation result is generated by the decoded second partial program, and the second partial program is decoded. Erasing from the execution memory
The information processing apparatus according to claim 4.
前記処理要求は暗号化コンテンツの復号化要求であり、
前記第1の部分プログラムは、前記暗号化コンテンツの復号に必要な暗号鍵を前記第1の演算結果として生成する処理を前記少なくとも1つのプロセッサに行わせるための記述を含み、
前記第2の部分プログラムは、前記暗号鍵を用いて前記暗号化コンテンツの復号化を行い、復号後のコンテンツを前記第2の演算結果として生成する処理を前記少なくとも1つのプロセッサに行わせるための記述を含む、
請求項4又は5に記載の情報処理装置。
The processing request is a request for decrypting encrypted content,
The first partial program includes a description for causing the at least one processor to perform a process of generating an encryption key necessary for decrypting the encrypted content as the first calculation result,
The second partial program is for causing the at least one processor to perform the process of decrypting the encrypted content using the encryption key and generating the decrypted content as the second calculation result. Including description,
The information processing apparatus according to claim 4 or 5.
前記処理(e)は、前記暗号鍵が配置されていた前記実行用メモリ内の領域を前記暗号鍵とは異なる他のデータで上書きすることをさらに含む、
請求項6に記載の情報処理装置。
The process (e) further includes overwriting an area in the execution memory where the encryption key has been arranged with other data different from the encryption key,
The information processing apparatus according to claim 6.
前記第1の演算結果が配置される前記実行用メモリ内の領域は、前記第1の演算結果が生成される都度変更される、請求項4〜7のいずれか1項に記載の情報処理装置。   The information processing apparatus according to any one of claims 4 to 7, wherein an area in the execution memory in which the first calculation result is arranged is changed every time the first calculation result is generated. . マルチプログラミング環境を提供可能な少なくとも1つのプロセッサ及び実行用メモリを含むコンピュータに実行されるアプリケーションプログラムであって、
前記アプリケーションプログラムは、前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを含み、
前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含み、
前記第1のプログラムは、
(i)プログラム間通信機能を利用して前記第2のプログラムに処理要求メッセージを送信する処理と、
(ii)前記処理要求メッセージに対応する演算結果を前記第2のプログラムから前記プログラム間通信機能を利用して受信する処理と、
を前記コンピュータに行わせ、
前記第2のプログラムは、
(a)前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置する処理と、
(b)復号後の前記部分プログラムを呼び出して前記処理要求メッセージに対応した演算を行わせる処理と、
(c)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去する処理と、
(d)前記プログラム間通信機能を利用して、復号後の前記部分プログラムによって生成された前記演算結果を前記第1のプログラムに送信する処理と、
を前記コンピュータに行わせる、
アプリケーションプログラム。
An application program executed on a computer including at least one processor and an execution memory capable of providing a multiprogramming environment,
The application program includes first and second programs that are started in parallel on the multiprogramming environment,
The second program includes a partial program that is arranged in an encrypted manner in the execution memory,
The first program is:
(I) processing for transmitting a processing request message to the second program using an inter-program communication function;
(Ii) processing for receiving an operation result corresponding to the processing request message from the second program using the inter-program communication function;
To the computer,
The second program is:
(A) Decoding the partial program triggered by reception of the processing request message, and placing the partial program after decoding in the execution memory;
(B) processing for calling the partial program after decoding and performing an operation corresponding to the processing request message;
(C) a process of erasing the partial program after decoding from the execution memory after completion of the calculation by the partial program after decoding;
(D) a process of transmitting the calculation result generated by the partial program after decoding to the first program using the inter-program communication function;
Causing the computer to
Application program.
前記処理(c)における前記部分プログラムの消去は、復号後の前記部分プログラムが配置されていた前記実行用メモリ内の領域を前記部分プログラムとは異なる他のデータで上書きすることにより行われ、前記他のデータは、前記上書き処理が行われる都度変更される、請求項9に記載のアプリケーションプログラム。   The erasure of the partial program in the process (c) is performed by overwriting the area in the execution memory where the partial program after the decryption is arranged with other data different from the partial program, The application program according to claim 9, wherein other data is changed each time the overwriting process is performed. 前記処理(a)において復号後の前記部分プログラムが配置される前記実行用メモリ内の領域は、復号後の前記部分プログラムの配置が行われる都度変更される、請求項9又は10に記載のアプリケーションプログラム。   The application according to claim 9 or 10, wherein an area in the execution memory in which the partial program after decryption is arranged in the processing (a) is changed every time the partial program after decryption is arranged. program. 前記部分プログラムは、第1及び第2の部分プログラムを含み、
前記処理(i)では、前記第1及び第2の部分プログラムが暗号化されたまま前記実行用メモリに配置され、
前記処理(a)では、前記第1及び第2の部分プログラムが復号化され、
前記処理(b)では、復号後の前記第1の部分プログラムに従った演算によって第1の演算結果が生成され、復号後の前記第2の部分プログラムに従った演算によって前記第1の演算結果に基づいて第2の演算結果が生成され、
前記処理(d)では、前記第2の演算結果が前記プログラム間通信によって前記第1のプログラムに送信される、
請求項9〜11のいずれか1項に記載のアプリケーションプログラム。
The partial program includes first and second partial programs,
In the process (i), the first and second partial programs are placed in the execution memory while being encrypted,
In the process (a), the first and second partial programs are decrypted,
In the process (b), a first calculation result is generated by calculation according to the first partial program after decoding, and the first calculation result is calculated by calculation according to the second partial program after decoding. A second calculation result is generated based on
In the process (d), the second calculation result is transmitted to the first program by the inter-program communication.
The application program of any one of Claims 9-11.
前記第2のプログラムは、前記処理(a)〜(c)を前記コンピュータに繰り返し行わせるための記述を含み、
前記コンピュータは、
先の前記処理(a)〜(c)において、前記第1の部分プログラムの復号化、復号された前記第1の部分プログラムに従った演算による前記第1の演算結果の生成、復号された前記第1の部分プログラムの前記実行用メモリからの消去を行った後に、
後の前記処理(a)〜(c)において、前記第2の部分プログラムの復号化、復号された前記第2の部分プログラムに従った演算による前記第2の演算結果の生成、復号された前記第2の部分プログラムの前記実行用メモリからの消去を行う、
請求項12に記載のアプリケーションプログラム。
The second program includes a description for causing the computer to repeatedly perform the processes (a) to (c),
The computer
In the previous processes (a) to (c), the decoding of the first partial program, the generation of the first calculation result by the calculation according to the decoded first partial program, and the decoding After erasing the first partial program from the execution memory,
In the subsequent processes (a) to (c), the decoding of the second partial program, the generation of the second calculation result by the calculation according to the decoded second partial program, and the decoding Erasing the second partial program from the execution memory;
The application program according to claim 12.
前記処理要求は暗号化コンテンツの復号化要求であり、
前記第1の部分プログラムは、前記暗号化コンテンツの復号に必要な暗号鍵を前記第1の演算結果として生成する処理を前記コンピュータに行わせるための記述を含み、
前記第2の部分プログラムは、前記暗号鍵を用いて前記暗号化コンテンツの復号化を行い、復号後のコンテンツを前記第2の演算結果として生成する処理を前記コンピュータに行わせるための記述を含む、
請求項12又は13に記載のアプリケーションプログラム。
The processing request is a request for decrypting encrypted content,
The first partial program includes a description for causing the computer to perform processing for generating an encryption key necessary for decrypting the encrypted content as the first calculation result,
The second partial program includes a description for causing the computer to perform a process of decrypting the encrypted content using the encryption key and generating the decrypted content as the second calculation result. ,
The application program according to claim 12 or 13.
前記処理(c)は、前記暗号鍵が配置されていた前記実行用メモリ内の領域を前記暗号鍵とは異なる他のデータで上書きすることをさらに含む、
請求項14に記載のアプリケーションプログラム。
The process (c) further includes overwriting an area in the execution memory in which the encryption key has been arranged with other data different from the encryption key.
The application program according to claim 14.
前記第1の演算結果が配置される前記実行用メモリ内の領域は、前記第1の演算結果が生成される都度変更される、請求項12〜15のいずれか1項に記載のアプリケーションプログラム。   The application program according to any one of claims 12 to 15, wherein an area in the execution memory in which the first calculation result is arranged is changed every time the first calculation result is generated. マルチプログラミング環境を提供可能な少なくとも1つのプロセッサ及び実行用メモリを含むコンピュータにおけるアプリケーションプログラムの実行方法であって、
前記アプリケーションプログラムは、前記マルチプログラミング環境上で並行して起動される第1及び第2のプログラムを含み、
前記第2のプログラムは、前記実行用メモリに暗号化されたまま配置される部分プログラムを含み、
前記方法は、
(a)前記第1及び第2のプログラムを前記実行用メモリに配置すること、
(b)前記第1のプログラムから前記第2のプログラムに前記プログラム間通信によって処理要求メッセージを送信すること、
(c)前記第2のプログラムを実行することにより、前記処理要求メッセージの受信を契機として前記部分プログラムの復号化を行い、復号後の前記部分プログラムを前記実行用メモリに配置すること、
(d)復号後の前記部分プログラムを実行することにより、前記処理要求メッセージに対応した演算を行うこと、
(e)復号後の前記部分プログラムによる前記演算の完了後に、復号後の前記部分プログラムを前記実行用メモリから消去すること、及び
(f)前記プログラム間通信を利用して、前記部分プログラムによる演算結果を前記第2のプログラムから前記第1のプログラムに送信すること、
を備える、アプリケーションプログラムの実行方法。
A method for executing an application program in a computer including at least one processor and an execution memory capable of providing a multiprogramming environment,
The application program includes first and second programs that are started in parallel on the multiprogramming environment,
The second program includes a partial program that is arranged in an encrypted manner in the execution memory,
The method
(A) arranging the first and second programs in the execution memory;
(B) transmitting a processing request message from the first program to the second program by inter-program communication;
(C) executing the second program to decrypt the partial program triggered by the reception of the processing request message, and placing the decrypted partial program in the execution memory;
(D) performing an operation corresponding to the processing request message by executing the partial program after decoding;
(E) deleting the partial program after decoding from the execution memory after completion of the calculation by the partial program after decoding; and (f) calculating by the partial program using the inter-program communication. Sending a result from the second program to the first program;
An application program execution method comprising:
前記部分プログラムは、第1及び第2の部分プログラムを含み、
前記ステップ(c)では、前記第1及び第2の部分プログラムが復号化され、
前記ステップ(d)では、復号後の前記第1の部分プログラムの実行によって第1の演算結果を得るとともに、復号後の前記第2の部分プログラムの実行によって前記第1の演算結果を利用した演算を行って第2の演算結果を得て、
前記ステップ(f)では、前記第2の演算結果が前記プログラム間通信によって前記第1のプログラムに送信される、
請求項1に記載の方法。
The partial program includes first and second partial programs,
In the step (c), the first and second partial programs are decrypted,
In the step (d), a first calculation result is obtained by executing the first partial program after decoding, and an operation using the first calculation result by executing the second partial program after decoding To obtain the second calculation result,
In the step (f), the second calculation result is transmitted to the first program by the inter-program communication.
The method of claim 1.
前記少なくとも1つのプロセッサは、前記ステップ(c)〜(e)を繰り返し行い、
先の前記ステップ(c)〜(e)において前記第1の部分プログラムの復号化、復号された前記第1の部分プログラムによる前記第1の演算結果の生成、復号された前記第1の部分プログラムの前記実行用メモリからの消去を行った後に、
後の前記処理(c)〜(e)において前記第2の部分プログラムの復号化、復号された前記第2の部分プログラムによる前記第2の演算結果の生成、復号された前記第2の部分プログラムの前記実行用メモリからの消去を行う、
請求項18に記載の方法。
The at least one processor repeatedly performs the steps (c) to (e);
Decoding the first partial program in the previous steps (c) to (e), generating the first calculation result by the decoded first partial program, and decoding the first partial program After erasing from the execution memory
In the subsequent processes (c) to (e), the second partial program is decoded, the second calculation result is generated by the decoded second partial program, and the second partial program is decoded. Erasing from the execution memory
The method of claim 18.
前記処理要求は暗号化コンテンツの復号化要求であり、
前記第1の部分プログラムは、前記暗号化コンテンツの復号に必要な暗号鍵を前記第1の演算結果として生成する処理を前記少なくとも1つのプロセッサに行わせるための記述を含み、
前記第2の部分プログラムは、前記暗号鍵を用いて前記暗号化コンテンツの復号化を行い、復号後のコンテンツを前記第2の演算結果として生成する処理を前記少なくとも1つのプロセッサに行わせるための記述を含む、
請求項18又は19に記載の方法。
The processing request is a request for decrypting encrypted content,
The first partial program includes a description for causing the at least one processor to perform a process of generating an encryption key necessary for decrypting the encrypted content as the first calculation result,
The second partial program is for causing the at least one processor to perform the process of decrypting the encrypted content using the encryption key and generating the decrypted content as the second calculation result. Including description,
20. A method according to claim 18 or 19.
JP2009060875A 2009-03-13 2009-03-13 Information processor, application program, and method for executing application program Pending JP2010217975A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009060875A JP2010217975A (en) 2009-03-13 2009-03-13 Information processor, application program, and method for executing application program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009060875A JP2010217975A (en) 2009-03-13 2009-03-13 Information processor, application program, and method for executing application program

Publications (1)

Publication Number Publication Date
JP2010217975A true JP2010217975A (en) 2010-09-30

Family

ID=42976805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009060875A Pending JP2010217975A (en) 2009-03-13 2009-03-13 Information processor, application program, and method for executing application program

Country Status (1)

Country Link
JP (1) JP2010217975A (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013042409A1 (en) * 2011-09-20 2013-03-28 株式会社ハイパーテック Module encryption/decryption program
JP2013225249A (en) * 2012-04-23 2013-10-31 Dainippon Printing Co Ltd Control program and terminal
JP2014160383A (en) * 2013-02-20 2014-09-04 Toppan Printing Co Ltd Portable terminal equipment and decryption processing program
JP2016224972A (en) * 2016-08-08 2016-12-28 株式会社Dnpハイパーテック Module encryption/decryption program
JP2019517080A (en) * 2016-05-24 2019-06-20 マイクロソフト テクノロジー ライセンシング,エルエルシー To prevent piracy and fraud on electronic devices using hardware-based secure isolated areas

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175466A (en) * 1999-12-21 2001-06-29 Fuji Xerox Co Ltd Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium
JP2002132364A (en) * 2000-10-19 2002-05-10 Yutaka Iizuka Method for protecting program from internal analysis, computer readable recording medium and program distribution method
JP2005018725A (en) * 2002-08-01 2005-01-20 Matsushita Electric Ind Co Ltd Device and method for decoding and arranging encrypted data in execution memory space
JP2006209690A (en) * 2005-01-31 2006-08-10 Sony Corp Data processing circuit
JP2007233426A (en) * 2004-04-05 2007-09-13 Matsushita Electric Ind Co Ltd Application execution device
WO2008018310A1 (en) * 2006-08-09 2008-02-14 Panasonic Corporation Application execution device, method, and program
JP2008040853A (en) * 2006-08-08 2008-02-21 Matsushita Electric Ind Co Ltd Application execution method and application execution device
JP2008059596A (en) * 2007-09-25 2008-03-13 Fuji Xerox Co Ltd Information processing system and program

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175466A (en) * 1999-12-21 2001-06-29 Fuji Xerox Co Ltd Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium
JP2002132364A (en) * 2000-10-19 2002-05-10 Yutaka Iizuka Method for protecting program from internal analysis, computer readable recording medium and program distribution method
JP2005018725A (en) * 2002-08-01 2005-01-20 Matsushita Electric Ind Co Ltd Device and method for decoding and arranging encrypted data in execution memory space
JP2007233426A (en) * 2004-04-05 2007-09-13 Matsushita Electric Ind Co Ltd Application execution device
JP2006209690A (en) * 2005-01-31 2006-08-10 Sony Corp Data processing circuit
JP2008040853A (en) * 2006-08-08 2008-02-21 Matsushita Electric Ind Co Ltd Application execution method and application execution device
WO2008018310A1 (en) * 2006-08-09 2008-02-14 Panasonic Corporation Application execution device, method, and program
JP2008059596A (en) * 2007-09-25 2008-03-13 Fuji Xerox Co Ltd Information processing system and program

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013042409A1 (en) * 2011-09-20 2013-03-28 株式会社ハイパーテック Module encryption/decryption program
US9251356B2 (en) 2011-09-20 2016-02-02 Dnp Hyper Tech Co., Ltd. Module encryption/decryption program
JP2013225249A (en) * 2012-04-23 2013-10-31 Dainippon Printing Co Ltd Control program and terminal
JP2014160383A (en) * 2013-02-20 2014-09-04 Toppan Printing Co Ltd Portable terminal equipment and decryption processing program
JP2019517080A (en) * 2016-05-24 2019-06-20 マイクロソフト テクノロジー ライセンシング,エルエルシー To prevent piracy and fraud on electronic devices using hardware-based secure isolated areas
JP7009393B2 (en) 2016-05-24 2022-01-25 マイクロソフト テクノロジー ライセンシング,エルエルシー Use hardware-based secure isolated areas to prevent piracy and fraud on electronic devices
JP2016224972A (en) * 2016-08-08 2016-12-28 株式会社Dnpハイパーテック Module encryption/decryption program

Similar Documents

Publication Publication Date Title
US8756434B2 (en) System and method for executing an encrypted binary from a memory pool
JP5879527B2 (en) Information processing apparatus and information processing method
US20150294123A1 (en) System and method for sharing data securely
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
JP3880933B2 (en) Data access control method using tamper resistant microprocessor and cache memory processor
JP4490192B2 (en) Multitask execution system
EP2420949B1 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JP4475894B2 (en) Device for decrypting encrypted data and placing it in execution memory space, and method thereof
KR101054981B1 (en) Computer-implemented methods, information processing systems, and computer-readable recording media for securely storing the context of a program
US9756048B2 (en) System and methods for executing encrypted managed programs
US8495388B2 (en) Method and device for protecting a program comprising a functional block
CA2933198C (en) Obfuscating in memory encryption keys
CN105303074A (en) Method for protecting security of Web application
US20150186681A1 (en) Method of encryption and decryption for shared library in open operating system
JP2010217975A (en) Information processor, application program, and method for executing application program
CN109325322B (en) Software intellectual property protection system and method for embedded platform
JP5988473B2 (en) Module encryption / decryption program
JP6083348B2 (en) Program execution method and decoding apparatus
Dorrendorf Protecting drive encryption systems against memory attacks
EP2674892A1 (en) A method, a device and a computer program support for execution of encrypted computer code
JP2010244261A (en) Information processing apparatus and method
JP2011204105A (en) Script activation program, generation program of the same and program set
JP6215468B2 (en) Program protector
JP2008242799A (en) Content protection device and content protection method
JP6374453B2 (en) Module encryption / decryption program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130730