JP4923925B2 - Check program, monitoring device, and monitoring method - Google Patents

Check program, monitoring device, and monitoring method Download PDF

Info

Publication number
JP4923925B2
JP4923925B2 JP2006266699A JP2006266699A JP4923925B2 JP 4923925 B2 JP4923925 B2 JP 4923925B2 JP 2006266699 A JP2006266699 A JP 2006266699A JP 2006266699 A JP2006266699 A JP 2006266699A JP 4923925 B2 JP4923925 B2 JP 4923925B2
Authority
JP
Japan
Prior art keywords
code
checker
execution
check program
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006266699A
Other languages
Japanese (ja)
Other versions
JP2008084275A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006266699A priority Critical patent/JP4923925B2/en
Publication of JP2008084275A publication Critical patent/JP2008084275A/en
Application granted granted Critical
Publication of JP4923925B2 publication Critical patent/JP4923925B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、ソフトウェアの改ざん監視装置および改ざん監視方法に関し、例えばPC(パーソナルコンピュータ)等の仕様が公開された計算機システムにおいて実行されるソフトウェアの改ざんを監視する技術に関する。   The present invention relates to a software tampering monitoring apparatus and tampering monitoring method, and more particularly to a technique for monitoring tampering of software executed in a computer system with publicly disclosed specifications such as a PC (personal computer).

従来、PC上のプログラムコードにより実現した監視プログラムや、PCの汎用バス等に設置した監視装置からPCのメインメモリを監視することにより、ソフトウェアの改ざんを検出する装置が公知である。このような装置では、改ざんを防止する対象であるソフトウェアがPCで実行されているときにメインメモリに動的に生成されるデータ領域を外部から監視するのは困難であるため、静的なプログラムコードと静的なデータを監視している。   2. Description of the Related Art Conventionally, a device that detects software tampering by monitoring a main memory of a PC from a monitoring program realized by a program code on the PC or a monitoring device installed on a general-purpose bus of the PC is known. In such a device, since it is difficult to externally monitor the data area that is dynamically generated in the main memory when software that is subject to tampering is executed on the PC, a static program Monitor code and static data.

例えば、次のようなソフトウェアの改ざん検出装置が公知である。少なくともプログラムコードを含む当該プログラムコードに係る処理を実行する前に確定した情報が記憶され当該情報の改ざんが定期的に検査される静的記憶領域と、プログラムコードに係る処理の実行に伴って変更され得る情報が記憶される動的記憶領域とを有する記憶手段と、上記記憶手段における静的記憶領域の範囲を示すアドレス情報を記憶する領域情報記憶手段と、上記動的記憶領域に記憶されたアドレス情報を参照して、上記静的記憶領域に記憶された情報に基づく処理を実行する場合に、上記動的記憶領域から参照したアドレス情報が上記領域情報記憶手段に記憶されたアドレス情報で示される静的記憶領域の範囲内を指定するものであるか否かを判定し、上記動的記憶領域に記憶された情報の改ざんを検出する検出手段とを備えることを特徴とする(例えば、特許文献1参照。)。   For example, the following software tamper detection device is known. Information that has been determined before execution of the process related to the program code including at least the program code is stored, and a static storage area in which the alteration of the information is periodically inspected, and changed with execution of the process related to the program code Storage means for storing information that can be stored, area information storage means for storing address information indicating the range of the static storage area in the storage means, and stored in the dynamic storage area When referring to the address information and executing processing based on the information stored in the static storage area, the address information referenced from the dynamic storage area is indicated by the address information stored in the area information storage means. Detecting means for determining whether or not it is within a range of a static storage area to be detected and detecting falsification of information stored in the dynamic storage area; And wherein the obtaining (e.g., see Patent Document 1.).

特開2006−106956号公報JP 2006-106956 A

しかしながら、上述したように静的なプログラムコードと静的なデータを監視しているだけでは、その監視しているプログラムコードやデータが実際にPCで実行されているコードやデータであることを識別するのは困難である。そのため、ソフトウェアの改ざん技術がますます高度化した場合に、監視プログラムや監視装置に、改ざんされていないプログラムコードを監視させながら、実際にPCで実行されるプログラムコードを改ざんして別のコード領域で実行するというようなことが考えられる。この場合には、監視プログラムや監視装置に気づかれないように、ソフトウェアの改ざんを行うことが可能となってしまう。   However, as described above, simply monitoring static program code and static data identifies that the monitored program code and data are actually code and data being executed on a PC. It is difficult to do. For this reason, when software tampering technology becomes more sophisticated, the program code that is actually executed on the PC is tampered with another program area while the monitoring program or monitoring device monitors the program code that has not been tampered with. It can be thought of as running on. In this case, it is possible to tamper with the software so that the monitoring program and the monitoring device are not noticed.

また、上記特許文献1に開示された装置では、ソースコード上で分岐や復帰の場所にマクロなどで不正コード検出機構を挿入して改ざんの有無を検出する。しかし、ソースコードに分岐や復帰の箇所が多い場合、すべての分岐や復帰の箇所で改ざんの有無を検出すると、その分、主となるプログラムの実行に要する時間が増えてしまい、ソフトウェアの処理性能の低下を招くという問題点がある。   In addition, the apparatus disclosed in Patent Document 1 detects the presence or absence of falsification by inserting a malicious code detection mechanism using a macro or the like at a branch or return location on the source code. However, if there are many branches and return points in the source code, detecting the presence or absence of tampering at all branch and return points will increase the time required to execute the main program and increase the software processing performance. There is a problem in that it causes a decrease in.

この発明は、上述した従来技術による問題点を解消するため、実際に実行中のプログラムコードの改ざんを監視することができるソフトウェアの改ざん監視装置および改ざん監視方法を提供することを目的とする。また、この発明は、実行中のプログラムコードの改ざんを監視する際に、改ざんの監視を行うための負荷を分散させることができるソフトウェアの改ざん監視装置および改ざん監視方法を提供することを目的とする。   An object of the present invention is to provide a software tampering monitoring apparatus and tampering monitoring method that can monitor tampering of a program code that is actually being executed in order to solve the above-described problems caused by the prior art. Another object of the present invention is to provide a software alteration monitoring apparatus and alteration monitoring method capable of distributing the load for monitoring alteration when monitoring the alteration of a program code being executed. .

上述した課題を解決し、目的を達成するため、本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法は、PC等の他の装置に監視装置を接続する。また、監視対象であるプログラムコードに1つ以上のチェッカコードを挿入したソフトウェアコードを作成し、PC等がそのソフトウェアコードを実行している最中に、監視装置によりチェッカコードを活性化させる。ソフトウェアコードを実行中のPC等が、活性化されたチェッカコードにより指定された処理を実行すると、監視装置は、そのチェッカコードにより指定された処理が実行されたことを確認し、プログラムコードの一部または全部について改ざんの有無を検出する。監視装置がチェッカコードを活性化させる際、チェッカコードの実行状況に応じて活性化の頻度を調節するようにしてもよい。   In order to solve the above-described problems and achieve the object, a software alteration monitoring apparatus and alteration monitoring method according to the present invention connect a monitoring apparatus to another device such as a PC. Also, a software code in which one or more checker codes are inserted into the program code to be monitored is created, and the checker code is activated by the monitoring device while the PC or the like is executing the software code. When a PC or the like that is executing the software code executes the process specified by the activated checker code, the monitoring apparatus confirms that the process specified by the checker code has been executed, The presence or absence of tampering is detected for some or all parts. When the monitoring device activates the checker code, the activation frequency may be adjusted according to the execution status of the checker code.

この発明によれば、監視対象であるプログラムコードに挿入されたチェッカコードをPC等が実行したことを確認することによって、PC等で実際に実行中のプログラムコードを監視することができる。また、実行頻度の高いチェッカコードについては、その活性化の頻度を下げることによって、実行中のプログラムコードを監視するための負荷を分散させることができる。   According to the present invention, it is possible to monitor the program code actually being executed by the PC or the like by confirming that the PC or the like has executed the checker code inserted into the program code to be monitored. Further, by reducing the activation frequency of a checker code having a high execution frequency, the load for monitoring the program code being executed can be distributed.

本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法によれば、PC等で実際に実行中のプログラムコードの改ざんを監視することができるという効果を奏する。また、この発明によれば、PC等で実行中のプログラムコードの改ざんを監視する際に、改ざんの監視を行うための負荷を分散させることができるという効果を奏する。   According to the software tampering monitoring apparatus and tampering monitoring method of the present invention, it is possible to monitor the tampering of program code actually being executed by a PC or the like. Further, according to the present invention, when monitoring the alteration of the program code being executed on the PC or the like, it is possible to distribute the load for monitoring the alteration.

以下に添付図面を参照して、この発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法の好適な実施の形態を詳細に説明する。   Exemplary embodiments of a software alteration monitoring apparatus and alteration monitoring method according to the present invention will be described below in detail with reference to the accompanying drawings.

(ソフトウェア改ざん監視装置のハードウェア構成)
まず、この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成を示すブロック図である。
(Hardware configuration of software tampering monitoring device)
First, the hardware configuration of the software tampering monitoring apparatus according to the embodiment of the present invention will be described. FIG. 1 is a block diagram showing a hardware configuration of a software tampering monitoring apparatus according to an embodiment of the present invention.

ソフトウェア改ざん監視装置は、図1に示す監視装置1と、図示しないソフトウェアコードから構成される。監視装置1は、監視装置1以外の図示しない他の装置、例えばPC等に接続される。PC等は、この監視装置1とともに提供されるソフトウェアコードを実行する。例えば、監視装置1は、PC等のPCIバス等の汎用バスに接続されて用いられる。そして、監視装置1は、PC等が実行中のプログラムコードを監視する。ソフトウェアコードは、この監視装置1が監視する対象であるプログラムコードに1つ以上のチェッカコードが挿入されたものである。   The software tampering monitoring apparatus includes the monitoring apparatus 1 shown in FIG. 1 and software code (not shown). The monitoring device 1 is connected to another device (not shown) other than the monitoring device 1, such as a PC. The PC or the like executes software code provided together with the monitoring device 1. For example, the monitoring device 1 is used by being connected to a general-purpose bus such as a PCI bus such as a PC. The monitoring device 1 monitors the program code being executed by the PC or the like. The software code is obtained by inserting one or more checker codes into a program code to be monitored by the monitoring device 1.

図1に示すように、監視装置1は、CPU11、DMAC(ダイレクト・メモリ・アクセス・コントローラ)12、I/O(入出力インタフェース)13、ROM14およびRAM15を備えている。これらの各構成部は、バス10によって互いに接続されている。CPU11は、監視装置1の全体の制御を司る。DMAC12は、監視装置1と、PC等の後述する起動判定データの格納メモリとの間で、PC等のCPUを介さずに行うデータ転送を制御する。なお、監視装置1がバスマスタ方式でない場合には、監視装置1にDMAC12がないので、監視装置1とPC等の間のデータ転送は、PC等のDMACにより制御される。   As shown in FIG. 1, the monitoring device 1 includes a CPU 11, a DMAC (direct memory access controller) 12, an I / O (input / output interface) 13, a ROM 14 and a RAM 15. Each of these components is connected to each other by a bus 10. The CPU 11 governs overall control of the monitoring device 1. The DMAC 12 controls data transfer performed between the monitoring apparatus 1 and a storage memory of activation determination data, which will be described later, such as a PC, without using a CPU such as a PC. When the monitoring device 1 is not a bus master system, the monitoring device 1 does not have the DMAC 12, and therefore data transfer between the monitoring device 1 and the PC is controlled by the DMAC such as the PC.

ROM14は、CPU11が監視装置1を制御する際に実行するプログラムを記憶している。RAM15は、CPU11のワークエリアとして使用される。また、RAM15は、後述するチェッカ位置/頻度データベースを記憶する。I/O13は、PC等の例えばPCIバスに接続され、PC等と監視装置1の内部とのインタフェースを司り、PC等との間のデータの入出力を制御する。   The ROM 14 stores a program that is executed when the CPU 11 controls the monitoring device 1. The RAM 15 is used as a work area for the CPU 11. Further, the RAM 15 stores a checker position / frequency database which will be described later. The I / O 13 is connected to, for example, a PCI bus such as a PC, controls the interface between the PC and the inside of the monitoring device 1, and controls data input / output between the PC and the like.

なお、図1には、PC等で実行中のソフトウェアコードを監視するのに必要な構成のみが示されており、その他の構成は省略されている。例えば、監視装置1およびその監視対象であるプログラムコードがデジタル・テレビジョン放送の受信システムである場合、監視装置1には、図1に示す構成以外に、エンコーダ機能やチューナ機能などを実現する回路などが設けられる。   FIG. 1 shows only the configuration necessary for monitoring software code being executed by a PC or the like, and other configurations are omitted. For example, when the monitoring device 1 and the program code to be monitored are a digital television broadcast receiving system, the monitoring device 1 has a circuit that realizes an encoder function, a tuner function, etc. in addition to the configuration shown in FIG. Etc. are provided.

(ソフトウェア改ざん監視装置の機能的構成)
次に、この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成について説明する。図2は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成を示すブロック図である。図2に示すように、監視装置1は、入出力部21、復号処理部22、変換処理部23、起動管理部24、DMA部25、実行確認部26、頻度管理部27および改ざん検出部28を備えている。
(Functional configuration of software alteration monitoring device)
Next, a functional configuration of the software alteration monitoring device according to the embodiment of the present invention will be described. FIG. 2 is a block diagram showing a functional configuration of the software tampering monitoring apparatus according to the embodiment of the present invention. As shown in FIG. 2, the monitoring device 1 includes an input / output unit 21, a decoding processing unit 22, a conversion processing unit 23, an activation management unit 24, a DMA unit 25, an execution confirmation unit 26, a frequency management unit 27, and a falsification detection unit 28. It has.

入出力部21は、PC等から暗号化されたソフトウェアコードを受け取り、それを復号処理部22に渡す。復号処理部22は、入出力部21から渡されたソフトウェアコードを復号化し、それを変換処理部23に渡す。変換処理部23は、復号処理部22から渡されたソフトウェアコードを、PC等の実行可能な形式に変換する。実行形式に変換されたソフトウェアコードは、入出力部21を介してPC等へ転送され、PC等のメインメモリに展開される。つまり、PC等で実行されるソフトウェアコードは、暗号化されてPC等のハードディスクなどにインストールされており、起動時に監視装置1において復号化され、PC等のメインメモリに展開されて初めて実行可能な状態になる。   The input / output unit 21 receives the encrypted software code from a PC or the like and passes it to the decryption processing unit 22. The decryption processing unit 22 decrypts the software code passed from the input / output unit 21 and passes it to the conversion processing unit 23. The conversion processing unit 23 converts the software code passed from the decryption processing unit 22 into an executable format such as a PC. The software code converted into the execution format is transferred to a PC or the like via the input / output unit 21 and developed in a main memory such as a PC. That is, software code executed on a PC or the like is encrypted and installed on a hard disk or the like such as a PC. The software code can be executed only after being decrypted by the monitoring device 1 at the time of startup and expanded in a main memory such as a PC. It becomes a state.

また、変換処理部23は、ソフトウェアコードの展開時に、チェッカコードの挿入位置を抽出し、チェッカ位置/頻度データベース29を作成する。このときのチェッカ位置/頻度データベース29には、各チェッカコードの挿入位置情報と、各チェッカコードを活性化させる頻度の初期値(設計値)が格納される。なお、チェッカ位置/頻度データベース29として、予め、ソフトウェアコードの設計段階において、各チェッカコードの挿入位置と活性化頻度の初期値を格納したデータベースを用意しておいてもよい。このチェッカ位置/頻度データベース29は、上述したようにRAM15に記憶されるが、このRAM15の記憶容量が少ない場合には、チェッカ位置/頻度データベース29を暗号化してPC等のハードディスクなどに記憶させてもよい。   Further, the conversion processing unit 23 extracts the checker code insertion position when developing the software code, and creates the checker position / frequency database 29. The checker position / frequency database 29 at this time stores insertion position information of each checker code and an initial value (design value) of the frequency at which each checker code is activated. In addition, as the checker position / frequency database 29, a database storing the insertion position of each checker code and the initial value of the activation frequency may be prepared in advance at the software code design stage. The checker position / frequency database 29 is stored in the RAM 15 as described above. If the storage capacity of the RAM 15 is small, the checker position / frequency database 29 is encrypted and stored in a hard disk such as a PC. Also good.

起動管理部24は、チェッカ位置/頻度データベース29の情報に基づいて、起動判定データの書き換え要求を出力する。起動判定データは、PC等の所定のメモリ領域に格納されている。DMA部25は、起動管理部24から書き換え要求を受け取ると、入出力部21を介して、PC等の所定のメモリ領域に直接アクセスし、起動判定データの書き換えを行う。監視装置1により起動判定データが書き換えられると、その書き換えられた起動判定データに対応するチェッカコードが活性化されたことになる。起動判定データとしては、例えばフラグが用いられる。チェッカコードは、そのチェッカコードに対応するフラグが立っていれば活性化状態にあり、フラグが寝ていれば非活性化状態にある。   The activation management unit 24 outputs an activation determination data rewrite request based on the information in the checker position / frequency database 29. The activation determination data is stored in a predetermined memory area such as a PC. When receiving a rewrite request from the activation management unit 24, the DMA unit 25 directly accesses a predetermined memory area such as a PC via the input / output unit 21 and rewrites the activation determination data. When the activation determination data is rewritten by the monitoring device 1, the checker code corresponding to the rewritten activation determination data is activated. For example, a flag is used as the activation determination data. The checker code is in an activated state when a flag corresponding to the checker code is set, and is in an inactivated state when the flag is set.

実行確認部26は、入出力部21を介して、活性化されたチェッカコードがPC等で実行されたことを確認する。頻度管理部27は、各チェッカコードの活性化頻度を管理する。改ざん検出部28は、PC等でチェッカコードが実行されたときに、その実行結果に基づいてプログラムコードの一部または全部について改ざんの有無を検出する。   The execution confirmation unit 26 confirms that the activated checker code is executed by the PC or the like via the input / output unit 21. The frequency management unit 27 manages the activation frequency of each checker code. When the checker code is executed by a PC or the like, the falsification detection unit 28 detects whether or not a part or all of the program code has been falsified based on the execution result.

上述した復号処理部22、変換処理部23、起動管理部24、実行確認部26、頻度管理部27および改ざん検出部28は、具体的には、例えば、図1に示したROM14やRAM15に記録されたプログラムを、CPU11が実行することによって、その機能を実現する。また、入出力部21およびDMA部25は、それぞれ、I/O13およびDMAC12により、その機能を実現する。   Specifically, the decoding processing unit 22, the conversion processing unit 23, the activation management unit 24, the execution confirmation unit 26, the frequency management unit 27, and the falsification detection unit 28 described above are recorded in, for example, the ROM 14 or the RAM 15 illustrated in FIG. The function is realized when the CPU 11 executes the executed program. Further, the input / output unit 21 and the DMA unit 25 realize their functions by the I / O 13 and the DMAC 12, respectively.

(製品開発時からアプリケーション実行時までの流れの概略の第1の例)
次に、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略について説明する。図3は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第1の例を示す説明図である。
(First example of the outline of the flow from product development to application execution)
Next, an outline of the flow from the time of product development to the time of application execution of the software tampering monitoring apparatus according to the embodiment of the present invention will be described. FIG. 3 is an explanatory diagram showing a first example of a schematic flow from the product development time to the application execution time of the software tampering monitoring apparatus according to the embodiment of the present invention.

図3に示すように、まず、製品開発時に、開発者が、主プログラムコード31にチェッカ挿入情報としてチェッカ挿入位置・頻度指示情報32を埋め込む処理を行い、暗号化して、暗号化ソフトウェアコード33を作成する。ここで、主プログラムコード31は、監視装置1により監視する対象のプログラムコードである。チェッカ挿入位置・頻度指示情報32は、主プログラムコード31に挿入される各チェッカコードの挿入位置と、各チェッカコードを活性化させる頻度を指示する情報である。   As shown in FIG. 3, first, at the time of product development, the developer performs a process of embedding checker insertion position / frequency instruction information 32 as checker insertion information in the main program code 31, and encrypts the encrypted software code 33. create. Here, the main program code 31 is a program code to be monitored by the monitoring device 1. The checker insertion position / frequency instruction information 32 is information indicating the insertion position of each checker code inserted into the main program code 31 and the frequency with which each checker code is activated.

チェッカ挿入位置・頻度指示情報32の埋め込み処理によって、主プログラムコード31の、チェッカ挿入位置・頻度指示情報32により指定された位置に、指定された頻度で活性化されるチェッカコードが挿入される。ソフトウェア改ざん監視装置のユーザには、この暗号化ソフトウェアコード33と監視装置1がセットにされて提供される。   As a result of embedding the checker insertion position / frequency instruction information 32, a checker code activated at the specified frequency is inserted into the main program code 31 at the position specified by the checker insertion position / frequency instruction information 32. The encrypted software code 33 and the monitoring device 1 are provided as a set to the user of the software alteration monitoring device.

次いで、ユーザが、主プログラムコード31を実行するPC等に監視装置1を接続し、暗号化ソフトウェアコード33をPC等のハードディスク等の記憶装置34にインストールする。ユーザがPC等を操作してアプリケーションを起動すると、監視装置1は、PC等の記憶装置34から暗号化ソフトウェアコード33を読み出して復号化する。そして、監視装置1は、復号化したソフトウェアコードを実行形式に変換し、PC等のメインメモリ35に実行形式のソフトウェアコード36を展開する。また、監視装置1は、実行形式のソフトウェアコード36を展開する際に、埋め込まれたチェッカコードを抽出し、チェッカ位置/頻度データベース29として、チェッカ位置/初期頻度リストを作成する。   Next, the user connects the monitoring device 1 to a PC or the like that executes the main program code 31, and installs the encrypted software code 33 in a storage device 34 such as a hard disk such as a PC. When a user operates a PC or the like to start an application, the monitoring device 1 reads the encrypted software code 33 from the storage device 34 such as a PC and decrypts it. Then, the monitoring device 1 converts the decrypted software code into an execution format, and develops the execution format software code 36 in the main memory 35 such as a PC. Further, the monitoring device 1 extracts the embedded checker code when developing the execution format software code 36 and creates a checker position / initial frequency list as the checker position / frequency database 29.

ここで、初期頻度とは、各チェッカコードを活性化させる頻度の初期値(設計値)のことである。なお、図3では、便宜上、チェッカ位置/頻度データベース29が監視装置1の外に置かれているが、実際には、チェッカ位置/頻度データベース29は、監視装置1の内部に構築される。ただし、監視装置1の内部に十分な記憶容量がない場合には、チェッカ位置/頻度データベース29がPC等のハードディスク等に格納される場合もある。   Here, the initial frequency is an initial value (design value) of the frequency for activating each checker code. In FIG. 3, for convenience, the checker position / frequency database 29 is placed outside the monitoring apparatus 1, but actually, the checker position / frequency database 29 is constructed inside the monitoring apparatus 1. However, if the storage device 1 does not have a sufficient storage capacity, the checker position / frequency database 29 may be stored in a hard disk such as a PC.

次いで、アプリケーションの実行時には、監視装置1は、チェッカ位置/頻度データベース29の情報に基づいて、PC等に対して、PC等で実行中のソフトウェアコード36に埋め込まれているチェッカコードの起動指示を与え、そのチェッカコードを活性化する。PC等が、活性化されたチェッカコードを実行し、そのチェッカコードにより指定された処理を実行すると、監視装置1にチェック結果が通知される。従って、監視装置1は、PC等で実際に実行中のプログラムコードを監視し、そのプログラムコードの改ざんを検出することができる。また、監視装置1は、チェック結果に基づいて、チェッカ位置/頻度データベース29の頻度に関する情報を更新する。   Next, when the application is executed, the monitoring device 1 instructs the PC or the like to start the checker code embedded in the software code 36 being executed on the PC or the like based on the information in the checker position / frequency database 29. And activates that checker code. When the PC or the like executes the activated checker code and executes the process designated by the checker code, the monitoring device 1 is notified of the check result. Therefore, the monitoring device 1 can monitor the program code that is actually being executed by a PC or the like, and detect falsification of the program code. Moreover, the monitoring apparatus 1 updates the information regarding the frequency of the checker position / frequency database 29 based on the check result.

ここで、監視装置1へチェック結果を通知する手段としては、PC等がデバイスドライバ等を通じて監視装置1に実行通知を渡す構成としてもよい。あるいは、チェッカコードの実行によってPC等の特定のメモリ領域の値が書き換わり、そのメモリ領域の値を監視装置1がポーリングにより定期的に監視することによって、監視装置1がチェッカコードの実行を知るようにしてもよい。この場合、チェッカコードの実行により値が書き換わるメモリ領域として、例えば起動判定データとは異なるフラグを用いることができる。   Here, as a means for notifying the monitoring device 1 of the check result, a configuration may be adopted in which a PC or the like passes an execution notification to the monitoring device 1 through a device driver or the like. Alternatively, the execution of the checker code rewrites the value of a specific memory area such as a PC, and the monitoring apparatus 1 periodically monitors the value of the memory area by polling, so that the monitoring apparatus 1 knows the execution of the checker code. You may do it. In this case, for example, a flag different from the activation determination data can be used as a memory area whose value is rewritten by execution of the checker code.

(製品開発時からアプリケーション実行時までの流れの概略の第2の例)
図4は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第2の例を示す説明図である。図4に示すように、この第2の例が、上述した第1の例と異なるのは、製品開発時に、主プログラムコード31にチェッカ挿入位置・頻度指示情報32を埋め込む処理を行わないことである。
(Second example of outline of flow from product development to application execution)
FIG. 4 is an explanatory diagram showing a second example of a schematic flow from the product development time to the application execution time of the software tampering monitoring apparatus according to the embodiment of the present invention. As shown in FIG. 4, the second example is different from the first example described above in that the processing for embedding the checker insertion position / frequency instruction information 32 in the main program code 31 is not performed during product development. is there.

