JP4931542B2 - Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit - Google Patents
Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit Download PDFInfo
- Publication number
- JP4931542B2 JP4931542B2 JP2006277430A JP2006277430A JP4931542B2 JP 4931542 B2 JP4931542 B2 JP 4931542B2 JP 2006277430 A JP2006277430 A JP 2006277430A JP 2006277430 A JP2006277430 A JP 2006277430A JP 4931542 B2 JP4931542 B2 JP 4931542B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- load
- destination information
- data
- execution image
- 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
Images
Landscapes
- Stored Programmes (AREA)
Description
本発明は、プログラムを指定された領域にロードする技術に関する。 The present invention relates to a technique for loading a program into a designated area.
従来、プログラムを安全にプロセッサ内のメモリにロードするための装置および方法に関する技術が開示されている。
ここでロードとは記録媒体上のプログラムの実行イメージ(オブジェクト、インスタンス)をメモリ領域上に生成して、プロセッサによる実行に供することをいう。
例えば、プロセッサ外部にある記憶装置からプロセッサ内にプログラムを安全にロードする方法では、プログラムが外部装置に格納される前に暗号化され、また、プログラムの正当性を検証するための認証情報が付与された状態で外部装置に格納される。そして、プロセッサがプログラムを実行できるようになる前に、プログラムを復号化し、該プログラムを認証している(例えば、特許文献1参照)。
Conventionally, a technique related to an apparatus and a method for safely loading a program into a memory in a processor has been disclosed.
Here, “load” refers to generating an execution image (object, instance) of a program on a recording medium in a memory area and executing it by a processor.
For example, in the method of safely loading a program from a storage device outside the processor into the processor, the program is encrypted before being stored in the external device, and authentication information for verifying the validity of the program is given. Stored in the external device. Then, before the processor can execute the program, the program is decrypted and the program is authenticated (see, for example, Patent Document 1).
これにより、プロセッサ上で動作する他のプログラム内容を暴露する等の望ましくないプログラムがプロセッサ上で実行されることを阻止することができる。
ところで、プログラムのロード先となるメモリには、何らかの保護の仕組みが施されたメモリ(セキュアメモリ)と、そのような仕組みが施されていないメモリ(通常メモリ)との2種類ある。
As a result, it is possible to prevent an undesired program from being executed on the processor, such as exposing other program contents running on the processor.
By the way, there are two types of memory to which the program is loaded: a memory (secure memory) with some kind of protection mechanism and a memory (normal memory) without such a mechanism.
例えば、著作権保護方式をソフトウェアで実現する場合には、ソフトウェアの解析や、不正に処理方式を改ざんされたプログラムの実行が、困難な環境にプログラムをロードして実行することが要求されるため、プログラムローダはセキュアメモリにプログラムをロードする必要がある。上述のようにプロセッサ内部に配置されているRAMにプログラムをロードすると、RAMとプロセッサの演算器との間のデータ送信路であるバスがプロセッサ内部に物理的に隠蔽できるので、プロセッサ外部からのプログラム解析行為や改ざん行為への耐性を高くすることができる。すなわち、秘密にする必要があるアルゴリズムが実装されたプログラムは、プロセッサ内部に備えられる保護されたRAMにロードして実行される仕組みとすることで、該プログラムの暴露、及び改ざんの危険性を極小化できる。
ところで、上述したセキュアメモリは、暗号化されたプログラムを復号するにあたって、復号化がなされたプログラムの一時的な格納先として用いられる場合がある。そして、コンピュータシステムは、かかる格納先に存在するプログラムが、正当なものであるとして、プロセッサによる実行に供する。ここで、悪意をもった者が、ロード先アドレスを不当に書き換えた場合を想定する。この場合、プログラムローダは改ざんされたロード先アドレスに従ってプログラムをセキュア領域にロードし、プロセッサは、このセキュア領域内のプログラムを実行しようとする。しかし、かかるプログラムは、悪意をもった者が、ロード先アドレスを書き換えることにより、セキュア領域にロードされたものなので、これをプロセッサが実行しようとすると、システムが例外動作を起こすことがある。この場合、第3者はシステムに対する攻撃の糸口をつかむことになる。 By the way, the above-described secure memory may be used as a temporary storage destination of the decrypted program when decrypting the encrypted program. Then, the computer system assumes that the program existing in the storage destination is valid and uses it for execution by the processor. Here, it is assumed that a malicious person rewrites the load destination address illegally. In this case, the program loader loads the program into the secure area according to the altered load destination address, and the processor tries to execute the program in the secure area. However, since such a program is loaded into the secure area by a malicious person rewriting the load destination address, the system may cause an exceptional operation when the processor tries to execute the program. In this case, the third party gains a clue to attacking the system.
また、セキュア領域を設けていたとしても、プログラムによっては、セキュア領域以外のメモリ空間(通常メモリ)にロードされることがある。そのように通常メモリにロードされたプログラムが存在する場合、そのプログラムが、果たして、セキュア領域に格納する必要がないため、通常メモリにロードされたのか、又は、悪意をもった者によりロード先アドレスが不当に改ざんされたため、通常メモリにロードされたものなのか、区別がつかない。もし後者のロードを認めるのなら、プログラムに対するリバース行為が容認されるため、セキュア領域をもっていることの意義が、ほとんど失われる。 Even if a secure area is provided, some programs may be loaded into a memory space (normal memory) other than the secure area. If there is such a program loaded in the normal memory, the program does not need to be stored in the secure area, so it is loaded in the normal memory or a load destination address by a malicious person. Since it has been tampered with, it cannot be distinguished whether it was normally loaded into memory. If the latter loading is permitted, the reverse act on the program is permitted, so the significance of having a secure area is almost lost.
本発明の目的は、セキュア領域の格納内容の信頼性を高めて、悪意をもった者に不正の糸口を与えることがないプログラムローダを提供すること、及び、悪意をもった者により改ざんがされたプログラムが、通常メモリにロードされることを防止するプログラムローダを提供することである。 An object of the present invention is to provide a program loader that increases the reliability of the contents stored in the secure area and does not give an illegal clue to a malicious person, and has been altered by a malicious person. It is to provide a program loader that prevents a stored program from being normally loaded into memory.
上記課題を解決するために、本発明は、ロード対象であるプログラムをそのロード先情報に従ってメモリ上にロードするプログラムローダであって、ロード先情報を、前記プログラムが記録されている記録媒体から取得する取得手段と、前記ロード先情報に対する改竄の有無を検証する検証手段と、プログラムのロードを実行するロード手段と、を備え、ロード先情報は、前記メモリ上のアドレス空間のうち、プログラムの実行イメージが占めるべきメモリ領域を示し、前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、前記認証子は、改ざんがないとの仮定下において、プログラムに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、前記認証子が算出された後、ユーザへのプログラム供給の前段階において、前記プログラムは、先頭から予め決められたオフセットで特定されるロードアドレス演算対象領域のデータを、当該データとそのロード先情報とを可逆演算することにより得られる演算結果に置き換えられており、改ざんの有無の検証は、プログラムを実行しようとする段階において、前記ロード対象であるプログラムにおける前記ロードアドレス演算対象領域のデータを、当該データと前記ロード先情報との前記可逆演算の逆演算を行うことにより得られる演算結果に置き換え、置換後のプログラムに固有な値を算出して、算出された値と前記認証子とを比較することでなされ、前記ロード手段は、前記検証により、改竄が無いことが判明した場合、前記ロード先情報に示されるメモリ領域に、プログラムの実行イメージを生成して、実行に供することでロードを行うことを特徴とするプログラムローダである。 In order to solve the above-described problems, the present invention provides a program loader that loads a program to be loaded onto a memory according to the load destination information, and obtains the load destination information from a recording medium on which the program is recorded. Obtaining means, verifying means for verifying whether or not the load destination information has been tampered with, and load means for executing program loading, wherein the load destination information is an execution of the program in the address space on the memory. The memory area to be occupied by the image is indicated, and the program to be loaded is recorded on a recording medium in the form of a load object, and the load object includes the program, the load destination information, and an authenticator, and the authentication The child is a value that is unique to the program under the assumption that it has not been tampered with. Is calculated in advance before the program supply, and after the authenticator is calculated, in the previous stage of program supply to the user, the program is specified by a load address specified by a predetermined offset from the beginning. The data in the calculation target area has been replaced with a calculation result obtained by performing a reversible calculation on the data and its load destination information, and whether or not tampering has been verified is the load target at the stage of executing the program. The data in the load address calculation target area in the program is replaced with a calculation result obtained by performing the reverse operation of the reversible calculation of the data and the load destination information, and a value unique to the replaced program is calculated. and, made by comparing the calculated value with the said authenticator, said loading means, before The verification, if it is found to be tampered absence, in the memory area indicated in the load destination information, and generates an executable image of the program, a program loader, characterized in that to load by subjecting the run.
本発明は、上記の構成を備えることにより、ロード先情報に対する改ざんの有無を検証するので、改ざんの存在が判明すれば、かかるプログラムがロードされたセキュア領域を無効化することにより、あるいは、かかるプログラムのロードを行わないことにより、プロセッサによる当該プログラムの実行を回避することができる。これにより、不正行為の糸口を与えるような、プログラム実行を未然に防止することができる。すなわち、セキュア領域の格納内容の信頼性を高めることができ、システムの安定性を高めることができる。 Since the present invention verifies whether or not the load destination information has been tampered with by having the above configuration, if the existence of tampering is found, the secure area loaded with such a program is invalidated or such By not loading the program, execution of the program by the processor can be avoided. As a result, it is possible to prevent the execution of the program so as to give a clue to fraud. That is, the reliability of the contents stored in the secure area can be improved, and the stability of the system can be improved.
また、ロード先情報に対する改ざんの有無を検証するので、セキュア領域以外の通常メモリにプログラムがロードされようとしている場合、セキュア領域に格納する必要がないため、通常メモリにロードされたのか、又は、悪意をもった者により不当に改ざんされたため、通常メモリにロードされたものなのかの区別がつき、後者のロードをとりやめることができる。これによりプログラムが通常メモリにロードされることによるリバース行為を未然防止することができる。 In addition, since it is verified whether or not the load destination information has been tampered with, if the program is going to be loaded into a normal memory other than the secure area, it is not necessary to store the program in the secure area. Since it has been tampered with by a malicious person, it can be distinguished whether it was normally loaded into memory, and the latter load can be canceled. As a result, it is possible to prevent a reverse action due to the program being loaded into the normal memory.
ここで、ロード先情報に対する改ざんを検証しようとすると、別の問題が浮上する。それは、ハッシュアルゴリズムの実行など、余分な処理がロード時に必要になるので、ユーザによるプログラム起動指示から、実際にプログラムが起動するまでの期間が間延びし、レスポンスが低下するという問題である。かかる問題を解消するには、前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、前記認証子は、改ざんがないとの仮定下において、プログラム及びそのロード先情報の組合せに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、改ざんの有無の検証は、プログラムを実行しようとする段階において、前記ロード対象であるプログラム及びそのロード先情報の組合せに固有な値を算出して、算出された値と前記認証子とを比較することでなされる、とすることが望ましい。 Here, when trying to verify the falsification of the load destination information, another problem arises. This is a problem that since extra processing such as execution of a hash algorithm is required at the time of loading, a period from when the program is instructed by the user until the program is actually started is prolonged, and the response is lowered. In order to solve such a problem, the program to be loaded is recorded on a recording medium in the form of a load object, and the load object includes the program, the load destination information, and an authenticator, and the authenticator Is a value that is unique to the combination of the program and its load destination information under the assumption that there is no alteration, and is calculated in advance before the program is supplied to the user. It is assumed that, in the stage of executing the program, a value unique to the combination of the program to be loaded and the load destination information is calculated, and the calculated value is compared with the authenticator. It is desirable.
ハッシュ値等を認証子として用いてロード先情報に対する改ざんの有無を検証する場合、ロード先領域を示す情報に対する改ざんの有無の検証のための演算処理は、プログラム自体に対する検証のための演算処理と一本化される。これにより、ロード先情報に対する検証処理を追加したとしても、レスポンス低下は発生し得ない。
ここで、前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、前記認証子は、改ざんがないとの仮定下において、プログラムに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、前記認証子が算出された後、ユーザへのプログラム供給の前段階において、前記プログラムは、当該プログラムにおける所定位置のデータを、当該データとそのロード先情報とを可逆演算することにより得られる演算結果に置き換えられており、改ざんの有無の検証は、プログラムを実行しようとする段階において、前記ロード対象であるプログラムにおける前記所定位置のデータを、当該データと前記ロード先情報との前記可逆演算の逆演算を行うことにより得られる演算結果に置き換え、置換後のプログラムに固有な値を算出して、算出された値と前記認証子とを比較することでなされるとしてもよい。
When verifying whether the load destination information has been tampered with using a hash value or the like as an authenticator, the arithmetic processing for verifying whether the information indicating the load destination area has been tampered with is the arithmetic processing for verifying the program itself. It is unified. As a result, even if a verification process for the load destination information is added, response degradation cannot occur.
Here, the program to be loaded is recorded on a recording medium in the form of a load object, and the load object includes the program, the load destination information, and an authenticator, and the authenticator is not falsified. Is a value that is unique to the program, and is calculated in advance in the stage before supplying the program to the user, and after the authentication code is calculated, in the stage before supplying the program to the user, In the program, data at a predetermined position in the program is replaced with a calculation result obtained by performing a reversible calculation of the data and its load destination information. In the stage, the data at the predetermined position in the program to be loaded is By replacing with the calculation result obtained by performing the reverse operation of the reversible calculation with the load destination information, calculating a value unique to the replaced program, and comparing the calculated value with the authenticator It may be done.
これにより、上記と同様の効果に加え、さらに、悪意のある第三者が前記プログラムのフォーマットを知り得たとしても、前記所定位置、及び可逆演算の方法を秘密にしておくことで、正しくロードできるプログラムを作り出すことを困難にさせることができる。
ここで、前記プログラムローダは、前記ロード対象であるプログラムをそのロード先情報に従ってロードした場合に、前記メモリ上において定められているセキュア領域内に収まるか否かを検証する領域検証手段を備え、前記検証手段による検証は、前記ロード対象であるプログラムがセキュア領域内に収まると検証された場合に行われるとしてもよい。
As a result, in addition to the same effects as described above, even if a malicious third party is able to know the format of the program, the predetermined position and the reversible calculation method are kept secret so that the program can be loaded correctly. It can be difficult to create a program that can be used.
Here, the program loader includes an area verification unit that verifies whether or not the program to be loaded fits in a secure area defined on the memory when loaded according to the load destination information. The verification by the verification unit may be performed when it is verified that the program to be loaded falls within the secure area.
前記検証手段による検証は、例えば、信頼性の高いハッシュアルゴリズムを使用したデータ検証処理であり、処理負荷が高く、検証処理対象のデータサイズが大きくなるほど処理コスト面で不利になる。他方、前記領域検証手段による検証は、領域の比較であるので、処理負荷は小さい。このように、通常、前記検証手段による検証よりも前記領域検証手段による検証の方が処理負荷は小さいため、前記領域検証手段による検証を前記検証手段による検証に先駆けて行うことにより、常に前記検証手段による検証を行う必要はないので、処理コストを低減させることができる。 The verification by the verification means is, for example, data verification processing using a highly reliable hash algorithm, and the processing load increases, and the larger the data size of the verification processing target, the more disadvantageous in terms of processing cost. On the other hand, since the verification by the area verification means is a comparison of areas, the processing load is small. As described above, since the processing load of the verification by the region verification unit is usually smaller than the verification by the verification unit, the verification by the region verification unit is always performed prior to the verification by the verification unit. Since it is not necessary to perform verification by means, the processing cost can be reduced.
ここで、前記ロードオブジェクトが、改ざんされたロード先情報を回復するための回復情報を含んでいる場合、前記取得手段は、前記回復情報を用いた算出処理にて、ロード先情報を取得し、ロードオブジェクトが、回復情報を含んでいる場合、前記逆演算の対象となるのは、前記算出により得られたロード先情報であるとしてもよい。
これにより、前記検証手段は、回復されたロード先情報を用いて、改めてプログラムを再検証し、検証結果が正常であれば、再ロード処理の簡略化が可能となるので、ロード処理の効率化を図ることができる。
Here, when the load object includes recovery information for recovering the falsified load destination information, the acquisition means acquires the load destination information in a calculation process using the recovery information, When the load object includes recovery information, the target of the reverse operation may be the load destination information obtained by the calculation.
As a result, the verification unit re-verifies the program using the recovered load destination information, and if the verification result is normal, the reload process can be simplified. Can be achieved.
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
<構成>
図1は本発明の実施の形態1に係るプログラムローダ100、プログラムローダ100を備えたプロセッサ110、及びプロセッサ110を備えたデータ処理装置120を示している。
Embodiments of the present invention will be described below with reference to the drawings.
(Embodiment 1)
<Configuration>
FIG. 1 shows a
データ処理装置120は、プロセッサ110、通常RAM121、及び入出力部122を含んで構成される。
プロセッサ110は、CPU111、保護RAM112、及びプログラムローダ100を含んで構成される。
CPU111は、保護RAM112やプロセッサ110外部に接続される通常RAM121にロードされているプログラムコード及びデータをフェッチしてプログラムを実行する。
The data processing device 120 includes a
The
The
保護RAM112とは、何らかの保護的な仕組みが施されているRAMをいい、保護すべきプログラムがロードされるRAMである。保護的な仕組みは、具体的には、RAM全体を暗号化して、実際に使用するときに復号化するというソフトウェア的なものと、メモリ自体にアクセスできないようにバスを遮断するというハードウェア的なものが代表的であるが、どのような方法を用いて実現してもよい。本実施の形態では、ハードウェア的な実装として、例えば、バスにスイッチを設け、改ざんはないと検証された場合に、スイッチによりバスの線をつなぎ、CPU111が保護RAM112にアクセスできるようにする。ここで、保護すべきプログラムとは、機密度の高いプログラムであり、具体的には、権利情報、及び鍵情報を含んでいるプログラムである。あるいはリッチコンテンツであってもよい。保護RAM112は、保護RAM112上のデータがプロセッサ外部に流れないように、CPU111やプログラムローダ100とは内部バスで接続される形態が望ましい。このようにプロセッサ110は、保護されたプログラム実行環境を提供する。
The
プログラムローダ100は、ロードアドレス検証部101、実行イメージ検証部102、及びロード処理部103を含んで構成される。
ロードアドレス検証部101は、ロード対象であるプログラムのロード先として指定されたロードアドレス空間が保護RAM112に割り当てられているアドレス空間に収まっているか否かを検証する機能を有する。この機能により、ロードアドレスが誤って保護RAM以外の領域に指定されている場合に、秘匿性の高いプログラムを保護RAM112以外のRAMに転送してしまうことを防ぐことができる。ここでロードアドレス空間とは、プログラムをロードする先頭アドレスから末尾アドレスまでの領域を指し、ロードアドレス及びロードサイズから求まる。
The
The load
実行イメージ検証部102は、ロード対象であるプログラム、ロードアドレス、及びロードサイズの少なくとも何れかが不正に改ざんされているか否かを検証する機能を有する。具体的な検証方法については後述する。この機能によって、意図しない不正な処理を行うプログラムを実行してしまうことを防ぐことができる。改ざんの検証は、例えば、ハッシュ値生成アルゴリズムであるSHA−1アルゴリズムや、共通鍵ブロック暗号アルゴリズムのCBCモードを使用したMAC生成アルゴリズムを利用して実施される。
The execution
ロード処理部103は、ロードアドレス検証部による検証結果が正常であった場合に、通常RAM121に配置されたロード対象のプログラムを復号化しつつ、指定されたアドレス空間(例えば、保護RAM112)にロードする機能を有する。また、実行イメージ検証部102によりプログラム、ロードアドレス、及びロードサイズの何れかが不正に改ざんされていると検証された場合、保護RAM112上にロードされたプログラムが実行されないよう無効化処理を施す。無効化処理は、例えば、ロードされたプログラムを無効にしたり、保護RAM112自体を無効にしたりする処理である。保護RAM112自体を無効にするには、例えばバスを遮断し、CPU111からアクセスできないようにする。
When the verification result by the load address verification unit is normal, the
通常RAM121は、保護RAM112とは異なり、何らかの保護の仕組みが施されていないRAMである。通常RAM121には、ロード対象オブジェクトが格納されるほか、特に保護する必要のないプログラムコード及びデータがロードされる。
入出力部122は、データ処理装置120外部に接続される各種装置とのデータ入出力を制御する。データ処理装置120に接続される装置としては、例えば、メモリカード140やハードディスク(HDD)141のような記憶媒体や、通信回線142、及び受信器143のようなデータ送受信機能を備える機器がある。入出力部122はデータ処理装置120で実行するロード対象オブジェクトを装置外部から受信(ダウンロード)して、通常RAM121に格納する。通常RAM121に格納されたロード対象オブジェクにおけるプログラムは、プログラムローダ100によって保護RAM112上にロードされるので、プロセッサ110は前記プログラムを保護された実行環境で実行できる。
Unlike the
The input /
<アドレスマップ>
図2はCPU111から見えるメモリ空間アドレスマップの一例を示している。この例では、0x00000000〜0x00FFFFFFにROM空間201、0x20000000〜0x200FFFFFに保護RAM空間202、0x80000000〜0x8FFFFFFFに通常RAM空間203、及び0xE0000000〜0xEFFFFFFFにプロセッサ110に接続される各種デバイスのI/Oレジスタ空間204が割り当てられている。プログラムローダ100では、ロードアドレス検証部101がロードアドレス302とロードするプログラムのサイズであるロードサイズ303とを基にロードアドレス空間を算出し、ロードアドレス空間が保護RAM空間202に収まっているか否かを検証し、検証結果が肯定的な場合に、ロード処理部103がプログラムのロードを実施するので、保護すべきプログラムが保護されていない通常RAM空間へロードされてしまう危険性が無い。
<Address map>
FIG. 2 shows an example of a memory space address map that can be seen from the
<データ構造>
図3は、本実施の形態におけるロード対象オブジェクトのフォーマットの一例を示している。
ロード対象オブジェクト300は、ヘッダ情報304と実行イメージ305とが結合されて構成される。
<Data structure>
FIG. 3 shows an example of the format of the load target object in the present embodiment.
The load target object 300 is configured by combining header information 304 and an
ヘッダ情報304は、実行イメージ認証子301、ロードアドレス302、及びロードサイズ303を含んで構成される。
実行イメージ認証子301は、少なくともロードアドレス302、ロードサイズ303、及び実行イメージ305を含むデータに対して、ハッシュアルゴリズムを適用して生成された認証用データである。
The header information 304 includes an
The
実行イメージ305は、プログラムのコード及びデータで構成される。実行イメージ305は、暗号化される(以下、暗号化された実行イメージ305を実行イメージ305aと表記する)。また、実行イメージ認証子301の生成において、ロードアドレス302、ロードアドレス303、及び実行イメージ305は図示するように連続して配置していることが好ましいが、必ずしもその限りではない。
The
<実行イメージ検証部102による改ざん検出方法>
ここでは、実行イメージ検証部102が、具体的にどのように、実行イメージ及びロードアドレスの改ざんの有無を検証するかを説明する。実行イメージ検証部102は、ロードアドレス302、ロードサイズ303、及び保護RAM112上にロードされた実行イメージ305を含むデータに対して、実行イメージ認証子301の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値を実行イメージ認証子301と比較し、ロードアドレス302、ロードサイズ303、及び実行イメージ305の正当性を検証する。生成したハッシュ値が一致する場合には正当であると検証される。上述したように実行イメージ認証子301は、少なくともロードアドレス302、ロードサイズ303、及び実行イメージ305を含むデータに対して、ハッシュアルゴリズムを適用して生成された認証用データであるので、ロードアドレス302、ロードサイズ303、及び実行イメージ305の何れかが改ざんされていれば、実行イメージ認証子301とは異なるハッシュ値が算出される。したがって、一度の検証でロードアドレス302、ロードサイズ303、及び実行イメージ305に対する改ざんの有無を検出することができる。
<Falsification Detection Method by Execution
Here, a specific description will be given of how the execution
<処理フロー>
図4はロード対象となる実行イメージ305aを保護RAM112へロードする場合の処理フローを示している。まず、入出力部122は通常RAM121にロード対象オブジェクトを構成する実行イメージ305aと、ヘッダ情報304とを格納する(ステップS401)。ロードアドレス検証部101は、ロードアドレス302とロードサイズ303とから算出されるロードアドレス空間が保護RAMアドレス空間内に収まっているか否かを検証する(ステップS402)。検証結果が異常の場合は(ステップS403でNo)、ロードせずに、処理を終了する。検証結果が正常の場合は(ステップS403でYes)、ロード処理部103は、通常RAM上の実行イメージ305aを復号化しながら保護RAM112上にロードする(ステップS404)。次に、実行イメージ検証部102は、前記ロードアドレス302、ロードサイズ303、及び保護RAM112上にロードされた実行イメージ305を含むデータに対して、前記実行イメージ認証子301の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値を実行イメージ認証子301と比較し、実行イメージ305、ロードアドレス302、及びロードサイズ303の正当性を検証する(ステップS405)。検証結果が異常の場合は(ステップS406でNo)、ロード処理部103はロードした実行イメージを実行されないよう無効化処理を施す。(ステップS408)。検証結果が正常の場合は(ステップS406でYes)、プログラムローダ100はロード処理を正常終了し、ロードした実行イメージ305に制御を移す(ステップS407)。
<Processing flow>
FIG. 4 shows a processing flow when loading the execution image 305a to be loaded into the
本実施の形態によると、ロードアドレス及びロードサイズの正当性検証が実行イメージの検証に包含されるかたちで実施できるので、改ざんを検証するための処理コストを最小限にできるという有利な効果がある。
(実施の形態2)
本実施の形態は、実施の形態1とは異なる方式でロード対象オブジェクトの正当性を検証する実施の形態である。以下に、実施の形態1との相違点であるロード対象オブジェクトのフォーマット、実行イメージ検証部による改ざん検出方法、及びロード処理フローについて説明する。
According to the present embodiment, since the validity verification of the load address and the load size can be performed in the form of being included in the verification of the execution image, there is an advantageous effect that the processing cost for verifying tampering can be minimized. .
(Embodiment 2)
The present embodiment is an embodiment in which the validity of the load target object is verified by a method different from that of the first embodiment. Hereinafter, the format of the load target object, the alteration detection method by the execution image verification unit, and the load processing flow, which are the differences from the first embodiment, will be described.
<データ構造>
図5は、本実施の形態におけるロード対象オブジェクトのフォーマットの一例を示している。
ロード対象オブジェクト500は、ヘッダ情報504と実行イメージ505とが結合されている。
<Data structure>
FIG. 5 shows an example of the format of the load target object in this embodiment.
In the load target object 500, header information 504 and an
ヘッダ情報504は、少なくとも実行イメージ認証子501、ロードアドレス302、及びロードサイズ303とで構成される。ヘッダ情報504を構成する各データの順序についての制約は無い。
実行イメージ認証子501は、実行イメージ505を含むデータに対してハッシュアルゴリズムを適用して生成した認証用データである。
The header information 504 includes at least an
The
実行イメージ505は、プログラムのコード及びデータで構成される。実行イメージ認証子501が生成された後に、実行イメージ505の先頭から予め決められたオフセット506の位置にあるロードアドレス演算対象領域507のデータは、所定の値に置換される。ここで、所定の値とは、予め決められた演算方法を用いて、ロードアドレス演算対象領域507のデータとロードアドレス302の値とを演算して得られた結果である。また、前記演算方法とは、可逆性を有する演算方法であり、ここでは排他的論理和とする。実行イメージ505は、前記置換処理をした後に暗号化される(以下、暗号化された実行イメージ505を実行イメージ505aと表記する)。
The
<構成>
本実施の形態にかかるプログラムローダ100aは、実施の形態1に係る実行イメージ検証部102の代わりに実行イメージ検証部102aを含んで構成される。本実施の形態に係る実行イメージ検証部102aは、実施の形態1に係る実行イメージ検証部102と同様に、ロード対象プログラム、及びロードアドレスの少なくとも何れかが不正に改ざんされているか否かを検証する機能を有するが、その検証方法が実行イメージ検証部102とは異なる。実行イメージ検証部102aは、保護RAM112上にロードされた実行イメージ505の先頭から予め決められたオフセット506の位置にあるデータを、所定の値に置換する。ここで、所定の値とは予め決められた演算方法を用いて、前記位置にあるデータとロードアドレス302の値とを演算して得られる結果である。また、前記演算とは、図5で説明した演算方法の逆演算であり、ここでは排他的論理和となる。引き続き、実行イメージ検証部102aは、前記置換処理を施した保護RAM112上の実行イメージ505に対して、実行イメージ認証子501の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値と実行イメージ認証子501とを比較し、正当性を検証する。
<Configuration>
The program loader 100a according to the present embodiment includes an execution
実行イメージ505におけるロードアドレス演算対象領域507のデータは、当該データとロードアドレス302の値とを演算して得られた結果に置換されているので、ロードアドレス302及び実行イメージ505の何れかが改ざんされていれば、実行イメージ認証子501とは異なるハッシュ値が算出される。したがって、実行イメージ505に対する一度の検証でロードアドレス302及び実行イメージ505に対する改ざんの有無を検出することができる。つまり、本実施の形態では、正しいロードアドレス302と実行イメージ505とが揃わなくては、正しい実行イメージ認証子501は得られないのでロードアドレス302又は実行イメージ505のいずれかに改竄があったことを検出することができる。すなわち、ロードアドレス302を改めて検証しなくともロードアドレス302に改竄があったことを検証することができる。
Since the data in the load address
<処理フロー>
図6はロード対象となる実行イメージ505aを保護RAM112へロードする場合の処理フローを示している。まず、入出力部122は、通常RAM121にロード対象オブジェクトを構成する実行イメージ505aと、ヘッダ情報504とを格納する(ステップS601)。ロードアドレス検証部101は、ロードアドレス302とロードサイズ303とから算出されるロードアドレス空間が保護RAM112のアドレス空間内に収まっているか否かを検証する(ステップS602)。検証結果が異常の場合は(ステップS603でNo)、ロードせずに、処理を終了する。検証結果が正常の場合は(ステップS603でYes)、ロード処理部103は、通常RAM121上の実行イメージ505aを復号化しながら保護RAM112上にロードする(ステップS604)。次に、実行イメージ検証部102aは、保護RAM112上にロードされた実行イメージ505の先頭から予め決められたオフセット506の位置にあるデータと、ロードアドレス302の値との排他的論理和を演算し、前記位置にあるデータを演算結果に置換する(ステップS605)。引き続き、実行イメージ検証部102aは、前記置換処理を施した保護RAM112上の実行イメージ505に対して、前記実行イメージ認証子501の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値と実行イメージ認証子501とを比較し、正当性を検証する(ステップS606)。検証結果が異常の場合は、ロード処理部103はロードした実行イメージが実行されないよう無効化処理を施す(ステップS609)。検証結果が正常の場合、プログラムローダ100aはロード処理を正常終了し、ロードした実行イメージ505に制御を移す(ステップS608)。
<Processing flow>
FIG. 6 shows a processing flow when loading the
<ロード対象オブジェクトの作成>
図7は本実施の形態で使用するロード対象オブジェクトの作成過程を説明する図である。実行イメージ705bに対してハッシュ生成処理721を施して得られるハッシュ値を実行イメージ認証子501とする。次に、実行イメージ705bの先頭からのオフセット506の位置にあるロードアドレス演算対象領域711のデータ702に対して、演算処理722を用いてロードアドレス302と演算し、得られた結果(演算済みデータ702a)を前記ロードアドレス演算対象領域711のデータ702と置換する。ここで演算処理722は可逆性を有する演算であり、例えば排他的論理和や加算(または減算)が相当する。また、それら以外のさらに複雑なアルゴリズムであってもよい。次に、前記演算済みデータ702aに置換した後の実行イメージ705に対して、暗号化723を施して、暗号化済み実行イメージ705aを得る。最後に、実行イメージ認証子501、ロードアドレス302、及びロードサイズを少なくとも含むヘッダ情報704を構成して、当該ヘッダ情報704と暗号化済み実行イメージ705aとを結合したものをロード対象オブジェクトとする。
<Create load object>
FIG. 7 is a diagram for explaining a process of creating a load target object used in this embodiment. A hash value obtained by applying the
<ロード対象オブジェクトの正当性検証>
図8は本実施の形態で使用するロード対象オブジェクトの正当性検証過程を説明する図である。まず、暗号化済み実行イメージ505aに対して復号化821を実施して、実行イメージ505を得る。次に、実行イメージ505の先頭からのオフセット506の位置にあるロードアドレス演算対象領域711のデータ802aに対して、演算処理822を用いてロードアドレス302と演算し、得られた結果(演算済みデータ802)を前記ロードアドレス演算対象領域711のデータ802aと置換する。ここで演算処理822は、演算処理722の逆演算であり、演算処理722が排他的論理和の場合は排他的論理和、演算処理722が加算の場合は減算である。次に、前記置換処理を実施した後の実行イメージ505bに対して、ハッシュ生成処理823を実施し、その結果得られるハッシュ値を実行イメージ認証子801とする。そして、前記得られた実行イメージ認証子801と、ヘッダ情報504に含まれる実行イメージ認証子501とを比較し、それらが一致した場合にはロードアドレス302、及び実行イメージが正しいものであると判定する。
<Validity verification of load target object>
FIG. 8 is a diagram for explaining the validity verification process of the load target object used in the present embodiment. First,
本実施の形態によると、ロードアドレスの正当性検証が実行イメージの検証に包含されるかたちで実施できるので、改ざんを検証するための処理コストを最小限にできるという有利な効果がある。また、オフセットの値、及びロードアドレス演算対象領域に施す演算方法を秘密にしておくことで、悪意ある第3者がロード対象オブジェクトのフォーマットを知り得たとしても、正しくロードできるロード対象オブジェクトを作り出すことを困難にするという有利な効果がある。 According to the present embodiment, the validity verification of the load address can be performed in the form of being included in the verification of the execution image, so that there is an advantageous effect that the processing cost for verifying tampering can be minimized. Also, by keeping the offset value and the calculation method applied to the load address calculation target area secret, even if a malicious third party knows the format of the load target object, a load target object that can be loaded correctly is created. It has the beneficial effect of making it difficult.
つまり、不正な第3者がフォーマットを知っている場合、ロード対象オブジェクトから実行イメージ505aの部分だけを取り出し、ロードアドレス検証部のない他の不正な装置で動作させるような攻撃を行うことが考えられる。しかし、本実施の形態では、ロードアドレス検証部が、正しいロードアドレス302を用いてロードアドレス演算対象領域のデータに演算を加えなくては正しく動作する実行イメージ505aを復元できない。そのため、不正な第3者は、上記のような攻撃を行ったとしても、他の装置でロード対象オブジェクトを正しく動作させることはできない。
In other words, when an unauthorized third party knows the format, it is considered that an attack is performed in which only the portion of the
(実施の形態3)
本実施の形態は、ロード対象オブジェクトを構成するヘッダ情報に含まれるロードアドレス回復情報を用いて、改ざんされたロードアドレスを回復する実施の形態である。
<構成>
図9は、本発明の実施の形態によるプログラムローダ100b、プログラムローダを備えたプロセッサ110b、及びプロセッサを備えたデータ処理装置120bを示している。
(Embodiment 3)
The present embodiment is an embodiment for recovering a falsified load address by using load address recovery information included in header information constituting the load target object.
<Configuration>
FIG. 9 shows a
プログラムローダ100bは、ロードアドレス検証部101、実行イメージ検証部102a、ロード処理部103、及びロードアドレス回復部104を含んで構成される。図1とはプログラムローダ100bがロードアドレス回復部104を含む点、及び実行イメージ検証部102の代わりに実行イメージ検証部102aを含む点で異なる。
ロードアドレス回復部104は、ロード対象オブジェクトにおけるロードアドレスが不正に改ざんされていた場合に、正しいロードアドレスを再計算する機能を有する。
The
The load
プログラムローダ100bは、上記説明したロードアドレス検証部101、実行イメージ検証部102a、ロード処理部103、及びロードアドレス回復部104の機能を使用して、通常RAM121に配置されたロード対象オブジェクトにおける実行イメージを保護RAM112に確実にロードする。また、改ざんされたロードアドレスを持つロード対象オブジェクトに対し、改ざんされたロードアドレスを回復して、回復後のロードアドレスに安全に実行イメージをロードすることを可能とする。
The
<データ構造>
図10は、本実施の形態におけるロード対象オブジェクトのフォーマットの一例を示している。ロード対象オブジェクト1000は、ヘッダ情報1004と実行イメージ505とが結合されている。ヘッダ情報1004は、実行イメージ認証子501、ロードアドレス302、ロードサイズ303、及びロードアドレス回復情報1001を含んで構成される。
<Data structure>
FIG. 10 shows an example of the format of the load target object in the present embodiment. In the load target object 1000, header information 1004 and an
ロードアドレス回復情報1001は、改ざんされたロードアドレスを回復するのに用いられる情報である。
ヘッダ情報1004にロードアドレス回復情報1001を含む点以外は、図5と同様である。
<処理フロー>
図11は、ロード対象である実行イメージ505aを保護RAM112へロードする場合の処理フローを示している。まず、通常RAM121にロード対象オブジェクトを構成する実行イメージ505aと、ヘッダ情報1004を格納する(ステップS1101)。ロードアドレス検証部101は、ロードアドレス空間が保護RAMアドレス空間内に収まっているか否かを検証する(ステップS1102)。検証結果が異常の場合は(ステップS1103でNo)、ロードせずに、処理を終了する。検証結果が正常の場合は、ロード処理部103は、通常RAM上の実行イメージ505aを復号化しながら保護RAM112上にロードする(ステップS1105)。次に、実行イメージ検証部102aは、保護RAM112上にロードされた実行イメージ505の先頭から予め決められたオフセット506の位置にあるデータと、ロードアドレス302の値との排他的論理和を演算し、前記位置にあるデータを演算結果に置換する(ステップS1106)。引き続き、実行イメージ検証部102aは、前記置換処理を施した保護RAM112上の実行イメージ505に対して、前記実行イメージ認証子501の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値を実行イメージ認証子501と比較し、正当性を検証する(ステップS1107)。検証結果が正常の場合、プログラムローダ100bはロード処理を正常終了し、ロードした実行イメージに制御を移す(ステップS1109)。検証結果が異常の場合は、ロードアドレスを回復済みであるかを判定し、ロードアドレスが回復済みの場合、ロード処理部103はロードした実行イメージが実行されないよう無効化処理を施す(ステップS1104)。ロードアドレス状態が回復済みでない場合、ロードアドレス回復部104はロードアドレス回復情報1001を用いて実行イメージ505に埋め込まれたロードアドレスを抽出する(ステップS1111)。ロードアドレス回復部104は、抽出したロードアドレスを用いて実行イメージ505の先頭から予め決められたオフセット506の位置のデータに対して、ロードアドレスとの排他的論理和を演算し、前記位置のデータを演算結果に置換する(ステップS1112)。実行イメージ検証部102bは、実行イメージ認証子501を用いて再度実行イメージ505の正当性を検証する(ステップS1107)。
The load
Except for including the load
<Processing flow>
FIG. 11 shows a processing flow when the
なお、ステップS1106では排他的論理和演算によりデータを置換しているが、実施の形態2と同様、図5で説明した演算方法の逆演算であればよい。
また、ステップS1112で行う演算も排他的論理和に限られるものではなく、図12の説明にて後述する演算方法の逆演算であればよい。
<ロード対象オブジェクトの作成>
図12は、本実施の形態で使用するロード対象オブジェクトの作成過程を説明する図である。実行イメージ1205bに対してハッシュ生成処理721を施して得られるハッシュ値を実行イメージ認証子501とする。次に、実行イメージ1205bの先頭からのオフセット506の位置にあるロードアドレス回復情報1202に対して、演算処理722を用いてロードアドレス302と演算し、得られた結果(演算済みデータ702a)を前記ロードアドレス演算対象領域のデータと置換する。本実施の形態では、ロードアドレス回復情報は、ロードアドレス演算対象領域に配置されるデータ(1202)とする。ここで演算処理722は可逆性を有する演算であり、ここでは排他的論理和とする。また、それら以外のさらに複雑なアルゴリズムであってもよい。次に、前記演算済みデータ702aに置換済みの実行イメージ1205に対して暗号化723を施して、暗号化済み実行イメージ1205aを得る。最後に、実行イメージ認証子501、ロードアドレス302、ロードサイズ、ロードアドレス回復情報を少なくとも含むヘッダ情報1004を構成して、暗号化済み実行イメージ1205aと結合したものをロード対象オブジェクトとする。
In step S1106, data is replaced by exclusive OR operation. However, as in the second embodiment, the reverse operation of the operation method described in FIG.
Further, the operation performed in step S1112 is not limited to exclusive OR, and may be an inverse operation of an operation method described later in the description of FIG.
<Create load object>
FIG. 12 is a diagram for explaining the process of creating the load target object used in the present embodiment. A hash value obtained by applying the
<ロード対象オブジェクトの正当性検証>
図13は、本実施の形態で使用するロード対象オブジェクトの正当性検証過程を説明する図であり、図8とは、ヘッダ情報1004にロードアドレス回復情報を含む点で異なる。実行イメージ認証子801が正当であると判定されると、演算済みデータ802はロードアドレス回復情報と一致することになる。
<Validity verification of load target object>
FIG. 13 is a diagram for explaining the validity verification process of the load target object used in the present embodiment, and is different from FIG. 8 in that the load address recovery information is included in the header information 1004. If it is determined that the
図14は、図13に記載の正当性検証過程において、実行イメージが正当でないと判定された際の処理フローを示す図である。改ざん済みロードアドレス1402を使用した正当性検証過程において、実行イメージ1410のオフセット506の地点に配置されるデータは改ざんされた不正データ1411となる。不正データ1411は、改竄されたロードアドレスを用いて演算処理822がなされたことによって生成された演算済みデータ802である。そのため、不正データ1411をそのまま使って処理を進めても、正しい実行イメージや正しいロードアドレスは得られないので、演算処理822による影響を打ち消してロードアドレス演算対象領域のデータを一度復元した上で、処理を続行する必要がある。かかる不正データ1411に対して、改ざん済みロードアドレス1402を演算処理822の逆演算することで、ロードアドレス演算対象領域のデータを復元することができる。すなわち、演算処理1441によって、不正データ1411が元のロードアドレス演算対象領域711におけるデータと同じデータ(復元データ1421)に戻る。復元後の実行イメージ1420の復元データ1421に対して、ロードアドレス回復情報1001を可逆演算1442し、実行イメージ1430よりロード対象オブジェクトの作成過程の段階で埋め込んだロードアドレス1431を抽出する。抽出したロードアドレス1431を用いて実行イメージ505の先頭から予め決められたオフセット506の位置のデータに対して、ロードアドレスとの可逆演算を行い、前記位置のデータを演算結果に置換する。前記置換後の実行イメージに対して正当性検証を実施する。
FIG. 14 is a diagram illustrating a processing flow when it is determined that the execution image is not valid in the validity verification process illustrated in FIG. 13. In the validity verification process using the altered
本実施の形態によると、ロードアドレスの改ざん発覚後にロードアドレス回復情報を用いて実行イメージに埋め込まれたロードアドレスを抽出し、抽出したロードアドレスを用いてロードアドレス演算対象領域の実行イメージの復元が可能となる。よって、実行イメージの再検証を実施し、結果が正常であれば、再ロード処理の簡略化が可能となり、ロード処理の効率化を図ることができる。また、ロードアドレス回復情報として、本プログラムローダが持つ固定値情報などと実行イメージとの可逆演算を実施した後、ロードアドレス回復情報として使用することで、実行イメージ内のデータをそのままヘッダ情報に流出する必要がなくなり、安全性を向上させることができる。 According to the present embodiment, the load address embedded in the execution image is extracted using the load address recovery information after detection of alteration of the load address, and the execution image of the load address calculation target area is restored using the extracted load address. It becomes possible. Therefore, if the execution image is re-verified and the result is normal, the reloading process can be simplified and the efficiency of the loading process can be improved. Also, as load address recovery information, after executing a reversible operation between the fixed value information etc. of this program loader and the execution image, and using it as load address recovery information, the data in the execution image is leaked to the header information as it is. It is no longer necessary to improve the safety.
(変形例1)
<構成>
プログラムローダ100は、ロードアドレス検証部101c、実行イメージ検証部102c、及びロード処理部103を含む。
(Modification 1)
<Configuration>
The
ロードアドレス検証部101cは、ロードアドレス検証部101の機能に加え、さらに、ロードアドレスが不正に改ざんされているか否かを検証する機能を有する。これらの機能によって、ロードアドレスが誤って指定されたり、悪意を持って変更されてしまったりして、秘匿性の高いプログラムを保護RAM112以外のRAMに転送してしまうことを防ぐことができる。
In addition to the function of the load
実行イメージ検証部102cは、ロード対象オブジェクトが不正に改ざんされているか否かを検証する機能を有する。この機能によって、意図しない不正な処理を行うプログラムを保護RAM112上にロードして実行してしまうことを防ぐことができる。
図15はロード対象オブジェクトの一例を示している。ヘッダ情報1504は、少なくともロードアドレス認証子1501、実行イメージ認証子1502、ロードアドレス302、及びロードサイズ303を含んで構成される。
The execution image verification unit 102c has a function of verifying whether or not the load target object has been tampered with. With this function, it is possible to prevent a program that performs unintended illegal processing from being loaded on the
FIG. 15 shows an example of the load target object. The header information 1504 includes at least a
ロードアドレス認証子1501は、ロードアドレス302及びロードサイズ303を少なくとも含むデータに対してハッシュアルゴリズムを適用して生成した認証用データである。
実行イメージ認証子1502は、プログラムのコード及びデータで構成される実行イメージ305に対してハッシュアルゴリズムを適用して生成した認証用データである。
The
The
ヘッダ情報1504を構成する各データの順序についての制約は無い。
実行イメージ305は、暗号化されていてもよい。
図16はロード対象である実行イメージ305aを保護RAM112へロードする場合の処理フローを示している。まず、通常RAM121にロード対象である実行イメージ305aと、ヘッダ情報1504とを格納する(ステップS1601)。ロードアドレス検証部101cは、前記ロードアドレス302とロードサイズ303に対して、前記ロードアドレス認証子1501の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値とロードアドレス認証子1501とを比較し、正当性を検証する(ステップS1602)。検証結果が異常の場合は、ロードアドレス302またはロードサイズ303が改ざんされたと判断して、ロードせずに処理を終了する。検証結果が正常の場合、引き続きロードアドレス検証部101cは、ロードアドレス302とロードサイズ303から算出されるロードアドレス空間が保護RAMアドレス空間内に収まっているか否かを検証する(ステップS1604)。検証結果が異常の場合は、ロードせずに処理を終了する。検証結果が正常の場合、ロード処理部103は、実行イメージ305aを復号化しながら保護RAM112上にロードする(ステップS1606)。次に、実行イメージ検証部102cは、保護RAM112上にロードされた実行イメージ305に対して、実行イメージ認証子1502の生成時と同じ方法でハッシュ値を生成し、生成したハッシュ値と実行イメージ認証子1502とを比較し、正当性を検証する(ステップS1607)。検証結果が異常の場合は、ロード処理部103はロードした実行イメージが実行されないよう無効化処理を施す(ステップS1610)。検証結果が正常の場合、プログラムローダ100cはロード処理を正常終了し、ロードした実行イメージ305に制御を移す(ステップS1609)。
There is no restriction on the order of each data constituting the header information 1504.
The
FIG. 16 shows a processing flow when loading the execution image 305a to be loaded into the
(変形例2)
上記の実施の形態では、ロードアドレス検証部101は、ロードアドレス空間が保護RAM空間に収まっていないと検証した場合には、ロードせずに、処理を終了した。これはロード対象のプログラムが保護すべきプログラムであることを前提としているからである。この変形例では、保護RAM空間に収まっていない場合において、もともと保護すべきプログラムではないので保護RAM空間に格納する必要がないのか、又は、悪意をもった者により不当に改ざんされたため、保護RAM空間に収まっていないのかの判断を行う。図17は、ロード対象である実行イメージのロード処理のフローチャートである。ステップS1701、1702における処理は、図4におけるステップS401、402と同様である。ステップS1703において、検証結果が正常か否かを判断し、検証結果が異常の場合は、ステップ1705において、ロード処理部103は、通常RAM上の実行イメージ305aを復号化しながら通常RAM上にロードする。この段階において、検証結果が正常か否かの判断は、実行イメージ305aが保護されるべきものであって保護RAM112にロードされるべきとの仮定のうえでなされている。そのため、実行イメージ305aが、改竄により通常RAM121にロードされるようになった場合と、元から通常RAM121にロードされるべきものである場合との両方で検証結果が異常と判断される。ステップS1706において、ステップS405と同様の検証処理を行う。ステップS1707において、検証結果が正常の場合は、プログラムローダはロード処理を正常終了し、ロードした実行イメージ305に制御を移す。検証結果が異常の場合は、ステップS1709において、ロード処理部はロードした実行イメージを実行されないよう無効化処理を施す。このように、ステップS1706、1707は、ステップS405、406と同じ動作を行うので、ロードアドレスまたはロードサイズに改竄があれば、検証結果は異常となる。
(Modification 2)
In the above embodiment, when the load
以上より、ステップS1703で異常と検証され、かつ、ステップS1707で異常と検証された場合は、ロードアドレス等に改竄があった上で通常RAMにロードされていると判断できる。また、ステップS1703で異常と検証され、かつ、ステップS1707で正常と検証された場合は、ロードアドレス等に改竄はないと判断できるので、ステップS1703の実行イメージが保護RAM用という判断の前提が誤りであり、実行イメージ305aがもともと通常RAM用のプログラムであったと分かる。 As described above, if it is verified in step S1703 that there is an abnormality, and if it is verified in step S1707 that there is an abnormality, it can be determined that the load address has been altered and that it has been loaded into the normal RAM. If it is verified in step S1703 that there is an abnormality and if it is verified in step S1707 that it is normal, it can be determined that the load address or the like has not been tampered with, so the assumption that the execution image in step S1703 is for the protection RAM is incorrect. It can be seen that the execution image 305a was originally a program for a normal RAM.
これにより、プログラムが保護RAMに格納される必要がないため、通常メモリにロードされたのか、又は、悪意をもった者により不当に改ざんされたため、通常メモリにロードされたものなのかの区別がつき、後者のロードをとりやめることができる。また、保護する必要のないプログラムであった場合には、通常RAMにロードされ、改ざん検証の後、正当であればCPU111により実行されることになる。ここでは実施の形態1における図4の変形例について説明したが、図6、11、16においても同様である。
As a result, since the program does not need to be stored in the protection RAM, it can be distinguished whether the program has been loaded into the normal memory or whether the program has been loaded into the normal memory because it has been illegally altered by a malicious person. Then, you can cancel the latter load. If the program does not need to be protected, it is normally loaded into the RAM, and after falsification verification is executed by the
(変形例3)
実施の形態2と3では、復号化された状態の実行イメージ内のロードアドレス演算対象領域にロードアドレスを用いた演算を施しているが、これに限らない。
暗号化された状態での実行イメージ内のロードアドレス演算対象領域にロードアドレスを用いた演算を施してもよい。この場合、ロードアドレス演算対象領域の検証は実行イメージの復号前に行われる。
(Modification 3)
In Embodiments 2 and 3, the calculation using the load address is performed on the load address calculation target area in the execution image in the decrypted state, but the present invention is not limited to this.
An operation using the load address may be performed on the load address operation target area in the execution image in the encrypted state. In this case, the load address calculation target area is verified before the execution image is decoded.
このようにすると、実行イメージの復号化前に改竄の有無を検出できるので、不正な改竄がなされた実行イメージの処理をより早い段階で検出することができる。
(変形例4)
実施の形態2と3の処理手順は、ロードアドレス演算対象領域507のデータを復元してからハッシュ生成を行うという順序となっているが、逆にしても良い。
In this way, since the presence / absence of falsification can be detected before the execution image is decoded, it is possible to detect the processing of the execution image that has been falsified illegally at an earlier stage.
(Modification 4)
The processing procedures of the second and third embodiments are in the order of restoring the data in the load address
この場合、実行イメージ認証子は、ロードアドレス演算対象領域711のデータに演算が施された状態での実行イメージのハッシュ値となる。
(変形例5)
実施の形態1から3では、ロードアドレスがセキュア領域に収まるかどうかを確認しているが、逆に通常領域内に収まるかどうかを確認する構成としてもよい。
In this case, the execution image authenticator is a hash value of the execution image in a state where the calculation is performed on the data in the load address
(Modification 5)
In the first to third embodiments, it is confirmed whether or not the load address fits within the secure area, but conversely, it may be configured to confirm whether or not it fits within the normal area.
これにより、例えば、セキュア領域内のデータを外部に出力するよう改竄された通常プログラムを、セキュア領域に読み込ませるような攻撃を防ぐことができる。
(変形例6)
また、上述したプログラムの生成方法における特徴あるステップを実行する装置も本発明に含まれる。
As a result, for example, it is possible to prevent an attack that causes a normal program altered to output data in the secure area to be read out to the secure area.
(Modification 6)
An apparatus for executing characteristic steps in the above-described program generation method is also included in the present invention.
(変形例7)
実施の形態2、3では、ロードアドレス演算対象領域との演算にロードアドレスを用いたが、ロードアドレス演算対象領域に対して、ロードアドレスに替えてロードサイズを用いた演算を施すことで、ロードサイズと実装イメージの検証を一度に行うとしてもよい。
(Modification 7)
In the second and third embodiments, the load address is used for the calculation with the load address calculation target area, but the load address calculation target area is loaded with the load size instead of the load address. The size and mounting image may be verified at once.
また、ロードアドレス演算対象領域に対して、ロードサイズとロードアドレスとの両方を用いた演算を施すことで、ロードサイズ、ロードアドレス、及び実行イメージのいずれかに改ざんがあるかを一度で検証できるようにしてもよい。
(変形例8)
上記の実施の形態1では、ロード処理部103が実行イメージを保護RAM上にロードした後に、実行イメージ検証部102が、実行イメージ認証子301を用いて、ロードした実行イメージの正当性を検証しているが、本変形例は、保護RAM上にロードする前に正当性を検証する場合の実施の形態である。
In addition, by performing an operation using both the load size and the load address for the load address operation target area, it is possible to verify at once whether the load size, the load address, or the execution image has been tampered with. You may do it.
(Modification 8)
In the first embodiment, after the
図18は、ロード対象となる実行イメージ305aを保護RAM112へロードする場合の処理フローを示している。ステップS1801〜S1803は、図4におけるステップS401〜403と同様である。ステップS1803において、検証結果が正常の場合には、ロード処理部は通常RAM121上の実行イメージ305aを復号化しつつ、バッファに格納する(ステップS1804)。検証結果が異常の場合には、処理を終了する。実行イメージ検証部は、実行イメージ認証子301を用いて、復号化した実行イメージ、ロードアドレス及びロードサイズの正当性を検証する(ステップS1805)。検証結果が正常な場合は、ロード処理部は、実行イメージ305を保護RAM112上にロードし(ステップS1807)、ロードした実行イメージ305に制御を移行する(ステップS1808)。検証結果が異常の場合は、ロード処理部は実行イメージ305を保護RAM上にロードせず、処理を終了する。
FIG. 18 shows a processing flow when loading the execution image 305a to be loaded into the
このように、本変形例では、保護RAM上にロードする前に、中間バッファに実行イメージを展開し、バッファに展開された実行イメージの正当性を検証する。そして、実行イメージ検証部による検証の結果、正当性が認められた場合に、ロード処理手段は、実行イメージを保護RAM上にロードし、正当性が認められない場合にはロードしない。
(補足)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
Thus, in this modification, before loading on the protection RAM, the execution image is expanded in the intermediate buffer, and the validity of the execution image expanded in the buffer is verified. As a result of verification by the execution image verification unit, the load processing means loads the execution image onto the protection RAM when the validity is recognized, and does not load when the validity is not recognized.
(Supplement)
Although the present invention has been described based on the above embodiment, it is needless to say that the present invention is not limited to the above embodiment. The following cases are also included in the present invention.
上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。 Specifically, each of the above devices is a computer system including a microprocessor, ROM, RAM, a hard disk unit, a display unit, a keyboard, a mouse, and the like. A computer program is stored in the RAM or hard disk unit. Each device achieves its functions by the microprocessor operating according to the computer program. Here, the computer program is configured by combining a plurality of instruction codes indicating instructions for the computer in order to achieve a predetermined function.
上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。 Part or all of the constituent elements constituting each of the above-described devices may be configured by one system LSI (Large Scale Integration). The system LSI is an ultra-multifunctional LSI manufactured by integrating a plurality of components on a single chip, and specifically, a computer system including a microprocessor, ROM, RAM, and the like. . A computer program is stored in the RAM. The system LSI achieves its functions by the microprocessor operating according to the computer program.
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
In addition, each part of the components constituting each of the above devices may be individually made into one chip, or may be made into one chip so as to include a part or all of them.
Although the system LSI is used here, it may be called IC, LSI, super LSI, or ultra LSI depending on the degree of integration. Further, the method of circuit integration is not limited to LSI's, and implementation using dedicated circuitry or general purpose processors is also possible. An FPGA (Field Programmable Gate Array) that can be programmed after manufacturing the LSI or a reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used.
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
Further, if integrated circuit technology comes out to replace LSI's as a result of the advancement of semiconductor technology or a derivative other technology, it is naturally also possible to carry out function block integration using this technology. Biotechnology can be applied.
Some or all of the constituent elements constituting each of the above devices may be configured as an IC card or a single module that can be attached to and detached from each device. The IC card or the module is a computer system including a microprocessor, a ROM, a RAM, and the like. The IC card or the module may include the super multifunctional LSI described above. The IC card or the module achieves its function by the microprocessor operating according to the computer program. This IC card or this module may have tamper resistance.
本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
The present invention may be the method described above. Further, the present invention may be a computer program that realizes these methods by a computer, or may be a digital signal composed of the computer program.
The present invention also provides a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray Disc). ), Recorded in a semiconductor memory or the like. The digital signal may be recorded on these recording media.
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
In the present invention, the computer program or the digital signal may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, a data broadcast, or the like.
The present invention may be a computer system including a microprocessor and a memory, wherein the memory stores the computer program, and the microprocessor operates according to the computer program.
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
上記実施の形態1では、実行イメージ認証子301は、少なくともロードアドレス302、ロードサイズ303、及び実行イメージ305を含むデータに対して、ハッシュアルゴリズムを適用して生成された認証用データであるとしたが、少なくともロードアドレス302、及び実行イメージ305を含むデータに対して、ハッシュアルゴリズムを適用して生成された認証用データであるとしてもよい。同様に、ロードサイズ303、及び実行イメージ305を含むデータに対して、ハッシュアルゴリズムを適用して生成された認証用データであるとしてもよい。
In addition, the program or the digital signal is recorded on the recording medium and transferred, or the program or the digital signal is transferred via the network or the like, and executed by another independent computer system. It is good.
In the first embodiment, the
上記の実施の形態では、プロセッサ上で動作する基本ソフト(オペレーティングシステム)の存在を省略している。基本ソフトが介在する場合は、プログラムローダの制御・呼出しを基本ソフトが実施する場合もあるし、また、プログラムローダが処理を正常終了した後に、ロードした実行イメージに直接制御を移さずに基本ソフトに一旦制御を戻してからロード済み実行イメージに制御を移す場合もある。また、プログラムローダは、基本ソフトの一部としてソフトウェア実装されていてもよい。その場合、プログラムローダは、プロセッサ内部に備えられるROMに格納されていると、プログラムローダが改ざんされる可能性が無いので安全である。 In the above embodiment, the existence of basic software (operating system) operating on the processor is omitted. When the basic software is involved, the basic software may control and call the program loader, and after the program loader completes processing normally, the basic software does not transfer control directly to the loaded execution image. In some cases, the control is temporarily returned to and then transferred to the loaded execution image. The program loader may be implemented as software as part of the basic software. In that case, if the program loader is stored in a ROM provided in the processor, it is safe because the program loader is not likely to be tampered with.
上記の実施の形態では、ハッシュ値を用いた検証を行い、実行イメージ検証部が生成したハッシュ値が、実行イメージ認証子と同一の場合には正当であるとしたが、デジタル署名を用いた検証を行う場合には、ロードアドレス302、ロードサイズ303、及び実行イメージ305を含むデータにデジタル署名を施して生成された認証子を用いて、デジタル署名検証を行うとしてもよい。デジタル署名検証では、例えば、署名Sと組(r,x)とを次の合同式に代入し、合同式gS≡yrrxmodpを解き、gSが≡yrrxmodpに一致するか否かを検証する。一致する場合は正当である。ここで、r=gkmodpであり、kは乱数である。
In the above embodiment, verification using a hash value is performed, and it is assumed that the hash value generated by the execution image verification unit is the same as the execution image authenticator. However, verification using a digital signature is performed. In the case of performing digital signature verification, digital signature verification may be performed using an authenticator generated by applying a digital signature to data including the
上記の実施の形態では、入出力部122はデータ処理装置120で実行するロード対象オブジェクトを装置外部から受信(ダウンロード)して、通常RAM121に格納するとしたが、データ処理装置120は、ROM123を備えるようにして、予めROM123に格納されているプログラムを保護RAM112にロードして実行する構成としてもよいし、また、EEPROM124を備えるようにして、入出力部122を通じて入力されるプログラムをEEPROMに記憶し、該プログラムを保護RAM112にロードして実行する構成としてもよい。
In the above embodiment, the input /
上記の実施の形態では、実行イメージは暗号化されているとしたが、実行イメージが改ざんされることなく保護RAM112上にロードされることだけが重要な場合、すなわちプログラムに実装しているアルゴリズムは秘密ではないが処理方法やデータの改ざんへの対策が必要な場合は、実行イメージは必ずしも暗号化されている必要はない。
上記の実施の形態3において、上記説明したロードアドレスの回復機能は、本プログラムローダ使用者が回復処理の実施有無を選択することができるようにすることも可能であり、その際には、プログラムのヘッダ情報に回復処理の実行有無選択用のデータを含めてもよいし、ハードウェアに回復処理の実施有無選択用の情報を設定することで実現してもよい。
In the above embodiment, the execution image is encrypted, but when it is only important that the execution image is loaded on the
In the above-described third embodiment, the load address recovery function described above can also enable the user of the program loader to select whether or not to perform recovery processing. The header information may include data for selecting whether or not to perform recovery processing, or may be realized by setting information for selecting whether or not to perform recovery processing in hardware.
上記の実施の形態3において、プログラムのロードを行う前に、ロードアドレス回復情報を用いてロードアドレスを検証することも可能である。
上記の実施の形態3において、プログラムローダは、ロードアドレス回復情報を用いることで、実行イメージに埋め込んだロードアドレスを抽出することが可能となるため、プログラムのヘッダ情報にロードアドレスを含めずともロードを行うことも可能である。すなわち、ロードする際には常に実行イメージの中からロードアドレスを抽出する回復処理を行うことにより、ヘッダ情報にロードアドレスは不要とすることが可能となり、ロードアドレス自体を隠蔽することができる。
In the third embodiment, it is also possible to verify the load address using the load address recovery information before loading the program.
In the third embodiment, since the loader can extract the load address embedded in the execution image by using the load address recovery information, the loader can be loaded without including the load address in the header information of the program. It is also possible to perform. In other words, by performing a recovery process that always extracts the load address from the execution image when loading, it becomes possible to make the load address unnecessary in the header information and to hide the load address itself.
また、ロードアドレスの回復のみを目的とするのであれば、オリジナルの実行イメージの所定領域のデータに対して、ロードアドレスを用いて可逆な演算処理を施したデータをロードアドレス回復情報とするとしてもよい。この場合、上記の所定領域のデータは特に置換しない。このようにすると、所定領域のデータに対して、ロードアドレス回復情報を用いて上記の演算処理の逆演算を行うことで、ロードアドレスを抽出することができる。さらに、実行イメージ中のデータはオリジナルの実行イメージから置換されていないので、オリジナルの実行イメージを復元するための処理(実施の形態3におけるステップS1112に相当)を省くことができる。 In addition, if the purpose is only recovery of the load address, the load address recovery information may be data obtained by performing reversible arithmetic processing using the load address on the data in a predetermined area of the original execution image. Good. In this case, the data in the predetermined area is not particularly replaced. In this way, the load address can be extracted by performing the reverse operation of the above arithmetic processing on the data in the predetermined area using the load address recovery information. Furthermore, since the data in the execution image is not replaced from the original execution image, the process for restoring the original execution image (corresponding to step S1112 in the third embodiment) can be omitted.
上記の実施の形態3において、ロードアドレス回復部は、ロードアドレス回復処理を行うか否かの判定を行うことも可能であり、その場合には、プログラムのヘッダ情報に回復処理を行うか否かの判定のためのフラグを設け、このフラグに基づいて判定するとしてもよい。
上記の実施の形態3において、ロードアドレス回復部は、ロードアドレス回復処理内容のログ出力の実施有無を選択することも可能であり、ログ出力によりユーザに処理内容を通知することができる。この場合には、プログラムのヘッダ情報に出力処理の実施有無選択用のデータを含め、当該データによりログ出力の実施の有無を判定してもよいし、ハードウェアに出力処理の実施有無選択用の情報を設定してもよい。
In the third embodiment, the load address recovery unit can also determine whether or not to perform load address recovery processing. In this case, whether or not to perform recovery processing on the header information of the program. It is also possible to provide a flag for this determination, and to make a determination based on this flag.
In the third embodiment, the load address recovery unit can also select whether or not to execute log output of the load address recovery processing content, and can notify the user of the processing content by log output. In this case, the header information of the program may include data for selecting whether or not to perform output processing, and whether or not log output is performed may be determined based on the data. Information may be set.
上記の実施の形態3において、上記説明したロードアドレスの回復機能は、本プログラムローダが搭載される装置の提供者により回復処理の実施有無が選択されるとすることも可能であり、実施の有無の選択はハードウェアで固定としてもよいし、電気ヒューズを用いて実現してもよい。
上記の図14にて説明した演算処理について、演算処理は可逆演算であればどのような演算を用いてもよく、演算処理822と演算処理1442は別々であってもよい。
In the above-described third embodiment, the load address recovery function described above can be selected by the provider of the apparatus in which the program loader is installed. This selection may be fixed by hardware, or may be realized by using an electric fuse.
Regarding the arithmetic processing described with reference to FIG. 14, any arithmetic operation may be used as long as the arithmetic processing is a reversible arithmetic operation, and the arithmetic processing 822 and the
上記の図14において、抽出したロードアドレス1431とロードされたアドレスを比較し、同一か否かを判定するとしてもよい。同一の場合には、改ざんされていたのは実行イメージであるので、ロード処理部は、ロードされたプログラムが実行できないように処理を施す。同一でない場合は、抽出したロードアドレス1431を用いて実行イメージ505の先頭から予め決められたオフセット506の位置のデータに対して、ロードアドレスとの可逆演算を行い、前記位置のデータを演算結果に置換する。前記置換後の実行イメージに対して正当性検証を実施する。
In FIG. 14 described above, the extracted load address 1431 may be compared with the loaded address to determine whether or not they are the same. In the same case, since the execution image has been altered, the load processing unit performs processing so that the loaded program cannot be executed. If they are not the same, a reversible calculation is performed on the data at the position of the offset 506 determined in advance from the beginning of the
上記の図16において、ロードアドレスを用いた検証処理及び検証結果判定ステップ(ステップS1602、1603)と、ロードアドレス空間と保護RAMアドレス空間との比較による検証処理及び検証結果判定ステップ(ステップS1604、1605)との実施順序は逆転していてもよい。
なお、クレームにおける「ロード先情報」とは、ロード先の決定に用いられる情報を示し、実施の形態におけるロードアドレスとロードサイズのいずれか、もしくは両方を含む。
In FIG. 16, the verification process using the load address and the verification result determination step (steps S1602 and 1603) and the verification process and verification result determination step (steps S1604 and 1605) by comparing the load address space and the protection RAM address space. ) And the execution order may be reversed.
The “load destination information” in the claims indicates information used to determine the load destination, and includes either or both of the load address and the load size in the embodiment.
なお、上述したRAMに対する保護的な仕組みは、仮想アドレス変換機構で保護する方式であってもよいし、CPUで制御する方式であってもよい。仮想アドレス変換機構で保護する方式では、セキュアメモリにアクセスするプログラムは、セキュアメモリの実アドレスを知っているプログラマでなくては作れないようにする。具体的には、仮想アドレス変換機構において、仮想メモリから変換できる実アドレスの範囲を、通常メモリの範囲内のみに限定する。 The above-described protective mechanism for the RAM may be a system that protects with a virtual address translation mechanism, or a system that is controlled by a CPU. In the system protected by the virtual address translation mechanism, a program that accesses the secure memory is made only by a programmer who knows the real address of the secure memory. Specifically, in the virtual address translation mechanism, the range of real addresses that can be translated from the virtual memory is limited to the range of the normal memory.
これにより、仮想アドレスを使って実装されているプログラムは、セキュアメモリにアクセスすることができない。
また、CPUで制御する方式では、CPUに、特権を持ったプログラムのみが切り替えられるセキュアモードと誰でも使える通常モードを用意する。そして、通常モードで動作している時は、CPUはセキュアメモリにアクセスしない、とすることにより保護的な仕組みを実現する。
As a result, a program implemented using a virtual address cannot access the secure memory.
In the system controlled by the CPU, a secure mode in which only privileged programs can be switched and a normal mode that anyone can use are prepared for the CPU. Then, when operating in the normal mode, the CPU does not access the secure memory, thereby realizing a protective mechanism.
なお、実施の形態1から3では、プロセッサ内にプログラムローダと、CPUと保護RAMとが含まれる構成としたが、これに限られるものではない。プログラムローダとCPUと保護RAMとの間で安全にデータのやり取りが行える仕組みが施されていれば、一つのプロセッサとして実現しなくともよい。
また、上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
In the first to third embodiments, the processor includes the program loader, the CPU, and the protection RAM. However, the present invention is not limited to this. As long as a mechanism capable of safely exchanging data among the program loader, the CPU, and the protection RAM is provided, it may not be realized as one processor.
Further, the above embodiment and the above modification examples may be combined.
本発明にかかるプログラムローダは、秘匿性の高いソフトウェアを保護されたメモリ空間にのみロードを実施するため、悪意あるソフトウェア解析の機会を極小化するという効果を有し、保護されるべきソフトウェアを扱う組み込み機器向けプロセッサ等に有用である。 The program loader according to the present invention loads highly confidential software only in a protected memory space, and thus has the effect of minimizing the chance of malicious software analysis, and handles software to be protected. This is useful for processors for embedded devices.
100、100a、100b プログラムローダ
101、101c ロードアドレス検証部
102、102a、102b、102c 実行イメージ検証部
103 ロード処理部
110、110a、110b プロセッサ
111 CPU
112 保護RAM
120、120a、120b データ処理装置
121 通常RAM
122 入出力部
123 ROM
124 EEPROM
140 メモリカード
141 HDD
142 受信器
143 通信回線
100, 100a, 100b
112 Protection RAM
120, 120a, 120b
122 I /
124 EEPROM
140
142 Receiver 143 Communication Line
Claims (13)
ロード先情報を、前記プログラムが記録されている記録媒体から取得する取得手段と、
前記ロード先情報に対する改竄の有無を検証する検証手段と、
プログラムのロードを実行するロード手段と、を備え、
ロード先情報は、前記メモリ上のアドレス空間のうち、プログラムの実行イメージが占めるべきメモリ領域を示し、
前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、
ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、
前記認証子は、
改ざんがないとの仮定下において、プログラムに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、
前記認証子が算出された後、ユーザへのプログラム供給の前段階において、前記プログラムは、先頭から予め決められたオフセットで特定されるロードアドレス演算対象領域のデータを、当該データとそのロード先情報とを可逆演算することにより得られる演算結果に置き換えられており、
改ざんの有無の検証は、
プログラムを実行しようとする段階において、前記ロード対象であるプログラムにおける前記ロードアドレス演算対象領域のデータを、当該データと前記ロード先情報との前記可逆演算の逆演算を行うことにより得られる演算結果に置き換え、置換後のプログラムに固有な値を算出して、算出された値と前記認証子とを比較することでなされ、
前記ロード手段は、前記検証により、改竄が無いことが判明した場合、前記ロード先情報に示されるメモリ領域に、プログラムの実行イメージを生成して、実行に供することでロードを行う
ことを特徴とするプログラムローダ。 A program loader that loads a program to be loaded into memory according to the load destination information,
Acquisition means for acquiring load destination information from a recording medium in which the program is recorded;
Verification means for verifying whether or not the load destination information is falsified;
Loading means for executing loading of the program,
The load destination information indicates a memory area that the execution image of the program should occupy in the address space on the memory,
The program to be loaded is recorded on a recording medium in the form of a load object,
The load object includes the program, the load destination information, and an authenticator,
The authenticator is
Under the assumption that there is no tampering, this is a value that is unique to the program, calculated in advance before the program is supplied to the user,
After the authentication code is calculated, in the previous stage of supplying the program to the user, the program reads the data of the load address calculation target area specified by a predetermined offset from the head, the data and its load destination information. Is replaced with the operation result obtained by reversible operation,
Verification of the presence or absence of tampering
In the stage of executing the program, the data in the load address calculation target area in the load target program is converted into a calculation result obtained by performing the reverse operation of the reversible calculation of the data and the load destination information. Replacing, calculating a value unique to the replaced program, and comparing the calculated value with the authenticator,
When the verification reveals that there is no falsification, the loading means generates a program execution image in the memory area indicated by the load destination information, and loads the program by executing it. Program loader to do.
前記ロード対象であるプログラムをそのロード先情報に従ってロードした場合に、前記メモリ上において定められているセキュア領域内に収まるか否かを検証する領域検証手段を備え、
前記検証手段による検証は、前記ロード対象であるプログラムがセキュア領域内に収まると検証された場合に行われる
ことを特徴とする請求項1記載のプログラムローダ。 The program loader is
An area verification means for verifying whether or not the program to be loaded fits within a secure area defined on the memory when loaded according to the load destination information;
The program loader according to claim 1, wherein the verification by the verification unit is performed when it is verified that the program to be loaded falls within a secure area.
ロードオブジェクトが、回復情報を含んでいる場合、前記逆演算の対象となるのは、前記算出により得られたロード先情報である
ことを特徴とする請求項1記載のプログラムローダ。 When the load object includes recovery information for recovering the altered load destination information, the acquisition means calculates using an exclusive OR of the recovery information and data in the load address calculation target area In the process, get the load destination information,
2. The program loader according to claim 1 , wherein when the load object includes recovery information, the target of the reverse operation is the load destination information obtained by the calculation.
前記取得手段は、
前記フラグが処理を行う旨を示すものである場合に、前記回復情報とロードアドレス演算対象領域のデータとの排他的論理和を用いた算出処理にて、ロード先情報を取得する
ことを特徴とする請求項3記載のプログラムローダ。 The load object includes a flag indicating whether or not the acquisition unit performs a process of acquiring load destination information in a calculation process using an exclusive OR of the recovery information and data of a load address calculation target area. Including
The acquisition means includes
When the flag indicates that processing is to be performed, load destination information is acquired by a calculation process using an exclusive OR of the recovery information and the data of the load address calculation target area. The program loader according to claim 3 .
前記プログラムローダは、
前記フラグがユーザに通知を行う旨を示すものである場合に、前記取得手段による処理の内容をユーザに通知する
ことを特徴とする請求項3記載のプログラムローダ。 The load object includes a flag indicating whether or not to notify the user of the content of processing by the acquisition unit,
The program loader is
4. The program loader according to claim 3 , wherein, when the flag indicates that notification is to be made to the user, the content of processing by the acquisition unit is notified to the user. 5.
前記プログラムのロードアドレス演算対象領域には、前記回復情報を用いて排他的論理和演算を行うと正しい値が得られるよう変換されたロード先情報が埋め込まれており、
前記プログラムローダは、さらに、
前記検証により改ざんがあることが判明した場合、前記回復情報を用いて前記プログラムのロードアドレス演算対象領域に前記排他的論理和演算を行って、ロード先情報を取得するロード先情報回復手段を備え、
前記ロード手段は、前記検証により前記ロードオブジェクトに含まれるロード先情報に対する改ざんがあることが判明した場合、前記ロード先情報回復手段が取得したロード先情報に示されるメモリ領域に、プログラムをロードする
ことを特徴とする請求項1記載のプログラムローダ。 B over de object further includes recovery information for recovering the load destination information has been tampered with,
The load address calculation target area of the program is embedded with load destination information converted so that a correct value can be obtained by performing an exclusive OR operation using the recovery information,
The program loader further includes:
Load location information recovery means for obtaining the load destination information by performing the exclusive OR operation on the load address calculation target area of the program using the recovery information when it is found by the verification ,
The load means loads a program into a memory area indicated by the load destination information acquired by the load destination information recovery means when it is determined by the verification that the load destination information included in the load object is falsified. The program loader according to claim 1.
前記ロード手段は、前記検証により前記ロードオブジェクトに含まれるロード先情報に対する改ざんがあることが判明し、かつ、前記ロード先情報回復手段が取得したロード先情報に改ざんがないことが判明した場合に、前記ロード先情報回復手段が取得したロード先情報に示されるメモリ領域に、プログラムをロードする
ことを特徴とする請求項6記載のプログラムローダ。 The verification unit further verifies whether or not the load destination information acquired by the load destination information recovery unit is falsified,
When the load means has found that the load destination information included in the load object has been falsified by the verification, and the load destination information acquired by the load destination information recovery means has not been falsified. The program loader according to claim 6 , wherein the program is loaded into a memory area indicated by the load destination information acquired by the load destination information recovery means.
前記ロード手段は、
前記領域上のプログラムまたは前記プログラムがロードされた前記メモリ上の領域を無効化して、前記実行に供されないようにする
ことを特徴とする請求項1記載のプログラムローダ。 If it is verified that there has been tampering after the program is loaded,
The loading means includes
The program loader according to claim 1, wherein the program on the area or the area on the memory loaded with the program is invalidated so as not to be used for the execution.
改ざんがないと検証された場合に、ロードされた前記プログラムを実行する実行手段と
を1チップ構造に封入したプロセッサ。 A program loader according to claim 1;
A processor in which execution means for executing the loaded program is enclosed in a one-chip structure when it is verified that there has been no tampering.
前記メモリにプログラムを含むロードオブジェクトを格納する格納手段と、
請求項1に記載のプログラムローダと、
改ざんがないと検証された場合に、ロードされた前記プログラムを実行する実行手段と、
を含んで構成されるデータ処理装置。 Memory,
Storage means for storing a load object including a program in the memory;
A program loader according to claim 1;
Execution means for executing the loaded program when it is verified that there has been no tampering;
A data processing apparatus comprising the above.
ロード先情報を、前記プログラムが記録されている記録媒体から取得する取得ステップと、
前記ロード先情報に対する改竄の有無を検証する検証ステップと、
プログラムのロードを実行するロードステップと、を備え、
ロード先情報は、前記メモリ上のアドレス空間のうち、プログラムの実行イメージが占めるべきメモリ領域を示し、
前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、
ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、
前記認証子は、
改ざんがないとの仮定下において、プログラムに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、
前記認証子が算出された後、ユーザへのプログラム供給の前段階において、前記プログラムは、先頭から予め決められたオフセットで特定されるロードアドレス演算対象領域のデータを、当該データとそのロード先情報とを可逆演算することにより得られる演算結果に置き換えられており、
改ざんの有無の検証は、
プログラムを実行しようとする段階において、前記ロード対象であるプログラムにおける前記ロードアドレス演算対象領域のデータを、当該データと前記ロード先情報との前記可逆演算の逆演算を行うことにより得られる演算結果に置き換え、置換後のプログラムに固有な値を算出して、算出された値と前記認証子とを比較することでなされ、
前記ロードステップは、前記検証により、改竄が無いことが判明した場合、前記ロード先情報に示されるメモリ領域に、プログラムの実行イメージを生成して、実行に供することでロードを行う
ことを特徴とするプログラムロード方法。 A program loading method for loading a program to be loaded into memory according to the load destination information,
An acquisition step of acquiring load destination information from a recording medium in which the program is recorded;
A verification step of verifying whether or not the load destination information is falsified;
A loading step for executing loading of the program,
The load destination information indicates a memory area that the execution image of the program should occupy in the address space on the memory,
The program to be loaded is recorded on a recording medium in the form of a load object,
The load object includes the program, the load destination information, and an authenticator,
The authenticator is
Under the assumption that there is no tampering, this is a value that is unique to the program, calculated in advance before the program is supplied to the user,
After the authentication code is calculated, in the previous stage of supplying the program to the user, the program reads the data of the load address calculation target area specified by a predetermined offset from the head, the data and its load destination information. Is replaced with the operation result obtained by reversible operation,
Verification of the presence or absence of tampering
In the stage of executing the program, the data in the load address calculation target area in the load target program is converted into a calculation result obtained by performing the reverse operation of the reversible calculation of the data and the load destination information. Replacing, calculating a value unique to the replaced program, and comparing the calculated value with the authenticator,
In the load step, when it is determined by the verification that there is no falsification, an execution image of the program is generated in the memory area indicated by the load destination information, and the program is loaded for execution. To load the program.
プログラムのロード先情報と、前記プログラムをパラメータとして所定の関数を実行することにより求まる認証子とを前記プログラムに付加する付加ステップと、
前記プログラムの先頭から予め決められたオフセットで特定されるロードアドレス演算対象領域のデータと前記ロード先情報とを可逆演算し、前記ロードアドレス演算対象領域のデータを演算結果に置換する置換ステップと、
置換後のプログラムを指定された方式に従って変換する変換ステップと、
を含む作成方法。 A creation method for creating a load object,
An addition step of adding program load destination information and an authenticator obtained by executing a predetermined function using the program as a parameter to the program;
A replacement step of reversibly calculating the load address calculation target area data specified by a predetermined offset from the top of the program and the load destination information, and replacing the load address calculation target area data with a calculation result;
A conversion step for converting the replaced program according to a specified method;
Creating method including.
ロード先情報を、前記プログラムが記録されている記録媒体から取得する取得手段と、
前記ロード先情報に対する改竄の有無を検証する検証手段と
プログラムのロードを実行するロード手段と、を備え、
ロード先情報は、前記メモリ上のアドレス空間のうち、プログラムの実行イメージが占めるべきメモリ領域を示し、
前記ロード対象であるプログラムは、ロードオブジェクトの形態で記録媒体に記録されており、
ロードオブジェクトは、前記プログラム、前記ロード先情報、及び認証子を含み、
前記認証子は、
改ざんがないとの仮定下において、プログラムに固有となる値であり、ユーザへのプログラム供給の前段階において、予め算出されており、
前記認証子が算出された後、ユーザへのプログラム供給の前段階において、前記プログラムは、先頭から予め決められたオフセットで特定されるロードアドレス演算対象領域のデータを、当該データとそのロード先情報とを可逆演算することにより得られる演算結果に置き換えられており、
改ざんの有無の検証は、
プログラムを実行しようとする段階において、前記ロード対象であるプログラムにおける前記ロードアドレス演算対象領域のデータを、当該データと前記ロード先情報との前記可逆演算の逆演算を行うことにより得られる演算結果に置き換え、置換後のプログラムに固有な値を算出して、算出された値と前記認証子とを比較することでなされ、
前記ロード手段は、前記検証により、改竄が無いことが判明した場合、前記ロード先情報に示されるメモリ領域に、プログラムの実行イメージを生成して、実行に供することでロードを行う
ことを特徴とする集積回路。 An integrated circuit that loads a program to be loaded onto a memory according to the load destination information,
Acquisition means for acquiring load destination information from a recording medium in which the program is recorded;
Verification means for verifying whether or not the load destination information has been tampered with, and load means for executing program loading,
The load destination information indicates a memory area that the execution image of the program should occupy in the address space on the memory,
The program to be loaded is recorded on a recording medium in the form of a load object,
The load object includes the program, the load destination information, and an authenticator,
The authenticator is
Under the assumption that there is no tampering, this is a value that is unique to the program, calculated in advance before the program is supplied to the user,
After the authentication code is calculated, in the previous stage of supplying the program to the user, the program reads the data of the load address calculation target area specified by a predetermined offset from the head, the data and its load destination information. Is replaced with the operation result obtained by reversible operation,
Verification of the presence or absence of tampering
In the stage of executing the program, the data in the load address calculation target area in the load target program is converted into a calculation result obtained by performing the reverse operation of the reversible calculation of the data and the load destination information. Replacing, calculating a value unique to the replaced program, and comparing the calculated value with the authenticator,
When the verification reveals that there is no falsification, the loading means generates a program execution image in the memory area indicated by the load destination information, and loads the program by executing it. Integrated circuit.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006277430A JP4931542B2 (en) | 2005-10-12 | 2006-10-11 | Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005297521 | 2005-10-12 | ||
| JP2005297521 | 2005-10-12 | ||
| JP2006277430A JP4931542B2 (en) | 2005-10-12 | 2006-10-11 | Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2007133860A JP2007133860A (en) | 2007-05-31 |
| JP4931542B2 true JP4931542B2 (en) | 2012-05-16 |
Family
ID=38155427
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006277430A Expired - Fee Related JP4931542B2 (en) | 2005-10-12 | 2006-10-11 | Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4931542B2 (en) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU2007357078A1 (en) * | 2007-07-31 | 2009-02-05 | Rovi Solutions Corporation | A computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content |
| JP2009211193A (en) * | 2008-02-29 | 2009-09-17 | Nec Electronics Corp | Microcomputer, embedded program, and embedded program creation method |
| JP5824849B2 (en) | 2011-04-22 | 2015-12-02 | ソニー株式会社 | Information processing apparatus and information processing method |
| JP5759845B2 (en) * | 2011-09-21 | 2015-08-05 | 株式会社メガチップス | Information processing system, information processing apparatus, external storage medium, program, storage medium, and file management method |
| JP5776480B2 (en) | 2011-10-07 | 2015-09-09 | 株式会社リコー | Information processing apparatus, validity verification method, validity verification program |
| JP5796447B2 (en) | 2011-10-07 | 2015-10-21 | 株式会社リコー | Information processing apparatus, validity verification method, validity verification program |
| JP6017287B2 (en) * | 2012-12-06 | 2016-10-26 | 富士通株式会社 | Control method and information processing apparatus |
| JP2014235326A (en) | 2013-06-03 | 2014-12-15 | 富士通セミコンダクター株式会社 | System, information processing apparatus, secure module, and verification method |
| JP6578814B2 (en) | 2015-08-20 | 2019-09-25 | 株式会社ソシオネクスト | Processor and processor system |
| KR101805310B1 (en) * | 2016-07-14 | 2017-12-06 | 경희대학교 산학협력단 | User apparatus based on trusted platform module and firmware updating method using the same |
| EP3563521B1 (en) | 2016-12-30 | 2025-05-28 | INTEL Corporation | Service provision to iot devices |
| CN117061128B (en) * | 2023-10-11 | 2023-12-22 | 北京天润基业科技发展股份有限公司 | Verification method and device for data replacement, storage medium and electronic equipment |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07107672B2 (en) * | 1987-01-20 | 1995-11-15 | 株式会社日立製作所 | Control program file destruction rescue method |
| US6141756A (en) * | 1998-04-27 | 2000-10-31 | Motorola, Inc. | Apparatus and method of reading a program into a processor |
| US6802006B1 (en) * | 1999-01-15 | 2004-10-05 | Macrovision Corporation | System and method of verifying the authenticity of dynamically connectable executable images |
| JPWO2002057904A1 (en) * | 2001-01-19 | 2004-05-27 | 富士通株式会社 | Control device with download function |
| JP4335707B2 (en) * | 2004-02-06 | 2009-09-30 | Necエレクトロニクス株式会社 | Program falsification detection device, program falsification detection program, and program falsification detection method |
-
2006
- 2006-10-11 JP JP2006277430A patent/JP4931542B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2007133860A (en) | 2007-05-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4931542B2 (en) | Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit | |
| US8127144B2 (en) | Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit | |
| KR102558104B1 (en) | Call path dependent authentication | |
| KR101256149B1 (en) | Method and apparatus for securing indirect function calls by using program counter encoding | |
| US8555089B2 (en) | Program execution apparatus, control method, control program, and integrated circuit | |
| JP5879527B2 (en) | Information processing apparatus and information processing method | |
| CN101178758B (en) | Secure processor | |
| JP5260081B2 (en) | Information processing apparatus and control method thereof | |
| US7036020B2 (en) | Methods and systems for promoting security in a computer system employing attached storage devices | |
| JP4889638B2 (en) | Verification method, verification program, recording medium, information processing apparatus, integrated circuit | |
| US8745735B2 (en) | Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit | |
| TW201234208A (en) | Secure software product identifier for product validation and activation | |
| JP2009032282A (en) | Initializing, maintaining, updating and recovering secure operation within integrated system employing data access control function | |
| US10628562B2 (en) | Method for protecting a computer program from being influenced, and computer system | |
| KR20080013940A (en) | Electronic device, update server device, key update device | |
| JP4514473B2 (en) | Computer system, central apparatus, and program execution method | |
| JP4791250B2 (en) | Microcomputer and its software falsification prevention method | |
| CN107832589A (en) | Software copyright protecting method and its system | |
| JP2014235326A (en) | System, information processing apparatus, secure module, and verification method | |
| Milenković et al. | Using instruction block signatures to counter code injection attacks | |
| KR102324328B1 (en) | security element | |
| KR20190058302A (en) | Semiconductor device, authentication system, and authentication method | |
| JP5759827B2 (en) | MEMORY SYSTEM, INFORMATION PROCESSING DEVICE, MEMORY DEVICE, AND MEMORY SYSTEM OPERATION METHOD | |
| US11829231B2 (en) | Methods and systems for generating core dump in a user equipment | |
| JP2004362077A (en) | Data conversion system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090727 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111026 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111101 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111226 |
|
| 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: 20120117 |
|
| 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: 20120214 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 4931542 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150224 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |