JP4553660B2 - Program execution device - Google Patents
Program execution device Download PDFInfo
- Publication number
- JP4553660B2 JP4553660B2 JP2004235430A JP2004235430A JP4553660B2 JP 4553660 B2 JP4553660 B2 JP 4553660B2 JP 2004235430 A JP2004235430 A JP 2004235430A JP 2004235430 A JP2004235430 A JP 2004235430A JP 4553660 B2 JP4553660 B2 JP 4553660B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- page
- message digest
- verification
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012795 verification Methods 0.000 claims description 91
- 238000001514 detection method Methods 0.000 claims description 27
- 230000004075 alteration Effects 0.000 claims description 17
- 230000006870 function Effects 0.000 description 120
- 238000000034 method Methods 0.000 description 69
- 238000004364 calculation method Methods 0.000 description 63
- 238000012545 processing Methods 0.000 description 10
- 238000005259 measurement Methods 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000010076 replication Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
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
プログラム実行装置306は、サーバ305より、プログラム307、ACL308及びそれぞれの署名をダウンロードする。そして、プログラムの実行を開始する際、検証手段309は、プログラムの署名が信頼する証明機関によるものであるか否か検証する。この署名の検証は、公開鍵暗号等の技術を用い、予め証明機関304の公開鍵を入手しておくことで容易に可能である(例えば、非特許文献1参照)。署名検証により、プログラムに施された署名が証明機関304のものであると判断できれば、プログラム実行装置306はプログラム307を実行し、そうでなければ実行を拒絶することで、安全性を確保する。
The
しかし、プログラムに信頼する証明機関による署名が施されていても、バッファオーバーフローのような脆弱性がプログラムに存在した場合、悪意あるデータがプログラムに入力されれば、データ入力者がプログラム実行装置に任意の動作を行わせることが可能な場合あり、危険である(例えば、非特許文献2参照)。 However, even if the program is signed by a trusted certificate authority, if there is a vulnerability such as a buffer overflow 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
この問題を解決する方法として、プログラムの実行を一旦開始した後も、動的にプログラムが改ざんされているか否か検証を行い、改ざんが検出されれば、その段階で実行を停止する方法が開示されている(例えば、非特許文献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
より詳細に説明すると、図26に示すように、一般にパーソナルコンピュータやワークステーション等のプログラム実行装置111は、高価であるが高速に読み書き可能な小容量の1次記憶手段113と、安価で低速な大容量の2次記憶手段114とを有し、これらに記憶されたデータに対し、計算手段112を用いて演算を繰り返すことでプログラムを実行する。そのため、実行していないプログラムは2次記憶手段114に蓄積しておき、プログラムを実行する際に1次記憶手段113に複製し、この上でプログラムを実行する。
More specifically, as shown in FIG. 26, a
1次記憶装置手段113の容量は、一般に小さいため、この複製の管理単位はプログラム全体ではなく、プログラムの命令列を分割したページ単位で行う。図26に示す例では、実行しようとするプログラムAはページ1〜4の4ページ、1次記憶手段113のページ格納領域は3つあるものとする。
Since the capacity of the
又、プログラム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
プログラム実行装置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
プログラム実行装置111は、計算手段112を用いて、必要に応じて2次記憶手段114からプログラムAのページを1次記憶手段113へ複製しつつ、プログラムAの実行を進めるが、1次記憶装置113のページ格納領域は限られているので、空きがなくなると古いものから順に上書きされる。時刻t、t+1、t+2、t+3、t+4、t+5の一次記憶手段113の内容は、図27に示すとおりである。
The
非特許文献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
改ざんされているか否かの検証は、メッセージダイジェスト検証手段115が、1次記憶手段113に蓄積されるプログラムのページについて再度メッセージダイジェストを計算し、これがメッセージダイジェスト蓄積手段117に蓄積されているメッセージダイジェストと一致するか否かにより行う。一致していれば改ざんはなかったと判定し、不一致の場合は、プログラムが改ざんされたと判断する。
The message
又、当該プログラム実行装置111において実行される他のプログラムが改ざんされ、そのプログラムにより2次記憶手段114に蓄積されたプログラムAのページが改ざんされたとしても、各ページのメッセージダイジェストが安全なメッセージダイジェスト蓄積手段117に複製されていることから、改ざんを検出することが可能となる。
しかしながら、上述した非特許文献3に開示される技術では、プログラムを実行している間、頻繁に実行されているページは1次記憶手段113に常に複製されており、2次記憶手段114から複製される機会がないため、プログラムが改ざんされているか否かの検証が行えないという問題点があった。例えば、図27において、常に1次記憶手段113に存在するプログラムのページ、即ちページ1やページ2に脆弱性があった場合、各ページが改ざんされているか否かを検証する機会が少ないため、ページ1やページ2を改ざんされても検知することが困難である。
However, in the technique disclosed in
そこで、本発明は、上記の課題に鑑み、効率良くプログラムの改ざんを検知することができるプログラム実行装置及びプログラム実行方法を提供することを目的とする。 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
まず、第1の実施の形態に係るプログラム実行装置11が実行するプログラムA141について、説明する。
First, the program A141 executed by the
プログラムAは、図2に示すように、計算手段12に与える命令列141aと、命令列を分割したページ毎に与えられるメッセージダイジェスト141bと、ページ毎のメッセージダイジェストへの署名141cより構成される。ページ毎のメッセージダイジェストは、第1の実施の形態では、プログラム配布時に予め用意されるものとするが、2次記憶手段14上に蓄積される間は作成されず、1次記憶手段13に複製するときやプログラム起動時に一括して作成してもよい。この場合、ページ毎のメッセージダイジェストへの署名141cは存在しないとするか、又は、プログラム命令列全体に対する署名を有してもよい。あるいは、プログラムによって予め用意したり、1次記憶手段13に複製するときに用意したり選択できるようにしてもよい。
As shown in FIG. 2, the program A includes an
図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
各ページのメッセージダイジェストを計算する方法は幾通りもあるが、例えば、図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 encryption uses the secret key of the person who created the program. If the program is created outside the program execution apparatus, the signature is preliminarily created by the program creator. 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
計算手段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
1次記憶手段13は、2次記憶手段14に蓄積されたプログラムの一部又は全部を複製し、蓄積する。1次記憶手段13は、1つ又は複数のプログラムの複製を蓄積するためのプログラム格納領域131と、特権プログラム132とを有する。又、1次記憶手段13は、2次記憶手段14に比べ、高速に読み書きできることが求められることから、例えば、RAMなどのデバイスを用いることが望ましい。
The
第1の実施の形態に係るプログラム格納領域131は、例えば、図6に示すように、1つのプログラムに対し、3つのプログラムのページを格納するページ格納領域131aを有する。
For example, as shown in FIG. 6, the
2次記憶手段14は、1つ又は複数のプログラムを蓄積する。2次記憶手段14は、より多くのプログラムを蓄積することが望まれるため、ハードディスクやフラッシュメモリなど比較的安価なデバイスを用いて実現することが望ましい。
The
メッセージダイジェスト蓄積手段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
メッセージダイジェスト検証手段15は、特権プログラムが呼び出された場合、1次記憶手段13上にあるプログラムのページのメッセージダイジェストを計算し、予めメッセージダイジェスト蓄積手段17に蓄積された当該プログラムのページのメッセージダイジェストと比較する。メッセージダイジェスト検証手段15は、比較結果が一致すれば、プログラムの改ざんがないことを、比較結果が異なれば、プログラムの改ざんがあったことを計算手段12に通知する。図1では、メッセージダイジェスト検証手段15は、独立した構成とするが、特権プログラムの機能として実現してもよい。
When the privileged program is called, the message digest
入出力手段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 /
又、第1の実施の形態に係るプログラム実行装置11は、処理制御装置(CPU)を有し、計算手段12、メッセージダイジェスト検証手段15、特権機能プログラム呼び出し検出手段16などをモジュールとしてCPUに内蔵する構成とすることができる。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。
The
又、図示していないが、プログラム実行装置11は、計算処理、メッセージダイジェスト検証処理、特権プログラム機能呼び出し検出処理などを処理制御装置(CPU)に実行させるためのプログラムを蓄積するプログラム保持部を備えてもよい。プログラム保持部は、例えば、RAM、ROM、ハードディスク、フレキシブルディスク、コンパクトディスク、ICチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、プログラムの蓄積、運搬、販売などを容易に行うことができる。
Although not shown, the
(プログラム実行方法)
次に、第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, the program A written in C language is shown in FIG. FIG. 7A includes the definition of the program A code, that is, functions main, funcA, and funcB. The 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
図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
具体的には、図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
次に、図9のステップS302において、計算手段12は、2次記憶手段14に蓄積されたプログラムA141を1次記憶手段13のプログラム格納領域131へ複製する。又、計算手段12は、プログラムA141に含まれるメッセージダイジェストをメッセージダイジェスト蓄積手段17へ複製する。
Next, in step S <b> 302 of FIG. 9, the
プログラム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
プログラムの複製は、具体的には、図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
次に、図9のステップS304において、特権プログラム呼び出し検出手段16は、特権プログラムが呼び出されたか否か検出する。例えば、2次記憶手段14から1次記憶手段13への複製は、特権プログラムの機能として実現することも可能である。この場合、複製時に、特権プログラム機能呼び出し検出手段16は、特権プログラム機能呼び出しを検出する。特権プログラム機能が呼び出された場合は、ステップS305へ進み、呼び出されなかった場合は、ステップS302へ戻る。
Next, in step S304 of FIG. 9, the privileged program
次に、ステップS305において、特権プログラム機能呼び出し手段16から特権プログラム機能の呼び出しの通知を受けた計算手段12は、一旦プログラムAの実行を停止する。
Next, in step S305, the
そして、ステップS306において、計算手段12から通知を受けたメッセージダイジェスト検証手段15は、メッセージダイジェストの計算を行う。
In step S306, the 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
そして、プログラムが終了するまでステップ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
ページ1が改ざんされていれば、プログラム実行装置11はプログラムAの実行を停止するが、改ざんが検知されなければ実行を進める。
If
プログラム実行装置11は、プログラムAの実行を更に進めると、図8の関数funcAを呼び出す(図8の203)。関数funcAのはページ2にあることから、プログラム実行装置11は、ページ2を2次記憶手段14より図11に示す手順に従って、1次記憶手段13に複製し、関数funcAの命令列を実行する。
When the
関数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
プログラム実行装置11は、更にプログラムAの実行を進めると、関数funcBを呼び出し、ページ4に実行を移すため、ページ4を2次記憶手段14より複製する。関数funcBの中にも特権プログラム機能呼び出し(図8の204)があることから、プログラム実行装置11はこれを実行する。特権プログラム機能呼び出し検出手段16により、特権プログラム機能呼び出しを検出したプログラム実行装置11は、ページ4が改ざんされているか否かの検証を行う。
When the
プログラム実行装置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
このとき、funcAはページ2に、mainはページ1にあるため、1次記憶手段13上にあるプログラム格納領域にあるページは、古い順にページ1、ページ2、ページ4となる。
At this time, since funcA is in
関数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
関数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
関数funcCも特権プログラムの機能呼び出しを呼び出すことから、このときにページ4が改ざんされているか検証を行う。
Since function funcC also calls a function call of a privileged program, it is verified whether
以後、ページ1、ページ2、ページ4、ページ1、ページ2、ページ3の順でプログラムの実行を繰り返す。
Thereafter, the program is repeatedly executed in the order of
(作用及び効果)
第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
<第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
タイマ手段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
計算手段12は、タイマ手段19から通知を受ける度に、メッセージダイジェスト検証手段15へ所定の時間が経過したことを通知する。
Every time the
メッセージダイジェスト検証手段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
<第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
関数呼び出し履歴蓄積手段20は、プログラムが実行されたときの関数呼び出しの履歴を蓄積する。一般にプログラムの実行を行う際、このような関数呼び出しの履歴は、プログラム毎にスタックと呼ばれるデータ構造として1次記憶手段13上に蓄積されることから、関数呼び出し履歴蓄積手段20は、このようなデータ構造で代用することも可能である。
The function call
第3の実施の形態では、このスタックを用いて関数呼び出し履歴蓄積手段20を実現する例を、図16を用いて説明する。
In the third embodiment, an example in which the function call
プログラム実行装置11は、プログラムを実行中、新たな関数を呼び出す度に、フレームと呼ばれるデータ構造をスタックに積み上げ、関数の実行が終了すると、スタックからフレームの内容を消去することを繰り返す。この操作は、最後に積み上げたフレームからしか消去できないラストインファーストアウトの形式で行う。図16では、スタック中にフレーム20aとフレーム20bの2つのフレームが積み上げられている例を示している。フレームの中には関数実行中のみ参照可能な局所変数を格納する局所変数領域と、一段前のフレームのスタック上の位置を示すオールドベースポインタと、関数呼び出し元のプログラムの実行位置を表す戻り先アドレスと、関数の呼び出しの際に与える引数を格納する引数領域が含まれる。関数呼び出し時におけるスタックの動作については、非特許文献2に詳しい。
Each time a new function is called during execution of the program, the
スタックのフレームに含まれる構成要素のうち、戻り先アドレスは関数を呼び出す際の呼び出し元の実行位置を示す。 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
この戻り先アドレスから呼び出し元プログラムのページを特定する方法は幾通りもあるが、例えば、プログラムのページの大きさを固定長としておき、戻り先アドレスの下位アドレスを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
図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
計算手段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
<第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
メッセージダイジェスト蓄積手段17は、図19に示すように、メッセージダイジェスト17a、各ページが検証された時刻17b、検証を行うか否かを判定するしきい値17cとを備える。
As shown in FIG. 19, the message digest accumulating
計算手段12は、現在時刻と検証時刻17bとの差が、検証時刻しきいい値17cより大きい場合のみ、メッセージダイジェスト検証手段15に、改ざん検知の検証を行う通知を行う。
Only when the difference between the current time and the
メッセージダイジェスト検証手段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
又、検証時刻しきい値17cの値は、プログラム実行装置11の負荷が高いときは大きく、負荷が小さいときは小さく動的に変更することも可能である。
Further, the value of the verification
計算手段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
<第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
負荷計測手段21は、改ざん検証を行うプログラム単体の負荷、プログラム実行装置11全体の負荷のいずれか、あるは、両方を計測する。負荷の計測には、様々な方法があるが、例えば、単位時間あたりに計算手段12が実行する命令の数やプログラム実行装置11で実行中のプログラムの数などを用いればよい。
The
プログラムA141は、図22に示すように、計算手段12に与える命令列141aと、命令列を分割したページ毎に与えられるメッセージダイジェスト141bと、ページ毎のメッセージダイジェストへの署名141cと、改ざん検証を行うか否かを示すフラグ141dとにより構成される。このように、プログラム作成者はプログラムの各ページに対し、フラグ141dをプログラムに記しておくこととし、「○」が検証を行う、「×」が検証を行わないと解釈する。このフラグ141dの記述は、プログラム作成者が手動で行ってもよく、ページ当たりの特権プログラム機能の呼び出しの数が、一定の値より大きければ検するなど自動で行ってもよい。
As shown in FIG. 22, the
1次記憶手段13上のプログラム格納領域131は、図23に示すように、ページ格納領域131a毎にフラグ131bを有する。計算手段12が2次記憶手段14から1次記憶手段13へページを複製するとき、プログラムA141のフラグ141dの値をプログラム格納領域131のフラグ131bへに複製する。
As shown in FIG. 23, the
計算手段12は、特権プログラム機能の呼び出しが検出された際、フラグ131bの値を確認して、改ざん検証を行うべきという情報が記述してあれば、メッセージダイジェスト検証手段15へ改ざん検証を行うことを通知する。
When the calling of the privileged program function is detected, the calculation means 12 confirms the value of the
メッセージダイジェスト検証手段15は、フラグ131bの値に応じて、ページの改ざんの有無を検証する。
The message digest
又、フラグが「○」である場合、すぐに検証を行うとし、「×」である場合、負荷計測手段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
即ち、メッセージダイジェスト検証手段15は、負荷計測手段21によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録しておき、負荷計測手段21によって計測された負荷が低くなったときに、まとめて改ざんの検証を行う。
That is, when the load measured by the
計算手段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
第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
即ち、第5の実施の形態に係るプログラム実行装置11及びプログラム実行方法は、ページ毎に有するフラグの値に応じて、ページの改ざんの有無を検証することができる。このため、改ざん検証を行うページを任意に指定することができ、改ざん検証の回数を減らすことができる。
That is, the
又、第5の実施の形態に係るプログラム実行装置11及びプログラム実行方法は、負荷計測手段によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録し、負荷計測手段によって計測された負荷が低くなったときに、ページの改ざんの有無を検証することができる。このため、低い負荷のときにプログラムの改ざん検証を行うことができ、プログラム本来の実行速度を維持することができる。
Further, the
(その他の実施形態)
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
(Other embodiments)
Although the present invention has been described according to the above-described embodiments, it should not be understood that the descriptions 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
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。 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.
11…プログラム実行装置
12…計算手段
13…1次記憶手段
14…2次記憶手段
15…メッセージダイジェスト検証手段
16…特権プログラム機能呼び出し検出手段
17…メッセージダイジェスト蓄積手段
18…入出力手段
19…タイマ手段
20…関数呼び出し履歴蓄積手段
21…負荷計測手段
DESCRIPTION OF
Claims (6)
実行中の前記プログラムが特権プログラムの機能を呼び出したことを検出する特権プログラム機能呼び出し検出手段と、
前記特権プログラム機能呼び出し検出手段により検出が行われた場合、前記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;
A verification means for verifying whether or not the page being executed stored in the primary storage means has been tampered with when detected by the privileged program function call detection means;
Function call history storage means for storing a history of function calls when the program is executed;
With
The program execution apparatus characterized in that the verification means verifies the presence or absence of falsification of a page stored in the function call history storage means .
前記検証手段は、前記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〜4のいずれか1項に記載のプログラム実行装置。 The primary storage means has a flag for each page,
Said authentication means, in accordance with the value of the flag, the program execution device according to any one of claims 1 to 4, characterized in that to verify the presence or absence of falsification of the page.
前記検証手段は、前記負荷計測手段によって計測された負荷が高い場合、プログラム実行中は検証すべきプログラムのページを記録し、前記負荷計測手段によって計測された負荷が低くなったときに、ページの改ざんの有無を検証することを特徴とする請求項1〜5のいずれか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, program execution device according to any one of claims 1 to 5, characterized in that to verify the presence or absence of falsification.
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 JP2006053787A (en) | 2006-02-23 |
JP4553660B2 true 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) |
Families Citing this family (10)
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 |
JP4732921B2 (en) * | 2006-02-24 | 2011-07-27 | アルパイン株式会社 | Program correctness verification device |
GB2435531A (en) * | 2006-02-27 | 2007-08-29 | Sharp Kk | Control Flow Protection Mechanism |
EP2053533A4 (en) * | 2006-11-09 | 2011-03-23 | Panasonic Corp | Falsification detecting system, falsification detecting method, falsification detecting program, recording medium, integrated circuit, authentication information generating device and falsification detecting device |
JP4896677B2 (en) * | 2006-11-20 | 2012-03-14 | 株式会社ソニー・コンピュータエンタテインメント | Software tamper inspection apparatus and method, and computer program |
US20100191949A1 (en) * | 2007-07-26 | 2010-07-29 | Panasonic Corporation | Information processing terminal and falsification verification method |
JP5718746B2 (en) * | 2011-07-06 | 2015-05-13 | 株式会社メガチップス | Memory system, security memory, and information protection method |
WO2015045043A1 (en) | 2013-09-25 | 2015-04-02 | 三菱電機株式会社 | Process verification device, process verification program, and process verification method |
JP6736456B2 (en) * | 2016-11-17 | 2020-08-05 | キオクシア株式会社 | Information processing device and program |
WO2021161418A1 (en) * | 2020-02-12 | 2021-08-19 | 三菱電機株式会社 | Information processing device, information processing method, and information processing program |
Citations (4)
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 |
-
2004
- 2004-08-12 JP JP2004235430A patent/JP4553660B2/en not_active Expired - Fee Related
Patent Citations (4)
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 |
Also Published As
Publication number | Publication date |
---|---|
JP2006053787A (en) | 2006-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2988238B1 (en) | Optimized integrity verification procedures | |
US8200961B2 (en) | Securing a flash memory block in a secure device system and method | |
CN101894224B (en) | Protecting content on client platforms | |
EP2420949B1 (en) | Information processing system, information processing method, information processing program, computer readable medium and computer data signal | |
CN102171704B (en) | External encryption and recovery management with hardware encrypted storage devices | |
US20190114401A1 (en) | On device structure layout randomization for binary code to enhance security through increased entropy | |
JP4475894B2 (en) | Device for decrypting encrypted data and placing it in execution memory space, and method thereof | |
US8756414B2 (en) | Information processing apparatus, software verification method, and software verification program | |
JPWO2008026238A1 (en) | Data processing system, data processing method, and program | |
KR20080013940A (en) | Electronic device, update server device, key update device | |
JP4553660B2 (en) | Program execution 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 | |
US20160147542A1 (en) | Information processing apparatus, server apparatus, information processing system, control method, and computer program | |
US7962765B2 (en) | Methods and systems for tamper resistant files | |
US8656182B2 (en) | Security mechanism for developmental operating systems | |
JP2005202523A (en) | Computer device and process control method | |
CN111783119B (en) | Form data security control method, form data security control device, electronic equipment and storage medium | |
JP2005293109A (en) | Software execution management device, software execution management method, and control program | |
US20050010752A1 (en) | Method and system for operating system anti-tampering | |
JP4655613B2 (en) | Program execution apparatus and program execution method | |
JP2008077179A (en) | Information processing method, program, and apparatus for enhancing admissibility of evidence and/or evidential value of electromagnetic record | |
US9213864B2 (en) | Data processing apparatus and validity verification method | |
CN112131612B (en) | CF card data tamper-proof method, device, equipment and medium | |
CN110874225A (en) | Data verification method and device, embedded equipment and storage medium |
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 |