つまり、製品開発時には、主プログラムコード31とチェッカ挿入情報・頻度指示情報37を別々に暗号化して、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39を作成する。チェッカ挿入情報・頻度指示情報37は、第1の例のチェッカ挿入位置・頻度指示情報32に相当する。第2の例では、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39と監視装置1がセットにされてソフトウェア改ざん監視装置のユーザに提供される。   That is, at the time of product development, the main program code 31 and the checker insertion information / frequency instruction information 37 are separately encrypted to create the encrypted main program code 38 and the encrypted checker insertion information / frequency instruction information 39. The checker insertion information / frequency instruction information 37 corresponds to the checker insertion position / frequency instruction information 32 of the first example. In the second example, the encryption main program code 38, the encryption checker insertion information / frequency instruction information 39, and the monitoring device 1 are set and provided to the user of the software alteration monitoring device.

従って、ユーザは、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39をPC等の記憶装置34にインストールすることになる。ユーザがアプリケーションを起動すると、監視装置1は、PC等の記憶装置34から読み出した暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39を復号化し、主プログラムコード31にチェッカコードを埋め込み、それを実行形式に変換してPC等のメインメモリ35に展開する。これ以降は、上述した第1の例と同じである。   Therefore, the user installs the encryption main program code 38 and the encryption checker insertion information / frequency instruction information 39 in the storage device 34 such as a PC. When the user activates the application, the monitoring apparatus 1 decrypts the encrypted main program code 38 and the encrypted checker insertion information / frequency instruction information 39 read from the storage device 34 such as a PC, and adds a checker code to the main program code 31. It is embedded, converted into an execution format, and expanded in a main memory 35 such as a PC. The subsequent steps are the same as in the first example described above.

なお、アプリケーションの実行時にチェッカコードの挿入位置が毎回異なるように、監視対象のプログラムコードにチェッカコードを挿入するようにしてもよい。この場合には、監視対象のプログラムコードにおける絶対アドレス参照および相対アドレス参照を予め抽出したデータベースを作成しておく。そして、そのデータベースに基づいて命令コードレベルのリロケートを可能にしておき、任意のコード列の挿入によって生じるアドレス参照のズレを解決する手段を用いて、アプリケーションの起動時にプログラムコードの任意の場所にチェッカコードを挿入しながら、PC等のメインメモリに展開する。このようなことを可能とする具体的な技術については、詳細な説明を省略するが、本発明者が先に出願した特開2005−85188号公報に開示された技術を適用することにより実現できる。   Note that the checker code may be inserted into the program code to be monitored so that the checker code insertion position is different each time the application is executed. In this case, a database in which absolute address references and relative address references in the program code to be monitored are extracted in advance is created. Then, based on the database, instruction code level relocation is enabled, and a means for resolving address reference misalignment caused by insertion of an arbitrary code string is used to check a program code at an arbitrary place when an application is started. While inserting the code, it is expanded in a main memory such as a PC. Although detailed description of a specific technique that enables this is omitted, it can be realized by applying the technique disclosed in Japanese Patent Application Laid-Open No. 2005-85188 filed earlier by the present inventor. .

(チェッカコードの構造)
次に、チェッカコードの構造について説明する。図5は、この発明の実施の形態にかかるソフトウェア改ざん監視装置のチェッカコードのプログラムコードを示す説明図である。図5に示すように、チェッカコード41は、起動判定データ(起動判定フラグ)を調査する工程(ステップS1)と、その調査結果に基づいて起動判定処理を行う工程(ステップS2)と、起動判定処理の結果、フラグが寝ている場合(ステップS2:No)に何もしない、すなわちスルーして(ステップS3)、チェッカコード41の実行を終了する工程(ステップS4)を有する。
(Checker code structure)
Next, the structure of the checker code will be described. FIG. 5 is an explanatory diagram showing the program code of the checker code of the software alteration monitoring device according to the embodiment of the present invention. As shown in FIG. 5, the checker code 41 includes a step (step S 1) for examining activation determination data (activation determination flag), a step for performing activation determination processing based on the investigation result (step S 2), and an activation determination. If the flag is asleep as a result of the processing (step S2: No), nothing is done, that is, the process is passed (step S3), and the execution of the checker code 41 is terminated (step S4).

また、チェッカコード41は、起動判定処理の結果、フラグが立っている場合(ステップS2:Yes)にこのチェッカコード41において指定された処理を行い(ステップS5)、その後チェッカコードの実行を終了する工程(ステップS4)を有する。ステップS5を経るパスが第1または第3の実行パスに相当し、ステップS3を経るパスが第2の実行パスに相当する。   The checker code 41 performs the process specified in the checker code 41 when the flag is set as a result of the activation determination process (step S2: Yes) (step S5), and thereafter ends the execution of the checker code. It has a process (Step S4). The path passing through step S5 corresponds to the first or third execution path, and the path passing through step S3 corresponds to the second execution path.

ここで、ステップS5の処理を実行するためのプログラムは、(1)チェッカコード41が実行されたことを監視装置1へ通知するための処理を行うプログラム、(2)監視対象のプログラムコードの一部または全部が改ざんされていないか否かを検出するための処理を行うプログラム、(3)チェッカコード自体が改ざんされていないか否かを検出するための処理を行うプログラム、などのいずれかである。上記(1)の場合が第1の実行パスに相当し、上記(2)の場合が第3の実行パスに相当する。上記(3)の場合は、さらに別の実行パスに相当する。このように、起動判定フラグに応じて実行される実行パスは、4つ以上あってもよい。ステップS2からステップS5を経てステップS4へ至る実行パスのどこかで、起動判定フラグが寝かされ、チェッカコードが不活性化される。   Here, the program for executing the process of step S5 is (1) a program for performing a process for notifying the monitoring apparatus 1 that the checker code 41 has been executed, and (2) one of the program codes to be monitored. A program that performs processing for detecting whether or not all or part of the checker code has been tampered with, or (3) a program that performs processing for detecting whether or not the checker code itself has been tampered with is there. The case (1) corresponds to the first execution path, and the case (2) corresponds to the third execution path. The case (3) corresponds to another execution path. As described above, there may be four or more execution paths executed according to the activation determination flag. At some point in the execution path from step S2 through step S5 to step S4, the activation determination flag is laid and the checker code is inactivated.

上記ステップS5では、活性化されたチェッカコードが1回の起動指示によって処理する量を分割し、チェックする項目を少しずつ実行して複数回の実行によりチェックを完了するようにしてもよい。この場合には、上記ステップS5の処理の実行によって、監視対象のプログラムコードの実行に悪影響が及ぶのを避けることができる。   In the above step S5, the amount that the activated checker code processes in response to a single activation instruction may be divided, and the items to be checked may be executed little by little to complete the check by multiple executions. In this case, it is possible to avoid adversely affecting the execution of the program code to be monitored by executing the process of step S5.

また、上記ステップS5で(2)のプログラムを実行する場合、監視装置1のDMA部25(ない場合には、PC等のDMA部)により、PC等のメインメモリ35に展開されているプログラムコードを読み出し、そのプログラムコードと元のプログラムコードを比較するようにしてもよい。その際、プログラムコード自体を比較してもよいし、例えばプログラムコードのチェックサムやハッシュ値など、プログラムコードを要約したデータ同士を比較するようにしてもよい。   When the program (2) is executed in step S5, the program code developed in the main memory 35 such as a PC by the DMA unit 25 of the monitoring apparatus 1 (or the DMA unit such as PC when there is no program). And the program code may be compared with the original program code. At this time, the program codes themselves may be compared, or data summarizing the program codes such as a checksum and a hash value of the program codes may be compared.

元のプログラムコードとしては、アプリケーション起動時に復号されたプログラムコードを監視装置1のRAM15に記憶しておき、これを読み出して用いることができる。監視装置1のRAM15の容量が十分でない場合には、アプリケーション起動時に復号されたプログラムコードを監視装置1において暗号化し、それを再びPC等の記憶装置34に記憶させておけばよい。上記ステップS5で(3)のプログラムを実行する場合も同様である。   As the original program code, the program code decrypted when the application is started can be stored in the RAM 15 of the monitoring apparatus 1 and read out for use. When the capacity of the RAM 15 of the monitoring device 1 is not sufficient, the program code decrypted when the application is activated may be encrypted in the monitoring device 1 and stored again in the storage device 34 such as a PC. The same applies when the program (3) is executed in step S5.

(チェッカコードの活性化方式)
チェッカコードの数が少ない場合には、すべてのチェッカコードを常に活性化させてもよい。しかし、チェッカコードの数が多い場合には、すべてのチェッカコードを常に活性化させると、チェッカコードが次々に実行されることになり、それによる負荷が大きくなって、監視対象のプログラムコードの処理速度が低下してしまう。これを避けるため、監視装置1側でチェッカコードの活性化頻度を制御したり、活性化させるチェッカコードを動的に変化させる必要がある。
(Checker code activation method)
When the number of checker codes is small, all checker codes may be always activated. However, when the number of checker codes is large, if all the checker codes are always activated, the checker codes are executed one after another, resulting in a large load and processing of the program code to be monitored. The speed will drop. In order to avoid this, it is necessary to control the activation frequency of the checker code on the monitoring device 1 side or to dynamically change the checker code to be activated.

例えば、監視装置1側で、チェッカコードの起動指示後にそのチェッカコードの実行通知を受け取るまでの時間を測定するなどして、チェッカコードの実行頻度を観測する。そして、実行頻度が高いチェッカコードの起動間隔を長くし、実行頻度が低いチェッカコードの起動間隔を短くするような制御を動的に行って負荷を分散させる。このようにする場合、製品の開発中に十分な調査を行い、頻度の範囲を予め決定してデータベースを作成しておき、ある程度の指針に基づいて実行時の負荷を動的に変更しながらチェッカコードを活性化させることが可能となる。チェッカコードの活性化方式としては、(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらの組み合わせが考えられる。   For example, the monitoring device 1 observes the execution frequency of the checker code by measuring the time until receiving the checker code execution notification after the checker code activation instruction. Then, the load is distributed by dynamically performing control such that the activation interval of the checker code with high execution frequency is lengthened and the activation interval of the checker code with low execution frequency is shortened. In this case, a thorough investigation is performed during product development, the frequency range is determined in advance, a database is created, and the checker is changed while dynamically changing the runtime load based on some guidelines. The code can be activated. As a checker code activation method, one of (1) cyclic method, (2) frequency equalization method, (3) frequency fixed method, or a combination thereof may be considered.

上記(1)巡回方式について説明する。図6は、この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを巡回方式で活性化させる場合の流れを示すフローチャートである。図6に示すように、まず、監視装置1は、1つのチェッカコードを活性化させる(ステップS11)。そして、この活性化させたチェッカコードが実行されるのを待機する(ステップS12:実行通知なし)。この間、別のチェッカコードは活性化されない。   The (1) patrol method will be described. FIG. 6 is a flowchart showing a flow in the case where the checker code is activated in a cyclic manner in the software tampering monitoring apparatus according to the embodiment of the present invention. As shown in FIG. 6, first, the monitoring device 1 activates one checker code (step S11). Then, it waits for the activated checker code to be executed (step S12: no execution notification). During this time, another checker code is not activated.

ステップS11で活性化させたチェッカコード41が実行され、監視装置1に実行通知が渡されたら(ステップS12:実行通知あり)、監視装置1は、活性化させる対象を、次のチェッカコードに切り替える(ステップS13)。そして、新たなチェッカコードに対して同様の処理を行う。これを、すべてのチェッカコードに対して順次、行い、すべてのチェッカコードの活性化と実行を行う。   When the checker code 41 activated in step S11 is executed and an execution notification is passed to the monitoring device 1 (step S12: execution notification is present), the monitoring device 1 switches the activation target to the next checker code. (Step S13). Then, the same processing is performed for the new checker code. This is sequentially performed for all the checker codes, and all the checker codes are activated and executed.

上記(2)頻度均一化方式について説明する。この方式では、チェッカコードの活性化頻度を制御するために、頻度制御用データベースが構築される。頻度制御用データベースは、例えば監視装置1のRAM15に記憶される。図7は、頻度均一化方式を適用する場合に監視装置に構築される頻度制御用データベースの構成を示す説明図である。図7に示すように、頻度制御用データベース51は、各チェッカコードに対応するレコード52a,52b,52nを有する。   The (2) frequency equalization method will be described. In this method, a frequency control database is constructed to control the activation frequency of the checker code. The frequency control database is stored in, for example, the RAM 15 of the monitoring device 1. FIG. 7 is an explanatory diagram showing the configuration of a frequency control database constructed in the monitoring apparatus when the frequency equalization method is applied. As shown in FIG. 7, the frequency control database 51 has records 52a, 52b, and 52n corresponding to the respective checker codes.

各レコード52a,52b,52nは、チェッカコードに関する各種情報を格納するチェッカの各種情報フィールド53、現在の状態が活性化状態であるか非活性化状態であるかを示す状態フィールド54、第1のカウンタの規定回数を示すカウンタ1規定回数フィールド55、第1のカウンタのカウンタ値を示すカウンタ1フィールド56、第2のカウンタの規定回数を示すカウンタ2規定回数フィールド57、および第2のカウンタのカウンタ値を示すカウンタ2フィールド58を有する。第1のカウンタおよび第2のカウンタは、監視装置1の起動管理部24や頻度管理部27などに設けられている。   Each record 52a, 52b, 52n includes a checker information field 53 for storing various information related to the checker code, a state field 54 indicating whether the current state is an active state or an inactive state, and a first field. Counter 1 prescribed number field 55 indicating the prescribed number of counters, Counter 1 field 56 indicative of the counter value of the first counter, Counter 2 prescribed number field 57 indicating the prescribed number of second counters, and counter of the second counter It has a counter 2 field 58 indicating a value. The first counter and the second counter are provided in the activation management unit 24 and the frequency management unit 27 of the monitoring device 1.

図8は、この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の流れを示すフローチャートである。まず、タイマーイベントや実行通知イベントが発生すると、その発生したイベントをキューに入れる。ここで、タイマーイベントは、各チェッカコードに対して定期的に発生する。また、実行通知イベントは、活性化したチェッカコードからの実行通知に対して発生する。   FIG. 8 is a flowchart showing a flow in the case where the checker code is activated by the frequency uniformization method in the software alteration monitoring apparatus according to the embodiment of the present invention. First, when a timer event or an execution notification event occurs, the generated event is queued. Here, a timer event is periodically generated for each checker code. An execution notification event is generated for an execution notification from an activated checker code.

監視装置1は、イベントキューからイベントを取得し(ステップS21)、イベントの種類を判定する(ステップS22)。その結果、タイマーイベントである場合(ステップS22:タイマーイベント)には、頻度制御用データベース51の該当するチェッカコードの状態フィールド54を参照し、チェッカコードの状態を判定する(ステップS23)。その結果、非活性化状態である場合(ステップS23:状態=非活性化)には、該当するチェッカコードのカウンタ1規定回数フィールド55を参照し、第1のカウンタの規定回数を調べる(ステップS24)。   The monitoring device 1 acquires an event from the event queue (step S21), and determines the type of event (step S22). If the result is a timer event (step S22: timer event), the checker code status field 54 of the frequency control database 51 is referenced to determine the status of the checker code (step S23). As a result, when it is in the inactive state (step S23: state = inactive), the counter 1 prescribed number field 55 of the corresponding checker code is referred to and the prescribed number of the first counter is examined (step S24). ).

その結果、該当するチェッカコードのカウンタ1フィールド56のカウンタ値が第1のカウンタの規定回数に達していない場合(ステップS24:回数未到達)には、そのカウンタ1フィールド56のカウンタ値をインクリメントして(ステップS25)、終了する。一方、ステップS24で第1のカウンタの規定回数を調べた結果、カウンタ1フィールド56のカウンタ値が第1のカウンタの規定回数に達している場合(ステップS24:回数到達)には、該当するチェッカコードのチェッカコードを活性化させ、そのチェッカコードの状態フィールド54を活性化状態に切り替えて(ステップS26)、終了する。   As a result, when the counter value of the counter 1 field 56 of the corresponding checker code has not reached the specified number of times of the first counter (step S24: number not reached), the counter value of the counter 1 field 56 is incremented. (Step S25), and the process ends. On the other hand, if the counter value in the counter 1 field 56 has reached the specified number of times of the first counter as a result of checking the specified number of times of the first counter in step S24 (step S24: number of times reached), the corresponding checker. The checker code of the code is activated, the status field 54 of the checker code is switched to the activated state (step S26), and the process ends.

また、ステップS23で該当するチェッカコードの状態を判定した結果、活性化状態である場合(ステップS23:状態=活性化)には、該当するチェッカコードのカウンタ2規定回数フィールド57を参照し、第2のカウンタの規定回数を調べる(ステップS27)。その結果、該当するチェッカコードのカウンタ2フィールド58のカウンタ値が第2のカウンタの規定回数に達していない場合(ステップS27:回数未到達)には、そのカウンタ2フィールド58のカウンタ値をインクリメントして(ステップS28)、終了する。一方、ステップS27で第2のカウンタの規定回数を調べた結果、カウンタ2フィールド58のカウンタ値が第2のカウンタの規定回数に達している場合(ステップS27:回数到達)には、必要であればタイムオーバー処理を行い(ステップS29)、終了する。   If the state of the corresponding checker code is determined in step S23 to be in the activated state (step S23: state = activated), the counter 2 defined number field 57 of the corresponding checker code is referred to, The specified number of counters of 2 is checked (step S27). As a result, when the counter value of the counter 2 field 58 of the corresponding checker code has not reached the specified number of times of the second counter (step S27: number not reached), the counter value of the counter 2 field 58 is incremented. (Step S28), and the process ends. On the other hand, if the counter value in the counter 2 field 58 has reached the specified number of times of the second counter as a result of examining the specified number of times of the second counter in step S27, it is necessary. If so, the time-over process is performed (step S29), and the process ends.

また、ステップS22でイベントの種類を判定した結果、実行通知イベントである場合(ステップS22:実行通知イベント)には、カウンタ2フィールド58のカウンタ値に基づいてカウンタ1規定回数フィールド55の規定回数を更新する(ステップS30)。例えば、カウンタ2フィールド58のカウンタ値が小さい場合には、カウンタ1規定回数フィールド55の規定回数を大きくし、カウンタ2フィールド58のカウンタ値が大きい場合には、カウンタ1規定回数フィールド55の規定回数を小さくする。そして、カウンタ1フィールド56とカウンタ2フィールド58の各カウンタ値を初期化して(ステップS31)、終了する。   If the event type is determined to be an execution notification event in step S22 (step S22: execution notification event), the specified number of times in the counter 1 specified number field 55 is set based on the counter value in the counter 2 field 58. Update (step S30). For example, when the counter value of the counter 2 field 58 is small, the specified number of times in the counter 1 specified number field 55 is increased. When the counter value of the counter 2 field 58 is large, the specified number of times in the counter 1 specified number field 55 Make it smaller. Then, the counter values in the counter 1 field 56 and the counter 2 field 58 are initialized (step S31), and the process ends.

このようにすれば、単位時間当たりの実行確認回数が多いチェッカコードについては、活性化の頻度を下げ、単位時間当たりの実行確認回数が少ないチェッカコードについては、活性化の頻度を上げるという動作を、プログラムコードの実行時に動的に調整することができる。なお、図8に示す例は、第1および第2のカウンタがアップカウンタである場合の例であるが、ダウンカウンタを用いる場合も同様である。また、カウンタを用いずに、実タイマー時間を記録し、現在時と比較して時間間隔を得るようにすることもできる。さらに、イベントキューを用いずに、イベント発生により直接、図8に示す制御へ移行するようにすることもできる。   In this way, the activation of the checker code with a large number of execution confirmations per unit time is reduced, and the checker code with a small number of execution confirmations per unit time is increased in the activation frequency. It can be adjusted dynamically at the time of program code execution. Note that the example shown in FIG. 8 is an example in which the first and second counters are up-counters, but the same applies when a down-counter is used. In addition, the actual timer time can be recorded without using the counter, and the time interval can be obtained in comparison with the current time. Further, it is possible to shift directly to the control shown in FIG. 8 when an event occurs without using an event queue.

上記(3)頻度固定方式について説明する。この方式は、上記(2)頻度均一化方式と同様の頻度制御用データベース51を用意し、チェッカ位置/頻度データベース29に基づいて、すべてのチェッカコード41を、予め設定された時間単位で、順次、活性化する。チェッカコードを頻度固定方式で活性化させる場合の流れは、図8に示すフローチャートにおいてステップS30を省略した流れとなる。   The (3) frequency fixing method will be described. In this method, a frequency control database 51 similar to the above (2) frequency equalization method is prepared, and all checker codes 41 are sequentially set in units of preset time based on the checker position / frequency database 29. ,Activate. The flow when the checker code is activated by the fixed frequency method is a flow in which step S30 is omitted in the flowchart shown in FIG.

