JP6151218B2 - Application execution device, method and program - Google Patents

Application execution device, method and program Download PDF

Info

Publication number
JP6151218B2
JP6151218B2 JP2014110980A JP2014110980A JP6151218B2 JP 6151218 B2 JP6151218 B2 JP 6151218B2 JP 2014110980 A JP2014110980 A JP 2014110980A JP 2014110980 A JP2014110980 A JP 2014110980A JP 6151218 B2 JP6151218 B2 JP 6151218B2
Authority
JP
Japan
Prior art keywords
data
taint
memory
storage
stored
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.)
Active
Application number
JP2014110980A
Other languages
Japanese (ja)
Other versions
JP2015225571A (en
Inventor
敏浩 元田
敏浩 元田
一凡 張
一凡 張
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2014110980A priority Critical patent/JP6151218B2/en
Publication of JP2015225571A publication Critical patent/JP2015225571A/en
Application granted granted Critical
Publication of JP6151218B2 publication Critical patent/JP6151218B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、API(Application Programming Interface)及びAPIフックを用いて、アプリケーションを実行する装置、方法及びプログラムに関する。   The present invention relates to an apparatus, a method, and a program for executing an application using an API (Application Programming Interface) and an API hook.

デジタル情報は容易に複製が可能である。そのため、メール添付等で相手に送付した資料が勝手に第三者に送付されたり、部分的に複製されて別の情報として流通したりという問題が生じやすい。情報について権利を持っている原著作者や法人などが意図した範囲を超えた流通や情報漏洩等の事態が容易に発生しうる。そのような事態が発生するのを防止するための各種技術が開発されてきた。   Digital information can be easily replicated. For this reason, there is a problem that a material sent to the other party by e-mail attachment or the like is sent to a third party without permission, or partially duplicated and distributed as other information. Circulation and information leakage beyond the range intended by the original authors and corporations who have the rights to information can easily occur. Various techniques have been developed to prevent such a situation from occurring.

情報流通制御の手段としてIRM(Information Rights Management)に代表されるように、デジタル情報を暗号化し鍵を持たない者には読めない形態として流通させ、情報を届けたい相手のアプリケーションにだけ鍵を渡して開けるようにする方法がある。この方法は、有価情報の配布手段などに用いられている。   As represented by IRM (Information Rights Management) as a means of information distribution control, digital information is encrypted and distributed in a form that cannot be read by those who do not have a key, and the key is passed only to the application of the other party that wants to deliver the information. There is a way to make it open. This method is used as a means for distributing valuable information.

この場合、許可された相手のアプリケーションに限定してデジタル情報を開かせることができる。しかし、アプリケーションの作りによっては、例えば、読み込んだファイルの情報を「別名で保存する」等の形で、ユーザ操作によって容易に暗号化されていない情報の複製を作ることが出来てしまい、暗号化の意味がなくなってしまう。このように一般のアプリケーション全体に対する流通制御は難しいため、例えば、非特許文献1のマイクロソフト(登録商標)社のRights Management Services(以下RMSともいう)に代表されるように、アプリケーションの仕組みの一部として情報保護機能を組み込んで保護する事が一般的に行われている。   In this case, the digital information can be opened only for the permitted partner application. However, depending on the creation of the application, for example, it is possible to make a copy of the information that has not been encrypted easily by the user operation in the form of “save the file with a different name”, etc. The meaning of is lost. Since distribution control for the entire general application is difficult in this way, for example, a part of the mechanism of the application as represented by Rights Management Services (hereinafter also referred to as RMS) of Microsoft (registered trademark) in Non-Patent Document 1. As a general rule, an information protection function is incorporated for protection.

しかしながら、全てのアプリケーションが情報保護機能を実装している訳ではなく、また、アプリケーションによって機能や設定方法が異なるなど使いづらい側面を持っている。   However, not all applications implement the information protection function, and the functions and setting methods differ depending on the application, and thus have difficult aspects.

この課題を解决する技術として、APIフックを利用した情報保護技術が考案された(非特許文献2参照)。なお、API(Application Programming Interface)とは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のことである。APIフックとは、所定の条件を満たすとき、APIの呼び出しを横取りし、APIが果たすべき機能を停止させ、異なる処理を実行する処理や本来のAPI処理の前後に追加処理を実行する処理のことである。APIフックを利用して、ファイルの入出力を迂回させる汎用的な仕組みの下でアプリケーションを動作させ、暗号化されたコンテンツを復号して読み込む場合のみ当該アプリケーションから読み込めるものとする。また、アプリケーションが書き込もうとした場合には、APIフックを利用して、APIの呼び出しを横取りして別の場所に書き込んだり、書き込みをエラーにして実施しなかったりする形で情報漏洩防止を図る方法が考案された。この場合、アプリケーションを改変する事なく実現可能である点が重要である。すなわち、第三者が開発したアプリケーションも含め、全てのアプリケーションに対して適用可能であるため、穴のない対策が可能になる。   As a technique for solving this problem, an information protection technique using an API hook has been devised (see Non-Patent Document 2). API (Application Programming Interface) is a convention that defines the procedure and data format for calling and using functions of a computer program (software) from other external programs. is there. An API hook is a process that intercepts an API call, stops the function that the API should perform, executes a different process, or executes an additional process before or after the original API process when a predetermined condition is met. It is. It is assumed that an application is operated under a general-purpose mechanism that bypasses input / output of a file by using an API hook, and can be read from the application only when the encrypted content is decrypted and read. In addition, when an application tries to write, a method to prevent information leakage by using API hooks to intercept API calls and write them in another place, or do not write with errors. Was devised. In this case, it is important that it can be realized without modifying the application. In other words, since it can be applied to all applications including applications developed by third parties, it is possible to take measures without holes.

代表的な従来技術は、図1にあるようにファイル入出力のAPIに対してAPIフックという形で実現している。APIフックは、例えばドライバーによるフィルタリングの形での実装や、仮想化技術を用いた実装も存在するが、実効的にはAPIが果たすべき機能を横取りする点において本質的には何れの実装方法であっても同等である。   A typical prior art is realized in the form of an API hook for a file input / output API as shown in FIG. There are API hooks, for example, in the form of filtering by drivers, and implementations using virtualization technology. However, in practice, any implementation method can be used in terms of intercepting the functions that the API should perform. It is equivalent even if it exists.

例えば、APIフック条件を「特定のパス名(またはファイル名)のファイルに対する入出力であること」とし、この条件を満たす場合に、ファイルの読み込みの際に特定のパス名のファイルに関して通常のAPIを用いたファイル入出力とは異なる処理(APIフック処理)を行う等である。   For example, if the API hook condition is "input / output to a file with a specific path name (or file name)" and this condition is met, a normal API for a file with a specific path name when reading the file For example, a process (API hook process) different from the file input / output using.

メモリ91上で、アプリケーション93、APIフック手段94、保護化・保護解除化手段95が実行される。APIフック手段94には、予めAPIフック条件Conが与えられる。ストレージ92には、第三者が読み書きできない保護化されたデータ(以下、「保護化データ」ともいう)Dencと通常のデータ(第三者が読み書き可能な、保護化されていないデータ)Dとが記憶されている。 On the memory 91, an application 93, an API hook unit 94, and a protection / protection release unit 95 are executed. The API hook means 94 is given an API hook condition Con in advance. In the storage 92, protected data that cannot be read / written by a third party (hereinafter, also referred to as “protected data”) Denc and normal data (unprotected data that can be read / written by a third party) D Is stored.

例えば、APIフック条件Conを「全ての書き込み」または「読み込むファイルのパス名が特定のパス名と一致する」とし、何れかの条件に合致する場合に、APIフック手段94が、APIフック処理を行う事で実現する。読み込むファイルのパス名が特定のパス名以外の場合には、APIフック手段94はAPIフック処理を行わず、アプリケーション93は、APIを呼び出して、通常の読み込み処理を行う。アプリケーション93がAPIを呼び出して「書き込み」を行う場合や「読み込むファイルのパス名が特定のパス名と一致する」場合には、APIフック手段94はAPIフック処理を実行し、保護化・保護解除化手段95を経由してファイル処理を行う。例えば、書き込む場合には、保護化・保護解除化手段95は書き込まれたデータを暗号化して、暗号化したデータを保護化データDencとしてストレージ92に格納する。また、「読み込むファイルのパス名が特定のパス名と一致する」場合には、保護化・保護解除化手段95は、ストレージ92から特定のパス名のファイルを取り出し、復号して、復号したデータ(以下「解除化データ」ともいう)を読み込む。これにより、アプリケーション93を改造する事なくAPIフック手段94によるAPIフックのみで特定のファイルのみ保護化した状態で透過的に読み書きを行う事が可能になる。 For example, when the API hook condition Con is “all write” or “the path name of the file to be read matches a specific path name”, and the API hook condition 94 matches any of the conditions, the API hook means 94 performs API hook processing. Realize by doing. If the path name of the file to be read is other than a specific path name, the API hook means 94 does not perform the API hook process, and the application 93 calls the API and performs the normal read process. When the application 93 calls the API to perform “write” or “the path name of the file to be read matches a specific path name”, the API hook means 94 executes API hook processing to protect / unprotect File processing is performed via the conversion means 95. For example, in the case of writing, the protection / deprotection means 95 encrypts the written data and stores the encrypted data in the storage 92 as protected data Denc . If “the path name of the file to be read matches the specific path name”, the protection / deprotection means 95 retrieves the file with the specific path name from the storage 92, decrypts it, and decrypts the decrypted data. (Hereinafter also referred to as “deactivation data”). As a result, it is possible to read and write transparently in a state where only a specific file is protected by only the API hook by the API hook means 94 without modifying the application 93.

例えば、保護化データDencのパス名が固定的に与えられた状態をAPIフック条件の初期値とする。 For example, a state where the path name of the protected data D enc is fixedly given is set as the initial value of the API hook condition.

データを読み込む際には、APIフック手段94はパス名を頼りにAPIフックを実行する。なお、データをオープン後は対応するファイルハンドルを介して行う処理に対してAPIフックを実行する。   When reading data, the API hook means 94 executes the API hook depending on the path name. Note that after opening the data, API hooks are executed for processing performed via the corresponding file handle.

なお、データを書き込む際には、APIフック手段94はすべからくAPIフックを実行し、保護化・保護解除化手段95は書き込まれたデータを暗号化して保護化データDencとしてストレージ92に格納する。但し、APIフック条件の「読み込むファイルのパス名が特定のパス名と一致する」におけるパス名のファイルに書き込む場合、APIフック条件となった元ファイルの保護条件を継承する。 When data is written, the API hook means 94 executes all API hooks, and the protection / protection release means 95 encrypts the written data and stores it in the storage 92 as protected data Denc . However, when writing to a file with a path name in the API hook condition “the path name of the file to be read matches a specific path name”, the protection condition of the original file that became the API hook condition is inherited.

例えばimportant.txt.encという暗号化されたファイル(保護化データDenc)が存在する。アプリケーション93が「important.txt」を開くよう引数を伴って起動する際に、APIフック条件として「important.txt」を指定されて起動する。 For example, there is an encrypted file (protected data D enc ) called important.txt.enc. When the application 93 is activated with an argument so as to open “important.txt”, “important.txt” is designated as the API hook condition and activated.

アプリケーション93が「important.txt」を開こうとした際に、APIフック手段94によりAPIフックが働いて、拡張子に「.enc」が追加された「important.txt.enc」が開かれ、保護化・保護解除化手段95により復号処理が透過的に施されてアプリケーション93に読み込まれる。   When the application 93 tries to open “important.txt”, the API hook is activated by the API hook means 94, and “important.txt.enc” with “.enc” added is opened and protected. The decryption processing is transparently performed by the conversion / protection canceling means 95 and read into the application 93.

「RMS/IRMで何ができるのか?」、[online]、Microsoft、[平成26年5月19日検索]、インターネット<URL:http://www.microsoft.com/ja-jp/business/enterprise/ecc/article/rms1012_3.aspx>“What can I do with RMS / IRM?” [Online], Microsoft, [Search May 19, 2014], Internet <URL: http: //www.microsoft.com/en-us/business/enterprise /ecc/article/rms1012_3.aspx> 「第2回 暗号化技術の変遷と最新のトレンドを知る 透過式暗号化のメカニズム」、[online]、IMPRESS BUSINESS MEDIA CORPORATION, an Impress Group company.、[平成26年5月19日検索]、インターネット<URL:http://thinkit.co.jp/story/2010/11/22/1883>“2nd encryption technology transition and the latest trend Transparent encryption mechanism”, [online], IMPRESS BUSINESS MEDIA CORPORATION, an Impress Group company., [May 19, 2014 search], Internet <URL: http: //thinkit.co.jp/story/2010/11/22/1883>

しかしながら、APIフックに代表される従来技術による情報流通制御では、アプリケーションのフック条件が固定された実装となっている。この方法では、書き込みファイルが漏れ無く暗号化されるものの、本来保護すべきデータ以外に例えば設定ファイルや無関係な書き込みまでもすべからく暗号化されてしまう。設定ファイルや無関係な書き込みを暗号化しないようにするためには、個々のアプリケーションの動作仕様に合わせて、APIフック条件の例外をきめ細かく設定する必要があり、調査や調整に多くの稼働を必要とする。さらに、APIフック条件が複雑になるため、設定に誤りが生じやすい。APIフック条件の設定に誤りがあった場合には情報漏洩につながる恐れがある。また、書き込みファイルをすべからく暗号化する事で入力データとは全く無関係な新規ファイルを同時に編集して保存した場合にも、誤って暗号化されてしまう問題があった。   However, in the information distribution control according to the prior art represented by API hooks, the application hook conditions are fixed. In this method, the writing file is encrypted without omission, but the setting file and irrelevant writing are all encrypted in addition to the data to be originally protected. In order not to encrypt configuration files and irrelevant writes, it is necessary to set exceptions for API hook conditions in detail according to the operation specifications of each application, and a lot of operations are required for investigation and adjustment. To do. In addition, the API hook conditions are complicated, and errors are likely to occur in the settings. If there is an error in the API hook condition setting, there is a risk of information leakage. In addition, by encrypting all the write files, there is a problem that even when a new file completely unrelated to the input data is edited and saved at the same time, it is erroneously encrypted.

本発明は、APIフック条件の複雑な設定を必要としないアプリケーション実行装置、方法及びプログラムを提供することを目的とする。   An object of the present invention is to provide an application execution apparatus, method, and program that do not require complicated setting of API hook conditions.

上記の課題を解決するために、本発明の一態様によれば、アプリケーション実行装置は、データが記憶されるメモリと、メモリに記憶されたデータが保護すべきデータであることを示すテイントが記憶されるシャドウメモリと、APIフック条件を満たす場合に、APIフックを実行するAPIフック手段と、メモリに記憶されたデータを処理する際に、データに対応するテイントを伝搬するテイント情報伝搬手段とを含む。APIフック条件は、「処理対象となるデータに対応するシャドウメモリにテイントが記憶されていること」という条件を含む。   In order to solve the above problem, according to one aspect of the present invention, an application execution device stores a memory in which data is stored and a taint indicating that the data stored in the memory is data to be protected. Shadow memory, API hook means for executing an API hook when the API hook condition is satisfied, and taint information propagation means for propagating a taint corresponding to the data when processing the data stored in the memory. Including. The API hook condition includes a condition that “the taint is stored in the shadow memory corresponding to the data to be processed”.

上記の課題を解決するために、本発明の他の態様によれば、アプリケーション実行方法は、メモリにはデータが記憶されるものとし、シャドウメモリには、メモリに記憶されたデータが保護すべきデータであることを示すテイントが記憶されるものとし、APIフック手段が、APIフック条件を満たす場合に、APIフックを実行するAPIフックステップと、
テイント情報伝搬手段が、メモリに記憶されたデータを処理する際に、データに対応するテイントを伝搬するテイント伝搬ステップとを含む。APIフック条件は、「処理対象となるデータに対応するシャドウメモリにテイントが記憶されていること」という条件を含む。
In order to solve the above problems, according to another aspect of the present invention, the application execution method should store data in the memory, and the shadow memory should protect the data stored in the memory. It is assumed that a taint indicating data is stored, and an API hook step for executing an API hook when the API hook means satisfies an API hook condition;
The taint information propagation means includes a taint propagation step of propagating a taint corresponding to the data when processing the data stored in the memory. The API hook condition includes a condition that “the taint is stored in the shadow memory corresponding to the data to be processed”.

本発明によれば、APIフック条件の複雑な設定を必要としないという効果を奏する。   According to the present invention, there is an effect that complicated setting of API hook conditions is not required.

従来技術のAPIフックを説明するための図。The figure for demonstrating the prior art API hook. アプリケーション実行装置の機能ブロック図。The functional block diagram of an application execution apparatus. メモリとシャドウメモリとテイント情報伝搬手段を用いたテイント伝搬の例を説明するための図。The figure for demonstrating the example of a taint propagation using a memory, a shadow memory, and a taint information propagation means. APIフックの処理フローの例を示す図。The figure which shows the example of the processing flow of an API hook. メモリ、シャドウメモリ、ストレージ、シャドウストレージの初期状態を示す図。The figure which shows the initial state of a memory, shadow memory, storage, and shadow storage. メモリ、シャドウメモリ、ストレージ、シャドウストレージの読み込みファイルオープン後の状態を示す図。The figure which shows the state after the read file of memory, shadow memory, storage, and shadow storage is opened. メモリ、シャドウメモリ、ストレージ、シャドウストレージのファイル内容読み込み後の状態を示す図。The figure which shows the state after reading the file contents of memory, shadow memory, storage, and shadow storage. メモリ、シャドウメモリ、ストレージ、シャドウストレージの読み込みファイルクローズ後の状態を示す図。The figure which shows the state after the read file of memory, shadow memory, storage, and shadow storage is closed. メモリ、シャドウメモリ、ストレージ、シャドウストレージの書き込みファイルオープン後の状態を示す図。The figure which shows the state after the write file of memory, shadow memory, storage, and shadow storage is opened. メモリ、シャドウメモリ、ストレージ、シャドウストレージの書き込みファイルにバッファ領域の内容を書き込んだ後の状態を示す図。The figure which shows the state after writing the content of the buffer area | region to the write file of memory, shadow memory, storage, and shadow storage. メモリ、シャドウメモリ、ストレージ、シャドウストレージの書き込みファイルクローズ後の状態を示す図。The figure which shows the state after the write file of memory, shadow memory, storage, and shadow storage is closed. 保護化ファイルを開き、保護化ファイルとは無関係な新規作成ファイルを保存するまでのメモリ、シャドウメモリ、ストレージ、シャドウストレージの状態を説明するための図。The figure for demonstrating the state of the memory, shadow memory, storage, and shadow storage until it opens a protection file and saves the newly created file unrelated to the protection file. 保護化ファイルとは無関係な新規作成ファイルを閉じる際のメモリ、シャドウメモリ、ストレージ、シャドウストレージの状態を説明するための図。The figure for demonstrating the state of the memory at the time of closing the newly created file unrelated to a protection file, shadow memory, storage, and shadow storage. メモリ、シャドウメモリ、ストレージ、シャドウストレージの保護化ファイルとは無関係な新規作成ファイルを閉じた後の状態を示す図。The figure which shows the state after closing the newly created file unrelated to the protection file of memory, shadow memory, storage, and shadow storage. ソケットAPIのAPIフックを説明するための図。The figure for demonstrating the API hook of socket API. 共有メモリAPIのAPIフックを説明するための図。The figure for demonstrating the API hook of shared memory API. 図17Aはアプリケーションから1つのファイルに見えるファイルと暗号化ファイルとが1:1に対応している場合の例を示す図、図17Bはアプリケーションから1つのファイルに見える部分が、実は1つの大きなコンテナファイルの中のデータ領域となっている場合の例を示す図。FIG. 17A is a diagram showing an example in which a file that appears as one file from the application and the encrypted file correspond to 1: 1, and FIG. 17B shows a portion that appears as one file from the application, which is actually one large container. The figure which shows the example in the case of becoming a data area in a file.

以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。   Hereinafter, embodiments of the present invention will be described. In the drawings used for the following description, constituent parts having the same function and steps for performing the same process are denoted by the same reference numerals, and redundant description is omitted.

<第一実施形態>
図2は、アプリケーション実行装置100の機能ブロック図を示す。
<First embodiment>
FIG. 2 shows a functional block diagram of the application execution apparatus 100.

アプリケーション実行装置100は、メモリ101、アプリケーション103と、シャドウメモリ111と、APIフック手段104と、テイント情報伝搬手段113と、ソケットシステム106と、強制切断手段107と、強制エラー化手段108と、ストレージ102と、シャドウストレージ112と、保護化・保護解除化手段105とを含む。   The application execution apparatus 100 includes a memory 101, an application 103, a shadow memory 111, an API hook unit 104, a taint information propagation unit 113, a socket system 106, a forced disconnection unit 107, a forced error generation unit 108, a storage 102, a shadow storage 112, and a protection / protection release means 105.

まず、各部の処理の概要を説明し、ファイルの読み書き等について説明する。   First, an outline of the processing of each unit will be described, and file read / write and the like will be described.

<メモリ101>
メモリ101には、データが一時的に記憶される。また、メモリ101には、アプリケーション103と、APIフック手段104と、ソケットシステム106と、強制切断手段107と、強制エラー化手段108と、保護化・保護解除化手段105とが読み込まれ、展開される。また、図2には図示していないが、APIを実行するAPI実行手段が読み込まれ、展開される。
<Memory 101>
Data is temporarily stored in the memory 101. Further, the application program 103, the API hook unit 104, the socket system 106, the forced disconnection unit 107, the forced error generation unit 108, and the protection / protection release unit 105 are read and expanded in the memory 101. The Although not shown in FIG. 2, API execution means for executing the API is read and expanded.

<シャドウメモリ111>
シャドウメモリ111には、メモリに記憶されたデータが保護すべきデータであることを示すテイントが記憶される。テイントの詳細は後述する。
<Shadow memory 111>
The shadow memory 111 stores a taint indicating that the data stored in the memory is data to be protected. Details of the taint will be described later.

<ストレージ102>
ストレージ102には、保護化データDencが記憶される。また、ストレージ102には、保護化されていないデータ(以下「通常データ」ともいう)Dが記憶されてもよい。
<Storage 102>
The storage 102 stores protected data D enc . The storage 102 may store unprotected data (hereinafter also referred to as “normal data”) D.

<シャドウストレージ112>
シャドウストレージ112には、ストレージ102に記憶されたデータが保護すべきデータであることを示すテイントが記憶される。例えば、ストレージ102に記憶される保護化データDencに対応するテイントがシャドウストレージ112に記憶される。
<Shadow storage 112>
The shadow storage 112 stores a taint indicating that the data stored in the storage 102 is data to be protected. For example, a taint corresponding to the protected data Denc stored in the storage 102 is stored in the shadow storage 112.

別の言い方をすると、シャドウメモリ111やシャドウストレージ112は、対応するメモリ101やストレージ102の任意の位置に印を付与するために用いるものである。この印を「テイント」と呼ぶ。   In other words, the shadow memory 111 and the shadow storage 112 are used to add marks to arbitrary positions of the corresponding memory 101 and storage 102. This mark is called “Taint”.

最も単純な実装例では、メモリ101(またはストレージ102)とシャドウメモリ111(またはシャドウストレージ112)とは、1:1の大きさを持っている。シャドウメモリ111(またはシャドウストレージ112)の内容が「0」ならテイントなし(以下、テイントが無い状態を「テイントクリア」ともいう)、「1」ならテイントあり(以下、テイントがある状態を「テイントセット」ともいう)と解釈する。なお、メモリ101(またはストレージ102)の所定のブロック(例えば1MB分のデータのブロック)に対してシャドウメモリ111(またはシャドウストレージ112)の1bit(「0」または「1」)を対応させてもよい。また、メモリ101(またはストレージ102)には連続して保護すべきデータが記憶されるものとし、シャドウメモリ111(またはシャドウストレージ112)には、保護すべきデータの開始アドレスと終了アドレスとが記憶される構成としてもよい。要は、シャドウメモリ111(またはシャドウストレージ112)を参照することで、メモリ101(またはストレージ102)内のどの記憶領域にあるデータが保護すべきデータであるかが分かればよく、そのデータの位置を示す印がテイントである。   In the simplest implementation, the memory 101 (or storage 102) and the shadow memory 111 (or shadow storage 112) have a size of 1: 1. If the content of the shadow memory 111 (or shadow storage 112) is “0”, there is no taint (hereinafter, the state without taint is also referred to as “taint clear”). It is also called “set”. Note that 1 bit (“0” or “1”) of the shadow memory 111 (or shadow storage 112) may be associated with a predetermined block (for example, a block of data of 1 MB) of the memory 101 (or storage 102). Good. Further, it is assumed that data to be continuously protected is stored in the memory 101 (or storage 102), and the start address and end address of the data to be protected are stored in the shadow memory 111 (or shadow storage 112). It is good also as a structure to be made. In short, by referring to the shadow memory 111 (or shadow storage 112), it is only necessary to know in which storage area in the memory 101 (or storage 102) the data to be protected and the position of the data. The mark indicating is a taint.

<APIフック手段104>
APIフック手段104は、APIフック条件を満たす場合に、APIフックを実行する。ただし、APIフック条件として、処理対象となるデータに対応するシャドウメモリ111にテイントが記憶されていることを含む。APIフック手段104の処理フローについては、後述する。
<API hook means 104>
The API hook means 104 executes the API hook when the API hook condition is satisfied. However, the API hook condition includes that the taint is stored in the shadow memory 111 corresponding to the data to be processed. The processing flow of the API hook unit 104 will be described later.

<アプリケーション103>
アプリケーション103は、少なくともAPIを用いる(呼び出す)プログラムである。なお、本実施形態では、前述のAPIフック手段104が、APIフック条件を満たす場合に、API呼び出しを横取りし、APIフックを実行する。APIフック手段104と後述する保護化・保護解除化手段105とを組み合わせることで、アプリケーション103を改造せずに、特定のファイルのみを保護化した状態で透過的に読み書きすることができる。
<Application 103>
The application 103 is a program that uses (calls) at least an API. In the present embodiment, when the API hook means 104 described above satisfies the API hook condition, the API call is intercepted and the API hook is executed. By combining the API hook unit 104 and the protection / protection release unit 105 described later, it is possible to transparently read and write in a state in which only a specific file is protected without modifying the application 103.

<テイント情報伝搬手段113>
テイント情報伝搬手段113は、メモリ101、ストレージ102に記憶されたデータを処理する際に、データに対応するテイントを伝搬する。例えば、テイント情報伝搬手段113は、メモリ101のある領域に記憶されたデータに対応する、シャドウメモリ111の領域にテイントをセットする。以下、この処理を、単に「メモリ101のデータにテイントをセットする」ともいう。同様に、テイント情報伝搬手段113は、ストレージ102のある領域に記憶されたデータに対応する、シャドウストレージ112の領域にテイントをセットする。以下、この処理を、単に「ストレージ102のデータにテイントをセットする」ともいう。また、テイント情報伝搬手段113は、メモリ101のある領域に記憶されたデータに対応する、シャドウメモリ111の領域のテイントをクリアする。以下、この処理を、単に「メモリ101のデータのテイントをクリアする」ともいう。同様に、テイント情報伝搬手段113は、ストレージ102のある領域に記憶されたデータに対応する、シャドウストレージ112の領域のテイントをクリアする。以下、この処理を、単に「ストレージ102のデータのテイントをクリアする」ともいう。
<Taint information propagation means 113>
The taint information propagation unit 113 propagates a taint corresponding to the data when processing the data stored in the memory 101 and the storage 102. For example, the taint information propagation unit 113 sets a taint in an area of the shadow memory 111 corresponding to data stored in an area of the memory 101. Hereinafter, this processing is also simply referred to as “setting a taint to data in the memory 101”. Similarly, the taint information propagation unit 113 sets a taint in an area of the shadow storage 112 corresponding to data stored in an area of the storage 102. Hereinafter, this processing is also simply referred to as “setting a taint to data in the storage 102”. Further, the taint information propagation unit 113 clears the taint in the area of the shadow memory 111 corresponding to the data stored in the area of the memory 101. Hereinafter, this processing is also simply referred to as “clearing the taint of data in the memory 101”. Similarly, the taint information propagation unit 113 clears the taint in the area of the shadow storage 112 corresponding to the data stored in an area of the storage 102. Hereinafter, this processing is also simply referred to as “clearing the taint of data in the storage 102”.

<ソケットシステム106>
ソケットシステム106は、通信を行う際に用いる仮想的なインターフェースであるソケットを管理する。「管理」とは、生成、変更、削除等を意味する。
<Socket system 106>
The socket system 106 manages sockets that are virtual interfaces used for communication. “Management” means creation, modification, deletion, and the like.

<強制切断手段107>
強制切断手段107は、APIフック条件を満たし、かつ、ソケットを用いてシャドウメモリ111に記憶されているテイントに対応するメモリ101に記憶されているデータ(以下、このようなデータを「テイントがセットされたデータ」ともいい、シャドウストレージ112に記憶されているテイントに対応するストレージに102に記憶されているデータも同様に、「テイントがセットされたデータ」という)を送信しようとしたとき、ソケットによる通信を強制的に切断する。
<Forced cutting means 107>
The forcible disconnecting means 107 satisfies the API hook condition and uses data stored in the memory 101 corresponding to the tain stored in the shadow memory 111 using a socket (hereinafter, such data is set as “ The data stored in the storage 102 corresponding to the taint stored in the shadow storage 112 is also referred to as “data in which the taint is set”). Forcibly disconnect communication by.

<強制エラー化手段108>
強制エラー化手段108は、APIフックを実行した際に、API実行結果としてエラーを返す。
<Forced error generation means 108>
The forced error means 108 returns an error as an API execution result when an API hook is executed.

<保護化・保護解除化手段105>
保護化・保護解除化手段105は、APIフック条件を満たしたとき、第三者が読み書きできない保護化データを読み書きする、あるいは、保護化データと保護化状態が解除された解除化データとの間の変換動作を行う。
<Protection / protection release means 105>
The protection / protection release means 105 reads / writes protected data that cannot be read / written by a third party when the API hook condition is satisfied, or between the protected data and the released data that has been released from the protected state. The conversion operation is performed.

<本実施形態のポイント>
本実施形態では、アプリケーション103の実行の際に本来のメモリ101に対応する別のメモリとしての「シャドウメモリ111」と、本来のストレージ102に対応する別のストレージとしての「シャドウストレージ112」と、テイント情報伝搬手段113と、APIフック手段104とを用いる事で課題を解决している。
<Points of this embodiment>
In the present embodiment, when executing the application 103, “shadow memory 111” as another memory corresponding to the original memory 101, “shadow storage 112” as another storage corresponding to the original storage 102, The problem is solved by using the taint information propagation means 113 and the API hook means 104.

なお、一般的には、シャドウメモリ、シャドウストレージとは、マルウェア解析等の技術分野で用いられ、外部から持ち込まれた害のある情報の流れを精度よく追跡する技術として用いられる(例えば、参考文献1参照)。これは例えば、アプリケーションで誤ってマルウェアに感染したファイルを開いた際に、アプリケーションを介してメモリや他のファイルに感染が拡大していく状況を監視する手段として使われているものである。本実施形態では、この技術をAPIフックと組み合わせて利用する。
(参考文献1)特開2013−232113号公報
In general, shadow memory and shadow storage are used in technical fields such as malware analysis, and are used as a technique for accurately tracking the flow of harmful information brought in from outside (for example, references). 1). This is used, for example, as a means for monitoring a situation in which an infection spreads to a memory or other files via an application when a file accidentally infected with malware is opened by the application. In this embodiment, this technique is used in combination with an API hook.
(Reference 1) JP 2013-232113 A

テイント情報伝搬手段113は、アプリケーション103が動作しメモリ101やストレージ102の内容を変更する際に、シャドウメモリ111やシャドウストレージ112を調べて対応する部分のテイントを伝搬させる。この際の伝播は、あるメモリ101やストレージ102の内容が別のメモリ101やストレージ102に伝わった場合にテイントを伝搬させるようにする。例えば、メモリ101内のA番地の内容をB番地にコピーする命令を実行した場合には、シャドウメモリ111内のA番地のテイントの値をB番地のテイントの値にコピーする。逆に、メモリ101のB番地の内容をゼロクリアする場合、シャドウメモリ111のB番地のテイントはアプリケーションの命令語のテイントからの伝搬とみなされ、アプリケーションそれ自体は保護対象ではないのでクリアされる。   When the application 103 operates and changes the contents of the memory 101 and the storage 102, the taint information propagation unit 113 checks the shadow memory 111 and the shadow storage 112 and propagates the corresponding portion of taint. The propagation at this time is to propagate the taint when the contents of a certain memory 101 or storage 102 are transmitted to another memory 101 or storage 102. For example, when an instruction to copy the contents of the address A in the memory 101 to the address B is executed, the taint value at the A address in the shadow memory 111 is copied to the taint value at the B address. On the contrary, when the contents of the address B in the memory 101 are cleared to zero, the taint at the address B in the shadow memory 111 is regarded as propagation from the taint of the instruction word of the application, and is cleared because the application itself is not a protection target.

この構成にて、メモリ101やストレージ102内の保護すべきデータである保護化データに対応するシャドウメモリ111やシャドウストレージ112に対してテイントをセットしておき、それ以外のシャドウメモリ111やシャドウストレージ112のテイントをクリアした状態で、アプリケーション103の実行を開始する。アプリケーション103の実行中はテイント情報伝搬手段113により、逐次テイントを伝搬させる。APIフック手段104によりAPIフックを実行する際にAPIが処理するデータにテイントが含まれるか否かを条件に加えてAPIフック処理を行う。さらに、ストレージ102への書き込みは全てフックして保護化し、ファイルを閉じた時点で、ストレージ102内の書き込みデータに対応するシャドウストレージ112にテイントがあればそのままとし、テイントが無い場合に保護化を解除する事で、入力の保護化データに課された保護条件を出力の保護化データにも課すことが出来る。   With this configuration, taints are set for the shadow memory 111 and the shadow storage 112 corresponding to the protected data that is the data to be protected in the memory 101 and the storage 102, and the other shadow memory 111 and shadow storage are set. Execution of the application 103 is started in a state where the taint 112 is cleared. While the application 103 is being executed, the taint information propagation unit 113 sequentially propagates the taint. When the API hook means 104 executes an API hook, API hook processing is performed in addition to whether or not a taint is included in the data processed by the API. Furthermore, all writing to the storage 102 is protected by hooking, and when the file is closed, if there is a taint in the shadow storage 112 corresponding to the write data in the storage 102, it is protected if there is no taint. By canceling, the protection condition imposed on the input protected data can be imposed on the output protected data.

