JP2008287449A - Data processor - Google Patents
Data processor Download PDFInfo
- Publication number
- JP2008287449A JP2008287449A JP2007131107A JP2007131107A JP2008287449A JP 2008287449 A JP2008287449 A JP 2008287449A JP 2007131107 A JP2007131107 A JP 2007131107A JP 2007131107 A JP2007131107 A JP 2007131107A JP 2008287449 A JP2008287449 A JP 2008287449A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data processor
- address
- sum value
- section
- 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.)
- Withdrawn
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
本発明は、データプロセッサに係り、特にセキュリティ機能を有するICカード用マイコンとされるデータプロセッサに適用して有効な技術に関する。 The present invention relates to a data processor, and more particularly, to a technique effective when applied to a data processor which is a microcomputer for an IC card having a security function.
ICカード用マイコンのセキュリティ機能としては、例えば暗号鍵を用いて秘密情報を暗号化するものが知られている。ところが、この暗号鍵を物理的な破壊をせずに推定する攻撃方法があり、その1つとして誤動作アタックがある。誤動作アタックとは、ICカード用マイコンの中央処理装置(CPU)に対して、外部から異常な電圧、クロック、データを供給したり、異常な温度、電磁波等を与えることによって、ICカード用マイコンを誤動作させる、というものである。誤動作アタックは、数十万回も繰返され、例えば正常動作時と誤動作時でのCPUによる演算結果の差分を検証することで、暗号鍵を推定する。このような現状の下、セキュリティ機能を高めた各種装置が知られている。 As a security function of an IC card microcomputer, for example, a function for encrypting secret information using an encryption key is known. However, there is an attack method that estimates this encryption key without physically destroying it, and one of them is a malfunction attack. Malfunction attack means that the IC card microcomputer is connected to the central processing unit (CPU) of the IC card microcomputer by supplying abnormal voltage, clock, data from the outside, or supplying abnormal temperature, electromagnetic waves, etc. It is to make it malfunction. The malfunction attack is repeated hundreds of thousands of times. For example, the encryption key is estimated by verifying the difference in the calculation result by the CPU between the normal operation and the malfunction. Under such circumstances, various devices with improved security functions are known.
特許文献1には、ゲームカートリッジのプログラムデータが外部に読み出されるとき、読み出し手順によってチェックサムの値が異なることに着目し、ゲームカートリッジにセキュリティチップを組み込んだプログラム保護装置が開示されている。セキュリティチップは、プログラムデータが正規の手順で読み出されているか否かを判定し、正規の手順であるときのみ、ゲーム機のプロセッサ要求に応答する。これにより、プログラムデータが例えばゲーム機以外の外部機器に読み出され、不正コピーされてしまうことを防止できる。特許文献2には、ゲームプログラムから抽出した分岐命令と、非分岐命令と、非分岐命令のチェックサムとを圧縮し、この圧縮データを暗号化してプログラムメモリに格納する暗号プログラム生成装置が開示されている。この技術では、チェックサムを用いることでゲームプログラムが改竄されたか否かを判定でき、圧縮データを暗号化することでセキュリティ機能を高めることができる。
特許文献3には、命令コードを読み込んだとき、命令コードを予め一定の計算方法で生成した第一の暗号コードを、命令コードが格納されている領域とは別の領域に格納し、上記一定の計算方法で再計算した第二の暗号コードと、第一の暗号コードとを比較し、一致すれば命令を実行するデータプロセッサが開示されている。この技術では、第一の暗号コードと第二の暗号コードを比較することで、不正に改竄されたプログラムが実行されることを防止できる。特許文献4には、第2保護手段を有するプログラム実行装置が開示されている。第2保護手段は、第1コンピュータプログラムを含む処理プログラムが生成されたときに少なくとも一部に基づいて生成される第1改竄検出値を取得し、処理手段が第1コンピュータプログラムを実行する前に、処理プログラムの少なくとも一部に基づいて第2改竄検出値を生成する。そして、第2保護手段は、第1改竄検出値と第2改竄検出値とが異なる場合に、処理手段が第1コンピュータプログラムに従って動作することを抑制するので、不正に改竄された第1コンピュータプログラムが実行されることを防止できる。
In
本発明者は、ICカード用マイコンが誤動作アタックによって本来の命令フローと異なる動作を行うことを確認し、その原因について考察した。本発明者は、誤動作アタックによる現象として、メモリやレジスタの値が変化すること、分岐命令等で命令実行がスキップされること、演算結果を間違うこと、プログラムカウンタ(PC)の値が意図しない値に変化すること等を確認した。そして、上記現象が、ICカード用マイコンのCPUに読込まれ実行される命令が不正に変化したことに起因することを見出し、命令の異常を検出することの重要性を認識した。 The inventor confirmed that the IC card microcomputer performs an operation different from the original instruction flow due to the malfunction attack, and considered the cause. As a phenomenon caused by a malfunction attack, the present inventor has found that the value of a memory or register changes, instruction execution is skipped by a branch instruction, an operation result is incorrect, and the value of a program counter (PC) is an unintended value. It was confirmed that it changed to. The inventors have found that the above phenomenon is caused by an illegal change in the instruction read and executed by the CPU of the IC card microcomputer, and recognized the importance of detecting the abnormality of the instruction.
特許文献1は、ゲーム機のプロセッサからの読み出しアクセスのアドレスの正当性をチェックすることで、不正な読み出しを阻止するものであり、セキュリティチップで正規の手順であると判定された後に、プロセッサとバスの間で命令が不正に変化した場合には、その命令の異常は検出できない。特許文献2は、プログラムメモリに格納された命令が改竄されたことは検出できるが、命令が実行されているときには、命令の異常を検出できない。特許文献3は、ある種のエラー検出コードを暗号コードと称して命令毎に付与しているから、個々の命令が改竄されたことは検出できるが、PCの値が意図しない値となり命令の実行順序が変化した場合には、その異常を検出できない。特許文献4は、処理手段が処理プログラムを実行する前であれば、第1コンピュータプログラムが改竄されているか否かを検出できるが、処理プログラムの実行後では、命令が不正に変化したことを検出できない。
また、命令フローのチェックをソフトウエアによる実装で行うことも考えられるが、これは、ソフトウエアを構成する命令に異常がないことが前提となっている。このため、命令の異常を検出するために二重チェック等、複数回のソフト対策が必要とされ、CPUのパフォーマンスを低下させてしまうという問題がある。 It is also conceivable that the instruction flow is checked by software implementation, but this is based on the premise that there is no abnormality in the instructions constituting the software. For this reason, in order to detect an abnormality in an instruction, a plurality of software measures such as a double check are required, and there is a problem that the performance of the CPU is lowered.
本発明の目的は、命令を読込んで実行しながら命令の異常を検出し、セキュリティ機能を高めることができるデータプロセッサを提供することにある。 An object of the present invention is to provide a data processor capable of detecting an abnormality in an instruction while reading and executing the instruction and enhancing a security function.
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。 The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。 A representative one of the inventions disclosed in the present application will be briefly described as follows.
即ち、データプロセッサは、命令フローの所定区間毎に、区間に含まれる命令に対するサム値を演算し、同一区間において前回の演算で得られたサム値と今回の演算で得られたサム値とが不一致であれば、命令の実行を停止、又は命令の実行順序を強制的に変更する。これにより、中央処理装置が命令を読込んで実行しながら、所定区間での命令の異常を検出でき、セキュリティ機能を高めることができる。 In other words, the data processor calculates the sum value for the instruction included in the interval for each predetermined interval of the instruction flow, and the sum value obtained by the previous operation and the sum value obtained by the current operation in the same interval are obtained. If they do not match, the instruction execution is stopped or the instruction execution order is forcibly changed. Thereby, while the central processing unit reads and executes the instruction, it is possible to detect an abnormality of the instruction in a predetermined section, and to enhance the security function.
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。 The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows.
すなわち、命令を読込んで実行しながら命令の異常を検出し、セキュリティ機能を高めることができる。 That is, it is possible to detect an abnormality in the instruction while reading and executing the instruction, thereby enhancing the security function.
1.代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
1. Representative Embodiment First, an outline of a typical embodiment of the invention disclosed in the present application will be described. The reference numerals in the drawings referred to with parentheses in the outline description of the representative embodiments merely exemplify what are included in the concept of the components to which the reference numerals are attached.
〔1〕本発明の代表的な実施の形態に係るデータプロセッサ(2A)は、命令を読込んで実行する。このデータプロセッサは、命令フローの所定区間(A1,B1,C1)毎に、前記区間に含まれる前記命令に対するサム値を演算し、同一区間において前回の前記演算で得られたサム値と今回の前記演算で得られたサム値とが不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更する。 [1] The data processor (2A) according to the representative embodiment of the present invention reads and executes an instruction. This data processor calculates the sum value for the instruction included in the section for each predetermined section (A1, B1, C1) of the instruction flow, and the sum value obtained by the previous calculation in the same section If the sum value obtained by the calculation does not match, the execution of the instructions is stopped or the execution order of the instructions is forcibly changed.
上記より、データプロセッサが命令フローの所定区間に含まれる命令を繰返して実行する毎にサム値を演算するから、命令を読込んで実行しながら、同一区間における命令が不正に変化したことをサム値の不一致により検出できる。そして、命令が不正に変化したことを検出したデータプロセッサは、命令の実行を停止して例えばデータプロセッサをリセットしたり、それ以降の命令の実行順序を変更するから、誤動作アタックにより暗号鍵が推定されることを困難とし、セキュリティ機能を高めることができる。 From the above, every time the data processor repeatedly executes an instruction included in a predetermined section of the instruction flow, the sum value is calculated. Therefore, the sum value indicates that the instruction in the same section has illegally changed while reading and executing the instruction. It can be detected by mismatch. The data processor that detects that the instruction has been illegally changed stops the execution of the instruction and resets the data processor, for example, or changes the execution order of the subsequent instructions. Therefore, the encryption key is estimated by a malfunction attack. Security functions can be enhanced.
具体的な一つの形態として、前記区間は、レジスタ(20,21)に設定されたアドレスにより規定され、前記アドレスは、前記演算を開始及び終了する命令の命令アドレスである。上記より、データプロセッサに読込まれ実行される命令がROM等に格納されており、区間を規定する命令を書込めないような場合でも、命令アドレスを指定することで演算を行う区間を容易に規定できる。 As a specific form, the section is defined by an address set in the register (20, 21), and the address is an instruction address of an instruction for starting and ending the operation. From the above, even if the instruction that is read and executed by the data processor is stored in ROM etc., and the instruction that defines the section cannot be written, the section where the operation is performed can be easily specified by specifying the instruction address it can.
別の形態として、前記アドレス(31a)と、前記アドレスをタグとするサム値(31b)が格納されるキャッシュテーブル(31)を含むキャッシュメモリ(30)をさらに有する。前記キャッシュメモリは、リードアクセス要求を受けて前記キャッシュテーブルをアクセスし、前記リードアクセス要求より与えられたアドレスと、前記キャッシュテーブルに格納された前記アドレスとを比較し、一致すれば前記サム値を読み出す。上記より、データプロセッサは、同一区間について先にキャッシュメモリに格納されているサム値を比較対象として用いることができる。 As another form, it further has a cache memory (30) including a cache table (31) in which the address (31a) and a sum value (31b) with the address as a tag are stored. The cache memory accesses the cache table in response to a read access request, compares the address given by the read access request with the address stored in the cache table, and if they match, the sum value is read out. As described above, the data processor can use the sum value previously stored in the cache memory for the same section as a comparison target.
更に別の形態として、前記データプロセッサ(2C)は、今回実行した命令のアドレスと前回実行した命令のアドレスとの差分値が1つの命令の命令語長よりも大きいとき、前記演算を開始する。上記より、今回実行した命令は、例えば分岐命令、ジャンプ命令、サブルーチンコール命令のそれぞれの飛び先で実行された命令と判定できるから、この命令のアドレスを、命令が不正に変化しない限りサム値が一定となる区間の開始アドレスとすることができる。 As another form, the data processor (2C) starts the operation when the difference value between the address of the instruction executed this time and the address of the instruction executed last time is larger than the instruction word length of one instruction. From the above, since the instruction executed this time can be determined as an instruction executed at each jump destination of a branch instruction, a jump instruction, and a subroutine call instruction, for example, the sum value of the instruction address is changed unless the instruction changes illegally. It can be the start address of a certain interval.
更に別の形態として、前記区間は、前記演算の開始を指示するオペコードを含む第1命令と、前記演算の終了を指示するオペコードを含む第2命令とから規定される。上記より、区間を規定する命令のビット数は、区間を規定するアドレスのビット数よりも小さいから、区間を規定するために要する容量を小さくできる。 As yet another form, the section is defined by a first instruction including an operation code instructing the start of the operation and a second instruction including an operation code instructing the end of the operation. From the above, since the number of bits of the instruction that defines the section is smaller than the number of bits of the address that defines the section, the capacity required to define the section can be reduced.
更に別の形態として、前記第1命令は、前記命令フローでの分岐命令、ジャンプ命令、サブルーチンコール命令のそれぞれの飛び先で実行される命令であり、前記第2命令は、前記分岐命令、前記ジャンプ命令、サブルーチンリターン命令である。上記より、命令が不正に変化しない限りサム値が一定となる区間が規定される。 As yet another form, the first instruction is an instruction executed at each of a branch instruction, a jump instruction, and a subroutine call instruction in the instruction flow, and the second instruction is the branch instruction, Jump instruction, subroutine return instruction. From the above, the interval in which the sum value is constant unless the instruction changes illegally is defined.
〔2〕別の観点によれば、命令を読込んで実行するデータプロセッサ(2)は、命令フローの所定区間(A,B,C)毎に、前記区間に含まれる前記命令に対するサム値を演算し、前記区間で前記演算によって得られる前記サム値に所定値の加算を指示する命令を実行する。データプロセッサは、前記区間において前記演算で得られた前記サム値に前記所定値を加算した値が、予め設定された期待値と不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更する。 [2] According to another aspect, the data processor (2) that reads and executes an instruction calculates a sum value for the instruction included in the section for each predetermined section (A, B, C) of the instruction flow. Then, an instruction for instructing addition of a predetermined value to the sum value obtained by the calculation in the interval is executed. If the value obtained by adding the predetermined value to the sum value obtained by the calculation in the interval does not match a preset expected value, the data processor stops the execution of the instruction or executes the instruction Forcibly change the order.
上記より、データプロセッサが命令フローの所定区間に含まれる命令を繰返して実行する毎にサム値と所定値を加算した値を演算するから、命令を読込んで実行しながら、同一区間における命令が不正に変化したことを上記値と期待値の不一致により検出できる。そして、データプロセッサは、上記〔1〕のデータプロセッサと同様にして誤動作アタックにより暗号鍵が推定されることを困難とし、セキュリティ機能を高めることができる。 From the above, every time the data processor repeatedly executes an instruction included in a predetermined section of the instruction flow, it calculates the sum of the sum value and the predetermined value, so the instruction in the same section is illegal while reading and executing the instruction. It can be detected by the mismatch between the above value and the expected value. The data processor makes it difficult for the encryption key to be estimated by a malfunction attack in the same manner as the data processor of [1], and can enhance the security function.
2.実施の形態の説明
次に、実施の形態について更に詳述する。
2. Next, the embodiment will be described in more detail.
《実施形態1》
図1には本発明に係るデータプロセッサの一例が示される。同図に示されるデータプロセッサ2はデータバス3からバッファレジスタ4を介して命令レジスタ5に命令をフェッチし、フェッチした命令を命令デコーダ6が解読する。解読結果が与えられる制御回路9は命令実行を制御する。命令を実行するための実行部として、代表的に示されたレジスタ回路12、演算回路13及びプログラムカウンタ11を有する。レジスタ回路12は例えば汎用レジスタR0〜R7を有する。プログラムカウンタ11は実行すべき命令アドレスを保有する。データプロセッサ2は不正なアタックを検出するための演算回路として、減算回路7とアキュムレータ8を有する。減算回路7は命令レジスタ5が保有する命令コードをアキュムレータ8が保有する値から減算し、減算結果をアキュムレータ8に戻す。減算回路7は減算結果がゼロになったとき、ゼロフラグZFLGをセットして制御回路9に供給する。制御回路9は、所定の命令実行区間において、セット状態のゼロフラグZFLGを検出すると、命令実行を停止し、或いは特定の無限ループに入って、本来のプログラム実行を停止する。所定の命令実行区間において、減算回路7及びアキュムレータ8の動作は命令レジスタ5にフェッチした命令の実行に並行して行われる。
FIG. 1 shows an example of a data processor according to the present invention. The
所定の命令実行区間の始点は特定の命令ADDSUM.Bを実行するステップである。特定の命令ADDSUM.Bは、例えばサブルーチンの開始点、分岐命令の次、及び分岐先命令の直前に挿入される。前記特定の命令ADDSUM.Bはアキュムレータ8に調整値をプリセットし、以降の命令実行毎に減算回路7を用いた減算を1回づつ行う動作を指定する。調整値とは、前記特定の命令ADDSUM.Bの次の命令から所定の命令実行区間の終点の命令までの各命令の命令コードを加算した値(サム値)とされる。したがって、正規の命令実行フローに従って命令が実行されれば、前記所定の命令実行区間の終点において減算回路の値はゼロになり、ゼロフラグはセット状態にされる。前記所定の命令実行区間の終点は、条件分岐命令を実行するステップ、リターン命令を実行するステップ、及び分岐命令による分岐先命令の直前の命令の実行ステップである。分岐命令、リターン命令、及び分岐先命令の直前の命令には拡張コードが付加される。命令デコーダ6はこの拡張コードをデコードすることにより、制御回路9にゼロフラグZFLGを判別させ、セット状態であれば、その後の本来の命令実行を停止し、リセット状態であれば減算回路7及びアキュムレータ8による動作を停止させる。尚、ソースプログラムに対して前記特定の命令を挿入し、また、拡張コードを付加する箇所はコンパイルの段階で決定されている。
The start point of a predetermined instruction execution section is a specific instruction ADDSUM. Step B is executed. The specific instruction ADDSUM. B is inserted, for example, immediately before a subroutine start point, a branch instruction, and a branch destination instruction. The specific instruction ADDSUM. B presets an adjustment value in the
図2には図1のデータプロセッサ2による命令実行フローが例示される。図2には一つのサブルーチンを例示する。ソースプログラムで指定された処理に対応するステップはS2,S3,S5,S6,S7,S9,S10である。ここではA,B,Cのそれぞれが前記所定の命令実行区間であり、その先頭の特定命令ADDSUM.Bは夫々の区間に固有の調整値を有する。例えばステップS1で調整値Aがアキュムレータ8にプリセットされ、S2,S3で夫々の命令コードがアキュムレータ8から順次減算される。S3において拡張コードの解読結果に応答してゼロフラグZFLGはセット状態であることが検出されれば、それ以降本来の命令実行が停止される。そうでなければ命令実行はステップS4に続く。区間B,Cにおいても同様に機能される。
FIG. 2 illustrates an instruction execution flow by the
このようにして、データプロセッサ2では、命令フローの区間A〜Cに含まれる命令を読込んで実行しながら、命令の異常を検出できる。さらにデータプロセッサ2では、命令の異常を検出したら、それ以降の命令の実行を停止するから、誤動作アタック等による暗号鍵の推定を困難とし、セキュリティ機能を高めることができる。
In this way, the
《実施形態2》
図3には本発明の実施形態2に係るデータプロセッサの概略構成が例示される。図1との相違は、誤動作アタックに対して命令実行を停止させる制御に特別な命令や拡張コードを挿入したりせず、その制御を行う命令実行区間を命令アドレスの区間によって規定しようとするものである。その区間を規定するのに、スタートアドレスレジスタ20及びエンドアドレスレジスタ21を有し、それらの値は逐次プログラムカウンタ(PC)11の値とアドレスコンパレータ(CMP)22によって比較される。スタートアドレスレジスタ20及びエンドアドレスレジスタ21に対する初期値設定は例えばデータプロセッサ2Aのパワーオンリセット時に図示を省略する不揮発性メモリから内部転送されて行われる。そのアドレス区間は、間に分岐命令及び分岐先命令を含まない区間である。制御回路9はコントロールフラグCFLGを有し、コントロールフラグCFLGはデータプロセッサ2Aのリセット解除後にリセット状態に初期化される。アドレスコンパレータ22は、PC11が出力する命令実行アドレスがスタートアドレスレジスタ20のスタートアドレスに一致することを検出すると、一致検出信号φSを制御回路9Aに与え、また、PC11が出力する命令実行アドレスがエンドアドレスレジスタ21のエンドアドレスに一致することを検出すると、一致検出信号φEを制御回路9Aに与える。制御回路9Aは一致検出信号φSに応答して、実行命令毎に加減算回路7Aとアキュムレータ8を用いてにIR5が保有する命令コードを累積加算演算させる。この累積加算演算は一致検出信号φEが一致レベルにされたとき終了され、このとき、制御フラグがリセット状態であれば、それによって得られた累積加算値(サム値)を期待値レジスタ23に内部転送させ、その後制御フラグをセット状態に反転させて、一連の累積加算演算処理を終了する。一方、一致検出信号φEが一致レベルにされたとき、制御フラグCFLGがセット状態であれば、それによって得られた累積加算値(サム値)から期待値レジスタ23が保有する累積加算値を減算する。減算結果がゼロであるか否かがゼロフラグZFLGによって制御回路9Aに与えられる。制御回路はゼロフラグがゼロであれば後続の命令を可能とし、ゼロで無ければ其の後の本来の命令実行を停止する。
<<
FIG. 3 illustrates a schematic configuration of a data processor according to the second embodiment of the present invention. The difference from FIG. 1 is that the instruction execution section for performing the control is to be defined by the section of the instruction address without inserting a special instruction or extension code in the control for stopping the instruction execution for the malfunction attack. It is. In order to define the interval, a
したがってデータプロセッサ2Aは、誤動作アタックに対して命令実行を停止させる制御に特別な命令や拡張コードを挿入したりせず、その制御を行う命令実行区間を命令アドレスの区間によって規定することができる。命令コードに空きが無いような場合にも、不正アタックに対するセキュリティを高めることができる。
Therefore, the
スタートアドレスとエンドアドレスのペアを複数設定する場合には当該ペア毎に比較回路22と期待値レジスタ23と制御フラグCFLGを設ければよい。
When a plurality of start address and end address pairs are set, the
《実施形態3》
図4には、本発明の実施形態3に係るデータプロセッサの概略構成が例示される。同図に示されるデータプロセッサ2Bは、図3の期待値レジスタ23と制御フラグCFLGに代えてキャッシュメモリ(CACHE)30を有する。アドレスバッファはプログラムカウンタ11の値に従って命令をフェッチするときその命令アドレスをアドレスバス33に出力する。命令アドレスがエンドアドレスレジスタ21の命令アドレスに一致して信号φEがアクティブになったとき、制御部9Bは、当該命令アドレスをアドレスバッファ31からキャッシュメモリ30に供給する。これによって、キャッシュメモリ30はその命令アドレスを用いてインデックス動作を行い、インデックスされたタグアドレスを参照してキャッシュヒットか否かの判定を行い、その結果が制御部9Bに与えられる。制御部9Bは、キャッシュミスの場合、アキュムレータ8の累積加算されたサム値と当該キャッシュミスに係るキャッシュタグをアドレスをそのキャッシュエントリにフィルする。この後、再び、前記スタートアドレスからエンドアドレスまでの命令が実行された時は、一致信号φEのイネーブルに応答してキャッシュメモリ30はキャッシュヒットとされる。制御回路9Bはキャッシュヒットの場合、キャッメモリから読み出されたキャッシュヒットに係るサム値をアキュムレータ8が保持するサム値から減算させ、その結果がゼロか否かをゼロフラグZFLGを参照して判別する。ゼロであれば、以降の正規の命令実行を継続させ、ゼロで無ければ正規のプログラムの実行を停止する。図5にはキャッシュメモリのキャッシュエントリが例示される。キャッシュエントリCE0〜CEiは、アドレスタグフィールドTAG、データフィールドDAT、管理フィールドVLDを有する。アドレスタグフィールドTAGには所定の命令実行区間のエンドアドレスが格納され、データフィールドにはその命令実行区間に対応される命令コードのサム値が格納され、管理フィールドには当該キャッシュエントリの有効又は無効を示すバリッドフラグが格納される。
<<
FIG. 4 illustrates a schematic configuration of a data processor according to the third embodiment of the present invention. The
このように、データプロセッサ2Bでは、同一区間において先にキャッシュメモリ30に格納されていたサム値を比較対象として用いることができ、命令を実行しながら、1回目の演算によるサム値と2回目以降の演算によるサム値とを区別できる。
As described above, in the
スタートアドレスとエンドアドレスのペアを複数設定する場合には当該ペア毎に比較回路22を設けると共に、キャッシュメモリ30はそのペアの数分だけキャッシュエントリを保有できればよい。
When a plurality of pairs of start address and end address are set, the
《実施形態4》
図6には、本発明の実施形態4に係るデータプロセッサの概略構成が例示される。データプロセッサ2Cは、プログラムカウンタ11が1命令実行サイクル前に保有していた命令アドレスを保有するレジスタ(PC−1)34をアドレスレジスタ20、21に代えて採用する。比較回路(CMP)35はレジスタ34が保有する命令アドレスと、プログラムカウンタ11が保有する命令アドレスとに命令の最大語長よりも大きな差があるかを判別する。例えば最大命令語長を4バイトとし、アドレスをバイトアドレスとすると、下位3ビットに5以上の差があるとき、検出信号φDをアサートする。これにより、制御部9CのイネーブルフラグEFLGがセットされ、制御部9Cは、イネーブルフラグEFLGがリセットされるまで命令実行サイクル毎に前記サム値の累積加算を行う。この後、再び検出信号φDがアサートされると、制御部9CはイネーブルフラグEFLGをリセットし、前記サム値の累積加算を終了して前記キャッシュメモリ30のインデックス動作等を制御して図4と同様に動作制御する。前記出信号φDがアサートされるのは、その条件より明らかなように、条件分岐やサブルーチン分岐、リターン命令を実行するときのように、命令実行順序が変更される区間の始点と終点において、検出信号φDがアサートされる。この区間が所定の命令実行区間とされ、上記同様に、最初にその区間の命令が実行されることによってサム値が取得され、第2回目以降で取得されるサム値が最初に取得されたサム値と一致しているときは正規のプログラム実行が継続されるが、一旦不一致になると、それ以降正規のプログラム実行が停止される。
<<
FIG. 6 illustrates a schematic configuration of a data processor according to the fourth embodiment of the present invention. The
《実施形態5》
図7には、本発明の実施形態5に係るデータプロセッサの概略構成が例示される。データプロセッサ2Dは、図4に対して、サム値の累積加算演算を行う区間を規定するのにスタートアドレスレジスタ及びエンドアドレスレジスタを用いず、サム値の累積加算演算開始を指示する累積加算演算開始命令と、累積加算演算停止命令を用いる。それら命令はソースプログラムのコンパイル時にサブルーチン区間や、分岐による命令実行区間の先頭と終点に追加される。累積加算演算開始命令を命令デコーダ6Aでデコードした時の制御動作は、図4で説明したPC11による実行命令アドレスがスタートアドレスレジスタのアドレスに一致した場合と同じであり、累積加算演算停止命令をデコードした時の制御動作は、図4で説明したPC11による実行命令アドレスがエンドアドレスレジスタのアドレスに一致した場合と同じである。その他の構成は図4と同じであるからその詳細な説明は省略する。この実施の形態によれば、累積加算演算開始命令及び累積加算演算停止命令に割り当て空き命令コードを要するが、アドレスレジスタ及び比較回路等のハードウェアを縮小することができる。
<<
FIG. 7 illustrates a schematic configuration of a data processor according to the fifth embodiment of the present invention. The
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。 As mentioned above, although the invention made by this inventor was concretely demonstrated based on embodiment, it cannot be overemphasized that this invention is not limited to it and can be variously changed in the range which does not deviate from the summary.
正規の命令実行停止の形態は、命令実行それ自体を完全停止する場合に限定されない。無意味な無限ループを構成する命令実行、若しくはNOP命令を連続的に実行するプログラムフローにはいってもよい。或いは強制的にリセット処理ルーチンに入ってもよい。何れにしても正規のプログラム実行が抑制されればよい。 The form of regular instruction execution stop is not limited to the case where instruction execution itself is completely stopped. You may enter into the program flow which performs the command execution which comprises a meaningless infinite loop, or the NOP command continuously. Alternatively, the reset processing routine may be forcibly entered. In any case, it is sufficient that the regular program execution is suppressed.
さらに、上記処理は、命令を読込んで実行しながら命令の異常を検出するから、ソフトウェア的に更に別のチェック法を採用しても、データプロセッサのパフォーマンスの低下を抑制して、誤動作アタックに対するセキュリティ機能を高めることができる。 Furthermore, since the above process detects an abnormality of the instruction while reading and executing the instruction, even if another check method is adopted in terms of software, the deterioration of the performance of the data processor is suppressed, and the security against the malfunction attack. Function can be enhanced.
2,2A〜2C データプロセッサ
3 データバス
4 データバッファレジスタ
5 命令レジスタ
6,6A 命令デコーダ
7 減算回路
7A 加減算回路
8 アキュムレータ
9,9A,9B,9C,9D 制御回路
10 内部バス
11 プログラムカウンタ
12 汎用レジスタ回路
20 スタートアドレスレジスタ
21 エンドアドレスレジスタ
22 コンパレータ
23 期待値レジスタ
25 アドレスバス
30 キャッシュメモリ
34 レジスタ
35 コンパレータ
2, 2A to
Claims (8)
命令フローの所定区間毎に、前記区間に含まれる前記命令に対するサム値を演算し、
同一区間において前回の前記演算で得られたサム値と今回の前記演算で得られたサム値とが不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更するデータプロセッサ。 A data processor that reads and executes instructions,
For each predetermined section of the instruction flow, calculate a sum value for the instruction included in the section,
If the sum value obtained by the previous operation does not match the sum value obtained by the current operation in the same section, the execution of the instructions is stopped or the execution order of the instructions is forcibly changed. Data processor.
前記アドレスは、前記演算を開始及び終了する命令の命令アドレスである請求項1記載のデータプロセッサ。 The section is defined by the address set in the register,
The data processor according to claim 1, wherein the address is an instruction address of an instruction that starts and ends the operation.
前記キャッシュメモリは、リードアクセス要求を受けて前記キャッシュテーブルをアクセスし、前記リードアクセス要求より与えられたアドレスと、前記キャッシュテーブルに格納された前記アドレスとを比較し、一致すれば前記サム値を読み出す請求項2記載のデータプロセッサ。 A cache memory including a cache table in which the address and a sum value with the address as a tag are stored;
The cache memory accesses the cache table in response to a read access request, compares the address given by the read access request with the address stored in the cache table, and if they match, the sum value is The data processor according to claim 2, wherein the data processor reads the data processor.
前記第2命令は、前記分岐命令、前記ジャンプ命令、サブルーチンリターン命令である請求項5記載のマイクロコンピュータ。 The first instruction is an instruction that is executed at each jump destination of a branch instruction, a jump instruction, and a subroutine call instruction in the instruction flow;
6. The microcomputer according to claim 5, wherein the second instruction is the branch instruction, the jump instruction, or a subroutine return instruction.
命令フローの所定区間毎に、前記区間に含まれる前記命令に対するサム値を演算し、
前記区間で前記演算によって得られる前記サム値に所定値の加算を指示する命令を実行し、前記区間において前記演算で得られた前記サム値に前記所定値を加算した値が、予め設定された期待値と不一致であれば、前記命令の実行を停止、又は前記命令の実行順序を強制的に変更するデータプロセッサ。 A data processor that reads and executes instructions,
For each predetermined section of the instruction flow, calculate a sum value for the instruction included in the section,
A command for instructing addition of a predetermined value to the sum value obtained by the operation in the interval is executed, and a value obtained by adding the predetermined value to the sum value obtained by the operation in the interval is set in advance. A data processor that stops execution of the instructions or forcibly changes the execution order of the instructions if they do not match the expected value.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007131107A JP2008287449A (en) | 2007-05-17 | 2007-05-17 | Data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007131107A JP2008287449A (en) | 2007-05-17 | 2007-05-17 | Data processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008287449A true JP2008287449A (en) | 2008-11-27 |
Family
ID=40147112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007131107A Withdrawn JP2008287449A (en) | 2007-05-17 | 2007-05-17 | Data processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008287449A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140858B2 (en) | 2008-04-10 | 2012-03-20 | Renesas Electronics Corporation | Data processing apparatus |
JP2014215981A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2014215979A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2018057978A (en) * | 2018-01-23 | 2018-04-12 | 株式会社ユニバーサルエンターテインメント | Game machine |
-
2007
- 2007-05-17 JP JP2007131107A patent/JP2008287449A/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140858B2 (en) | 2008-04-10 | 2012-03-20 | Renesas Electronics Corporation | Data processing apparatus |
US9092619B2 (en) | 2008-04-10 | 2015-07-28 | Renesas Electronics Corporation | Data processing apparatus |
JP2014215981A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2014215979A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2018057978A (en) * | 2018-01-23 | 2018-04-12 | 株式会社ユニバーサルエンターテインメント | Game machine |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113384B2 (en) | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes | |
US7757098B2 (en) | Method and apparatus for verifying authenticity of initial boot code | |
US8327100B2 (en) | Execute only access rights on a Von Neuman architectures | |
JP4708414B2 (en) | Autonomous memory checker for runtime security assurance | |
US7917753B2 (en) | Transferring control between programs of different security levels | |
US20150058979A1 (en) | Processing system | |
TWI431526B (en) | Hardware flow control monitor | |
US20180189496A1 (en) | Hardware assisted fault injection detection | |
US10223117B2 (en) | Execution flow protection in microcontrollers | |
TW202227971A (en) | Processor, apparatus for protecting the processor, and method for protecting the processor | |
US7774587B2 (en) | Dynamic redundancy checker against fault injection | |
JP2008287449A (en) | Data processor | |
US7624442B2 (en) | Memory security device for flexible software environment | |
US20090125728A1 (en) | Security method of system by encoding instructions | |
CN111104662B (en) | Method for authenticating a program and corresponding integrated circuit | |
EP1745340B1 (en) | Intrusion detection during program execution in a computer | |
TW200805147A (en) | Securised microprocessor with jump verification | |
EP4248340A1 (en) | Code flow protection with error propagation | |
US8528081B2 (en) | Memory system | |
JP2013114621A (en) | Information processing apparatus and program verification method for information processing apparatus | |
US20230401313A1 (en) | Processor with In-Band Fault-Injection Detection in the Presence of Exceptions | |
CN117093435A (en) | Processor verification method and device | |
CN117642741A (en) | Apparatus and method for pointer authentication | |
JP2002055725A (en) | Bios chip for managing code and method for managing the same code | |
JP2004220296A (en) | Semiconductor device and method for controlling same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100803 |