また、すべてのチェッカコードを1つずつ活性化させる代わりに、すべてのチェッカコードを複数のグループに分け、上述した(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらを組み合わせて、グループ単位でチェッカコードを活性化させるようにしてもよい。この場合、属するチェッカコードの数が1つであるグループがあってもよい。また、複数のチェッカコードを有するグループの場合、グループ内の各チェッカコードを、上述した(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらを組み合わせて、活性化させてもよい。また、グループごとに異なる方式で活性化させてもよい。このように複数のチェッカコードをグループ化することによって、チェッカコードの実行による負荷を分散させることができる。   Further, instead of activating all the checker codes one by one, all the checker codes are divided into a plurality of groups, and the above-described (1) cyclic method, (2) frequency equalization method, (3) frequency fixed method, Any of these or a combination thereof may be used to activate the checker code in units of groups. In this case, there may be a group having one checker code. In the case of a group having a plurality of checker codes, each checker code in the group is selected from the above-described (1) cyclic method, (2) frequency equalization method, (3) frequency fixed method, or a combination thereof. It may be activated. Moreover, you may activate by a different system for every group. By grouping a plurality of checker codes in this way, it is possible to distribute the load caused by execution of the checker code.

(付記1)他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
主プログラムコードと、
前記主プログラムコードに挿入されるチェッカコードに関するチェッカ挿入情報と、
前記チェッカ挿入情報に基づいて前記主プログラムコードに1つ以上の前記チェッカコードが挿入されたソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の前記ソフトウェアコードを監視する監視装置と、
を備え、
前記ソフトウェアコードは、少なくとも、
前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
を含み、
前記監視装置は、
前記起動判定データを書き換える起動管理手段と、前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
を備えることを特徴とするソフトウェアの改ざん監視装置。
(Appendix 1) A software tampering monitoring device that is connected to another device and monitors a software code executed by the other device,
Main program code,
Checker insertion information relating to the checker code inserted into the main program code;
Based on the checker insertion information, the software code in which one or more checker codes are inserted into the main program code is expanded in the main memory of the other device, and the software code being executed by the other device is monitored. A monitoring device to
With
The software code is at least
A first execution path for executing the process specified by the checker code and returning to the execution of the main program code based on the activation determination data stored in the memory area of the other device;
A second execution path for returning to the execution of the main program code without executing the process specified by the checker code;
Including
The monitoring device
An activation management means for rewriting the activation determination data; an execution confirmation means for confirming that the other apparatus has executed the first execution path;
A software alteration monitoring device comprising:

(付記2)前記監視装置は、前記チェッカ挿入情報に基づいて前記主プログラムコードに1つ以上の前記チェッカコードを挿入しながら、前記他の装置のメインメモリに同チェッカコードが挿入されたソフトウェアコードを展開するとともに、同チェッカコードの挿入位置の情報を記録し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記1に記載のソフトウェアの改ざん監視装置。 (Supplementary note 2) The monitoring device is a software code in which the checker code is inserted into the main memory of the other device while inserting one or more checker codes into the main program code based on the checker insertion information. The software tampering monitoring apparatus according to appendix 1, wherein the checker code insertion position information is recorded, and the activation determination data is rewritten based on the position information.

(付記3)他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
主プログラムコードに1つ以上のチェッカコードが挿入されたソフトウェアコードと、
前記ソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の記ソフトウェアコードを監視する監視装置と、
を備え、
前記ソフトウェアコードは、少なくとも、
前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
を含み、
前記監視装置は、
前記起動判定データを書き換える起動管理手段と、前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
を備えることを特徴とするソフトウェアの改ざん監視装置。
(Supplementary Note 3) A software tampering monitoring device that is connected to another device and monitors software code executed by the other device,
Software code with one or more checker codes inserted into the main program code;
A monitoring device that expands the software code in a main memory of the other device and monitors the software code being executed by the other device;
With
The software code is at least
A first execution path for executing the process specified by the checker code and returning to the execution of the main program code based on the activation determination data stored in the memory area of the other device;
A second execution path for returning to the execution of the main program code without executing the process specified by the checker code;
Including
The monitoring device
An activation management means for rewriting the activation determination data; an execution confirmation means for confirming that the other apparatus has executed the first execution path;
A software alteration monitoring device comprising:

(付記4)前記監視装置は、前記他の装置のメインメモリに前記ソフトウェアコードを展開する際に、同ソフトウェアコードに挿入されているチェッカコードを検出しながら、同チェッカコードの挿入位置の情報を記録し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記3に記載のソフトウェアの改ざん監視装置。 (Additional remark 4) When the said monitoring apparatus expand | deploys the said software code to the main memory of the said other apparatus, it detects the checker code inserted in the software code, and the information of the insertion position of the checker code is shown. 4. The software alteration monitoring device according to appendix 3, wherein the activation determination data is recorded and rewritten based on the position information.

(付記5)前記監視装置は、前記他の装置のメインメモリに前記ソフトウェアコードを展開する際に、同ソフトウェアコードに挿入されているチェッカコードの挿入位置の情報を取得し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記3に記載のソフトウェアの改ざん監視装置。 (Additional remark 5) When the said monitoring apparatus expand | deploys the said software code to the main memory of said another apparatus, it acquires the information on the insertion position of the checker code inserted in the software code, and based on this positional information The software alteration monitoring device according to appendix 3, wherein the activation determination data is rewritten.

(付記6)前記ソフトウェアコードは、前記起動判定データに基づいて、前記ソフトウェアコードの改ざんを検出するための処理を実行して前記主プログラムコードの実行に戻る第3の実行パス、をさらに含み、
前記監視装置は、前記他の装置が前記第3の実行パスを実行したときに、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する改ざん検出手段、をさらに備えることを特徴とする付記1〜5のいずれか一つに記載のソフトウェアの改ざん監視装置。
(Supplementary note 6) The software code further includes a third execution path that executes processing for detecting falsification of the software code based on the activation determination data and returns to the execution of the main program code,
The monitoring device further includes a tampering detection unit that detects whether or not a part or all of the software code has been tampered with when the other device executes the third execution path. The software tampering monitoring apparatus according to any one of 1 to 5.

(付記7)前記ソフトウェアコードは、前記他の装置が前記第3の実行パスを実行する際に、同第3の実行パスを実行させるために前記監視装置により書き換えられた前記起動判定データを元のデータに書き換えることを特徴とする付記6に記載のソフトウェアの改ざん監視装置。 (Supplementary note 7) When the other device executes the third execution path, the software code is based on the activation determination data rewritten by the monitoring device to execute the third execution path. The software tampering monitoring apparatus according to appendix 6, wherein the software alteration monitoring apparatus is rewritten to the above data.

(付記8)前記ソフトウェアコードは、前記他の装置が前記第1の実行パスを実行する際に、同第1の実行パスを実行させるために前記監視装置により書き換えられた前記起動判定データを元のデータに書き換えることを特徴とする付記1〜7のいずれか一つに記載のソフトウェアの改ざん監視装置。 (Supplementary Note 8) The software code is based on the activation determination data rewritten by the monitoring device to execute the first execution path when the other device executes the first execution path. The software tampering monitoring apparatus according to any one of appendices 1 to 7, wherein the software alteration monitoring apparatus is rewritten to the above data.

(付記9)前記起動管理手段は、複数のチェッカコードを実行させるために、それぞれのチェッカコードに対応した前記起動判定データを順次、書き換えることを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。 (Supplementary note 9) In any one of Supplementary notes 1 to 8, wherein the activation management unit sequentially rewrites the activation determination data corresponding to each checker code in order to execute a plurality of checker codes. Software tampering monitoring device.

(付記10)前記起動管理手段は、複数のチェッカコードを実行させるために、それぞれのチェッカコードに対応した前記起動判定データを予め設定された間隔で書き換えることを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。 (Supplementary note 10) Any one of Supplementary notes 1 to 8, wherein the activation management means rewrites the activation determination data corresponding to each checker code at a preset interval in order to execute a plurality of checker codes. Software tampering monitoring device according to any one of the above.

(付記11)前記起動管理手段は、チェッカコードの実行状況に応じて、当該チェッカコードを実行させるための前記起動判定データの書き換え頻度を調節することを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。 (Additional remark 11) The said starting management means adjusts the rewriting frequency of the said start determination data for performing the said checker code according to the execution condition of a checker code, Any one of Additional remark 1-8 characterized by the above-mentioned. Software tampering monitoring device described in 1.

(付記12)実行中のソフトウェアコードを監視するソフトウェアの改ざん監視方法において、
主プログラムコードに1つ以上のチェッカコードを挿入する工程と、
前記チェッカコードが挿入されたソフトウェアコードの実行中に、前記チェッカコードを活性化させる工程と、
活性化された前記チェッカコードにより指定された処理を実行する工程と、
前記チェッカコードにより指定された処理が実行されたことを確認し、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する工程と、
を含むことを特徴とするソフトウェアの改ざん監視方法。
(Supplementary Note 12) In a software tampering monitoring method for monitoring a running software code,
Inserting one or more checker codes into the main program code;
Activating the checker code during execution of the software code with the checker code inserted;
Executing a process specified by the activated checker code;
Confirming that the processing specified by the checker code has been executed, and detecting whether or not a part or all of the software code has been tampered with;
A software tamper monitoring method characterized by comprising:

以上のように、本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法は、監視対象のプログラムコードの改ざん防止に有用であり、特に、デジタル・テレビジョン放送の受信システムにおいて知的財産権を保護するための装置に適している。   As described above, the software tampering monitoring apparatus and tampering monitoring method according to the present invention are useful for preventing tampering of the program code to be monitored, and in particular, protecting intellectual property rights in a digital television broadcast receiving system. Suitable for equipment to do.

この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the software alteration monitoring apparatus concerning embodiment of this invention. この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成を示すブロック図である。It is a block diagram which shows the functional structure of the software alteration monitoring apparatus concerning embodiment of this invention. この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第1の例を示す説明図である。It is explanatory drawing which shows the 1st example of the outline of the flow from the time of product development of the software alteration monitoring apparatus concerning embodiment of this invention to the time of application execution. この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第2の例を示す説明図である。It is explanatory drawing which shows the 2nd example of the outline of the flow from the time of product development of the software alteration monitoring apparatus concerning embodiment of this invention to the time of application execution. この発明の実施の形態にかかるソフトウェア改ざん監視装置のチェッカコードのプログラムコードを示す説明図である。It is explanatory drawing which shows the program code of the checker code of the software tampering monitoring apparatus concerning embodiment of this invention. この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを巡回方式で活性化させる場合の流れを示すフローチャートである。It is a flowchart which shows the flow in the case of activating a checker code by a cyclic system in the software alteration monitoring apparatus concerning embodiment of this invention. この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の頻度制御用データベースの構成を示す説明図である。It is explanatory drawing which shows the structure of the database for frequency control in the case of activating a checker code by a frequency equalization system in the software alteration monitoring apparatus concerning embodiment of this invention. この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の流れを示すフローチャートである。It is a flowchart which shows the flow in the case of activating a checker code by a frequency equalization system in the software alteration monitoring apparatus concerning embodiment of this invention.

符号の説明Explanation of symbols

1 監視装置
24 起動管理部
26 実行確認部
28 改ざん検出部
29 チェッカ位置/頻度データベース
31 主プログラムコード
32 チェッカ挿入位置・頻度指示情報
35 PC等のメインメモリ
36 ソフトウェアコード
37 チェッカ挿入情報・頻度指示情報
41 チェッカコード
DESCRIPTION OF SYMBOLS 1 Monitoring apparatus 24 Startup management part 26 Execution confirmation part 28 Tampering detection part 29 Checker position / frequency database 31 Main program code 32 Checker insertion position / frequency instruction information 35 Main memory such as PC 36 Software code 37 Checker insertion information / frequency instruction information 41 Checker code

Claims (7)

ソフトウェアコードに埋め込まれたチェックプログラムであって、前記ソフトウェアコードを実行するコンピュータに、A check program embedded in software code, the computer executing the software code,
前記ソフトウェアコードの実行中に前記チェックプログラムの起動指示が監視装置から受け付けられた場合、前記コンピュータに記憶されている、前記監視装置が定期的または不定期に書き換え可能な起動判定データを調査させ、When an instruction to start the check program is received from the monitoring device during execution of the software code, the monitoring device stores the determination information that can be rewritten periodically or irregularly, stored in the computer,
調査の結果、前記起動判定データが前記チェックプログラムで指定された処理を実行すべきでないことを示す場合には、前記チェックプログラムの実行を終了させ、As a result of the investigation, when the activation determination data indicates that the processing specified in the check program should not be executed, the execution of the check program is terminated,
調査の結果、前記起動判定データが前記チェックプログラムで指定された処理を実行すべきであることを示す場合には、前記チェックプログラムで指定された処理を実行させ、As a result of the investigation, when the activation determination data indicates that the process specified by the check program should be executed, the process specified by the check program is executed,
前記チェックプログラムで指定された処理の実行結果を前記監視装置に送信させ、Sending the execution result of the process specified by the check program to the monitoring device;
前記実行結果の送信が終了した場合、前記チェックプログラムの実行を終了させることを特徴とするチェックプログラム。A check program that terminates execution of the check program when transmission of the execution result is completed.
前記チェックプログラムで指定された処理は、前記チェックプログラムが実行されたことを検出する処理であることを特徴とする請求項1に記載のチェックプログラム。The check program according to claim 1, wherein the process specified by the check program is a process of detecting that the check program has been executed. 前記チェックプログラムで指定された処理は、前記ソフトウェアコードのうち前記チェックプログラムを除くプログラムコードの改ざんを検出する処理であることを特徴とする請求項1に記載のチェックプログラム。2. The check program according to claim 1, wherein the process specified by the check program is a process of detecting falsification of a program code excluding the check program in the software code. 前記チェックプログラムで指定された処理は、前記チェックプログラム自体の改ざんを検出する処理であることを特徴とする請求項1に記載のチェックプログラム。2. The check program according to claim 1, wherein the process specified by the check program is a process of detecting falsification of the check program itself. チェッカコードが埋め込まれたソフトウェアコードを実行するコンピュータを監視する監視装置であって、A monitoring device for monitoring a computer executing software code in which a checker code is embedded,
前記コンピュータに記憶されている起動判定データを、前記チェッカコードで指定された処理を実行すべきでないことを示す第1の状態と前記チェッカコードで指定された処理を実行すべきであることを示す第2の状態とのうちいずれかの状態に、定期的または不定期に書き換える書き換え手段と、The activation determination data stored in the computer indicates that the first state indicating that the process specified by the checker code should not be executed and the process specified by the checker code should be executed. Rewriting means for rewriting regularly or irregularly to any one of the second states;
前記コンピュータに前記チェッカコードの起動指示を送信する送信手段と、Transmitting means for transmitting an instruction to start the checker code to the computer;
前記コンピュータが前記第2の状態の場合に前記コンピュータから前記チェッカコードで指定された処理の実行結果を受信する受信手段と、Receiving means for receiving an execution result of the process designated by the checker code from the computer when the computer is in the second state;
を備えることを特徴とする監視装置。A monitoring device comprising:
チェッカコードが埋め込まれたソフトウェアコードを実行するコンピュータを監視する監視装置が、A monitoring device that monitors a computer that executes software code in which checker code is embedded,
前記コンピュータに記憶されている起動判定データを、前記チェッカコードで指定された処理を実行すべきでないことを示す第1の状態と前記チェッカコードで指定された処理を実行すべきであることを示す第2の状態とのうちいずれかの状態に、定期的または不定期に書き換え、The activation determination data stored in the computer indicates that the first state indicating that the process specified by the checker code should not be executed and the process specified by the checker code should be executed. Rewritten regularly or irregularly to one of the second states,
前記コンピュータに前記チェッカコードの起動指示を送信し、Sending the checker code activation instruction to the computer,
前記コンピュータが前記第2の状態の場合に前記コンピュータから前記チェッカコードで指定された処理の実行結果を受信する、Receiving an execution result of the process designated by the checker code from the computer when the computer is in the second state;
処理を実行することを特徴とする監視方法。A monitoring method characterized by executing processing.
プログラムコードと、前記プログラムコードに挿入されるチェッカコードに関するチェッカ挿入情報と、を記憶する記憶手段と、
前記チェッカ挿入情報に基づいて前記プログラムコードに1つ以上の前記チェッカコードが挿入されたソフトウェアコードを他の装置のメインメモリに展開し、前記他の装置が実行中の前記ソフトウェアコードを監視する監視手段、を備え、
記監視手段は、
前記起動判定データを書き換える起動管理手段と、
前記他の装置が、前記ソフトウェアコードに含まれている、少なくとも、前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記プログラムコードの実行に戻る第1の実行パスと、前記チェッカコードにより指定された処理を実行しないで前記プログラムコードの実行に戻る第2の実行パスのうち、前記第1の実行パスを実行したことを確認する実行確認手段と、
を備えることを特徴とする監視装置。
Storage means for storing program code and checker insertion information relating to a checker code inserted into the program code ;
Expand the software code of one or more of the checker code before Kipu program code based on the checker insertion information is inserted into the main memory of the other device, monitoring the software code in the another device is executed comprising monitoring means for, the,
Before Symbol monitoring means,
Activation management means for rewriting the activation determination data;
The other device executes the process specified by the checker code based on at least the activation determination data stored in the memory area of the other device included in the software code. Out of the first execution path that returns to the execution of the code and the second execution path that returns to the execution of the program code without executing the processing specified by the checker code, the execution of the first execution path Execution confirmation means to confirm;
Monitoring device you comprising: a.
JP2006266699A 2006-09-29 2006-09-29 Check program, monitoring device, and monitoring method Expired - Fee Related JP4923925B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006266699A JP4923925B2 (en) 2006-09-29 2006-09-29 Check program, monitoring device, and monitoring method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006266699A JP4923925B2 (en) 2006-09-29 2006-09-29 Check program, monitoring device, and monitoring method

Publications (2)

Publication Number Publication Date
JP2008084275A JP2008084275A (en) 2008-04-10
JP4923925B2 true JP4923925B2 (en) 2012-04-25

Family

ID=39355028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006266699A Expired - Fee Related JP4923925B2 (en) 2006-09-29 2006-09-29 Check program, monitoring device, and monitoring method

Country Status (1)

Country Link
JP (1) JP4923925B2 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009013831A1 (en) * 2007-07-26 2009-01-29 Panasonic Corporation Information processing terminal and falsification verification method
JP4995170B2 (en) * 2008-10-06 2012-08-08 日本電信電話株式会社 Fraud detection method, fraud detection device, fraud detection program, and information processing system
WO2011044603A1 (en) * 2009-10-15 2011-04-21 Fts Computertechnik Gmbh Method for executing security-relevant and non-security-relevant software components on a hardware platform
JP5775738B2 (en) * 2011-04-28 2015-09-09 富士通株式会社 Information processing apparatus, secure module, information processing method, and information processing program
WO2018150619A1 (en) * 2017-02-14 2018-08-23 日本電信電話株式会社 Imparting device, imparting method, and imparting program
JP6885226B2 (en) * 2017-07-03 2021-06-09 株式会社デンソー Electronic control device
JP7201069B2 (en) * 2019-03-18 2023-01-10 日本電気株式会社 FIRMWARE REWRITE DEVICE, FIRMWARE REWRITE METHOD, AND CONTROL PROGRAM

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2886969B2 (en) * 1990-10-29 1999-04-26 株式会社日立製作所 Program conversion method
JPH07146788A (en) * 1993-11-22 1995-06-06 Fujitsu Ltd System and method for preparing virus diagnostic mechanism and virus diagnostic mechanism and diagnostic method
JP3393521B2 (en) * 1995-10-19 2003-04-07 日本電信電話株式会社 Terminal program tampering detection method and information center
JP2005293109A (en) * 2004-03-31 2005-10-20 Canon Inc Software execution management device, software execution management method, and control program

Also Published As

Publication number Publication date
JP2008084275A (en) 2008-04-10

Similar Documents

Publication Publication Date Title
JP4923925B2 (en) Check program, monitoring device, and monitoring method
JP6067449B2 (en) Information processing apparatus and information processing program
CN101578609B (en) Secure booting a computing device
CN101310472B (en) Automatic update of computer-readable components to support a trusted environment
WO2011142095A1 (en) Information processing device and information processing method
JP6391439B2 (en) Information processing apparatus, server apparatus, information processing system, control method, and computer program
US8015553B2 (en) Method and apparatus for testing execution flow of program
US8112630B2 (en) Device, system, and method for reporting execution flow of program
US20130138934A1 (en) Loading configuration information
US20070136728A1 (en) Computer readable medium in which program is stored, computer data signal embodied in carrier wave, information processing apparatus that executes program, and program control method for executing program
JP6984710B2 (en) Computer equipment and memory management method
CN101627364A (en) Data structure for identifying hardware and software licenses to distribute with a complying device
US8176278B2 (en) Information processing apparatus, information processing method and record medium
US20080178257A1 (en) Method for integrity metrics management
US20210117191A1 (en) Methods and apparatus to control execution of tasks in a computing system
KR101320680B1 (en) Method and apparatus for integrity check of software
CN113157543B (en) Trusted measurement method and device, server and computer readable storage medium
JP2007066021A (en) External data falsification detecting device and method
CN106415565B (en) Protect software project
JP2021118444A (en) Information processing device, information processing method, and program
US20130091324A1 (en) Data processing apparatus and validity verification method
US20240104219A1 (en) Information processing apparatus, information processing method, and non-transitory computer readable medium
WO2008047830A1 (en) Application information falsification monitoring device and method
KR100846123B1 (en) Method for keyboard security and storage medium recording keyboard security driver using the method
WO2022176164A1 (en) Program processing device, program processing method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111212

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: 20120110

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120123

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

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees