JP2006053787A - Program execution device and program execution method - Google Patents

Program execution device and program execution method Download PDF

Info

Publication number
JP2006053787A
JP2006053787A JP2004235430A JP2004235430A JP2006053787A JP 2006053787 A JP2006053787 A JP 2006053787A JP 2004235430 A JP2004235430 A JP 2004235430A JP 2004235430 A JP2004235430 A JP 2004235430A JP 2006053787 A JP2006053787 A JP 2006053787A
Authority
JP
Japan
Prior art keywords
program
page
message digest
unit
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004235430A
Other languages
Japanese (ja)
Other versions
JP4553660B2 (en
Inventor
Hideki Yukitomo
英記 行友
Akira Konno
晃 金野
Takehiro Nakayama
雄大 中山
Takashi Suzuki
敬 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2004235430A priority Critical patent/JP4553660B2/en
Publication of JP2006053787A publication Critical patent/JP2006053787A/en
Application granted granted Critical
Publication of JP4553660B2 publication Critical patent/JP4553660B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a program execution device capable of efficiently detecting alteration of a program. <P>SOLUTION: The program execution device 11 comprises a primary storage means 13 for accumulating an executed program every page that is a unit divided by command sequence of the program, a detecting means 16 of a privileged program function call for detecting that a program in execution calls a function of a privileged program, and a message digest verification means 15 for verifying the existence of alteration of page in execution accumulated in the primary storage means 13 when a detection is performed by the detecting means 16 of the privileged program function call. <P>COPYRIGHT: (C)2006,JPO&NCIPI

Description

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

ユーザがネットワークを経由してダウンロードしたプログラムを実行する場合、プログラムを実行する装置やその装置の利用者に危害を及ぼす可能性がないことを確認する必要がある。ここで、「危害」とは、許可されていない装置内の個人情報をプログラムが不正に閲覧したり、その情報をプログラムの実行装置外に送出したり、装置自体を停止させてしまったりすることである。   When a user executes a program downloaded via a network, it is necessary to confirm that there is no possibility of harming a device executing the program and a user of the device. Here, “hazard” means that the program illegally browses personal information in unauthorized devices, sends the information outside the program execution device, or stops the device itself. It is.

従来、このような危害が及ぶことがないように、図25に示すようなプログラムの安全性を検証する方法が開示されている(例えば、特許文献1参照)。図25において、プログラム作成システム301は、プログラム302及びプログラムの実行に必要なリソースや権限を列挙したアクセス制御リスト(以下、「ACL」という。)303を作成する。次に、プログラム作成システム301は、これらをプログラム作成者とプログラム実行者双方が信頼する認証機関304へ送付し、証明機関304は、プログラム、ACLそれぞれに署名を施し、プログラム作成システム301へ返送する。プログラム作成システム301は、このように作成したプログラム、ACL及びそれぞれの署名をサーバ305に蓄積する。   Conventionally, a method for verifying the safety of a program as shown in FIG. 25 is disclosed so as to prevent such harm (see, for example, Patent Document 1). In FIG. 25, the program creation system 301 creates a program 302 and an access control list (hereinafter referred to as “ACL”) 303 listing resources and authorities necessary for executing the program. Next, the program creation system 301 sends these to the certification authority 304 trusted by both the program creator and the program executor, and the certification authority 304 signs the program and the ACL, and returns them to the program creation system 301. . The program creation system 301 stores the program, ACL, and each signature created in this way in the server 305.

プログラム実行装置306は、サーバ305より、プログラム307、ACL308及びそれぞれの署名をダウンロードする。そして、プログラムの実行を開始する際、検証手段309は、プログラムの署名が信頼する証明機関によるものであるか否か検証する。この署名の検証は、公開鍵暗号等の技術を用い、予め証明機関304の公開鍵を入手しておくことで容易に可能である(例えば、非特許文献1参照)。署名検証により、プログラムに施された署名が証明機関304のものであると判断できれば、プログラム実行装置306はプログラム307を実行し、そうでなければ実行を拒絶することで、安全性を確保する。   The program execution device 306 downloads the program 307, the ACL 308, and the respective signatures from the server 305. Then, when starting execution of the program, the verification unit 309 verifies whether the signature of the program is from a trusted certification authority. This signature verification can be easily performed by using a technique such as public key cryptography and obtaining the public key of the certification authority 304 in advance (see, for example, Non-Patent Document 1). If it is determined by signature verification that the signature applied to the program is that of the certification authority 304, the program execution device 306 executes the program 307, and otherwise rejects the execution to ensure safety.

しかし、プログラムに信頼する証明機関による署名が施されていても、バッファオーバーフローのような脆弱性がプログラムに存在した場合、悪意あるデータがプログラムに入力されれば、データ入力者がプログラム実行装置に任意の動作を行わせることが可能な場合あり、危険である(例えば、非特許文献2参照)。   However, even if the program is signed by a trusted certificate authority, if a vulnerability such as a buffer overflow exists in the program, if malicious data is entered into the program, the data entry person enters the program execution device. Arbitrary operations can be performed, which is dangerous (for example, see Non-Patent Document 2).

具体的には、特許文献1において示される方法で署名を施されたプログラムをサーバ(プログラム実行装置)上で実行し、インターネットを介した顧客からの入力データに応じて、商品を販売するサービスを提供する場合を想定する。非特許文献2に示すような脆弱性がプログラムに存在した場合、本来商品の名前が入力として期待されるデータに、非特許文献2が示すような巧妙に仕組まれたプログラムを挿入することで、悪意のある顧客は動作中のプログラムを改ざんし、サーバ上にある他の顧客の個人情報を盗むことが可能となる場合がある。   Specifically, a service that executes a program signed by the method shown in Patent Document 1 on a server (program execution device) and sells products according to input data from a customer via the Internet. Assume the case of providing. When a vulnerability such as that shown in Non-Patent Document 2 exists in the program, by inserting a skillfully structured program such as that shown in Non-Patent Document 2 into the data that is originally expected as the name of the product, A malicious customer may be able to tamper with a running program and steal personal information of other customers on the server.

この問題を解決する方法として、プログラムの実行を一旦開始した後も、動的にプログラムが改ざんされているか否か検証を行い、改ざんが検出されれば、その段階で実行を停止する方法が開示されている(例えば、非特許文献3参照)。   As a method for solving this problem, there is disclosed a method for verifying whether or not a program has been tampered with dynamically even after program execution has been started, and stopping execution at that stage if tampering is detected. (For example, see Non-Patent Document 3).

プログラム全体が改ざんされているか否かを検証するには時間を要するため、非特許文献3では、プログラム全体ではなく、プログラムの命令列を分割し、その分割単位(以下、「ページ」という。)が2次記憶手段から1次記憶手段へ複製される度に、各ページが改ざんされているか否かを検証する。   Since it takes time to verify whether or not the entire program has been tampered with, Non-Patent Document 3 divides the instruction sequence of the program, not the entire program, and the division unit (hereinafter referred to as “page”). Each time is copied from the secondary storage means to the primary storage means, it is verified whether each page has been tampered with.

より詳細に説明すると、図26に示すように、一般にパーソナルコンピュータやワークステーション等のプログラム実行装置111は、高価であるが高速に読み書き可能な小容量の1次記憶手段113と、安価で低速な大容量の2次記憶手段114とを有し、これらに記憶されたデータに対し、計算手段112を用いて演算を繰り返すことでプログラムを実行する。そのため、実行していないプログラムは2次記憶手段114に蓄積しておき、プログラムを実行する際に1次記憶手段113に複製し、この上でプログラムを実行する。   More specifically, as shown in FIG. 26, a program execution device 111 such as a personal computer or a workstation is generally expensive but has a small capacity primary storage means 113 that can be read and written at high speed, and an inexpensive and low speed. The secondary storage unit 114 has a large capacity, and the program is executed by repeating the calculation using the calculation unit 112 for the data stored in the secondary storage unit 114. Therefore, a program that has not been executed is stored in the secondary storage unit 114, and when the program is executed, it is copied to the primary storage unit 113, and the program is executed thereon.

1次記憶装置手段113の容量は、一般に小さいため、この複製の管理単位はプログラム全体ではなく、プログラムの命令列を分割したページ単位で行う。図26に示す例では、実行しようとするプログラムAはページ1〜4の4ページ、1次記憶手段113のページ格納領域は3つあるものとする。   Since the capacity of the primary storage unit 113 is generally small, the duplication management unit is not the entire program but the page unit obtained by dividing the instruction sequence of the program. In the example shown in FIG. 26, it is assumed that the program A to be executed has four pages 1 to 4 and three page storage areas in the primary storage unit 113.

又、プログラムAの各ページについては、メッセージダイジェストが予め計算されているものとする。各ページは、プログラムの一部、即ち計算手段112の命令列であることから、バイト列とみなすことができ、各ページのメッセージダイジェストは、SHA−1やRSAといった一般的な一方向性関数により作成される(例えば、非特許文献1参照)。   In addition, for each page of the program A, a message digest is calculated in advance. Since each page is a part of the program, that is, the instruction sequence of the calculation means 112, it can be regarded as a byte sequence, and the message digest of each page is determined by a general one-way function such as SHA-1 or RSA. It is created (for example, see Non-Patent Document 1).

各プログラムのページのメッセージダイジェスト114a、114b、114c、114dは、2次記憶手段114に蓄積されており、プログラムAを実行する際に2次記憶手段114からメッセージダイジェスト蓄積手段117へ複製する。メッセージダイジェスト蓄積手段117は、実行中のプログラムからは読み書きできない記憶手段とする。   The message digests 114a, 114b, 114c, 114d of the pages of each program are stored in the secondary storage unit 114, and are copied from the secondary storage unit 114 to the message digest storage unit 117 when the program A is executed. The message digest storage means 117 is a storage means that cannot be read from or written to the program being executed.

プログラム実行装置111は、メッセージダイジェストを複製した後、プログラムAを実行するが、実行順序は図27に示すように時刻t、t+1、t+2、t+3、t+4、t+5にはそれぞれページ1、ページ2、ページ3、ページ1、ページ2、ページ4の順で進み、以後ページ1に戻って繰り返すこととし、図27ではt+8までの様子を記述している。   The program execution device 111 executes the program A after copying the message digest, and the execution order is as shown in FIG. 27, at the time t, t + 1, t + 2, t + 3, t + 4, and t + 5, respectively. The process proceeds in the order of page 3, page 1, page 2, and page 4, and thereafter, the process returns to page 1 and repeats. FIG. 27 describes the state up to t + 8.

プログラム実行装置111は、計算手段112を用いて、必要に応じて2次記憶手段114からプログラムAのページを1次記憶手段113へ複製しつつ、プログラムAの実行を進めるが、1次記憶装置113のページ格納領域は限られているので、空きがなくなると古いものから順に上書きされる。時刻t、t+1、t+2、t+3、t+4、t+5の一次記憶手段113の内容は、図27に示すとおりである。   The program execution device 111 advances the execution of the program A using the calculation unit 112 while copying the page of the program A from the secondary storage unit 114 to the primary storage unit 113 as necessary. Since the page storage area 113 is limited, the oldest one is overwritten when there is no space left. The contents of the primary storage means 113 at times t, t + 1, t + 2, t + 3, t + 4, and t + 5 are as shown in FIG.

非特許文献2に開示する方法は、2次記憶手段114から1次記憶手段113にプログラムAのページを複製するタイミングにおいて、各ページが改ざんされているか否か、プログラムページのメッセージダイジェストを用いて検証する方法である。図27の例では、時刻tにページ1、時刻t+1にページ2、時刻t+2及び時刻t+8にページ3、時刻t+5にページ4が改ざんされているか否か検証を行う。   The method disclosed in Non-Patent Document 2 uses a message digest of a program page to determine whether or not each page has been tampered with at the timing of copying a page of program A from secondary storage means 114 to primary storage means 113. It is a method to verify. In the example of FIG. 27, it is verified whether page 1 is tampered at time t, page 2 at time t + 1, page 3 at time t + 2 and time t + 8, and page 4 at t + 5.

改ざんされているか否かの検証は、メッセージダイジェスト検証手段115が、1次記憶手段113に蓄積されるプログラムのページについて再度メッセージダイジェストを計算し、これがメッセージダイジェスト蓄積手段117に蓄積されているメッセージダイジェストと一致するか否かにより行う。一致していれば改ざんはなかったと判定し、不一致の場合は、プログラムが改ざんされたと判断する。   The message digest verification unit 115 calculates the message digest again for the program pages stored in the primary storage unit 113, and the message digest stored in the message digest storage unit 117 is verified. This is done depending on whether or not they match. If they match, it is determined that the program has not been tampered with. If they do not match, it is determined that the program has been tampered with.

又、当該プログラム実行装置111において実行される他のプログラムが改ざんされ、そのプログラムにより2次記憶手段114に蓄積されたプログラムAのページが改ざんされたとしても、各ページのメッセージダイジェストが安全なメッセージダイジェスト蓄積手段117に複製されていることから、改ざんを検出することが可能となる。
特開平10−83310号公報 Applied Cryptgraphy, second edition, Bruce Schneier, 1996, John Wiley&Sons, ISBN 0-71-11709-9 ”A Comparison of Public available Tools for Dynamic Buffer Overflow Prevention”, John Wilander and Marian Kamkar, NDSS 2003 ”A virtual Machine Introspection Based Architecture for intrusion detection”, Tal Garfinkel, Mendel Rosenblum, NDSS 2003
Even if another program executed in the program execution device 111 is falsified and the page of the program A stored in the secondary storage unit 114 is falsified by the program, the message digest of each page is a safe message. Since it is copied in the digest storage means 117, it becomes possible to detect tampering.
JP-A-10-83310 Applied Cryptgraphy, second edition, Bruce Schneier, 1996, John Wiley & Sons, ISBN 0-71-11709-9 “A Comparison of Public available Tools for Dynamic Buffer Overflow Prevention”, John Wilander and Marian Kamkar, NDSS 2003 “A virtual Machine Introspection Based Architecture for intrusion detection”, Tal Garfinkel, Mendel Rosenblum, NDSS 2003

しかしながら、上述した非特許文献3に開示される技術では、プログラムを実行している間、頻繁に実行されているページは1次記憶手段113に常に複製されており、2次記憶手段114から複製される機会がないため、プログラムが改ざんされているか否かの検証が行えないという問題点があった。例えば、図27において、常に1次記憶手段113に存在するプログラムのページ、即ちページ1やページ2に脆弱性があった場合、各ページが改ざんされているか否かを検証する機会が少ないため、ページ1やページ2を改ざんされても検知することが困難である。   However, in the technique disclosed in Non-Patent Document 3 described above, frequently executed pages are always copied to the primary storage unit 113 while the program is executed, and the pages are copied from the secondary storage unit 114. Since there was no opportunity for the program to be verified, it was impossible to verify whether the program had been tampered with. For example, in FIG. 27, when there is a vulnerability in a program page that always exists in the primary storage unit 113, that is, page 1 or page 2, there are few opportunities to verify whether each page has been tampered with. Even if page 1 or page 2 is tampered with, it is difficult to detect.

そこで、本発明は、上記の課題に鑑み、効率良くプログラムの改ざんを検知することができるプログラム実行装置及びプログラム実行方法を提供することを目的とする。   In view of the above-described problems, an object of the present invention is to provide a program execution device and a program execution method that can efficiently detect falsification of a program.

上記目的を達成するため、本発明の第1の特徴は、(イ)実行するプログラムを、プログラムの命令列によって分割した単位であるページ毎に蓄積する1次記憶手段と、(ロ)実行中のプログラムが特権プログラムの機能を呼び出したことを検出する特権プログラム機能呼び出し検出手段と、(ハ)特権プログラム機能呼び出し検出手段により検出が行われた場合、1次記憶手段に蓄積されている実行中のページの改ざんの有無を検証する検証手段とを備えるプログラム実行装置であることを要旨とする。ここで「特権プログラム」とは、プログラム実行装置におけるプログラムの実行を管理するためのプログラム(システムコール)である。   In order to achieve the above object, the first feature of the present invention is that (a) primary storage means for accumulating a program to be executed for each page which is a unit divided by an instruction sequence of the program; And (c) when the detection is performed by the privileged program function call detecting means, the execution being stored in the primary storage means. The gist of the present invention is that the program execution device includes verification means for verifying whether or not the page of the page is falsified. Here, the “privileged program” is a program (system call) for managing the execution of the program in the program execution device.

第1の特徴に係るプログラム実行装置によると、特権プログラムが呼び出されたときに改ざんの有無を検証するため、効率良くプログラムの改ざんを検知することができる。   According to the program execution device according to the first feature, since the presence or absence of falsification is verified when the privileged program is called, it is possible to efficiently detect the falsification of the program.

又、第1の特徴に係るプログラム実行装置は、プログラムの実行前に、ページ毎のメッセージダイジェストを予め蓄積するメッセージダイジェスト蓄積手段を更に備え、検証手段は、1次記憶手段に蓄積されたページのメッセージダイジェストを計算し、メッセージダイジェスト蓄積手段に蓄積されたメッセージダイジェストと比較することにより、改ざんの有無を検証してもよい。このプログラム実行装置によると、メッセージダイジェスト(ハッシュ値)を用いて改ざんの有無を検証することができる。   The program execution apparatus according to the first feature further includes message digest storage means for storing a message digest for each page in advance before execution of the program, and the verification means stores the page digest stored in the primary storage means. The presence or absence of tampering may be verified by calculating a message digest and comparing it with the message digest stored in the message digest storage means. According to this program execution device, it is possible to verify the presence or absence of falsification using a message digest (hash value).

又、第1の特徴に係るプログラム実行装置は、プログラムの実行が開始されてから所定の時間間隔で、時間の経過を通知するタイマ手段を更に備え、検証手段は、タイマ手段から通知があった場合、1次記憶手段に蓄積されている実行中のページの改ざんの有無を検証してもよい。このプログラム実行装置によると、改ざんの有無を検証する頻度が増し、より確実に改ざんを検知することができる。   The program execution device according to the first feature further includes timer means for notifying the passage of time at a predetermined time interval after the execution of the program is started, and the verification means is notified from the timer means. In this case, it may be verified whether or not the page being executed stored in the primary storage means has been tampered with. According to this program execution device, the frequency of verifying the presence or absence of tampering increases, and tampering can be detected more reliably.

又、第1の特徴に係るプログラム実行装置は、プログラムが実行されたときの関数呼び出しの履歴を蓄積する関数呼び出し履歴蓄積手段とを更に備え、検証手段は、関数呼び出し履歴蓄積手段に蓄積されているページの改ざんの有無を検証してもよい。このプログラム実行装置によると、共通関数などから特権プログラム機能を呼び出した場合でも、プログラムの改ざんを検知することができる。   The program execution apparatus according to the first feature further includes function call history storage means for storing a function call history when the program is executed, and the verification means is stored in the function call history storage means. The presence or absence of falsification of the existing page may be verified. According to this program execution device, even when a privileged program function is called from a common function or the like, it is possible to detect alteration of the program.

又、第1の特徴に係るプログラム実行装置の検証手段は、予め定められた時間内に既に検証を行ったページについては、改ざんの有無を検証しなくてもよい。このプログラム実行装置によると、改ざん検証の回数を減らすことができ、高速にプログラム実行を行いつつ、改ざんの検知を行うことができる。   In addition, the verification unit of the program execution device according to the first feature does not need to verify the presence / absence of alteration of a page that has already been verified within a predetermined time. According to this program execution device, the number of alteration verifications can be reduced, and alteration detection can be performed while executing the program at high speed.

又、第1の特徴に係るプログラム実行装置において、1次記憶手段は、ページ毎にフラグを有し、認証手段は、フラグの値に応じて、ページの改ざんの有無を検証してもよい。このプログラム実行装置によると、改ざん検証を行うページを任意に指定することができ、改ざん検証の回数を減らすことができる。   In the program execution device according to the first feature, the primary storage means may have a flag for each page, and the authentication means may verify whether the page has been tampered with according to the value of the flag. According to this program execution device, a page on which falsification verification is performed can be arbitrarily designated, and the number of falsification verifications can be reduced.

又、第1の特徴に係るプログラム実行装置は、プログラム単体の負荷、あるいはプログラム実行装置全体の負荷を計測する負荷計測手段を更に備え、検証手段は、負荷計測手段によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録し、負荷計測手段によって計測された負荷が低くなったときに、ページの改ざんの有無を検証してもよい。このプログラム実行装置によると、低い負荷のときにプログラムの改ざん検証を行うことができ、プログラム本来の実行速度を維持することができる。   The program execution device according to the first feature further includes load measurement means for measuring a load of the program alone or a load of the entire program execution device, and the verification means has a high load measured by the load measurement means. During program execution, a program page to be verified may be recorded, and when the load measured by the load measuring means becomes low, the presence or absence of page alteration may be verified. According to this program execution device, it is possible to verify the falsification of the program when the load is low, and to maintain the original execution speed of the program.

本発明の第2の特徴は、実行するプログラムを、プログラムの命令列によって分割した単位であるページ毎に蓄積するステップと、実行中のプログラムが特権プログラムの機能を呼び出したことを検出するステップと、前記検出するステップにより検出が行われた場合、前記蓄積されている実行中のページの改ざんの有無を検証するステップとを含むプログラム実行方法であることを要旨とする。   The second feature of the present invention is that a program to be executed is stored for each page, which is a unit divided by an instruction sequence of the program, and a step of detecting that a program being executed calls a function of a privileged program. When the detection is performed by the detecting step, the program execution method includes a step of verifying whether or not the stored page is being altered.

第2の特徴に係るプログラム実行方法によると、特権プログラムが呼び出されたときに改ざんの有無を検証するため、効率良くプログラムの改ざんを検知することができる。   According to the program execution method according to the second feature, since the presence or absence of falsification is verified when the privileged program is called, it is possible to efficiently detect the falsification of the program.

本発明によると、効率良くプログラムの改ざんを検知するプログラム実行装置及びプログラム実行方法を提供することができる。   ADVANTAGE OF THE INVENTION According to this invention, the program execution apparatus and program execution method which detect the alteration of a program efficiently can be provided.

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

<第1の実施の形態>
(プログラム実行装置)
第1の実施の形態に係るプログラム実行装置11は、図1に示すように、計算手段12と、1次記憶手段13と、2次記憶手段14と、メッセージダイジェスト検証手段15と、特権プログラム機能呼び出し検出手段16と、メッセージダイジェスト蓄積手段17と、入出力手段18とを備える。尚、図1では、各構成手段(計算手段12、1次記憶手段13、2次記憶手段14、メッセージダイジェスト検証手段15、特権プログラム機能呼び出し検出手段16、メッセージダイジェスト蓄積手段17、入出力手段18)が1つの場合を例示しているが、これらの構成手段は複数あっても良いことは勿論である。
<First Embodiment>
(Program execution device)
As shown in FIG. 1, the program execution device 11 according to the first embodiment includes a calculation unit 12, a primary storage unit 13, a secondary storage unit 14, a message digest verification unit 15, and a privileged program function. A call detection unit 16, a message digest storage unit 17, and an input / output unit 18 are provided. In FIG. 1, each component means (calculation means 12, primary storage means 13, secondary storage means 14, message digest verification means 15, privileged program function call detection means 16, message digest storage means 17, input / output means 18 ) Illustrates one case, but it goes without saying that there may be a plurality of these constituent means.

まず、第1の実施の形態に係るプログラム実行装置11が実行するプログラムA141について、説明する。   First, the program A141 executed by the program execution device 11 according to the first embodiment will be described.

プログラムAは、図2に示すように、計算手段12に与える命令列141aと、命令列を分割したページ毎に与えられるメッセージダイジェスト141bと、ページ毎のメッセージダイジェストへの署名141cより構成される。ページ毎のメッセージダイジェストは、第1の実施の形態では、プログラム配布時に予め用意されるものとするが、2次記憶手段14上に蓄積される間は作成されず、1次記憶手段13に複製するときやプログラム起動時に一括して作成してもよい。この場合、ページ毎のメッセージダイジェストへの署名141cは存在しないとするか、又は、プログラム命令列全体に対する署名を有してもよい。あるいは、プログラムによって予め用意したり、1次記憶手段13に複製するときに用意したり選択できるようにしてもよい。   As shown in FIG. 2, the program A includes an instruction sequence 141a given to the calculation means 12, a message digest 141b given for each page obtained by dividing the instruction sequence, and a signature 141c for the message digest for each page. In the first embodiment, the message digest for each page is prepared in advance at the time of program distribution. However, the message digest is not created while it is stored on the secondary storage unit 14 and is copied to the primary storage unit 13. It may be created at the same time when starting the program or when starting the program. In this case, the signature 141c for the message digest for each page may not exist or may have a signature for the entire program instruction sequence. Alternatively, it may be prepared in advance by a program, or may be prepared or selected when copying to the primary storage unit 13.

図2の例では、プログラムAの命令列141aは、4つのページに分割され、それぞれのページに対してメッセージダイジェストH1、H2、H3、H4を有している。命令列の分割単位は、第1の実施の形態では、1次記憶手段13と2次記憶手段14との間で複製を管理する単位とするが、メッセージダイジェストの計算を行う単位は必ずしもこれに一致する必要はない。例えば、図3に示すように、1次記憶手段13と2次記憶手段14との間の複製を管理する単位の半分でメッセージダイジェストの計算を行うようにしてもよい。   In the example of FIG. 2, the instruction sequence 141a of the program A is divided into four pages, and has message digests H1, H2, H3, and H4 for each page. In the first embodiment, the instruction sequence division unit is a unit for managing replication between the primary storage unit 13 and the secondary storage unit 14, but the unit for calculating the message digest is not necessarily limited to this unit. There is no need to match. For example, as shown in FIG. 3, the message digest may be calculated in half of the unit for managing the replication between the primary storage unit 13 and the secondary storage unit 14.

各ページのメッセージダイジェストを計算する方法は幾通りもあるが、例えば、図4に示すように、プログラムの各ページをN個のワード列(ここでは64bitとする)で表現(B0、B1、B2、…、Bn)し、各ページのメッセージダイジェストを計算する。具体的には、X,Vを初期化し(ステップS101)、N個のワード列がすべて関数H(x)によって計算されるまで繰り返す(ステップS102〜104)。ここで、関数H(x)は、SHA−1やMD5のような一般的な一方向性関数やx=H(x)となるような関数を用いればよい。 There are various methods for calculating the message digest of each page. For example, as shown in FIG. 4, each page of the program is expressed by N word strings (here, 64 bits) (B 0 , B 1 , B 2 ,..., B n ) and calculate the message digest for each page. Specifically, X and V are initialized (step S101) and repeated until all N word strings are calculated by the function H (x) (steps S102 to 104). Here, the function H (x) may be a general one-way function such as SHA-1 or MD5 or a function such that x = H (x).

又、ページ毎のメッセージダイジェストへの署名を算出する方法は幾通りもあるが、例えば、図5に示すように、プログラムの各ページのメッセージダイジェストV0、V1、V2、…、Vnから署名を算出する。具体的には、X,Vを初期化し(ステップS201)、N個のメッセージダイジェストがすべて関数H(x)によって計算されるまで繰り返す(ステップS202〜204)。そして、関数S(x,k)によって、署名を算出する(ステップS205)。ここで、関数S(x,k)は、RSA暗号等の一般的な公開鍵暗号を用いて実現すればよい。ステップS205において、公開鍵暗号の計算に必要な鍵Ksはプログラムを作成した者の秘密鍵を用いることとし、プログラムがプログラム実行装置の外部で作成された場合は、署名は予めプログラムの作成者により作成されているものとする。尚、2次記憶手段14上のプログラムに、改ざんのおそれがない場合は、署名は省略することも可能である。 There are various methods for calculating the signature for the message digest for each page. For example, as shown in FIG. 5, the message digests V 0 , V 1 , V 2 ,. The signature is calculated from Specifically, X and V are initialized (step S201) and repeated until all N message digests are calculated by the function H (x) (steps S202 to S204). Then, the signature is calculated by the function S (x, k) (step S205). Here, the function S (x, k) may be realized by using a general public key encryption such as RSA encryption. In step S205, the key K s necessary for the calculation of the public key cryptography uses the secret key of the person who created the program. It shall be created by. If the program on the secondary storage means 14 is not likely to be tampered with, the signature can be omitted.

次に、図1に示す第1の実施の形態に係るプログラム実行装置11の各構成手段について、詳細に説明する。   Next, each component means of the program execution apparatus 11 which concerns on 1st Embodiment shown in FIG. 1 is demonstrated in detail.

計算手段12は、2次記憶手段14に蓄積されたプログラムA141を1次記憶手段13のプログラム格納領域131へ複製する。又、計算手段12は、ページに分割された実行可能な命令列よりなるプログラムA141を実行し、1次記憶手段13や2次記憶手段14の内容を四則演算等により更新する。又、計算手段12は、特権プログラム機能呼び出し手段16から特権プログラムが呼び出されたことを通知された場合、メッセージダイジェスト検証手段15に、その旨を通知する。更に、計算手段12は、メッセージダイジェスト検証手段15から検証結果を受信し、検証結果に基づいて、プログラムの実行を停止する。尚、計算手段12は、実行するプログラムに署名が添付されている場合、プログラムを複製する前に署名の検証を行う。   The calculation means 12 copies the program A 141 stored in the secondary storage means 14 to the program storage area 131 of the primary storage means 13. Further, the calculation means 12 executes a program A141 comprising an executable instruction sequence divided into pages, and updates the contents of the primary storage means 13 and the secondary storage means 14 by four arithmetic operations. Further, when the calculation means 12 is notified from the privileged program function calling means 16 that the privileged program has been called, the calculation means 12 notifies the message digest verification means 15 to that effect. Further, the calculation unit 12 receives the verification result from the message digest verification unit 15 and stops the execution of the program based on the verification result. If the signature is attached to the program to be executed, the calculation means 12 verifies the signature before copying the program.

1次記憶手段13は、2次記憶手段14に蓄積されたプログラムの一部又は全部を複製し、蓄積する。1次記憶手段13は、1つ又は複数のプログラムの複製を蓄積するためのプログラム格納領域131と、特権プログラム132とを有する。又、1次記憶手段13は、2次記憶手段14に比べ、高速に読み書きできることが求められることから、例えば、RAMなどのデバイスを用いることが望ましい。   The primary storage unit 13 duplicates and stores part or all of the program stored in the secondary storage unit 14. The primary storage unit 13 includes a program storage area 131 for storing a copy of one or a plurality of programs, and a privileged program 132. Since the primary storage means 13 is required to be able to read and write at a higher speed than the secondary storage means 14, it is desirable to use a device such as a RAM.

第1の実施の形態に係るプログラム格納領域131は、例えば、図6に示すように、1つのプログラムに対し、3つのプログラムのページを格納するページ格納領域131aを有する。   For example, as shown in FIG. 6, the program storage area 131 according to the first embodiment includes a page storage area 131a for storing pages of three programs for one program.

2次記憶手段14は、1つ又は複数のプログラムを蓄積する。2次記憶手段14は、より多くのプログラムを蓄積することが望まれるため、ハードディスクやフラッシュメモリなど比較的安価なデバイスを用いて実現することが望ましい。   The secondary storage unit 14 stores one or more programs. Since the secondary storage unit 14 is desired to store a larger number of programs, it is preferable to implement it using a relatively inexpensive device such as a hard disk or a flash memory.

メッセージダイジェスト蓄積手段17は、プログラムを実行する前に当該プログラムの各メッセージダイジェストを蓄積する。又、メッセージダイジェスト蓄積手段17は、図1に示すように、他の構成手段と独立した構成としてもよく、特権プログラムの機能として1次記憶手段13や2次記憶手段14上に実装してもよいが、特権プログラム以外のプログラムからは読み書きできない記憶空間としておく必要がある。   The message digest storage means 17 stores each message digest of the program before executing the program. Further, as shown in FIG. 1, the message digest storage means 17 may be configured independently of other configuration means, or may be implemented on the primary storage means 13 or the secondary storage means 14 as a privileged program function. Although it is good, it must be a storage space that cannot be read and written by programs other than privileged programs.

特権プログラム機能呼び出し検出手段16は、特権プログラムが呼び出されたことを検出する。プログラムA141等の通常のプログラムは、ファイルへのアクセス等、高度で複雑な処理は特権プログラムに処理を依頼し、処理結果を特権プログラムから受け取ることにより処理を実現する。特権プログラム機能呼び出し検出手段16は、このように特権プログラムが呼び出されたタイミングを検出し、計算手段12へ通知する。そして、計算手段12は、メッセージダイジェスト検証手段15へ特権プログラムが呼び出されたことを通知する。   The privileged program function call detecting means 16 detects that the privileged program is called. A normal program such as the program A 141 realizes processing by requesting a privileged program to perform processing of advanced and complicated processing such as access to a file and receiving a processing result from the privileged program. The privileged program function call detection means 16 detects the timing when the privileged program is called in this way and notifies the calculation means 12 of the timing. Then, the calculation means 12 notifies the message digest verification means 15 that the privileged program has been called.

メッセージダイジェスト検証手段15は、特権プログラムが呼び出された場合、1次記憶手段13上にあるプログラムのページのメッセージダイジェストを計算し、予めメッセージダイジェスト蓄積手段17に蓄積された当該プログラムのページのメッセージダイジェストと比較する。メッセージダイジェスト検証手段15は、比較結果が一致すれば、プログラムの改ざんがないことを、比較結果が異なれば、プログラムの改ざんがあったことを計算手段12に通知する。図1では、メッセージダイジェスト検証手段15は、独立した構成とするが、特権プログラムの機能として実現してもよい。   When the privileged program is called, the message digest verification unit 15 calculates the message digest of the program page on the primary storage unit 13 and stores the message digest of the page of the program stored in the message digest storage unit 17 in advance. Compare with If the comparison results match, the message digest verification means 15 notifies the calculation means 12 that the program has not been tampered with. If the comparison results differ, the message digest verification means 15 notifies the calculation means 12 that the program has been tampered with. In FIG. 1, the message digest verification unit 15 has an independent configuration, but may be realized as a function of a privileged program.

入出力手段18は、データの入力あるいは出力を行う。入力手段としては、キーボード、マウス等の機器などが用いられ、フロッピーディスク(登録商標)装置、CD−ROM装置、DVD装置等も含む。入力手段から入力操作が行われると対応するキー情報や位置情報が計算手段12に伝達される。又、出力手段としては、モニタなどの画面が用いられ、液晶表示装置(LCD)、発光ダイオード(LED)パネル、エレクトロルミネッセンス(EL)パネル等が使用可能である。又、入出力手段18は、インターネットなどを介して外部との通信を行う通信手段として機能してもよい。この場合、入出力手段18は、プログラムAや後に詳述する署名の検証時に必要な公開鍵をインターネットを介してダウンロードすることができる。   The input / output means 18 inputs or outputs data. As the input means, devices such as a keyboard and a mouse are used, and include a floppy disk (registered trademark) device, a CD-ROM device, a DVD device, and the like. When an input operation is performed from the input means, corresponding key information and position information are transmitted to the calculation means 12. As the output means, a screen such as a monitor is used, and a liquid crystal display (LCD), a light emitting diode (LED) panel, an electroluminescence (EL) panel, or the like can be used. The input / output unit 18 may function as a communication unit that communicates with the outside via the Internet or the like. In this case, the input / output unit 18 can download the public key necessary for verifying the program A and a signature described in detail later via the Internet.

又、第1の実施の形態に係るプログラム実行装置11は、処理制御装置(CPU)を有し、計算手段12、メッセージダイジェスト検証手段15、特権機能プログラム呼び出し検出手段16などをモジュールとしてCPUに内蔵する構成とすることができる。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。   The program execution device 11 according to the first embodiment has a processing control device (CPU), and the calculation unit 12, the message digest verification unit 15, the privileged function program call detection unit 16 and the like are built in the CPU as modules. It can be set as the structure to do. These modules can be realized by executing a dedicated program for using a predetermined program language in a general-purpose computer such as a personal computer.

又、図示していないが、プログラム実行装置11は、計算処理、メッセージダイジェスト検証処理、特権プログラム機能呼び出し検出処理などを処理制御装置(CPU)に実行させるためのプログラムを蓄積するプログラム保持部を備えてもよい。プログラム保持部は、例えば、RAM、ROM、ハードディスク、フレキシブルディスク、コンパクトディスク、ICチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、プログラムの蓄積、運搬、販売などを容易に行うことができる。   Although not shown, the program execution device 11 includes a program holding unit that stores a program for causing a processing control device (CPU) to execute calculation processing, message digest verification processing, privileged program function call detection processing, and the like. May be. The program holding unit is a recording medium such as a RAM, a ROM, a hard disk, a flexible disk, a compact disk, an IC chip, and a cassette tape. According to such a recording medium, it is possible to easily store, transport, and sell programs.

(プログラム実行方法)
次に、第1の実施の形態に係るプログラム実行方法について、説明する。ここでは、プログラムA141を実行する。
(Program execution method)
Next, a program execution method according to the first embodiment will be described. Here, the program A141 is executed.

まず、プログラムAをC言語で記述したものを図7に示す。図7(a)は、プログラムAのコード、即ち、関数main、funcA、funcBの定義を含む。又、図7(a)の中の関数funcBは、libcなどの共通ライブラリに含まれる関数とし、図7(b)にその定義を示す。これらをコンパイルし、プログラム実行装置11の計算手段12で実行可能な命令列に変換し、ページに分割した例を図8に示す。   First, FIG. 7 shows the program A written in C language. FIG. 7A includes the definition of the program A code, that is, the functions main, funcA, and funcB. A function funcB in FIG. 7A is a function included in a common library such as libc, and its definition is shown in FIG. 7B. FIG. 8 shows an example in which these are compiled, converted into an instruction sequence executable by the calculation means 12 of the program execution device 11, and divided into pages.

図8では、最左列にアドレスを、中央列にラベルを、最右列に命令列の一部を記述している。最左列のアドレスは、プログラム内における命令の格納順を表し、ラベルはJUMP命令等の制御命令の指定のために便宜上付しているプログラムの位置情報である。命令列の一部について、以下に説明する。   In FIG. 8, an address is described in the leftmost column, a label is described in the center column, and a part of the instruction sequence is described in the rightmost column. The address in the leftmost column represents the storage order of instructions in the program, and the label is program position information attached for convenience in order to specify a control instruction such as a JUMP instruction. A part of the instruction sequence will be described below.

CALL命令は、指定された関数を呼び出して実行することを意味し、RET命令により元の実行位置に戻ることとする。INTR命令は、特権プログラムの機能呼び出しを行うことを示し、JUMP命令は、指定されたアドレス(ラベル)へプログラムの実行を移すものとする。尚、ここでは、説明を簡便にするため、条件分岐をC言語のまま記述するが、一般的なプログラム実行装置の条件分岐命令などに変換することは容易に可能である。   The CALL instruction means that the specified function is called and executed, and the RET instruction returns to the original execution position. The INTR instruction indicates a function call of a privileged program, and the JUMP instruction transfers the execution of the program to a specified address (label). Here, in order to simplify the description, the conditional branch is described in the C language, but it can be easily converted into a conditional branch instruction or the like of a general program execution device.

図7及び図8に示したプログラムAを実行することを例にとり、以下に、プログラム実行方法について図9〜図12を用いて説明する。   Taking the case where the program A shown in FIGS. 7 and 8 is executed as an example, the program execution method will be described below with reference to FIGS.

まず、プログラム実行装置11の計算手段12は、2次記憶手段14よりプログラムAを検索して、実行を開始する。このとき、第1の実施の形態では、プログラムAに署名が添付されていることから、図9のステップS301において、計算手段12は、署名の検証を行う。   First, the calculation means 12 of the program execution device 11 searches for the program A from the secondary storage means 14 and starts execution. At this time, in the first embodiment, since the signature is attached to the program A, the calculation unit 12 verifies the signature in step S301 in FIG.

具体的には、図10に示すように、X,Vを初期化し(ステップS401)、N個のメッセージダイジェストがすべて関数H(x)によって計算されるまで繰り返す(ステップS402〜404)。そして、関数D(x,y)を計算し、メッセージダイジェストVと一致するか否か判断する(ステップS405)。ここで、関数D(x,y)は公開鍵暗号等で利用する復号化関数であり、図5に示すS(x,y)と対になるものを利用すればよい。ステップS405における関数D(x,y)の引数Kpは、署名者、この場合はプログラム作成者の公開鍵であり、予め取得しておくことが望ましい。これは、プログラム実行装置11に対し、外部との通信が可能な入出力手段を負荷し、検証時にこの入出力手段を通じて取得することも可能である。署名が正しければ、図9のステップS302へ進み、正しくない場合は、ステップS406へ進み、プログラムの実行を停止する。 Specifically, as shown in FIG. 10, X and V are initialized (step S401), and the process is repeated until all N message digests are calculated by the function H (x) (steps S402 to 404). Then, the function D (x, y) is calculated, and it is determined whether or not it matches the message digest V (step S405). Here, the function D (x, y) is a decryption function used in public key cryptography or the like, and a function paired with S (x, y) shown in FIG. 5 may be used. The argument K p of the function D (x, y) in step S405 is the public key of the signer, in this case, the program creator, and is preferably obtained in advance. It is also possible to load the program execution device 11 with input / output means capable of communication with the outside, and obtain it through this input / output means at the time of verification. If the signature is correct, the process proceeds to step S302 in FIG. 9, and if it is not correct, the process proceeds to step S406 to stop the execution of the program.

次に、図9のステップS302において、計算手段12は、2次記憶手段14に蓄積されたプログラムA141を1次記憶手段13のプログラム格納領域131へ複製する。又、計算手段12は、プログラムA141に含まれるメッセージダイジェストをメッセージダイジェスト蓄積手段17へ複製する。   Next, in step S <b> 302 of FIG. 9, the calculation unit 12 copies the program A 141 stored in the secondary storage unit 14 to the program storage area 131 of the primary storage unit 13. The calculation means 12 copies the message digest included in the program A 141 to the message digest storage means 17.

プログラムAは、図7及び図8に示す命令列となっていることから、計算手段12は、プログラムをページ1、ページ2、ページ4、ページ1、ページ2、ページ3の順に実行していき、以後これを繰り返す。プログラム11は、初めてページ1の命令列を実行するとき、まず、ページ1の内容を2次記憶手段14から1次記憶手段13へ複製する。1次記憶手段13には複数のプログラム格納領域が存在するが、その特定はプログラム実行時に各プログラムを一意に識別するIDを付与することなどにより、容易に可能である。   Since the program A has the instruction sequence shown in FIGS. 7 and 8, the calculation unit 12 executes the program in the order of page 1, page 2, page 4, page 1, page 2, and page 3. This is repeated thereafter. When the program 11 executes the instruction sequence of page 1 for the first time, the program 11 first copies the contents of page 1 from the secondary storage unit 14 to the primary storage unit 13. The primary storage unit 13 has a plurality of program storage areas, and can be easily specified by assigning an ID for uniquely identifying each program when the program is executed.

プログラムの複製は、具体的には、図11に示すように、プログラム格納領域131のページ格納領域に空きがあるか否か判断する(ステップS501)。空きがある場合は、空いているページ格納領域にページを複製し(ステップS502)、空きがない場合は、最も古く利用されたページ格納領域の内容を消去し、上書きする(ステップS503)。   Specifically, as shown in FIG. 11, the program copy is determined as to whether or not there is a free page storage area in the program storage area 131 (step S501). If there is a vacancy, the page is copied to the vacant page storage area (step S502). If there is no vacancy, the oldest used page storage area is erased and overwritten (step S503).

次に、図9のステップS303において、計算手段12は、プログラムAを実行する。   Next, in step S303 in FIG. 9, the calculation unit 12 executes the program A.

次に、図9のステップS304において、特権プログラム呼び出し検出手段16は、特権プログラムが呼び出されたか否か検出する。例えば、2次記憶手段14から1次記憶手段13への複製は、特権プログラムの機能として実現することも可能である。この場合、複製時に、特権プログラム機能呼び出し検出手段16は、特権プログラム機能呼び出しを検出する。特権プログラム機能が呼び出された場合は、ステップS305へ進み、呼び出されなかった場合は、ステップS302へ戻る。   Next, in step S304 of FIG. 9, the privileged program call detecting means 16 detects whether or not the privileged program is called. For example, copying from the secondary storage unit 14 to the primary storage unit 13 can be realized as a function of a privileged program. In this case, the privileged program function call detecting means 16 detects the privileged program function call at the time of duplication. If the privileged program function is called, the process proceeds to step S305, and if not called, the process returns to step S302.

次に、ステップS305において、特権プログラム機能呼び出し手段16から特権プログラム機能の呼び出しの通知を受けた計算手段12は、一旦プログラムAの実行を停止する。   Next, in step S305, the calculation unit 12 that has received the notification of the privileged program function call from the privileged program function call unit 16 temporarily stops the execution of the program A.

そして、ステップS306において、計算手段12から通知を受けたメッセージダイジェスト検証手段15は、メッセージダイジェストの計算を行う。   In step S306, the message digest verification unit 15 that receives the notification from the calculation unit 12 calculates a message digest.

具体的には、図12に示すように、メッセージダイジェスト検証手段15は、1次記憶手段13上のページに対するメッセージダイジェストV’を計算し(ステップS601)、メッセージダイジェスト蓄積手段17に蓄積されたメッセージダイジェストVを取得する(ステップS602)。そして、メッセージダイジェストV’とメッセージダイジェストVとを比較し(ステップS603)、異なる場合は、改ざんがあったとして、プログラムの実行を停止する(ステップS304)。メッセージダイジェストV’とメッセージダイジェストVとが一致する場合は、改ざんはなかったとして、図9のステップS307へ進む。   Specifically, as shown in FIG. 12, the message digest verification unit 15 calculates a message digest V ′ for the page on the primary storage unit 13 (step S601), and the message stored in the message digest storage unit 17 A digest V is acquired (step S602). Then, the message digest V 'and the message digest V are compared (step S603), and if they are different, the execution of the program is stopped assuming that the message has been altered (step S304). If the message digest V 'and the message digest V match, it is determined that no alteration has been made, and the process proceeds to step S307 in FIG.

そして、プログラムが終了するまでステップS302〜306を繰り返す。   Then, steps S302 to S306 are repeated until the program ends.

以下、図7及び図8に示すプログラムAを続けて実行した場合の動作について、詳細に説明する。   Hereinafter, an operation when the program A shown in FIGS. 7 and 8 is continuously executed will be described in detail.

ページ1内のプログラムの実行を進めると、特権プログラムの機能呼び出し(図8の201)が存在することから、プログラム実行装置11は、プログラムAの実行中、特権プログラムの機能呼び出しを行う。特権プログラム機能呼び出し検出手段16がこれを検出すると、プログラム実行装置11は、一旦プログラムAの実行を停止し、1次記憶手段13上にあるプログラムAのページ1の複製を用いてメッセージダイジェストの計算を行う。プログラムAの実行を停止する際に、計算手段12は、プログラムAの実行中のアドレスを記憶しておけば、計算手段12は、検証すべきページがページ1であることを容易に知り得、メッセージダイジェストの計算が可能である。   When the execution of the program in page 1 is advanced, there is a privileged program function call (201 in FIG. 8), so that the program execution device 11 calls the privileged program function during execution of program A. When the privileged program function call detection means 16 detects this, the program execution apparatus 11 once stops the execution of the program A, and calculates the message digest using the copy of the page 1 of the program A on the primary storage means 13. I do. When the execution of the program A is stopped, the calculation unit 12 can easily know that the page to be verified is the page 1 if the address of the execution of the program A is stored. Message digest can be calculated.

ページ1が改ざんされていれば、プログラム実行装置11はプログラムAの実行を停止するが、改ざんが検知されなければ実行を進める。   If page 1 has been tampered with, program execution device 11 stops execution of program A, but if tampering is not detected, execution proceeds.

プログラム実行装置11は、プログラムAの実行を更に進めると、図8の関数funcAを呼び出す(図8の203)。関数funcAのはページ2にあることから、プログラム実行装置11は、ページ2を2次記憶手段14より図11に示す手順に従って、1次記憶手段13に複製し、関数funcAの命令列を実行する。   When the program execution device 11 further proceeds execution of the program A, the program execution device 11 calls the function funcA in FIG. 8 (203 in FIG. 8). Since the function funcA is on page 2, the program execution device 11 copies page 2 from the secondary storage means 14 to the primary storage means 13 according to the procedure shown in FIG. 11, and executes the instruction sequence of the function funcA. .

関数funcAの実行中、再度特権プログラム機能の呼び出しを行う(図8の202)。このとき、プログラム実行装置11は、ページ2に関してもメッセージダイジェスト検証手段15を用いてページが改ざんされているか否か検証を行う。   During execution of the function funcA, the privileged program function is called again (202 in FIG. 8). At this time, the program execution device 11 also verifies whether the page has been tampered with the message digest verification means 15 with respect to the page 2 as well.

プログラム実行装置11は、更にプログラムAの実行を進めると、関数funcBを呼び出し、ページ4に実行を移すため、ページ4を2次記憶手段14より複製する。関数funcBの中にも特権プログラム機能呼び出し(図8の204)があることから、プログラム実行装置11はこれを実行する。特権プログラム機能呼び出し検出手段16により、特権プログラム機能呼び出しを検出したプログラム実行装置11は、ページ4が改ざんされているか否かの検証を行う。   When the program execution device 11 further advances the execution of the program A, the program execution device 11 calls the function funcB and copies the page 4 from the secondary storage unit 14 to shift the execution to the page 4. Since there is a privileged program function call (204 in FIG. 8) in the function funcB, the program execution device 11 executes this. The program execution device 11 that has detected the privileged program function call by the privileged program function call detection unit 16 verifies whether the page 4 has been tampered with.

プログラム実行装置11は、プログラムAの実行中、関数funcBの処理が終わると、RET命令(図8の205)により、関数funcAに実行を移す。条件分岐のための設定を行った後、JUMP命令で実行を移し、RET命令により関数funcAも終了して、ページ1に実行を移す(図8の207)。   When the processing of the function funcB is completed during the execution of the program A, the program execution device 11 transfers the execution to the function funcA by a RET instruction (205 in FIG. 8). After setting for conditional branching, execution is transferred with the JUMP instruction, the function funcA is also ended with the RET instruction, and execution is transferred to page 1 (207 in FIG. 8).

このとき、funcAはページ2に、mainはページ1にあるため、1次記憶手段13上にあるプログラム格納領域にあるページは、古い順にページ1、ページ2、ページ4となる。   At this time, since funcA is in page 2 and main is in page 1, the pages in the program storage area on the primary storage means 13 are page 1, page 2, and page 4 in order from the oldest.

関数funcAの終了後、JUMP命令(図8の207)によりプログラムの実行は、図8の201から207の間を繰り返す。よって、プログラム実行装置11は、再び関数funcAの実行を行う。   After completion of the function funcA, execution of the program is repeated between 201 and 207 in FIG. 8 by the JUMP instruction (207 in FIG. 8). Therefore, the program execution device 11 executes the function funcA again.

関数funcAの実行は、前回の実行から条件判定の値が異なるため、特権プログラム機能の呼び出し(図8の202)の後、条件判定により、関数funcCを呼び出す。関数funcCはページ3にあるため、2次記憶手段14より1次記憶手段13に図11に示す手順によって複製するが、既に1次記憶手段13の格納領域はいっぱいのため、一番古く利用されたページ4の複製を廃棄し、ページ格納領域3にページ3を複製する。   Execution of the function funcA has a different condition determination value from the previous execution. Therefore, after calling the privileged program function (202 in FIG. 8), the function funcC is called by condition determination. Since the function funcC is in page 3, it is copied from the secondary storage unit 14 to the primary storage unit 13 by the procedure shown in FIG. 11, but since the storage area of the primary storage unit 13 is already full, it is used the oldest. The copy of page 4 is discarded, and page 3 is copied to page storage area 3.

関数funcCも特権プログラムの機能呼び出しを呼び出すことから、このときにページ4が改ざんされているか検証を行う。   Since function funcC also calls a function call of a privileged program, it is verified whether page 4 has been tampered with at this time.

以後、ページ1、ページ2、ページ4、ページ1、ページ2、ページ3の順でプログラムの実行を繰り返す。   Thereafter, the program is repeatedly executed in the order of page 1, page 2, page 4, page 1, page 2, and page 3.

(作用及び効果)
第1の実施の形態に係るプログラム実行装置及びプログラム実行方法によると、特権プログラムが呼び出されたときに改ざんの有無を検証するため、効率良くプログラムの改ざんを検知することができる。
(Function and effect)
According to the program execution device and the program execution method according to the first embodiment, since the presence / absence of falsification is verified when a privileged program is called, it is possible to efficiently detect falsification of the program.

又、第1の実施の形態に係るプログラム実行装置及びプログラム実行方法によると、メッセージダイジェスト(ハッシュ値)を用いて改ざんの有無を検証することができる。   Further, according to the program execution device and the program execution method according to the first embodiment, it is possible to verify the presence or absence of falsification using a message digest (hash value).

又、第1の実施の形態に係るプログラム実行装置及びプログラム実行方法によると、1次記憶手段13と2次記憶手段14との間のプログラムの複製の管理単位より、改ざん検証を行う単位(メッセージダイジェストの計算を行う単位)を小さくすることができる。このような構成によると、1次記憶手段13と2次記憶手段14との間の複製の手間を省くことができ、高速にプログラム実行を行いつつ、改ざんの検知を行うことができる。   In addition, according to the program execution device and the program execution method according to the first embodiment, a unit for performing falsification verification (message) from the management unit for program replication between the primary storage unit 13 and the secondary storage unit 14 The unit for calculating the digest) can be reduced. According to such a configuration, it is possible to save the trouble of copying between the primary storage unit 13 and the secondary storage unit 14, and to detect tampering while executing the program at high speed.

<第2の実施の形態>
第2の実施の形態では、第1の実施の形態において説明した特権プログラム機能呼び出し検出手段だけでなく、周期的な時間の経過を通知可能なタイマ手段からの通知に基づいて、プログラムが改ざんされているか否かの検証を行う。
<Second Embodiment>
In the second embodiment, not only the privileged program function call detection means described in the first embodiment but also a program is altered based on a notification from a timer means capable of notifying the passage of periodic time. Verify whether or not

(プログラム実行装置)
第2の実施の形態に係るプログラム実行装置11は、図13に示すように、計算手段12と、1次記憶手段13と、2次記憶手段14と、メッセージダイジェスト検証手段15と、特権プログラム機能呼び出し検出手段16と、メッセージダイジェスト蓄積手段17と、入出力手段18と、タイマ手段19とを備える。
(Program execution device)
As shown in FIG. 13, the program execution apparatus 11 according to the second embodiment includes a calculation unit 12, a primary storage unit 13, a secondary storage unit 14, a message digest verification unit 15, and a privileged program function. A call detection unit 16, a message digest storage unit 17, an input / output unit 18, and a timer unit 19 are provided.

タイマ手段19は、プログラムの実行が開始されてから所定の時間間隔で、時間の経過を計算手段12へ通知する。所定の時間は、プログラムの実行開始時に設定されてもよく、プログラム実行装置11を起動したときに設定されてもよい。   The timer means 19 notifies the calculation means 12 of the passage of time at a predetermined time interval after the execution of the program is started. The predetermined time may be set when the execution of the program is started, or may be set when the program execution device 11 is activated.

計算手段12は、タイマ手段19から通知を受ける度に、メッセージダイジェスト検証手段15へ所定の時間が経過したことを通知する。   Every time the calculation unit 12 receives a notification from the timer unit 19, the calculation unit 12 notifies the message digest verification unit 15 that a predetermined time has elapsed.

メッセージダイジェスト検証手段15は、特権プログラムが呼び出された場合、あるいは、所定の時間が経過した場合、1次記憶手段13上にあるプログラムのページのメッセージダイジェストを計算し、予めメッセージダイジェスト蓄積手段17に蓄積された当該プログラムのページのメッセージダイジェストと比較する。メッセージダイジェスト検証手段15は、比較結果が一致すれば、プログラムの改ざんがないことを、比較結果が異なれば、プログラムの改ざんがあったことを計算手段12に通知する。   The message digest verification means 15 calculates the message digest of the page of the program on the primary storage means 13 when a privileged program is called or when a predetermined time has elapsed, and stores it in the message digest storage means 17 in advance. Compare with the stored message digest of the program page. If the comparison results match, the message digest verification means 15 notifies the calculation means 12 that the program has not been tampered with. If the comparison results differ, the message digest verification means 15 notifies the calculation means 12 that the program has been tampered with.

計算手段のその他の動作、1次記憶手段13、2次記憶手段14、メッセージダイジェスト検証手段15のその他の動作、特権プログラム機能呼び出し検出手段16、メッセージダイジェスト蓄積手段17、入出力手段18については、第1の実施の形態と同様であるので、ここでは説明を省略する。   Other operations of the calculation means, the primary storage means 13, the secondary storage means 14, the other operations of the message digest verification means 15, the privileged program function call detection means 16, the message digest accumulation means 17, and the input / output means 18 are as follows: Since it is the same as that of 1st Embodiment, description is abbreviate | omitted here.

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

まず、ステップS701〜S703については、図9のステップS301〜303と同様であるので、ここでは説明を省略する。   First, Steps S701 to S703 are the same as Steps S301 to S303 in FIG.

ステップS704において、特権プログラム呼び出し検出手段16は、特権プログラムが呼び出されたか否か検出する。そして、タイマ手段19は、一定時間が経過したか否か検出する。特権プログラム機能の呼び出し、あるいは、一定時間が経過した場合、ステップS705へ進み、どちらにも該当しない場合は、ステップS702へ戻る。   In step S704, the privileged program call detection means 16 detects whether or not a privileged program has been called. The timer means 19 detects whether or not a certain time has elapsed. When the privileged program function is called or when a certain period of time has elapsed, the process proceeds to step S705, and when neither corresponds, the process returns to step S702.

ステップS705〜707については、図9のステップS305〜307と同様であるので、ここでは説明を省略する。   Since steps S705 to 707 are the same as steps S305 to 307 in FIG. 9, the description thereof is omitted here.

(作用及び効果)
第2の実施の形態に係るプログラム実行装置11及びプログラム実行方法によると、タイマ手段19を備えることにより、第1の実施の形態よりプログラムが改ざんされたか否か検証を行う頻度が増し、より確実に改ざんを検知することができる。
(Function and effect)
According to the program execution device 11 and the program execution method according to the second embodiment, the provision of the timer means 19 increases the frequency of verifying whether or not the program has been tampered with compared to the first embodiment, and more reliably. Tampering can be detected.