以下、本実施形態の処理内容を、図を用いて説明する。   Hereinafter, the processing content of this embodiment is demonstrated using figures.

<機械語レベルの処理内容>
図3はメモリ101とシャドウメモリ111とテイント情報伝搬手段113を用いたテイント伝搬の例を説明するための図である。これは機械語レベルでの例である。
<Processing level at machine language level>
FIG. 3 is a diagram for explaining an example of taint propagation using the memory 101, the shadow memory 111, and the taint information propagation means 113. This is an example at the machine language level.

図3の中央がメモリ101の内容、右側がシャドウメモリ111の内容を示している。ここではCPUのレジスタも登場するが、メモリ101の一種とみなしている。シャドウメモリ111の実現手段は、例えば本来のメモリ101とは別のメモリ領域や別のレジスタに取る方法がある。ここでは、メモリ101対シャドウメモリ111の関係を、メモリ101の即値0対シャドウメモリ111のSh_imm0、メモリ101のレジスタ内のEAX対シャドウメモリ111のSh_eax、メモリ101のMem_A対シャドウメモリ111Sh_Mem_A、メモリ101のMem_B対シャドウメモリ111Sh_Mem_Bとする。なお、即値0はアプリケーション103により予め定められており、保護化データには該当しないものとする。また、Mem_Aは保護化データに該当するものとする。   The center of FIG. 3 shows the contents of the memory 101 and the right side shows the contents of the shadow memory 111. Although a CPU register also appears here, it is regarded as a kind of the memory 101. As a means for realizing the shadow memory 111, for example, there is a method of taking a memory area different from the original memory 101 or a different register. Here, the relationship between the memory 101 and the shadow memory 111 is as follows. Mem_B vs. shadow memory 111Sh_Mem_B. It is assumed that the immediate value 0 is predetermined by the application 103 and does not correspond to the protected data. Mem_A corresponds to protected data.

まず、アプリケーション103がメモリ101上に展開される。本来のアプリケーション103に含まれる命令が
(1) mov eax, 0
(2) mov eax, [Mem_A]
(3) mov [Mem_B], eax
とする。アプリケーション103は、(1)〜(3)の命令を実行するとともに、この命令をテイント情報伝搬手段113に出力する。
First, the application 103 is expanded on the memory 101. Instructions included in the original application 103 are
(1) mov eax, 0
(2) mov eax, [Mem_A]
(3) mov [Mem_B], eax
And The application 103 executes the instructions (1) to (3) and outputs the instructions to the taint information propagation unit 113.

テイント情報伝搬手段113は、(1)〜(3)の命令を受け取り、それぞれの命令の直後に
(1S) mov [Sh_eax],[Sh_imm0]
(2S) mov [Sh_eax],[Sh_Mem_A]
(3S) mov [Sh_Mem_B],[Sh_eax]
というシャドウメモリ操作専用の命令を挿入し、実行する。
The taint information propagation means 113 receives the commands (1) to (3) and immediately after each command.
(1S) mov [Sh_eax], [Sh_imm0]
(2S) mov [Sh_eax], [Sh_Mem_A]
(3S) mov [Sh_Mem_B], [Sh_eax]
Insert a special instruction for shadow memory operations.

(1)は、命令「mov eax,0」すなわち、レジスタ「eax」に即値「0」を代入するという命令である。即値「0」のテイントはクリアされた状態でこの命令が実行された場合、レジスタ「eax」のテイントがクリアであれセットであれ、即値「0」に対応するテイントクリアという状態が上書きされ、レジスタ「eax」に対応するシャドウメモリ111のテイント値はクリアになる。このシャドウメモリ111の操作は、(1S)の命令 mov [Sh_eax],[Sh_imm0]で実現される。なお、「Sh_imm0」が即値「0」のテイント値でありテイントクリアを表す。   (1) is an instruction “mov eax, 0”, that is, an instruction to assign an immediate value “0” to the register “eax”. If this instruction is executed with the taint of the immediate value “0” cleared, whether the taint of the register “eax” is cleared or set, the state of taint clear corresponding to the immediate value “0” is overwritten, and the register “ The taint value of the shadow memory 111 corresponding to “eax” is cleared. The operation of the shadow memory 111 is realized by the instruction mov [Sh_eax], [Sh_imm0] of (1S). Note that “Sh_imm0” is a taint value with an immediate value “0” and represents taint clear.

(2)は、命令「mov eax,[Mem_A]」すなわち、メモリ101内のレジスタ「eax」にメモリ101内の「Mem_A」の内容を代入するという命令である。メモリ101内の「Mem_A」の値がメモリ101内のレジスタ「eax」に代入されると同時に、命令(2S)によって対応するテイントの代入が行われる。つまり、シャドウメモリ111内の「Sh_Mem_A」の値がシャドウメモリ111内の「Sh_eax」に代入される。   (2) is an instruction “mov eax, [Mem_A]”, that is, an instruction to substitute the contents of “Mem_A” in the memory 101 into the register “eax” in the memory 101. The value of “Mem_A” in the memory 101 is assigned to the register “eax” in the memory 101, and at the same time, the corresponding taint is assigned by the instruction (2S). That is, the value of “Sh_Mem_A” in the shadow memory 111 is assigned to “Sh_eax” in the shadow memory 111.

(3)は、命令「mov [Mem_B],eax」すなわち、メモリ101内の「Mem_B」にメモリ101内のレジスタ「eax」の内容を代入するという命令である。メモリ101内のレジスタ「eax」の値がメモリ101内の「Mem_B」に代入されると同時に、命令(3S)によって対応するテイントの代入が行われる。つまり、シャドウメモリ111内の「Sh_eax」の値がシャドウメモリ111内の「Sh_Mem_B」に代入される。   (3) is an instruction “mov [Mem_B], eax”, that is, an instruction to substitute the contents of the register “eax” in the memory 101 for “Mem_B” in the memory 101. The value of the register “eax” in the memory 101 is assigned to “Mem_B” in the memory 101, and at the same time, the corresponding taint is assigned by the instruction (3S). That is, the value of “Sh_eax” in the shadow memory 111 is assigned to “Sh_Mem_B” in the shadow memory 111.

これら一連の命令実行によって、メモリ101内の「Mem_A」の値がメモリ101内の「Mem_B」に代入されると同時に、対応するテイント値もシャドウメモリ111上で伝搬している。   By executing a series of these instructions, the value of “Mem_A” in the memory 101 is substituted for “Mem_B” in the memory 101, and at the same time, the corresponding taint value is also propagated on the shadow memory 111.

テイント情報伝搬手段113の実施例としては、これに限らず他にも仮想化技術を用いて機械語の動作を仮想的に実現する際に、メモリ101と同じサイズのシャドウメモリ111を確保しておいて機械語に対応するシャドウメモリ111の操作を行う等の方法もある。   The embodiment of the taint information propagation means 113 is not limited to this, and a shadow memory 111 having the same size as the memory 101 is secured when the operation of the machine language is virtually realized by using the virtualization technology. There is also a method of operating the shadow memory 111 corresponding to the machine language.

以上のようなテイント伝搬をアプリケーション103全体にわたって実施する事によって、入力データに付与されたテイントが、入力データが加工されつつ出力されるのと同時に伝搬されてゆく。さらに、出力されたデータがどの入力に対応しているのかを突き止めることが出来る。   By performing the taint propagation as described above over the entire application 103, the taint assigned to the input data is propagated at the same time as the input data is output while being processed. Further, it is possible to determine which input the output data corresponds to.

<APIフック>
図4はAPIフックの処理フローの例を示す。
<API hook>
FIG. 4 shows an example of the API hook processing flow.

APIフックはAPIフック手段104により実行され、先の命令実行およびテイント情報伝搬手段113のテイント伝搬処理と並行して行われる。   The API hook is executed by the API hook means 104 and is executed in parallel with the previous instruction execution and the taint propagation process of the taint information propagation means 113.

APIフック手段104は、命令実行がAPI実行か否かを判定する(S1)。   The API hook means 104 determines whether the instruction execution is API execution (S1).

命令実行がAPI実行ではない場合、例えば図3に記載の方法に基づいて、アプリケーション103は命令を実行し、テイント情報伝搬手段113はテイント伝搬処理を実行する(S6)。   If the instruction execution is not API execution, for example, based on the method shown in FIG. 3, the application 103 executes the instruction, and the taint information propagation unit 113 executes taint propagation processing (S6).

APIフック手段104は、命令実行がAPI実行である場合、以下の処理を行う。命令実行がAPI実行の書き込みの場合(S2)、または、API引数や処理対象データにテイントがセットされている場合(換言すると、「処理対象となるデータに対応するシャドウメモリ111にテイントが記憶されている場合」)(S3)、APIフック手段104はAPIフック処理を実行し、テイント情報伝搬手段113は、テイント伝搬処理を実行する(S5)。APIフック処理が不要な場合(言い換えると、命令実行がAPI実行の書き込ではなく、かつ、API引数や処理対象データにテイントがセットされていない場合(S2,S3))、図示しないAPI実行手段は呼び出されたAPIを実行し、テイント情報伝搬手段113は、テイント伝搬処理を実行する(S4)。   The API hook means 104 performs the following processing when the instruction execution is API execution. When the instruction execution is API execution writing (S2), or when a taint is set in the API argument or data to be processed (in other words, “the taint is stored in the shadow memory 111 corresponding to the data to be processed” (S3), the API hook means 104 executes API hook processing, and the taint information propagation means 113 executes taint propagation processing (S5). When API hook processing is unnecessary (in other words, when instruction execution is not API execution writing and no taint is set in the API argument or processing target data (S2, S3)), API execution means (not shown) Executes the called API, and the taint information propagation means 113 executes taint propagation processing (S4).

以下、アプリケーション103の実行に伴いメモリ101およびストレージ102についてテイント情報伝搬手段113とAPIフック手段104の処理が伴う前提で、よりマクロなレベルでのテイントの扱いについての処理例を示す。   In the following, an example of processing for handling a taint at a more macro level will be described on the premise that the processing of the taint information propagation unit 113 and the API hook unit 104 is performed for the memory 101 and the storage 102 in accordance with the execution of the application 103.

<ファイル読み込み>
図5〜図11は、ファイルを読み書きするアプリケーション103での実行例を示す。
<Load file>
5 to 11 show execution examples in the application 103 that reads and writes files.

図5は、初期状態を示す。メモリ101上にはアプリケーション103が展開されている。ストレージ102内のファイル「important.txt.enc」にのみテイントがセットされた状態を表す。このファイルがアプリケーション103の入力となる。なお、図5中では省略しているが、アプリケーション103が保護すべきデータを含まない場合、シャドウメモリ111内のアプリケーション103に対応するテイントをクリアしてもよい。   FIG. 5 shows an initial state. An application 103 is expanded on the memory 101. This represents a state where a taint is set only in the file “important.txt.enc” in the storage 102. This file is input to the application 103. Although omitted in FIG. 5, when the application 103 does not include data to be protected, the taint corresponding to the application 103 in the shadow memory 111 may be cleared.

図6は、アプリケーション103が入力となるファイルを開いた状態を示す。この場合、アプリケーション103は、「ファイルを開く」というAPIを実行しようとする。アプリケーション103は、開こうとするファイルに対応するファイルハンドルを生成する。APIフック手段104は、このファイルを開く際に開く対象となるファイルにテイントがセットされているか否かを判定する(S3)。この例では、テイントがセットされているのでAPIフック手段104は、APIフック処理を行う(S5)。テイント情報伝搬手段113は、APIからの出力となるファイルハンドルにテイントをセットする(S5)。   FIG. 6 shows a state in which the application 103 has opened an input file. In this case, the application 103 tries to execute an API “open file”. The application 103 generates a file handle corresponding to the file to be opened. The API hook means 104 determines whether or not a taint is set in a file to be opened when this file is opened (S3). In this example, since the taint is set, the API hook means 104 performs API hook processing (S5). The taint information propagation unit 113 sets the taint on the file handle that is output from the API (S5).

これにより、APIフック手段104は、以降このファイルハンドルを(API引数として)用いて実行されるAPI実行にはAPIフック処理を適用する(S3,S5)。   As a result, the API hook means 104 applies API hook processing to API execution executed thereafter using this file handle (as an API argument) (S3, S5).

図7は開いたファイルの中身をバッファ領域に読み込む処理を表している。   FIG. 7 shows processing for reading the contents of the opened file into the buffer area.

アプリケーション103は、APIを呼び出してストレージ102上のファイルからデータを読み込む際に、ファイルハンドルを用いるが、このファイルハンドルにはテイントがセットされているので、APIフック手段104がAPIフック処理を実行する(S3,S5)。APIフック処理として復号処理が自動的に間に入る事になる。なお、この復号処理自体は保護化・保護解除化手段105により実行される。APIフック手段104は、メモリ101内にバッファ領域を生成する。一方、テイント情報伝搬手段113は、バッファ領域に対応する領域をシャドウメモリ111内に生成し、テイントクリアする。   The application 103 uses a file handle when calling an API to read data from a file on the storage 102. Since a taint is set in this file handle, the API hook means 104 executes API hook processing. (S3, S5). Decryption processing is automatically inserted as API hook processing. The decryption process itself is executed by the protection / protection canceling means 105. The API hook unit 104 generates a buffer area in the memory 101. On the other hand, the taint information propagation unit 113 generates an area corresponding to the buffer area in the shadow memory 111 and clears the taint.

保護化・保護解除化手段105は、保護化データの一部を復号し、復号したデータ(以下「解除化データ」ともいう)をメモリ101内のバッファ領域の一部に格納する。一方、テイント情報伝搬手段113は、メモリ101内のバッファ領域の一部に対応する、シャドウメモリ111にテイントをセットする(S5)。   The protection / protection canceling means 105 decrypts a part of the protected data and stores the decrypted data (hereinafter also referred to as “released data”) in a part of the buffer area in the memory 101. On the other hand, the taint information propagation unit 113 sets a taint in the shadow memory 111 corresponding to a part of the buffer area in the memory 101 (S5).

なお、テイント情報伝搬手段113は、復号処理を行う領域をメモリ101内に生成し、その領域のテイントをクリアする。さらに、テイント情報伝搬手段113は、復号処理を行う際に復号処理の対象となるデータにテイントがセットされているため、メモリ101内の復号処理を行う領域に対応する、シャドウメモリ111の領域にテイントをセットする。   Note that the taint information propagation unit 113 generates an area for performing the decoding process in the memory 101, and clears the taint in that area. Furthermore, since the taint is set in the data to be subjected to the decoding process when performing the decoding process, the taint information propagation unit 113 sets the area in the shadow memory 111 corresponding to the area in the memory 101 where the decoding process is performed. Set the taint.

図8は読み込みファイルをクローズした後の状態を示す。   FIG. 8 shows a state after the read file is closed.

アプリケーション103が、ファイルハンドルは閉じるが、メモリ101内のバッファ領域に入力ファイルはそのまま残り、シャドウメモリ111内の対応する領域についても一部にテイントがセットされた状態となる。   The application 103 closes the file handle, but the input file remains in the buffer area in the memory 101, and the corresponding area in the shadow memory 111 is also partially set to taint.

<ファイル書き込み>
図9は、図8の状態で、新たに書き込み用にファイルを開いた状態を示す図である。
<Write file>
FIG. 9 is a diagram showing a state in which a file is newly opened for writing in the state of FIG.

アプリケーション103は、書き込み用ファイルを新規作成するというAPIを呼び出し、ファイルハンドルを作成する。新規作成時には、初期状態で何にも入っていないため、対応するテイントはクリアされた状態とし、対応するファイルハンドルのテイントもクリアされた状態である。そのため、テイント情報伝搬手段113は、ストレージ102内の書き込み用ファイル及びメモリ101内のファイルハンドルが格納された領域に対応する、シャドウストレージ112及びシャドウメモリ111内の領域をテイントクリアする。なお、書き込みなので、APIフック処理を実行する(S2,S5)。保護化・保護解除化手段105は、書き込み用ファイルを暗号化して保護化データとして、ストレージ102に格納する。   The application 103 calls an API for creating a new file for writing and creates a file handle. At the time of new creation, nothing is entered in the initial state, so the corresponding taint is cleared, and the corresponding file handle taint is also cleared. Therefore, the taint information propagation unit 113 taint clears the areas in the shadow storage 112 and the shadow memory 111 corresponding to the areas in which the write file in the storage 102 and the file handle in the memory 101 are stored. Since it is writing, API hook processing is executed (S2, S5). The protection / deprotection means 105 encrypts the writing file and stores it in the storage 102 as protected data.

図10は、ストレージ102上の書き込み用ファイルに対しメモリ101上のバッファ領域からのデータを書き込んだ状態である。   FIG. 10 shows a state in which data from the buffer area on the memory 101 is written to a write file on the storage 102.

APIから書き込みの場合すべからくAPIフック条件を満たすため、APIフック処理が行われる。そのため、メモリ101上のバッファ領域からのデータは、APIフック手段104がAPIフック処理を行い、保護化・保護解除化手段105は、バッファ領域の書き込みデータを暗号化し、保護化データとして、ストレージ102に格納する。なお、メモリ101上で暗号化処理が行われる。なお、バッファ領域の書き込みデータは、その一部にテイントがセットされているため、暗号化の対象データにテイントがセットされており、テイント情報伝搬手段113は、暗号化処理が行われている領域に対応するシャドウメモリ111にテイントをセットする。また、ファイルハンドルもテイントがセットされたデータを扱うため、テイント情報伝搬手段113は、ファイルハンドルにもテイントをセットする。なお、テイント情報伝搬手段113は、保護化データに対応する、シャドウストレージ112内の領域をテイントセットする。別の言い方をすると、アプリケーション103は、テイントがセットされたデータをストレージ102内のファイル内に書き込む事になるが、テイントがセットされたデータを書き込んだ段階で、テイント情報伝搬手段113によって、出力ファイルに対応する、シャドウストレージ112内の領域のテイントがセットされるほか、開いているファイルハンドルに対応するシャドウストレージ112にテイントがセットされる。   When writing from API, API hook processing is performed to satisfy all API hook conditions. Therefore, the API hook unit 104 performs API hook processing on the data from the buffer area on the memory 101, and the protection / protection cancellation unit 105 encrypts the write data in the buffer area and stores it as protected data in the storage 102 To store. An encryption process is performed on the memory 101. Note that the write data in the buffer area has a taint set in a part thereof, so that the taint is set in the data to be encrypted, and the taint information propagation means 113 is an area where the encryption process is performed. A taint is set in the shadow memory 111 corresponding to. In addition, since the file handle handles data in which a taint is set, the taint information propagation unit 113 also sets a taint in the file handle. Note that the taint information propagation unit 113 taint sets an area in the shadow storage 112 corresponding to the protected data. In other words, the application 103 writes the data in which the taint is set in the file in the storage 102. At the stage where the data in which the taint is set is written, the application 103 outputs the data with the taint. In addition to setting the taint of the area in the shadow storage 112 corresponding to the file, the taint is set in the shadow storage 112 corresponding to the open file handle.

図11は書き込みファイルをクローズした後の状態を示す。   FIG. 11 shows a state after the write file is closed.

出力ファイルに関しては、アプリケーション103がクローズ処理を行う際には、APIフック手段104は、「クローズ対象のファイルの中にテイントがセットされている部分が有るか否か」をAPIフック条件とし、セットされている部分がない場合にAPIフック条件を満たすと判断する。APIフック手段104は、「クローズ対象のファイルの中にテイントがセットされている部分が有るか否か」を判定し、セットされている部分がある場合には、APIフックを実行せず、API実行手段により、そのまま、ファイルが閉じられる。よって、この例の場合には、セットされている部分があるので、API実行手段は、データを暗号化したままファイルが閉じる。なお、セットされている部分がない場合には、APIフック手段104がAPIフックを実行し、APIを横取りし、保護化・保護解除化手段105が、テイントがセットされていない保護化データを解除化データに変換し、ストレージ102に格納する。なお、変換に際して、データ量が変わった場合には、テイント情報伝搬手段113が、シャドウストレージ112の対応する領域のテイントをクリアする。   For the output file, when the application 103 performs the closing process, the API hook means 104 sets “whether there is a portion in which the taint is set in the file to be closed” as an API hook condition, and sets It is determined that the API hook condition is satisfied when there is no part that is marked. The API hook means 104 determines whether or not there is a part in which the taint is set in the file to be closed. If there is a part that is set, the API hook is not executed and the API hook is not executed. The file is closed as it is by the execution means. Therefore, in this example, since there is a set portion, the API execution means closes the file while encrypting the data. If there is no set portion, the API hook means 104 executes the API hook, intercepts the API, and the protection / protection release means 105 releases the protected data for which no taint is set. Is converted into digitized data and stored in the storage 102. When the amount of data changes during conversion, the taint information propagation unit 113 clears the taint in the corresponding area of the shadow storage 112.

<バッファ領域を2つ以上に分かれている場合のファイル読み書き>
図12の実行例は、図5〜図11と類似のケースだが、バッファ領域が2つに分かれている。一方のバッファ領域は図5〜図7のファイル読み込みで説明したようにテイントがセットされており、他方のバッファ領域は図9のファイル書き込みで説明したようにテイントがクリアされている。
<File read / write when the buffer area is divided into two or more>
The execution example of FIG. 12 is similar to FIGS. 5 to 11, but the buffer area is divided into two. One buffer area is set with a taint as described in the file reading in FIGS. 5 to 7, and the other buffer area is cleared with a taint as described in the file writing in FIG.

この場合、書き込まれたファイルには一切テイントがセットされた部分は存在しない。   In this case, there is no portion in which the taint is set in the written file.

図13の実行例は、図12の状態で、テイントがセットされているファイルとは無関係な新規作成ファイルを閉じる際のAPIフック手段104による処理の例を示している。
APIフック手段104は、「クローズ対象のファイルの中にテイントがセットされている部分が有るか否か」を判定し、セットされている部分がないので、APIフックを実行し、APIを横取りし、保護化・保護解除化手段105が、テイントがセットされていない保護化データを解除化データに変換(復号処理)し、ストレージ102に格納する。図14は、メモリ101、シャドウメモリ111、ストレージ102、シャドウストレージ112の最終的な状態を示す。図14に示すように、保護化・保護解除化手段105は、保護化データnew.txt.encを復号した後、削除する。
The execution example of FIG. 13 shows an example of processing by the API hook means 104 when closing a newly created file unrelated to the file in which the taint is set in the state of FIG.
The API hook means 104 determines whether or not there is a portion where the taint is set in the file to be closed. Since there is no portion that is set, the API hook is executed and the API is intercepted. Then, the protection / protection canceling means 105 converts the protection data for which no taint is set into the cancellation data (decryption process) and stores it in the storage 102. FIG. 14 shows final states of the memory 101, the shadow memory 111, the storage 102, and the shadow storage 112. As shown in FIG. 14, the protection / protection release means 105 decrypts and deletes the protected data new.txt.enc.

<ネットワーク送信を行う場合>
この例では、APIフック手段104は、「テイントがセットされたデータを送信しようとすること」をAPIフック条件とする。
<When performing network transmission>
In this example, the API hook means 104 uses “trying to transmit data with a taint set” as an API hook condition.

図15の実行例は、入力ファイルから読み込まれたデータがソケットAPIを経由してネットワークに送信されようとした場合のAPIフック処理の実行例である。   The execution example of FIG. 15 is an execution example of API hook processing when data read from an input file is about to be transmitted to the network via the socket API.

バッファへの読み込みとテイントセットまでは、図5〜図8までと同様である。   Reading to the buffer and taint setting are the same as in FIGS.

その後、バッファに読み込んだデータをソケットAPIを経由して送信しようとする際に、「テイントがセットされたデータを送信しようとすること」というAPIフック条件を満たすため、APIフック手段104は、APIフックを実行し、強制切断手段107は、ソケットによる通信を強制的に切断し、同時に、強制エラー化手段108は、API実行結果としてエラーを返す。   After that, when trying to send the data read into the buffer via the socket API, the API hook means 104 satisfies the API hook condition of “trying to send data with a taint set”. The hook is executed, and the forced disconnection means 107 forcibly disconnects the communication by the socket, and at the same time, the forced error means 108 returns an error as an API execution result.

<共有メモリを用いる場合>
この例では、APIフック手段104は、「テイントがセットされたデータを共有メモリに記憶しよう(書き込もう)とすること」をAPIフック条件とする。
<When using shared memory>
In this example, the API hook means 104 sets “to try to store (write) the data in which the taint is set in the shared memory” as an API hook condition.

図16の実行例は、入力ファイルから読み込まれたデータが共有メモリAPIを経由して共有メモリに書き込もうとした場合のAPIフック処理の実行例である。   The execution example of FIG. 16 is an execution example of API hook processing when data read from an input file is to be written to the shared memory via the shared memory API.

バッファへの読み込みとテイントセットまでは、図5〜図8までと同様である。   Reading to the buffer and taint setting are the same as in FIGS.

その後、バッファに読み込んだデータを共有メモリAPIを経由して書き込もうとした際に、「テイントがセットされたデータを共有メモリに記憶しよう(書き込もう)とすること」というAPIフック条件を満たすため、APIフック手段104は、APIフックを実行し、API処理をエラーとし、同時に、強制エラー化手段108は、API実行結果としてエラーを返す。このような構成により、共有メモリに入力ファイルのデータを含むデータを書き込む事を阻止することができる。   After that, when trying to write the data read into the buffer via the shared memory API, to satisfy the API hook condition of "Let's store (write) the data with the taint set in the shared memory" The API hook means 104 executes the API hook and makes API processing an error, and at the same time, the forced error means 108 returns an error as an API execution result. With such a configuration, it is possible to prevent data including input file data from being written to the shared memory.

<保護化・保護解除化手段105の処理例>
図17の実行例は、保護化・保護解除化手段105の実行例になる。
<Processing Example of Protecting / Protecting Canceling Means 105>
The execution example of FIG. 17 is an execution example of the protection / protection release means 105.

図17Aの例は、保護化として暗号化を用いた例で、かつ、アプリケーション103から1つのファイルに見えるファイルと暗号化ファイルとが1:1に対応している場合である。   The example of FIG. 17A is an example in which encryption is used as protection, and a file that appears as one file from the application 103 and the encrypted file correspond to 1: 1.

図17Bの例は、保護化として暗号化を用いた例で、かつ、アプリケーション103から1つのファイルに見える部分が、実は1つの大きなコンテナファイルの中のデータ領域となっている例である。この場合、識別情報はこのコンテナファイルが内部構造を持ったファイルである事を示す固定的な識別情報であり、管理情報はこのコンテナファイルの暗号鍵等を特定するための情報や、どの位置にどの暗号化データが含まれているのかといった位置情報などから構成される(ただし、それだけとは限らない)データである。アプリケーション103からはあたかも実在する独立したファイルに見えるが、それはAPIフックによる処理によってコンテナファイルの中の領域があたかも1つのファイルのように見えているだけである。   The example of FIG. 17B is an example in which encryption is used as protection, and the portion that appears as one file from the application 103 is actually a data area in one large container file. In this case, the identification information is fixed identification information indicating that the container file is a file having an internal structure, and the management information is information for specifying the encryption key of the container file, and at which position. This data is composed of (but is not limited to) position information such as which encrypted data is included. Although it appears to the application 103 as an independent file that actually exists, the area in the container file just looks as if it were one file by the processing by the API hook.

<効果>
このような構成により、APIフック条件の複雑な設定を必要としないという効果を奏する。
<Effect>
With such a configuration, there is an effect that complicated setting of API hook conditions is not required.

また、APIフック手段と保護化・保護解除化手段とを組み合わせることで、アプリケーション103を改造する事なく、デジタル情報の流通過程の追跡(ログ取得)および意図しない二次流通の防止を実現することができる。別の言い方をすると、書き込まれたデータのうち入力された保護化データまたはそれを加工したデータのみが、最終的に保護化データとして保存されるため、アプリケーション103毎の動作の差異に依存せずに、保護すべきデータだけを保護化データとして保存する事が出来る。また、設定ファイル等の保護化すべきではないデータは保護化しない状態とする事が出来る。   Also, by combining the API hooking means and the protection / deprotection means, it is possible to track the distribution process of digital information (log acquisition) and prevent unintentional secondary distribution without modifying the application 103. Can do. In other words, only the input protected data or the processed data of the written data is finally stored as the protected data, so that it does not depend on the operation difference for each application 103. In addition, only data to be protected can be stored as protected data. In addition, data that should not be protected, such as setting files, can be put in a non-protected state.

<変形例>
少なくともメモリ101と、シャドウメモリ111とAPIフック手段104と、テイント情報伝搬手段113とを含みさえすれば、他の構成を備えなくとも、APIフック条件の複雑な設定を必要としないという効果を奏する。例えば、メモリ101に記憶されているデータは必ずしもストレージ102に格納される必要はなく、暗号化される必要もない。例えば、メモリ101に記憶されているデータが、ストレージ102に格納されず、暗号化もされずに、ネットワーク送信される場合もある。その場合には、ソケットシステム106と強制切断手段107とが必要となる。
<Modification>
As long as at least the memory 101, the shadow memory 111, the API hook means 104, and the taint information propagation means 113 are included, there is an effect that complicated setting of API hook conditions is not required even if other configurations are not provided. . For example, the data stored in the memory 101 does not necessarily need to be stored in the storage 102 and need not be encrypted. For example, data stored in the memory 101 may be transmitted over the network without being stored in the storage 102 and encrypted. In that case, the socket system 106 and the forced disconnection means 107 are required.

また、API実行結果としてエラーを返す必要がなければ、強制エラー化手段108を含まなくともよい。   Further, if it is not necessary to return an error as an API execution result, the forced error generating means 108 may not be included.

また、図5〜図11、図12〜14の実施例ではAPIフック条件として「全ての書き込み」とした上で書き込みデータを全て保護化した上で、テイントがセットされていなかった場合に保護化を解除していたが、この変形例としてテイントがセットされたデータが書き込まれない限りは書き込みでのAPIフックを行わず、最初にテイントがセットされたデータが書き込まれようとしたタイミングでAPIフックを行い、それ以前に書き込んだテイントがセットされていないデータを改めて全て保護化し、以降APIフックを行う実施例も考えられる。例えば、APIフック条件を「テイントがセットされたメモリ上のデータを、ストレージに書き込もうとすること」とし、書き込みを開始してから、この条件を満たすまでの間、図示しないAPI実行手段が(テイントがセットされていない)メモリ101上のデータをストレージ102に書き込む。一方、上記APIフック条件を満たした場合、つまり、最初にテイントがセットされたメモリ101上のデータを、ストレージに書き込もうとした際に、保護化・保護解除化手段105は、それまでにストレージ102に書き込んだデータ、及び、ファイルを閉じるまでに書き込むデータを全て、保護化データに変換して、ストレージ102に記憶し、それまで(APIフック条件を満たすまで)にストレージ102に書き込んだ保護化されていないデータをストレージ102から削除する。   Further, in the embodiments of FIGS. 5 to 11 and FIGS. 12 to 14, the API hook condition is set to “all writes”, all write data is protected, and protection is performed when a taint is not set. However, as a modified example, API hook is not used for writing unless data with taint set is written, and API hook is used when data with taint set is first written. It is also possible to consider an embodiment in which all the data to which the taint written before that is not set is protected again and API hooking is performed thereafter. For example, the API hook condition is “to try to write the data in the memory in which taint is set to the storage”, and the API execution means (not shown) from the start of writing until this condition is satisfied (taint Data in the memory 101 is written into the storage 102. On the other hand, when the API hook condition is satisfied, that is, when the data on the memory 101 in which the taint is first set is to be written to the storage, the protection / deprotection means 105 has previously stored the storage 102 All the data written to the file and the data written before the file is closed are converted to protected data, stored in the storage 102, and protected until that time (until the API hook condition is satisfied). Data that has not been deleted is deleted from the storage 102.

<その他の変形例>
本発明は上記の実施形態及び変形例に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
<Other variations>
The present invention is not limited to the above-described embodiments and modifications. For example, the various processes described above are not only executed in time series according to the description, but may also be executed in parallel or individually as required by the processing capability of the apparatus that executes the processes. In addition, it can change suitably in the range which does not deviate from the meaning of this invention.

<プログラム及び記録媒体>
また、上記の実施形態及び変形例で説明した各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
<Program and recording medium>
In addition, various processing functions in each device described in the above embodiments and modifications may be realized by a computer. In that case, the processing contents of the functions that each device should have are described by a program. Then, by executing this program on a computer, various processing functions in each of the above devices are realized on the computer.

この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。   The program describing the processing contents can be recorded on a computer-readable recording medium. As the computer-readable recording medium, for example, any recording medium such as a magnetic recording device, an optical disk, a magneto-optical recording medium, and a semiconductor memory may be used.

また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。   The program is distributed by selling, transferring, or lending a portable recording medium such as a DVD or CD-ROM in which the program is recorded. Further, the program may be distributed by storing the program in a storage device of the server computer and transferring the program from the server computer to another computer via a network.

このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。   A computer that executes such a program first stores, for example, a program recorded on a portable recording medium or a program transferred from a server computer in its storage unit. When executing the process, this computer reads the program stored in its own storage unit and executes the process according to the read program. As another embodiment of this program, a computer may read a program directly from a portable recording medium and execute processing according to the program. Further, each time a program is transferred from the server computer to the computer, processing according to the received program may be executed sequentially. Also, the program is not transferred from the server computer to the computer, and the above-described processing is executed by a so-called ASP (Application Service Provider) type service that realizes the processing function only by the execution instruction and result acquisition. It is good. Note that the program includes information provided for processing by the electronic computer and equivalent to the program (data that is not a direct command to the computer but has a property that defines the processing of the computer).

また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。   In addition, although each device is configured by executing a predetermined program on a computer, at least a part of these processing contents may be realized by hardware.

Claims (8)

データが記憶されるメモリと、
前記メモリに記憶されたデータが保護すべきデータであることを示すテイントが記憶されるシャドウメモリと、
APIフック条件を満たす場合に、APIフックを実行するAPIフック手段と、
前記メモリに記憶されたデータを処理する際に、データに対応するテイントを伝搬するテイント情報伝搬手段とを含み、
前記APIフック条件は、「処理対象となるデータに対応するシャドウメモリにテイントが記憶されていること」という条件を含む、
アプリケーション実行装置。
Memory for storing data;
A shadow memory storing a taint indicating that the data stored in the memory is data to be protected;
When the API hook condition is satisfied, API hook means for executing the API hook,
Taint information propagation means for propagating a taint corresponding to the data when processing the data stored in the memory,
The API hook condition includes a condition that “a taint is stored in a shadow memory corresponding to data to be processed”,
Application execution device.
請求項1のアプリケーション実行装置であって、
通信を行う際に用いる仮想的なインターフェースであるソケットを管理するソケットシステムと、
前記ソケットを用いて前記シャドウメモリに記憶されているテイントに対応する前記メモリに記憶されている前記データを送信しようとしたとき、前記ソケットによる通信を強制的に切断する強制切断手段とを更に含む、
アプリケーション実行装置。
The application execution device according to claim 1,
A socket system for managing sockets, which are virtual interfaces used for communication;
Forcibly disconnecting means for forcibly disconnecting communication by the socket when attempting to transmit the data stored in the memory corresponding to the taint stored in the shadow memory using the socket ,
Application execution device.
請求項1または2のアプリケーション実行装置であって、
前記APIフックを実行した際に、API実行結果としてエラーを返す強制エラー化手段を更に含む、
アプリケーション実行装置。
The application execution device according to claim 1 or 2,
When the API hook is executed, it further includes a forced error generating means for returning an error as an API execution result.
Application execution device.
請求項1〜3の何れかのアプリケーション実行装置であって、
データが記憶されるストレージと、
前記ストレージに記憶されたデータが保護すべきデータであることを示すテイントが記憶されるシャドウストレージと、
前記APIフック条件を満たしたとき、第三者が読み書きできない保護化データを読み書きする、あるいは、保護化データと保護化状態が解除された解除化データとの間の変換動作を行う保護化・保護解除化手段とを更に含み、
前記シャドウストレージに記憶されているテイントに対応する前記ストレージに記憶されている前記データは保護化データとして記憶されている、
アプリケーション実行装置。
The application execution device according to any one of claims 1 to 3,
Storage where data is stored;
A shadow storage for storing a taint indicating that the data stored in the storage is data to be protected;
Protection / protection that reads / writes protected data that cannot be read / written by a third party when the API hook condition is satisfied, or performs conversion operation between protected data and released data whose protected state has been released And a release means,
The data stored in the storage corresponding to the taint stored in the shadow storage is stored as protected data;
Application execution device.
請求項4のアプリケーション実行装置であって、
前記ストレージにデータを書き込む際には、前記保護化・保護解除化手段が、そのデータを保護化データに変換して、前記ストレージに記憶し、
ファイルを閉じる時点において、前記ストレージに記憶されている前記保護化データのうち、前記シャドウストレージにテイントが記憶されていない保護化データは、前記保護化・保護解除化手段が前記保護化データを解除化データに変換して、前記ストレージに記憶する、
アプリケーション実行装置。
The application execution device according to claim 4,
When writing data to the storage, the protection / deprotection means converts the data into protected data, stores it in the storage,
Of the protected data stored in the storage at the time of closing the file, the protected / unprotected means releases the protected data for which the taint is not stored in the shadow storage. Converted into data and stored in the storage,
Application execution device.
請求項4のアプリケーション実行装置であって、
前記ストレージに前記メモリ上のデータを書き込む際に、そのデータに対応する、前記シャドウメモリにテイントが記憶されていない限り、前記メモリ上のデータをそのまま前記ストレージに書き込み、
最初に前記シャドウメモリにテイントが記憶されている、前記メモリ上のデータを前記ストレージに書き込もうとした際に、前記保護化・保護解除化手段は、それまでに前記ストレージに書き込んだデータ、及び、ファイルを閉じるまでに書き込むデータを全て、保護化データに変換して、前記ストレージに記憶する、
アプリケーション実行装置。
The application execution device according to claim 4,
When writing data on the memory to the storage, unless the taint corresponding to the data is stored in the shadow memory, the data on the memory is written to the storage as it is,
The taint is first stored in the shadow memory, and when the data on the memory is to be written to the storage, the protection / deprotection means has the data written to the storage so far, and All data written before closing the file is converted to protected data and stored in the storage.
Application execution device.
メモリにはデータが記憶されるものとし、シャドウメモリには、メモリに記憶されたデータが保護すべきデータであることを示すテイントが記憶されるものとし、
APIフック手段が、APIフック条件を満たす場合に、APIフックを実行するAPIフックステップと、
テイント情報伝搬手段が、メモリに記憶されたデータを処理する際に、データに対応するテイントを伝搬するテイント伝搬ステップとを含み、
前記APIフック条件は、「処理対象となるデータに対応するシャドウメモリにテイントが記憶されていること」という条件を含む、
アプリケーション実行方法。
It is assumed that data is stored in the memory, and that the taint indicating that the data stored in the memory is data to be protected is stored in the shadow memory,
When the API hook means satisfies the API hook condition, an API hook step for executing the API hook; and
The taint information propagation means includes a taint propagation step of propagating a taint corresponding to the data when processing the data stored in the memory,
The API hook condition includes a condition that “a taint is stored in a shadow memory corresponding to data to be processed”,
Application execution method.
請求項1〜6の何れかのアプリケーション実行装置として、コンピュータを機能させるためのプログラム。   The program for functioning a computer as an application execution apparatus in any one of Claims 1-6.
JP2014110980A 2014-05-29 2014-05-29 Application execution device, method and program Active JP6151218B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014110980A JP6151218B2 (en) 2014-05-29 2014-05-29 Application execution device, method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014110980A JP6151218B2 (en) 2014-05-29 2014-05-29 Application execution device, method and program

Publications (2)

Publication Number Publication Date
JP2015225571A JP2015225571A (en) 2015-12-14
JP6151218B2 true JP6151218B2 (en) 2017-06-21

Family

ID=54842247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014110980A Active JP6151218B2 (en) 2014-05-29 2014-05-29 Application execution device, method and program

Country Status (1)

Country Link
JP (1) JP6151218B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6957311B2 (en) * 2017-10-25 2021-11-02 システムインテリジェント株式会社 Information leakage prevention device and information leakage prevention program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5535056B2 (en) * 2010-12-14 2014-07-02 エンカレッジ・テクノロジ株式会社 Security management device, security management method, and program
US8739280B2 (en) * 2011-09-29 2014-05-27 Hewlett-Packard Development Company, L.P. Context-sensitive taint analysis
JP5710547B2 (en) * 2012-04-27 2015-04-30 日本電信電話株式会社 Information processing apparatus, monitoring method, and monitoring program

Also Published As

Publication number Publication date
JP2015225571A (en) 2015-12-14

Similar Documents

Publication Publication Date Title
CN108140097B (en) Passive encryption of organised data
US9461819B2 (en) Information sharing system, computer, project managing server, and information sharing method used in them
JP6538570B2 (en) System and method for cloud data security
JP5019869B2 (en) Method for providing access to encrypted data in a computer device
US8893223B1 (en) Scanning protected files for violations of a data loss prevention policy
US8966158B2 (en) Data protection technique that protects illicit copying of data maintained in data storage
US20110060915A1 (en) Managing Encryption of Data
JP6122562B2 (en) Specific apparatus, specific method, and specific program
WO2013069695A1 (en) Security box
CN111339543B (en) File processing method and device, equipment and storage medium
JP2018523208A (en) Techniques for data monitoring to mitigate transition problems in object-oriented contexts
Lazouski et al. Stateful data usage control for android mobile devices
CN102821094A (en) Method and system for secure data processing in virtual desktop
WO2016206393A1 (en) Method and apparatus for managing application and method and apparatus for implementing read-write operation
EP2194456A1 (en) Method and apparatus for performing a file operation
CN110807191B (en) Safe operation method and device of application program
US9235717B1 (en) Secure copy and paste of mobile app data
KR101499535B1 (en) Computer-executable hybrid application performing method, coumputer-excutable device and storage media performing the same
CN113918999A (en) Method and device for establishing safe ferry channel, network disk and storage medium
JP6256781B2 (en) Management device for file security to protect the system
TW200905516A (en) Method and system for protecting file data against divulgence
JP6151218B2 (en) Application execution device, method and program
JP2008160485A (en) Document management system, document managing method, document management server, work terminal, and program
WO2011021340A1 (en) Virtual thin client making device, virtual thin client making system, virtual thin client making program, and virtual thin client making method
KR101548211B1 (en) Encryption method for preventing reverse engineering

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170419

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170524

R150 Certificate of patent or registration of utility model

Ref document number: 6151218

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150