<第3の実施の形態>
第1の実施の形態では、特権プログラム機能を呼び出したページしかページの改ざん検証を行わないが、第3の実施の形態では、関数呼び出し履歴蓄積手段に蓄積されたページについても改ざん検証を行う。
<Third Embodiment>
In the first embodiment, only the page that called the privileged program function is subjected to page tampering verification, but in the third embodiment, tampering verification is also performed on the pages stored in the function call history storage unit.

(プログラム実行装置)
第3の実施の形態に係るプログラム装置11は、図15に示すように、計算手段12と、1次記憶手段13と、2次記憶手段14と、メッセージダイジェスト検証手段15と、特権プログラム機能呼び出し検出手段16と、メッセージダイジェスト蓄積手段17と、入出力手段18と、関数呼び出し履歴蓄積手段20とを備える。
(Program execution device)
As shown in FIG. 15, the program device 11 according to the third embodiment includes a calculation unit 12, a primary storage unit 13, a secondary storage unit 14, a message digest verification unit 15, and a privileged program function call. A detection unit 16, a message digest storage unit 17, an input / output unit 18, and a function call history storage unit 20 are provided.

関数呼び出し履歴蓄積手段20は、プログラムが実行されたときの関数呼び出しの履歴を蓄積する。一般にプログラムの実行を行う際、このような関数呼び出しの履歴は、プログラム毎にスタックと呼ばれるデータ構造として1次記憶手段13上に蓄積されることから、関数呼び出し履歴蓄積手段20は、このようなデータ構造で代用することも可能である。   The function call history storage unit 20 stores a function call history when the program is executed. In general, when a program is executed, such function call history is accumulated on the primary storage unit 13 as a data structure called a stack for each program. A data structure can be substituted.

第3の実施の形態では、このスタックを用いて関数呼び出し履歴蓄積手段20を実現する例を、図16を用いて説明する。   In the third embodiment, an example in which the function call history accumulation unit 20 is realized using this stack will be described with reference to FIG.

プログラム実行装置11は、プログラムを実行中、新たな関数を呼び出す度に、フレームと呼ばれるデータ構造をスタックに積み上げ、関数の実行が終了すると、スタックからフレームの内容を消去することを繰り返す。この操作は、最後に積み上げたフレームからしか消去できないラストインファーストアウトの形式で行う。図16では、スタック中にフレーム20aとフレーム20bの2つのフレームが積み上げられている例を示している。フレームの中には関数実行中のみ参照可能な局所変数を格納する局所変数領域と、一段前のフレームのスタック上の位置を示すオールドベースポインタと、関数呼び出し元のプログラムの実行位置を表す戻り先アドレスと、関数の呼び出しの際に与える引数を格納する引数領域が含まれる。関数呼び出し時におけるスタックの動作については、非特許文献2に詳しい。   Each time a new function is called during execution of the program, the program execution device 11 accumulates a data structure called a frame on the stack, and when the execution of the function is completed, the program execution device 11 repeatedly deletes the contents of the frame from the stack. This operation is performed in a last-in-first-out format that can only be erased from the last stacked frame. FIG. 16 shows an example in which two frames 20a and 20b are stacked in the stack. In the frame, a local variable area that stores local variables that can be referenced only during function execution, an old base pointer that indicates the position on the stack of the previous frame, and a return destination that indicates the execution position of the program that called the function It contains an argument area that stores the address and arguments given when the function is called. The stack operation at the time of function call is detailed in Non-Patent Document 2.

スタックのフレームに含まれる構成要素のうち、戻り先アドレスは関数を呼び出す際の呼び出し元の実行位置を示す。   Among the constituent elements included in the stack frame, the return address indicates the execution position of the caller when the function is called.

例えば、プログラム実行装置11が、図7及び図8に示すプログラムを実行中であるとすると、図16のスタックの構成例は、フレーム20aが図8の203の位置で関数funcAを呼び出したときに作成されるフレームであり、フレーム20bが図8の202の位置で関数funcBを呼び出したときに作成されるフレームであることを表す。よって、それぞれの戻り先アドレスには、0x00400300、0x00407000が入る。   For example, if the program execution device 11 is executing the program shown in FIG. 7 and FIG. 8, the stack configuration example in FIG. 16 shows that the frame 20a calls the function funcA at the position 203 in FIG. This is a frame to be created, indicating that the frame 20b is a frame created when the function funcB is called at the position 202 in FIG. Therefore, 0x00400300 and 0x00407000 are entered in the respective return destination addresses.

この戻り先アドレスから呼び出し元プログラムのページを特定する方法は幾通りもあるが、例えば、プログラムのページの大きさを固定長としておき、戻り先アドレスの下位アドレスを0とすれば、ページの先頭アドレスに一致することから、容易に特定可能である。   There are various methods for specifying the page of the calling program from the return address. For example, if the page size of the program is set to a fixed length and the lower address of the return address is set to 0, the top of the page Since it matches the address, it can be easily identified.

ここでは、下位6ビットを0として扱うようにすれば、0x00400300、0x00407000は、0x00400000、0x00404000となり、ページ1、ページ2の先頭アドレスに一致する。第3の実施の形態では、このように関数の呼び出し元のページに変換したものを、関数呼び出し履歴蓄積手段として扱う。   Here, if the lower 6 bits are treated as 0, 0x00400300 and 0x00407000 become 0x00400000 and 0x00404000, which coincide with the top addresses of page 1 and page 2. In the third embodiment, the function call history page is converted to the function call source page.

図17に、図7及び図8に示すプログラムを実施したときの関数呼び出し履歴蓄積手段20の蓄積内容を示す。   FIG. 17 shows the contents stored in the function call history storage means 20 when the program shown in FIGS. 7 and 8 is executed.

ページの改ざん検知は、第1の実施の形態では、特権プログラム機能を呼び出したページしか行わないが、第3の実施の形態では、関数呼び出し履歴蓄積手段20に含まれるページも改ざん検知を行う。即ち、メッセージダイジェスト検証手段15は、関数呼び出し履歴蓄積手段20に蓄積されているページの改ざんの有無を検証する。この場合、例えば、図8の202の位置において、特権プログラム機能の呼び出しが含まれなかった場合、第1の実施の形態では、ページ2の改ざんを検知することができないが、第3の実施の形態では、図8の202の位置において、関数呼び出し履歴蓄積手段20にページ2が含まれるため、ページの検証を行うことが可能である。   In the first embodiment, the page alteration detection is performed only for the page that called the privileged program function. In the third embodiment, the page included in the function call history storage unit 20 is also detected for alteration. That is, the message digest verification unit 15 verifies whether or not the pages stored in the function call history storage unit 20 have been tampered with. In this case, for example, in the case where the calling of the privileged program function is not included at the position 202 in FIG. 8, in the first embodiment, the alteration of the page 2 cannot be detected. In the embodiment, since the page 2 is included in the function call history accumulation unit 20 at the position 202 in FIG. 8, the page can be verified.

計算手段12、1次記憶手段13、2次記憶手段14、メッセージダイジェスト検証手段15のその他の動作、特権プログラム機能呼び出し検出手段16、メッセージダイジェスト蓄積手段17、入出力手段18については、第1の実施の形態と同様であるので、ここでは説明を省略する。   The other operations of the calculation means 12, the primary storage means 13, the secondary storage means 14, the message digest verification means 15, the privileged program function call detection means 16, the message digest accumulation means 17, and the input / output means 18 are as follows. Since it is the same as that of embodiment, description is abbreviate | omitted here.

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

第3の実施の形態に係るプログラム実行方法は、図9に示す第1の実施の形態に係るプログラム実行方法と、メッセージダイジェストの計算(ステップS306)の詳細のみが異なる。   The program execution method according to the third embodiment differs from the program execution method according to the first embodiment shown in FIG. 9 only in the details of the message digest calculation (step S306).

メッセージダイジェストの計算の詳細は、図18に示すように、メッセージダイジェスト検証手段15は、関数呼び出し履歴蓄積手段20上のページに対するメッセージダイジェストV’を計算し(ステップS801)、メッセージダイジェスト蓄積手段17に蓄積されたメッセージダイジェストVを取得する(ステップS802)。そして、メッセージダイジェストV’とメッセージダイジェストVとを比較し(ステップS803)、異なる場合は、改ざんがあったとして、プログラムの実行を停止する(ステップS804)。メッセージダイジェストV’とメッセージダイジェストVとが一致する場合は、改ざんはなかったとして、図9のステップS307へ進む。   For details of the message digest calculation, as shown in FIG. 18, the message digest verification means 15 calculates the message digest V ′ for the page on the function call history storage means 20 (step S801), and the message digest storage means 17 The stored message digest V is acquired (step S802). Then, the message digest V 'and the message digest V are compared (step S803), and if they are different, the execution of the program is stopped assuming that the message has been tampered with (step S804). If the message digest V 'and the message digest V match, it is determined that no alteration has been made, and the process proceeds to step S307 in FIG.

第3の実施の形態において、図9のステップS306以外のステップは、第1の実施の形態と同様であるので、ここでは説明を省略する。   In the third embodiment, steps other than step S306 in FIG. 9 are the same as those in the first embodiment, and a description thereof will be omitted here.

(作用及び効果)
第3の実施の形態に係るプログラム実行装置11及びプログラム実行方法によると、関数呼び出し履歴蓄積手段20を備えることにより、共通関数などから特権プログラムの機能を呼び出した場合でも、プログラムの改ざんを検知することができる。
(Function and effect)
According to the program execution device 11 and the program execution method according to the third embodiment, the function call history accumulating unit 20 is provided, so that even when the function of the privileged program is called from a common function or the like, the alteration of the program is detected. be able to.

<第4の実施の形態>
第4の実施の形態では、メッセージダイジェスト蓄積手段が、検証が行われた時刻を蓄積することにより、一定の時刻が経過していない場合は、メッセージダイジェストを再計算しない。
<Fourth embodiment>
In the fourth embodiment, the message digest accumulating unit accumulates the time at which the verification was performed, so that the message digest is not recalculated when a certain time has not elapsed.

(プログラム実行装置)
第4の実施の形態に係るプログラム装置11は、図1に示すように、計算手段12と、1次記憶手段13と、2次記憶手段14と、メッセージダイジェスト検証手段15と、特権プログラム機能呼び出し検出手段16と、メッセージダイジェスト蓄積手段17と、入出力手段18とを備える。
(Program execution device)
As shown in FIG. 1, the program device 11 according to the fourth embodiment includes a calculation means 12, a primary storage means 13, a secondary storage means 14, a message digest verification means 15, and a privileged program function call. A detection unit 16, a message digest storage unit 17, and an input / output unit 18 are provided.

メッセージダイジェスト蓄積手段17は、図19に示すように、メッセージダイジェスト17a、各ページが検証された時刻17b、検証を行うか否かを判定するしきい値17cとを備える。   As shown in FIG. 19, the message digest accumulating unit 17 includes a message digest 17a, a time 17b when each page is verified, and a threshold 17c for determining whether to perform verification.

計算手段12は、現在時刻と検証時刻17bとの差が、検証時刻しきいい値17cより大きい場合のみ、メッセージダイジェスト検証手段15に、改ざん検知の検証を行う通知を行う。   Only when the difference between the current time and the verification time 17b is larger than the verification time threshold value 17c, the calculation unit 12 notifies the message digest verification unit 15 to verify the alteration detection.

メッセージダイジェスト検証手段15は、予め定められた時間内に既に検証を行ったページについては、改ざんの有無を検証しない。   The message digest verification means 15 does not verify the presence or absence of falsification for pages that have already been verified within a predetermined time.

例えば、現在の時刻がTであり、ページ1において特権プログラム機能呼び出しが行われたとする。ページ1が最後に改ざんされたか否かを検証した時刻はT1であることから、現在時刻との差分T−T1が検証時刻しきい値17cより小さければ、1次記憶手段13にあるページ1のメッセージダイジェストを再計算する必要はないと判断する。このようにすれば特権プログラム機能の呼び出しを検出した際に、ページが改ざんされたか否かを検証する必要がない。   For example, assume that the current time is T and a privileged program function call is made on page 1. Since the time at which it was verified whether or not the page 1 was last tampered is T1, if the difference T-T1 from the current time is smaller than the verification time threshold value 17c, the page 1 in the primary storage means 13 It is determined that there is no need to recalculate the message digest. In this way, it is not necessary to verify whether the page has been tampered with when a call to a privileged program function is detected.

又、検証時刻しきい値17cの値は、プログラム実行装置11の負荷が高いときは大きく、負荷が小さいときは小さく動的に変更することも可能である。   Further, the value of the verification time threshold value 17c can be dynamically changed when the load on the program execution device 11 is high and small when the load is low.

計算手段12のその他の動作、1次記憶手段13、2次記憶手段14、メッセージダイジェスト検証手段15のその他の動作、特権プログラム機能呼び出し検出手段16、入出力手段18については、第1の実施の形態と同様であるので、ここでは説明を省略する。   Other operations of the calculation means 12, the primary storage means 13, the secondary storage means 14, the other operations of the message digest verification means 15, the privileged program function call detection means 16, and the input / output means 18 are the same as those in the first embodiment. Since it is the same as the embodiment, the description is omitted here.

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

第4の実施の形態に係るプログラム実行方法は、図9に示す第1の実施の形態に係るプログラム実行方法と、メッセージダイジェストの計算(ステップS306)の詳細のみが異なる。   The program execution method according to the fourth embodiment differs from the program execution method according to the first embodiment shown in FIG. 9 only in the details of the message digest calculation (step S306).

メッセージダイジェストの計算の詳細は、図20に示すように、まず、計算手段12は、特権プログラム機能の呼び出しが検出されたページの検証時刻が検証時刻しきい値より大きいか判断する(ステップS901)。そして、小さい場合は、改ざん検知を行わず、図9のステップS307へ進む。大きい場合は、メッセージダイジェスト検証手段15は、該当するページに対するメッセージダイジェストV’を計算し(ステップS902)、メッセージダイジェスト蓄積手段17に蓄積されたメッセージダイジェストVを取得する(ステップS903)。そして、メッセージダイジェストV’とメッセージダイジェストVとを比較し(ステップS904)、異なる場合は、改ざんがあったとして、プログラムの実行を停止する(ステップS905)。メッセージダイジェストV’とメッセージダイジェストVとが一致する場合は、改ざんはなかったとして、図9のステップS307へ進む。   As shown in FIG. 20, the details of the message digest calculation are as follows. First, the calculation means 12 determines whether the verification time of the page where the call of the privileged program function is detected is larger than the verification time threshold (step S901). . If it is smaller, the falsification is not detected and the process proceeds to step S307 in FIG. If so, the message digest verification means 15 calculates the message digest V 'for the corresponding page (step S902), and acquires the message digest V stored in the message digest storage means 17 (step S903). Then, the message digest V 'and the message digest V are compared (step S904), and if they are different, the execution of the program is stopped assuming that the message has been tampered with (step S905). If the message digest V 'and the message digest V match, it is determined that no alteration has been made, and the process proceeds to step S307 in FIG.

第4の実施の形態において、図9のステップS306以外のステップは、第1の実施の形態と同様であるので、ここでは説明を省略する。   In the fourth embodiment, steps other than step S306 in FIG. 9 are the same as those in the first embodiment, and a description thereof will be omitted here.

(作用及び効果)
第4の実施の形態に係るプログラム実行装置11及びプログラム実行方法によると、メッセージダイジェスト蓄積手段17が検証時刻17b及び検証時刻しきい値17を備え、現在時刻と検証時刻との差が検証時刻しきい値より大きい場合のみ、改ざんの検知を行う。このように、特権プログラム機能の呼び出しを検出した場合にすべて必ずページが改ざんされたか否かを検証するわけではないため、検証を行う回数を減らすことができ、高速にプログラム実行を行いつつ、改ざんの検知を行うことができる。
(Function and effect)
According to the program execution device 11 and the program execution method according to the fourth embodiment, the message digest storage unit 17 includes the verification time 17b and the verification time threshold value 17, and the difference between the current time and the verification time is the verification time. Only when it is larger than the threshold, tampering is detected. In this way, it is not always verified whether the page has been tampered with when a call to a privileged program function is detected. Can be detected.

<第5の実施の形態>
第5の実施の形態では、プログラムAに記述された改ざん検証を行うか否かのフラグ及び負荷に応じて、ページの改ざん検証を行う。
<Fifth embodiment>
In the fifth embodiment, page tampering verification is performed according to a flag and load indicating whether or not tampering verification described in the program A is performed.

(プログラム実行装置)
第5の実施の形態に係るプログラム装置11は、図21に示すように、計算手段12と、1次記憶手段13と、2次記憶手段14と、メッセージダイジェスト検証手段15と、特権プログラム機能呼び出し検出手段16と、メッセージダイジェスト蓄積手段17と、入出力手段18と、負荷計測手段21とを備える。
(Program execution device)
As shown in FIG. 21, the program device 11 according to the fifth embodiment includes a calculation unit 12, a primary storage unit 13, a secondary storage unit 14, a message digest verification unit 15, and a privileged program function call. A detection unit 16, a message digest storage unit 17, an input / output unit 18, and a load measurement unit 21 are provided.

負荷計測手段21は、改ざん検証を行うプログラム単体の負荷、プログラム実行装置11全体の負荷のいずれか、あるは、両方を計測する。負荷の計測には、様々な方法があるが、例えば、単位時間あたりに計算手段12が実行する命令の数やプログラム実行装置11で実行中のプログラムの数などを用いればよい。   The load measuring unit 21 measures either or both of the load of a single program that performs falsification verification and the load of the entire program execution apparatus 11. There are various methods for measuring the load. For example, the number of instructions executed by the calculation unit 12 per unit time or the number of programs being executed by the program execution device 11 may be used.

プログラムA141は、図22に示すように、計算手段12に与える命令列141aと、命令列を分割したページ毎に与えられるメッセージダイジェスト141bと、ページ毎のメッセージダイジェストへの署名141cと、改ざん検証を行うか否かを示すフラグ141dとにより構成される。このように、プログラム作成者はプログラムの各ページに対し、フラグ141dをプログラムに記しておくこととし、「○」が検証を行う、「×」が検証を行わないと解釈する。このフラグ141dの記述は、プログラム作成者が手動で行ってもよく、ページ当たりの特権プログラム機能の呼び出しの数が、一定の値より大きければ検するなど自動で行ってもよい。   As shown in FIG. 22, the program A 141 includes an instruction sequence 141a given to the calculation means 12, a message digest 141b given for each page obtained by dividing the instruction sequence, a signature 141c for the message digest for each page, and falsification verification. It is comprised by the flag 141d which shows whether it performs. In this way, the program creator assumes that the flag 141d is written in the program for each page of the program, and interprets that “O” verifies and “X” does not verify. The description of the flag 141d may be performed manually by the program creator, or may be automatically performed such as checking if the number of privileged program function calls per page is greater than a certain value.

1次記憶手段13上のプログラム格納領域131は、図23に示すように、ページ格納領域131a毎にフラグ131bを有する。計算手段12が2次記憶手段14から1次記憶手段13へページを複製するとき、プログラムA141のフラグ141dの値をプログラム格納領域131のフラグ131bへに複製する。   As shown in FIG. 23, the program storage area 131 on the primary storage means 13 has a flag 131b for each page storage area 131a. When the calculation unit 12 copies the page from the secondary storage unit 14 to the primary storage unit 13, the value of the flag 141 d of the program A 141 is copied to the flag 131 b of the program storage area 131.

計算手段12は、特権プログラム機能の呼び出しが検出された際、フラグ131bの値を確認して、改ざん検証を行うべきという情報が記述してあれば、メッセージダイジェスト検証手段15へ改ざん検証を行うことを通知する。   When the calling of the privileged program function is detected, the calculation means 12 confirms the value of the flag 131b, and if the information that the falsification verification should be performed is described, the falsification verification is performed to the message digest verification means 15. To be notified.

メッセージダイジェスト検証手段15は、フラグ131bの値に応じて、ページの改ざんの有無を検証する。   The message digest verification unit 15 verifies whether the page has been tampered with according to the value of the flag 131b.

又、フラグが「○」である場合、すぐに検証を行うとし、「×」である場合、負荷計測手段21によって計測された負荷が高い場合、あとで検証を行うとしてもよい。この場合、負荷が下がってきたときに、ページが改ざんされたか否かの検証を行うとする。   If the flag is “◯”, the verification is performed immediately. If the flag is “×”, the verification may be performed later when the load measured by the load measuring unit 21 is high. In this case, it is assumed that when the load decreases, it is verified whether the page has been tampered with.

即ち、メッセージダイジェスト検証手段15は、負荷計測手段21によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録しておき、負荷計測手段21によって計測された負荷が低くなったときに、まとめて改ざんの検証を行う。   That is, when the load measured by the load measuring unit 21 is high, the message digest verifying unit 15 records a page of the program to be verified during the program execution, and the load measured by the load measuring unit 21 becomes low. When tampering, verify tampering together.

計算手段12のその他の動作、2次記憶手段14、メッセージダイジェスト検証手段15のその他の動作、特権プログラム機能呼び出し検出手段16、入出力手段18については、第1の実施の形態と同様であるので、ここでは説明を省略する。   Other operations of the calculation means 12, the secondary storage means 14, the other operations of the message digest verification means 15, the privileged program function call detection means 16, and the input / output means 18 are the same as those in the first embodiment. The description is omitted here.

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

第5の実施の形態に係るプログラム実行方法は、図9に示す第1の実施の形態に係るプログラム実行方法と、メッセージダイジェストの計算(ステップS306)の詳細のみが異なる。   The program execution method according to the fifth embodiment differs from the program execution method according to the first embodiment shown in FIG. 9 only in the details of the message digest calculation (step S306).

メッセージダイジェストの計算の詳細は、図24に示すように、まず、負荷計測手段21は、プログラムの負荷やプログラム実行装置11の負荷を計測する(ステップS1001)。計算手段12は、プログラム格納領域131のフラグ131bと負荷計測手段21に応じて、改ざん検知を行うか否か判断する(ステップS1002)。そして、改ざん検知を行う場合、メッセージダイジェスト検証手段15は、該当するページに対するメッセージダイジェストV’を計算し(ステップS1002)、メッセージダイジェスト蓄積手段17に蓄積されたメッセージダイジェストVを取得する(ステップS1003)。そして、メッセージダイジェストV’とメッセージダイジェストVとを比較し(ステップS1004)、異なる場合は、改ざんがあったとして、プログラムの実行を停止する(ステップS1005)。メッセージダイジェストV’とメッセージダイジェストVとが一致する場合は、改ざんはなかったとして、図9のステップS307へ進む。   As shown in FIG. 24 for details of the message digest calculation, first, the load measuring means 21 measures the load of the program and the load of the program execution device 11 (step S1001). The calculation unit 12 determines whether or not to detect falsification according to the flag 131b of the program storage area 131 and the load measurement unit 21 (step S1002). When performing falsification detection, the message digest verification unit 15 calculates a message digest V ′ for the corresponding page (step S1002), and acquires the message digest V stored in the message digest storage unit 17 (step S1003). . Then, the message digest V 'and the message digest V are compared (step S1004), and if they are different, the execution of the program is stopped (step S1005), assuming that the message has been tampered with. If the message digest V 'and the message digest V match, it is determined that no alteration has been made, and the process proceeds to step S307 in FIG.

第5の実施の形態において、図9のステップS306以外のステップは、第1の実施の形態と同様であるので、ここでは説明を省略する。   In the fifth embodiment, steps other than step S306 in FIG. 9 are the same as those in the first embodiment, and a description thereof will be omitted here.

(作用及び効果)
第5の実施の形態に係るプログラム実行装置11及びプログラム実行方法によると、フラグ及び負荷に応じて、改ざんの検知を行うか否か判断する。
(Function and effect)
According to the program execution device 11 and the program execution method according to the fifth embodiment, it is determined whether or not to detect falsification according to the flag and the load.

即ち、第5の実施の形態に係るプログラム実行装置11及びプログラム実行方法は、ページ毎に有するフラグの値に応じて、ページの改ざんの有無を検証することができる。このため、改ざん検証を行うページを任意に指定することができ、改ざん検証の回数を減らすことができる。   That is, the program execution device 11 and the program execution method according to the fifth embodiment can verify whether a page has been tampered with according to the value of a flag for each page. For this reason, it is possible to arbitrarily specify a page on which tampering verification is performed, and to reduce the number of tampering verifications.

又、第5の実施の形態に係るプログラム実行装置11及びプログラム実行方法は、負荷計測手段によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録し、負荷計測手段によって計測された負荷が低くなったときに、ページの改ざんの有無を検証することができる。このため、低い負荷のときにプログラムの改ざん検証を行うことができ、プログラム本来の実行速度を維持することができる。   Further, the program execution device 11 and the program execution method according to the fifth embodiment record a program page to be verified during program execution when the load measured by the load measurement means is high, and the load measurement means When the measured load becomes low, it is possible to verify whether the page has been tampered with. For this reason, the alteration of the program can be verified at a low load, and the original execution speed of the program can be maintained.

(その他の実施形態)
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
(Other embodiments)
Although the present invention has been described according to the above-described embodiments, it should not be understood that the description and drawings constituting a part of this disclosure limit the present invention. From this disclosure, various alternative embodiments, examples and operational techniques will be apparent to those skilled in the art.

例えば、第1〜第5の実施の形態に係るプログラム実行装置において、検証手段として、メッセージダイジェストを用いた検証を行ったが、検証方法はこれに限られるわけではなく、通常、プログラムの改ざん検証に用いられる方法を適宜選択することができる。   For example, in the program execution devices according to the first to fifth embodiments, verification using a message digest is performed as a verification unit. However, the verification method is not limited to this, and usually, falsification verification of a program The method used for the method can be appropriately selected.

例えば、計算手段12、メッセージダイジェスト検証手段15、特権プログラム機能呼び出し検出手段16をモジュールとして一つのCPUに備えてもよいと説明したが、それぞれ異なるCPUに備えられ、異なる装置としてもよい。その場合、複数の装置間をバスなどで接続するものとする。   For example, it has been described that the calculation unit 12, the message digest verification unit 15, and the privileged program function call detection unit 16 may be provided as a module in one CPU, but may be provided in different CPUs and different devices. In that case, a plurality of devices are connected by a bus or the like.

このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。   As described above, the present invention naturally includes various embodiments not described herein. Therefore, the technical scope of the present invention is defined only by the invention specifying matters according to the scope of claims reasonable from the above description.

第1の実施の形態に係るプログラム実行装置の構成ブロック図である。1 is a configuration block diagram of a program execution device according to a first embodiment. FIG. 第1の実施の形態に係るプログラムAの構成を示す図である(その1)。It is a figure which shows the structure of the program A which concerns on 1st Embodiment (the 1). 第1の実施の形態に係るプログラムAの構成を示す図である(その2)。It is a figure which shows the structure of the program A which concerns on 1st Embodiment (the 2). メッセージダイジェストを求める一例を示すフローチャートである。It is a flowchart which shows an example which calculates | requires a message digest. 署名を算出する一例を示すフローチャートである。It is a flowchart which shows an example which calculates a signature. 第1の実施の形態に係るプログラム格納領域の構成を示す図である。It is a figure which shows the structure of the program storage area which concerns on 1st Embodiment. 第1の実施の形態に係るプログラムAのコードである。It is the code | symbol of the program A which concerns on 1st Embodiment. 第1の実施の形態に係るプログラムAのコードがメモリ上に配置された図である。It is a figure where the code of program A concerning a 1st embodiment was arranged on memory. 第1の実施の形態に係るプログラム実行方法を示すフローチャートである。It is a flowchart which shows the program execution method which concerns on 1st Embodiment. 第1の実施の形態に係る署名の検証方法(図9のステップS301)の詳細を示すフローチャートである。10 is a flowchart showing details of a signature verification method (step S301 in FIG. 9) according to the first embodiment. 第1の実施の形態に係るプログラムの複製方法(図9のステップS302)の詳細を示すフローチャートである。It is a flowchart which shows the detail of the replication method (step S302 of FIG. 9) of the program which concerns on 1st Embodiment. 第1の実施の形態に係るメッセージダイジェストの計算方法(図9のステップS306)の詳細を示すフローチャートである。It is a flowchart which shows the detail of the calculation method (step S306 of FIG. 9) of the message digest which concerns on 1st Embodiment. 第2の実施の形態に係るプログラム実行装置の構成ブロック図である。It is a block diagram of a configuration of a program execution device according to a second embodiment. 第2の実施の形態に係るプログラム実行方法を示すフローチャートである。It is a flowchart which shows the program execution method which concerns on 2nd Embodiment. 第3の実施の形態に係るプログラム実行装置の構成ブロック図である。It is a block diagram of a configuration of a program execution device according to a third embodiment. 第3の実施の形態に係る関数呼び出し履歴蓄積手段の構成を示す図である。It is a figure which shows the structure of the function call log | history storage means based on 3rd Embodiment. 第3の実施の形態に係る関数呼び出し履歴蓄積手段に蓄積されるページを示す図である。It is a figure which shows the page accumulate | stored in the function call log | history accumulation means which concerns on 3rd Embodiment. 第3の実施の形態に係るメッセージダイジェストの計算方法(図9のステップS306)の詳細を示すフローチャートである。It is a flowchart which shows the detail of the calculation method (step S306 of FIG. 9) of the message digest which concerns on 3rd Embodiment. 第4の実施の形態に係るプログラム実行装置のメッセージダイジェスト蓄積手段の構成を示す図である。It is a figure which shows the structure of the message digest storage means of the program execution apparatus which concerns on 4th Embodiment. 第4の実施の形態に係るメッセージダイジェストの計算方法(図9のステップS306)の詳細を示すフローチャートである。It is a flowchart which shows the detail of the calculation method (step S306 of FIG. 9) of the message digest which concerns on 4th Embodiment. 第5の実施の形態に係るプログラム実行装置の構成ブロック図である。It is a block diagram of a configuration of a program execution device according to a fifth embodiment. 第5の実施形態に係るプログラムAの構成を示す図である。It is a figure which shows the structure of the program A which concerns on 5th Embodiment. 第5の実施形態に係るプログラム格納領域の構成を示す図である。It is a figure which shows the structure of the program storage area which concerns on 5th Embodiment. 第5の実施の形態に係るメッセージダイジェストの計算方法(図9のステップS306)の詳細を示すフローチャートである。It is a flowchart which shows the detail of the calculation method (step S306 of FIG. 9) of the message digest which concerns on 5th Embodiment. 従来のプログラム実行方法を説明するための図である。It is a figure for demonstrating the conventional program execution method. 従来のプログラム実行装置の構成ブロック図である。It is a configuration block diagram of a conventional program execution device. 従来のプログラム実行方法におけるプログラムの実行タイミングを表す図である。It is a figure showing the execution timing of the program in the conventional program execution method.

符号の説明Explanation of symbols

11…プログラム実行装置
12…計算手段
13…1次記憶手段
14…2次記憶手段
15…メッセージダイジェスト検証手段
16…特権プログラム機能呼び出し検出手段
17…メッセージダイジェスト蓄積手段
18…入出力手段
19…タイマ手段
20…関数呼び出し履歴蓄積手段
21…負荷計測手段

DESCRIPTION OF SYMBOLS 11 ... Program execution apparatus 12 ... Calculation means 13 ... Primary storage means 14 ... Secondary storage means 15 ... Message digest verification means 16 ... Privileged program function call detection means 17 ... Message digest accumulation means 18 ... Input / output means 19 ... Timer means 20 ... Function call history storage means 21 ... Load measurement means

Claims (8)

実行するプログラムを、プログラムの命令列によって分割した単位であるページ毎に蓄積する1次記憶手段と、
実行中の前記プログラムが特権プログラムの機能を呼び出したことを検出する特権プログラム機能呼び出し検出手段と、
前記特権プログラム機能呼び出し検出手段により検出が行われた場合、前記1次記憶手段に蓄積されている実行中のページの改ざんの有無を検証する検証手段と
を備えることを特徴とするプログラム実行装置。
Primary storage means for storing a program to be executed for each page which is a unit divided by an instruction sequence of the program;
Privileged program function call detecting means for detecting that the program being executed calls a function of a privileged program;
And a verification unit that verifies whether or not the page being executed stored in the primary storage unit has been tampered with when detected by the privileged program function call detection unit.
前記プログラムの実行前に、前記ページ毎のメッセージダイジェストを予め蓄積するメッセージダイジェスト蓄積手段を更に備え、
前記検証手段は、前記1次記憶手段に蓄積されたページのメッセージダイジェストを計算し、前記メッセージダイジェスト蓄積手段に蓄積されたメッセージダイジェストと比較することにより、改ざんの有無を検証することを特徴とする請求項1に記載のプログラム実行装置。
Prior to execution of the program, further comprising message digest storage means for storing in advance a message digest for each page;
The verification means calculates the message digest of the page stored in the primary storage means, and compares the message digest stored in the message digest storage means to verify the presence or absence of falsification. The program execution device according to claim 1.
前記プログラムの実行が開始されてから所定の時間間隔で、時間の経過を通知するタイマ手段を更に備え、
前記検証手段は、前記タイマ手段から通知があった場合、前記1次記憶手段に蓄積されている実行中のページの改ざんの有無を検証することを特徴とする請求項1又は2に記載のプログラム実行装置。
Timer means for notifying the passage of time at a predetermined time interval from the start of execution of the program;
3. The program according to claim 1, wherein, when notified from the timer unit, the verification unit verifies whether or not the page being executed stored in the primary storage unit has been tampered with. Execution device.
前記プログラムが実行されたときの関数呼び出しの履歴を蓄積する関数呼び出し履歴蓄積手段とを更に備え、
前記検証手段は、前記関数呼び出し履歴蓄積手段に蓄積されているページの改ざんの有無を検証することを特徴とする請求項1〜3のいずれか1項に記載のプログラム実行装置。
A function call history storage means for storing a history of function calls when the program is executed;
The program execution device according to any one of claims 1 to 3, wherein the verification unit verifies whether or not the page stored in the function call history storage unit is falsified.
前記検証手段は、予め定められた時間内に既に検証を行ったページについては、改ざんの有無を検証しないことを特徴とする請求項1〜4のいずれか1項に記載のプログラム実行装置。   5. The program execution device according to claim 1, wherein the verifying unit does not verify the presence / absence of alteration of a page that has already been verified within a predetermined time. 前記1次記憶手段は、前記ページ毎にフラグを有し、
前記認証手段は、前記フラグの値に応じて、ページの改ざんの有無を検証することを特徴とする請求項1〜5のいずれか1項に記載のプログラム実行装置。
The primary storage means has a flag for each page,
The program execution device according to claim 1, wherein the authentication unit verifies whether a page has been tampered with in accordance with the value of the flag.
前記プログラム単体の負荷、あるいはプログラム実行装置全体の負荷を計測する負荷計測手段を更に備え、
前記検証手段は、前記負荷計測手段によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録し、前記負荷計測手段によって計測された負荷が低くなったときに、ページの改ざんの有無を検証することを特徴とする請求項1〜6のいずれか1項に記載のプログラム実行装置。
A load measuring means for measuring a load of the program alone or a load of the entire program execution apparatus;
When the load measured by the load measuring means is high, the verification means records a page of the program to be verified during program execution, and when the load measured by the load measuring means is low, The program execution device according to claim 1, wherein presence or absence of falsification is verified.
実行するプログラムを、プログラムの命令列によって分割した単位であるページ毎に蓄積するステップと、
実行中の前記プログラムが特権プログラムの機能を呼び出したことを検出するステップと、
前記検出するステップにより検出が行われた場合、前記蓄積されている実行中のページの改ざんの有無を検証するステップと
を含むことを特徴とするプログラム実行方法。
Storing the program to be executed for each page, which is a unit divided by the instruction sequence of the program;
Detecting that the program being executed has invoked a privileged program function;
And a step of verifying whether or not the stored page being tampered with is detected when the detection is performed in the detecting step.
JP2004235430A 2004-08-12 2004-08-12 Program execution device Expired - Fee Related JP4553660B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004235430A JP4553660B2 (en) 2004-08-12 2004-08-12 Program execution device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004235430A JP4553660B2 (en) 2004-08-12 2004-08-12 Program execution device

Publications (2)

Publication Number Publication Date
JP2006053787A true JP2006053787A (en) 2006-02-23
JP4553660B2 JP4553660B2 (en) 2010-09-29

Family

ID=36031225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004235430A Expired - Fee Related JP4553660B2 (en) 2004-08-12 2004-08-12 Program execution device

Country Status (1)

Country Link
JP (1) JP4553660B2 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006217489A (en) * 2005-02-07 2006-08-17 Ricoh Co Ltd Digital document data processor, digital document data processing method, digital document data processing program and recording medium
JP2007226610A (en) * 2006-02-24 2007-09-06 Alpine Electronics Inc Apparatus for verifying program validity
WO2008056700A1 (en) * 2006-11-09 2008-05-15 Panasonic Corporation Falsification detecting system, falsification detecting method, falsification detecting program, recording medium, integrated circuit, authentication information generating device and falsification detecting device
JP2008129800A (en) * 2006-11-20 2008-06-05 Sony Computer Entertainment Inc Software alteration inspection device, method, and computer program
WO2009013831A1 (en) * 2007-07-26 2009-01-29 Panasonic Corporation Information processing terminal and falsification verification method
JP4754635B2 (en) * 2006-02-27 2011-08-24 シャープ株式会社 Control flow protection mechanism
JP2013016088A (en) * 2011-07-06 2013-01-24 Mega Chips Corp Memory system, security memory and information protection method
US10073973B2 (en) 2013-09-25 2018-09-11 Mitsubishi Electric Corporation Process testing apparatus, computer-readable medium, and process testing method
JPWO2021161418A1 (en) * 2020-02-12 2021-08-19

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005859A (en) * 2001-04-16 2003-01-08 Yuichi Sumiya Method for managing program and data, and computer
JP2003140970A (en) * 2001-11-01 2003-05-16 Fujitsu Ltd Alteration detecting system, alteration detecting method and program
JP2003330736A (en) * 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> Unauthorized resource use preventing system, method and program therefor
JP2004126854A (en) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp Attack countermeasure system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005859A (en) * 2001-04-16 2003-01-08 Yuichi Sumiya Method for managing program and data, and computer
JP2003140970A (en) * 2001-11-01 2003-05-16 Fujitsu Ltd Alteration detecting system, alteration detecting method and program
JP2003330736A (en) * 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> Unauthorized resource use preventing system, method and program therefor
JP2004126854A (en) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp Attack countermeasure system

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006217489A (en) * 2005-02-07 2006-08-17 Ricoh Co Ltd Digital document data processor, digital document data processing method, digital document data processing program and recording medium
JP2007226610A (en) * 2006-02-24 2007-09-06 Alpine Electronics Inc Apparatus for verifying program validity
JP4732921B2 (en) * 2006-02-24 2011-07-27 アルパイン株式会社 Program correctness verification device
JP4754635B2 (en) * 2006-02-27 2011-08-24 シャープ株式会社 Control flow protection mechanism
JP5049288B2 (en) * 2006-11-09 2012-10-17 パナソニック株式会社 Tamper detection system, tamper detection method, tamper detection program, recording medium, integrated circuit, authentication information generation device, and tamper detection device
WO2008056700A1 (en) * 2006-11-09 2008-05-15 Panasonic Corporation Falsification detecting system, falsification detecting method, falsification detecting program, recording medium, integrated circuit, authentication information generating device and falsification detecting device
US8453206B2 (en) 2006-11-09 2013-05-28 Panasonic Corporation Detecting unauthorized tampering of a program
JPWO2008056700A1 (en) * 2006-11-09 2010-02-25 パナソニック株式会社 Tamper detection system, tamper detection method, tamper detection program, recording medium, integrated circuit, authentication information generation device, and tamper detection device
JP2008129800A (en) * 2006-11-20 2008-06-05 Sony Computer Entertainment Inc Software alteration inspection device, method, and computer program
WO2009013831A1 (en) * 2007-07-26 2009-01-29 Panasonic Corporation Information processing terminal and falsification verification method
JP2013016088A (en) * 2011-07-06 2013-01-24 Mega Chips Corp Memory system, security memory and information protection method
US10073973B2 (en) 2013-09-25 2018-09-11 Mitsubishi Electric Corporation Process testing apparatus, computer-readable medium, and process testing method
JPWO2021161418A1 (en) * 2020-02-12 2021-08-19
WO2021161418A1 (en) * 2020-02-12 2021-08-19 三菱電機株式会社 Information processing device, information processing method, and information processing program
JP7004478B2 (en) 2020-02-12 2022-01-21 三菱電機株式会社 Information processing equipment, information processing methods and information processing programs

Also Published As

Publication number Publication date
JP4553660B2 (en) 2010-09-29

Similar Documents

Publication Publication Date Title
EP2988238B1 (en) Optimized integrity verification procedures
US7155743B2 (en) Method and system for controlling use of a dynamically linked software library
US8200961B2 (en) Securing a flash memory block in a secure device system and method
EP2420949B1 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
US20090328218A1 (en) Data processing system, data processing method, and program
CN101894224B (en) Protecting content on client platforms
US8756414B2 (en) Information processing apparatus, software verification method, and software verification program
JP4475894B2 (en) Device for decrypting encrypted data and placing it in execution memory space, and method thereof
US20190114401A1 (en) On device structure layout randomization for binary code to enhance security through increased entropy
WO2016074506A1 (en) Method and network device for authenticating application program integrity
US20070179904A1 (en) Apparatus and method for providing sealed storage in a data processing device
WO2005096121A1 (en) Execution device
JP2008503014A (en) Ensuring software security
US10346179B2 (en) Information processing apparatus, server apparatus, information processing system, control method, and computer program
KR20080013940A (en) Electronic device, update server device, key update device
JP2007148962A (en) Subprogram, information processor for executing subprogram, and program control method in information processor for executing subprogram
US20080178257A1 (en) Method for integrity metrics management
JP4553660B2 (en) Program execution device
US20080313475A1 (en) Methods and systems for tamper resistant files
US8656182B2 (en) Security mechanism for developmental operating systems
JP2005202523A (en) Computer device and process control method
JP2006164184A (en) Program division device, program execution device, program division method and program execution method
JP2005293109A (en) Software execution management device, software execution management method, and control program
CN111783119A (en) Form data security control method and device, electronic equipment and storage medium
US20050010752A1 (en) Method and system for operating system anti-tampering

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100618

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

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

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

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4553660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees