JP2009288908A - Method of detecting failure attack for alterating content of memory, security device, and computer program - Google Patents
Method of detecting failure attack for alterating content of memory, security device, and computer program Download PDFInfo
- Publication number
- JP2009288908A JP2009288908A JP2008138837A JP2008138837A JP2009288908A JP 2009288908 A JP2009288908 A JP 2009288908A JP 2008138837 A JP2008138837 A JP 2008138837A JP 2008138837 A JP2008138837 A JP 2008138837A JP 2009288908 A JP2009288908 A JP 2009288908A
- Authority
- JP
- Japan
- Prior art keywords
- opcode
- execution
- security device
- designated
- operation code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
本発明は、半導体集積回路を実装したセキュリティデバイス(例えば、ICカード)に関し、更に詳しくは、レーザー光などを用い、メモリの内容を変化させる故障攻撃に対して耐タンパー性をセキュリティデバイスに持たせるための技術に関する。 The present invention relates to a security device (for example, an IC card) mounted with a semiconductor integrated circuit. More specifically, the security device is provided with tamper resistance against a failure attack that changes the contents of a memory using a laser beam or the like. For technology.
近年、ICカードなどを代表とする機密情報を格納した組み込み機器に対するセキュリティデバイスへの攻撃が多く研究され、その成果が報告されている。セキュリティデバイスに対する攻撃方法の1つとしては、電力消費量や電磁波などのサイドチャネルを観測することで、セキュリティデバイスに格納されたDESの秘密鍵を解読するサイドチャネル攻撃が有名で、例えば、特許文献1など様々な公知文献で、サイドチャネル攻撃に対して耐タンパー性をセキュリティデバイスに持たせる技術が開示されている。 In recent years, many attacks on security devices against embedded devices storing confidential information such as IC cards have been studied and the results have been reported. As one of the attack methods against the security device, a side channel attack that decrypts the DES secret key stored in the security device by observing the side channel such as power consumption and electromagnetic waves is well known. Various known documents such as No. 1 disclose a technique for providing a security device with tamper resistance against side channel attacks.
しかし、セキュリティデバイスに対する攻撃方法は、上述したサイドチャネル攻撃に限らず、サイドチャネル攻撃以外の攻撃としては、セキュリティデバイスに実装された半導体集積回路(ICチップ)にレーザー光を照射し、メモリの内容を変化させ、故意的に誤動作を誘発させ、ICチップの誤動作を足掛かりとして、DESの秘密鍵を解読する故障攻撃(Fault Analysis)がある。 However, the attack method for the security device is not limited to the above-mentioned side channel attack, and as an attack other than the side channel attack, the semiconductor integrated circuit (IC chip) mounted on the security device is irradiated with laser light, and the contents of the memory There is a failure analysis (Fault Analysis) that decrypts the DES secret key by deliberately inducing a malfunction and using the malfunction of the IC chip as a starting point.
サイドチャネル攻撃の対策手法が、レーザー光などを利用した故障攻撃に対しても有効であればよいが、攻撃手法が異なるため、サイドチャネル攻撃の対策手法は、レーザー光を用いた故障攻撃に対して有効ではない。 Although it is sufficient that the side channel attack countermeasure method is effective against failure attacks using laser light, etc., since the attack method is different, the side channel attack countermeasure method is against laser beam failure attacks. Is not effective.
故障攻撃によるICチップの誤動作を検知する手法として、特許文献2などに記述されているようなウォッチドッグタイマと呼ばれる手法を用いることも考えられる。確かに、レーザー光がセキュリティデバイスに照射されて、プログラムコードが格納されている箇所のメモリの内容が変化した場合は、セキュリティデバイスのICチップが暴走するため、ウォッチドックタイマによって暴走を検知できる可能性はある。 As a technique for detecting a malfunction of an IC chip due to a failure attack, a technique called a watch dog timer as described in Patent Document 2 may be used. Certainly, when the security device is irradiated with laser light and the contents of the memory where the program code is stored change, the IC chip of the security device runs away, so the runaway can be detected by the watchdog timer. There is sex.
しかし、ICチップが暴走は、ICチップに記憶された秘密情報を解読する足掛かりになり得るし、更に、レーザー光の照射などの故障攻撃をメモリが受けたときに、メモリが変化する内容によっては、ICチップは暴走せずに誤動作してしまうケースがある。このようなケースでは、ウォッチドックタイマによってこの誤動作を検知できない。例えば、メモリに記憶された命令が、レーザー光の照射などによって、ICチップのCPUに何の動作も実行させないNOP命令に変化した場合、ICチップは暴走せずに誤動作してしまう可能性が高い。 However, the runaway of the IC chip can be a starting point for decrypting the secret information stored in the IC chip. Furthermore, depending on the contents of the memory when the memory is subjected to a failure attack such as laser light irradiation. In some cases, the IC chip malfunctions without running away. In such a case, this malfunction cannot be detected by the watchdog timer. For example, when an instruction stored in the memory changes to a NOP instruction that causes the CPU of the IC chip to perform no operation due to laser light irradiation or the like, the IC chip is likely to malfunction without running away. .
そこで、本発明は、ICカードに代表されるセキュリティデバイスに対し、レーザー光などを利用した故障攻撃が行われ、メモリに格納されたオペコードが、前記セキュリティデバイスに予め指定されている命令(例えば、NOP命令)のオペコードに変化したことを検知できる方法、この方法を実行するためにセキュリティデバイスに組み込まれるコンピュータプログラム、及び、このコンピュータプログラムが実装されたセキュリティデバイスを提供することを目的とする。 Therefore, the present invention performs a failure attack using a laser beam or the like on a security device typified by an IC card, and an operation code stored in a memory is a command (for example, specified in advance in the security device). It is an object of the present invention to provide a method capable of detecting a change to an operation code of a NOP instruction), a computer program incorporated in a security device to execute the method, and a security device in which the computer program is mounted.
更に、第1の発明は、メモリの内容を改竄する故障攻撃を検知する方法であって、セキュリティデバイスに実装されたバーチャルマシンが、前記セキュリティデバイスのメモリに記憶されたバイトコードから、実行する命令のオペコード(実行オペコード)をフェッチするステップa、前記バーチャルマシンが、前記ステップaでフェッチした前記実行オペコードと、前記バーチャルマシンに予め指定されている命令のオペコード(指定オペコード)が一致するか確認することで、前記指定オペコードをフェッチしたことを検出する処理を実行するステップb、前記バーチャルマシンが、前記ステップbにおいて、前記指定オペコードをフェッチしたことを検出したとき、前記実行オペコードの正当性を検証する処理を実行するステップc、前記バーチャルマシンが、前記ステップcで前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するステップd、を含むことを特徴とする。 Furthermore, the first invention is a method for detecting a failure attack that alters the contents of a memory, and a command executed by a virtual machine mounted on a security device from a byte code stored in the memory of the security device. The operation code fetched in step a, and the virtual machine confirms whether the execution opcode fetched in step a matches the operation code (designated opcode) of the instruction specified in advance in the virtual machine. Step b for executing the process of detecting that the designated opcode is fetched, and verifying the validity of the execution opcode when the virtual machine detects that the designated opcode is fetched in step b. Step c for executing the processing to Serial virtual machine, wherein when the validation fails the validity of the execution opcode in step c, characterized in that it comprises a step d, to execute a process to deal with the fault attack.
第1の発明によれば、レーザー光などを用い、故障攻撃を受けてメモリの内容が改竄されたときに、メモリの内容が変換され易い値と同じ値であるオペコードや、誤変換されて実行されるとセキュリティ的に問題が発生する可能性のあるオペコードに前記指定オペコードを指定し、前記バーチャルマシンが、前記実行オペコードが前記指定オペコードであって、かつ、前記実行オペコードの正当性の検証に失敗したときに、故障攻撃に対処する処理として、前記バーチャルマシンの動作を停止する処理などを実行することで、メモリの内容を改竄する故障攻撃によって前記セキュリティデバイスが誤動作するリスクを軽減することができる。 According to the first invention, when the contents of the memory are tampered with using a laser beam or the like and the contents of the memory are tampered with, the operation code having the same value as the value that is easily converted is executed. The designated operation code is specified as an operation code that may cause a security problem, and the virtual machine is used to verify the validity of the execution operation code when the execution operation code is the specified operation code. When a failure occurs, a process for stopping the operation of the virtual machine is executed as a process for dealing with a failure attack, thereby reducing the risk that the security device malfunctions due to a failure attack that alters the contents of the memory. it can.
特に、前記バーチャルマシンのバイトコードで用意されているNOP命令(NOP: No Operation)は、前記セキュリティデバイスのCPUに何の動作も実行させない命令で、故障攻撃によって、NOP命令以外の命令のオペコードがNOP命令のオペコードに変換され、CPUが何の処理も実行しないと、前記セキュリティデバイスに記憶された機密情報(例えば、暗号鍵)を解読する際の足掛かりに利用され易いため、前記指定オペコードはNOP命令のオペコードとすることが好適である。例えば、分岐命令がNOP命令に変換されてしまうと、ユーザ認証処理(例えば、PIN照合処理)が実行されずに、前記セキュリティデバイスに記憶された機密情報が解読、或いは、前記セキュリティデバイスが悪用されてしまう。 In particular, the NOP instruction (NOP: No Operation) prepared by the byte code of the virtual machine is an instruction that does not cause the CPU of the security device to execute any operation. If the operation code is converted into a NOP instruction opcode and the CPU does not execute any processing, it is easily used as a starting point when decrypting confidential information (for example, an encryption key) stored in the security device. It is preferable to use an instruction opcode. For example, if a branch instruction is converted into a NOP instruction, confidential information stored in the security device is decrypted or the security device is abused without executing user authentication processing (for example, PIN verification processing). End up.
第1の発明のステップcにおいて実行される処理、すなわち、前記実行オペコードの正当性を検証する処理は、前記実行オペコードの正当性できれば任意の処理であってよい。例えば、前記ステップcにおいて、前記実行オペコードと同一のメモリアドレスから、再度、オペコードを読み出し、前記ステップaでフェッチした前記実行オペコードと、前記ステップcで読み出したオペコードが一致するか確認することで、前記実行オペコードの正当性を検証することができる。 The process executed in step c of the first invention, that is, the process for verifying the validity of the execution opcode may be any process as long as the execution opcode can be validated. For example, in the step c, the operation code is read again from the same memory address as the execution opcode, and by confirming whether the execution opcode fetched in the step a matches the operation code read in the step c, The validity of the execution opcode can be verified.
また、前記実行オペコードの正当性を検証する他の手法としては、前記指定オペコードをバイトコードに記述する際に、予め、前記指定オペコードの正当性を検証するため検証用コード(例えば、エラー検出コード)を前記バイトコードに含ませておき、前記ステップcにおいて、この検出用コードを用いて、前記実行オペコードの正当性を検証してもよい。 Further, as another method for verifying the validity of the execution opcode, a verification code (for example, an error detection code) is used to verify the validity of the specified opcode in advance when the specified opcode is described in a byte code. ) May be included in the byte code, and in step c, the validity of the execution opcode may be verified using the detection code.
なお、本発明において、前記セキュリティデバイスとは、図外のターミナルとデータ通信する機能と、ターミナルから送信されたコマンドを実行する機能を備え、その内部に秘密情報(例えば、暗号鍵)を記憶したデバイスを意味し、具体的には、ICカードやUSBキーなどのデバイスである。 In the present invention, the security device has a function for data communication with a terminal (not shown) and a function for executing a command transmitted from the terminal, and stores secret information (for example, an encryption key) therein. A device means a device such as an IC card or a USB key.
更に、第2の発明は、第1の発明に係わる方法が適用され、ICチップが実装されたセキュリティデバイスであって、前記セキュリティデバイスのメモリに記憶されたバイトコードから、実行する命令のオペコード(実行オペコード)をフェッチするフェッチ手段と、前記フェッチ手段がフェッチした前記実行オペコードと、前記セキュリティデバイスに予め指定されている命令のオペコード(指定オペコード)とが一致するか確認することで、前記指定オペコードをフェッチしたことを検出する処理を実行する指定オペコード検出手段、前記実行オペコードが前記指定オペコードであるとき、前記実行オペコードの正当性を検証する処理を実行する実行オペコード検証手段を備え、フェッチした前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するバーチャルマシンが前記ICチップに実装されていることを特徴とする。 Further, the second invention is a security device to which the method according to the first invention is applied and an IC chip is mounted, and an operation code (instruction code) to be executed from the bytecode stored in the memory of the security device. A fetch unit that fetches an execution opcode), and the execution opcode fetched by the fetch unit matches the operation code (designated opcode) of an instruction preliminarily designated in the security device, thereby specifying the designated opcode A designated opcode detecting means for executing a process for detecting that the fetched operation code has been fetched, and an execution opcode verifying means for executing a process for verifying the validity of the execution opcode when the execution opcode is the designated opcode. Failed to verify the validity of the execution opcode When, wherein the virtual machine running the process to deal with the fault attack is mounted on the IC chip.
第2の発明において、前記セキュリティデバイスの前記バーチャルマシンに備えられた前記実行オペコード検証手段としては、前記実行オペコードと同一のメモリアドレスから、再度、オペコードを読み出し、前記実行オペコードと、読み出したオペコードが一致するか確認することで、前記実行オペコードの正当性を検証する手段や、前記指定オペコードが前記バイトコードに含まれている際に、前記指定オペコードの正当性を検証するため検証用コード(例えば,エラー検出コード)をも前記バイトコードに含ませておき、この前記検出用コードを用いて、前記実行オペコードの正当性を検証する手段を利用できる。 In the second invention, as the execution opcode verification means provided in the virtual machine of the security device, the operation code is read again from the same memory address as the execution opcode, and the execution opcode and the read opcode are A means for verifying the correctness of the execution opcode by confirming whether they match, or a verification code (for example, for verifying the correctness of the specified opcode when the specified opcode is included in the bytecode) , Error detection code) can also be included in the byte code, and a means for verifying the validity of the execution opcode using the detection code can be used.
なお、第2の発明においても、第1の発明と同様に、前記指定オペコードをNOP命令とすることが好適である。 In the second invention as well, as in the first invention, it is preferable that the designated opcode is a NOP instruction.
更に、第3の発明は、第1の発明に係わる方法をセキュリティデバイスに実行させるためのコンピュータプログラムで、セキュリティデバイスのメモリに記憶されたバイトコードから、実行する命令のオペコード(実行オペコード)をフェッチするステップa、前記実行オペコーが、前記セキュリティデバイスに予め指定されている命令のオペコード(指定オペコード)と一致するか確認することで、前記指定オペコードをフェッチしたことを検出する処理を実行するステップb、前記ステップbにおいて、前記指定オペコードをフェッチしたことを検出したとき、前記実行オペコードの正当性を検証する処理を実行するステップc、前記ステップcで前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するステップdを、前記セキュリティデバイスに実行させるためのコンピュータプログラムである。 Further, a third invention is a computer program for causing a security device to execute the method according to the first invention, and fetches an operation code (execution operation code) of an instruction to be executed from a bytecode stored in a memory of the security device. A step of executing a process of detecting that the designated opcode is fetched by confirming whether or not the execution opcode matches an opcode (designated opcode) of an instruction designated in advance in the security device. When it is detected in step b that the designated opcode is fetched, step c is executed to verify the validity of the execution opcode, and when the validity of the execution opcode is failed in step c , Execute processing to deal with failure attacks The-up d, is a computer program to be executed by the security device.
なお、第3の発明においても、第1の発明と同様に、前記指定オペコードをNOP命令とすることが好適である。 In the third invention as well, as in the first invention, it is preferable that the designated opcode is a NOP instruction.
このように、上述した本発明によれば、ICカードに代表されるセキュリティデバイスに対し、レーザー光などを利用した故障攻撃が行われ、メモリに格納されたオペコードが、前記セキュリティデバイスに予め指定されている命令(例えば、NOP命令)のオペコードに変化したことを検知できる方法、この方法を実行するためにセキュリティデバイスに組み込まれるコンピュータプログラム、及び、このコンピュータプログラムが実装されたセキュリティデバイスを提供できる。 As described above, according to the present invention described above, a failure attack using a laser beam or the like is performed on a security device represented by an IC card, and an operation code stored in a memory is designated in advance in the security device. It is possible to provide a method capable of detecting a change to an operation code of a certain instruction (for example, a NOP instruction), a computer program incorporated in a security device to execute the method, and a security device in which the computer program is implemented.
ここから、セキュリティデバイスをICカード1としたときの実施形態について、図を参照しながら詳細に説明する。図1は、本実施形態に係わるICカード1の外観図、図2は、ICカード1に実装されるICチップ2の回路ブロック図、図3は、ICカード1のソフトウェアブロック図である。 From here, an embodiment when the security device is the IC card 1 will be described in detail with reference to the drawings. FIG. 1 is an external view of an IC card 1 according to the present embodiment, FIG. 2 is a circuit block diagram of an IC chip 2 mounted on the IC card 1, and FIG. 3 is a software block diagram of the IC card 1.
図1に示したICカード1は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ICカード1には、ICチップ2がモールドされたICモジュール2aが実装されている。
The IC card 1 shown in FIG. 1 is a plastic card having the same size as a cash card or credit card, and an
図1においては、ICカード1を接触ICカードとして図示しているが、ICカード1は、図外のターミナルと無線通信する非接触ICカード、または、接触通信と無線通信の2つの通信機能を備えたデュアルインターフェースICカードであってもよい。 In FIG. 1, the IC card 1 is illustrated as a contact IC card. However, the IC card 1 has a non-contact IC card for wireless communication with a terminal outside the figure, or two communication functions of contact communication and wireless communication. It may be a dual interface IC card provided.
加えて、ICカード1の形状は問わず、ICカード1はキャッシュカードと同じ形状でなく、ICモジュール2aの近辺を短冊状に切り取った形状をしているSIM(Subscriber Identity Module)或いはUIM(Universal Subscriber Identity Module)であってもよい。
In addition, the shape of the IC card 1 is not limited, and the IC card 1 is not the same shape as the cash card, but is a SIM (Subscriber Identity Module) or UIM (Universal) that is formed by cutting the vicinity of the
図2に図示したように、ICチップ2には、演算機能およびICチップ2の回路やメモリを制御する機能を備えた中央演算装置20(CPU:Central Processing Unit)、高速読み取り可能なメモリであるキャッシュ26(Cache)、揮発性メモリとしてランダムアクセスメモリ21(RAM:Random Access Memory)、読み出し専用の不揮発性メモリ23(ROM:Read Only Memory、)、電気的に書換え可能な不揮発性メモリとしてEEPROM22(EEPROM:Electrically Erasable Programmable Read-Only Memoryの略)、および、I/O回路25を制御し、図外のターミナルと所定の伝送プログラムで通信(例えば、ISO/IEC7816に準じた通信)するためのUART24を備えている。
As shown in FIG. 2, the IC chip 2 includes a central processing unit 20 (CPU: Central Processing Unit) having a calculation function and a function of controlling the circuit and memory of the IC chip 2, and a memory capable of high-speed reading. Cache 26 (Cache), random access memory 21 (RAM: Random Access Memory) as volatile memory, read-only nonvolatile memory 23 (ROM: Read Only Memory), EEPROM 22 (electrically rewritable nonvolatile memory) EEPROM: Electrically Erasable Programmable Read-Only Memory), and
ICチップ2のROM23およびEEPROM22は、ICチップ2を動作させるコンピュータプログラムやデータを記憶するメモリで、RAM21やキャッシュ26は、CPU20がコンピュータプログラムを実行するときに利用するデータを一時的に記憶するメモリである。
The
ICチップ2のROM23には、コンピュータプログラムとして、ICチップ2のCPU20の命令コードを解釈し、CPU20に所定の処理を実行させるカードオペレーティングシステム12(COS: Card Operating System)と、Java Card(登録商標)やMULTOS(登録商標)のバーチャルマシン10(VM: Virtual Machine)が実装され、VM10はCOS12上に構築されている。
The
ICチップ2のEEPROM22には、ICチップ2のROM23に構築されるJava Card(登録商標)の実行環境で動作するアプリケーション11が実装される。このアプリケーション11は、ROM23に実装されるVM10に対応したバイトコードで記述され、例えば、ROM23に実装されるVM10がJAVA Card(登録商標)のVM10ならば、EEPROM22に実装されるアプリケーション11は、JAVA Card(登録商標)のバイトコードで記述されたアプレット(Applet)になる。
The
VM10が、EEPROM22に実装されたアプリケーション11の処理を実行するとき、VM10は、アプリケーション11のバイトコードから、1バイトのバイナリ形式で記述され、実行する命令のオペコード(opcode)をフェッチする。
When the
また、オペランド(operand)を伴うオペコードの場合は、オペコードに引き続き記述されているオペランドをフェッチする。そして、VM10は、フェッチしたオペレーションコード(オペランドがある場合はオペランドも)を、COS12に対応したネイティブコードに変換し、COS12はVM10から受け渡されたネイティブコードを実行する。
In the case of an operation code accompanied by an operand, an operand described in the operation code is fetched. Then, the
レーザー光の照射など、メモリの内容を改竄する故障攻撃をICカード1が受けなければ、上述した手順でICカード1は正常に動作するが、ICカード1が動作している時に、レーザー光がICチップ2に照射されると、例えば、EEPROM22の内容が改竄されてしまい、VM10は、フェッチしたオペコードが正しいオペコードでなくなるため、ICカード1が誤動作してしまう可能性がある。
If the IC card 1 does not receive a failure attack that alters the contents of the memory, such as laser light irradiation, the IC card 1 operates normally according to the procedure described above, but when the IC card 1 is operating, When the IC chip 2 is irradiated, for example, the contents of the
特に、VM10に対応したバイトコードの命令には、NOP命令(NOP: No Operation)と呼ばれ、CPU20に何の処理も実行させない命令が一般的に用意されているため、レーザー光の照射などによって、NOP命令以外のオペコードが、NOP命令のオペコードに変化した場合、本来実行しなければならない命令が実行されないため、暗号鍵などを解読する故障攻撃の足掛かりにされ易い。
In particular, a byte code instruction corresponding to the
例えば、分岐命令がNOP命令に変換されてしまうと、ユーザ認証処理(例えば、PIN照合処理)が実行されずに、前記セキュリティデバイスに記憶された機密情報が解読、或いは、前記セキュリティデバイスが悪用されてしまう。 For example, if a branch instruction is converted into a NOP instruction, confidential information stored in the security device is decrypted or the security device is abused without executing user authentication processing (for example, PIN verification processing). End up.
そこで、本発明に係わるICカード1に実装されるVM10には、実行する命令のオペコード(以下、「実行オペコード」と記す。)が、ICカード1に予め指定されている命令(例えば、NOP命令)のオペコード(以下、「指定オペコード」と記す。)であるか確認することで、指定オペコードをフェッチしたことを検出する機能と、指定オペコードをフェッチした時に、実行オペコードの正当性を検証する機能が備えられている。
Therefore, in the
図4は、ICカード1の機能ブロック図で、図5は、ICカード1に実装されたVM10の動作手順を示したフロー図である。
FIG. 4 is a functional block diagram of the IC card 1, and FIG. 5 is a flowchart showing an operation procedure of the
図4に図示したように、ICカード1にはVM10と少なくとも一つのアプリケーションが実装され、VM10には、EEPROM22から実行オペコードをフェッチするフェッチ手段100と、フェッチ手段100が指定オペコードをフェッチしたことを検出する指定オペコード検出手段101と、指定オペコードをフェッチした時に、実行オペコードの正当性を検証する実行オペコード検証手段102が備えられている。
As shown in FIG. 4, the
なお、図4で図示した各手段は、ICカード1のICチップ2を各手段として機能させるためのコンピュータプログラムで実現され、このコンピュータプログラムは、VM10の本体、或いは、VM10を利用するためのライブラリの集まりであるフレームワークに組み込まれる。
4 is realized by a computer program for causing the IC chip 2 of the IC card 1 to function as each means. This computer program is a main body of the
ここから、図5で図示したフローを用いながら、ICカード1のVM10に備えられた各手段について説明する。VM10が、EEPROM22に実装されたアプリケーションの処理を実行するとき、VM10のフェッチ手段100は、EEPROM22に記憶されたアプリケーションのバイトコードから実行オペコードを読み出し、実行オペコードをCPU20のレジスタに格納することで、1バイトの実行オペコードをフェッチする(S1)。
From here, each means with which VM10 of IC card 1 was equipped is demonstrated using the flow illustrated in FIG. When the
VM10のフェッチ手段が、1バイトの実行オペコードをフェッチすると、VM10の指定オペコード検出手段101が作動し、VM10の指定オペコード検出手段101は、CPU20のレジスタにフェッチした実行オペコードと指定オペコードを比較演算するなどして、指定オペコードをフェッチしたか否かを確認する(S2)。
When the fetch means of the
VM10の指定オペコード検出手段101は、フェッチ手段100がフェッチしたオペコードが指定オペコードでなければ、フェッチ手段100がフェッチした実行オペコードに対応する命令を実行する処理を継続し(S3)、フェッチした実行オペコードが指定オペコードであれば、VM10の実行オペコード検証手段102を呼び出し、S1でフェッチした実行オペコードの正当性を検証する(S2_1)。
If the operation code fetched by the fetch
実行オペコード検証手段102が、フェッチした実行オペコードの正当性する手法は任意でよい。例えば、フェッチ手段100が実行オペコードをフェッチしたEEPROM22の同じアドレスから、再度、オペコードを読み出し、読み出したオペコードとS1でフェッチした実行オペコードとが一致することを確認するための演算を行い、それぞれのオペコードが一致することを確認することで、フェッチした実行オペコードの正当性を検証することができる。
The execution opcode verification means 102 may use any method for validating the fetched execution opcode. For example, the fetch means 100 reads the operation code again from the same address of the
また、アプリケーションのバイトコードに指定オペコードを含ませるときは、指定オペコードの正当性を検証するために利用するEDC(EDC: Error Detection Code)を、指定オペコードの近傍に記述されているバイトコードから算出し、アプリケーションのバイトコードにこのEDCを含ませておき、実行オペコード検証手段102は、フェッチした実行オペコードの正当性を、このEDCを利用して検証することもできる。
When the specified opcode is included in the application bytecode, the EDC (EDC: Error Detection Code) used to verify the validity of the specified opcode is calculated from the bytecode written near the specified opcode. Then, the EDC is included in the byte code of the application, and the execution
実行オペコード検証手段102は、フェッチした実行オペコードの正当性の検証に成功すると、S3に進み、フェッチした実行オペコードに対応する命令を実行する処理を継続する。 When the execution opcode verification means 102 succeeds in verifying the validity of the fetched execution opcode, the execution opcode verification means 102 proceeds to S3 and continues the process of executing the instruction corresponding to the fetched execution opcode.
また、実行オペコード検証手段102は、フェッチした実行オペコードの正当性の検証に失敗すると、メモリの内容を改竄する故障攻撃をICカード1が受けたと判断し、S2−2に進み、VM10は、メモリの内容を改竄する故障攻撃をICカード1が受けた時に実行するエラー処理(例えば、VM10の動作を停止する処理)を実行する。
Further, if the validity of the fetched execution opcode fails, the execution opcode verification means 102 determines that the IC card 1 has received a failure attack that falsifies the contents of the memory, and proceeds to S2-2. The
なお、本発明は、これまで説明した実施の形態に限定されることなく、種々の変形や変更が可能である。例えば、本実施形態では、セキュリティデバイスをICカードとしているが、ICカード以外のセキュリティデバイス(例えば、USBキー)にも本発明を適用できる。また、本実施形態では、指定された命令はNOP命令以外の命令であっても構わない。 The present invention is not limited to the embodiments described so far, and various modifications and changes can be made. For example, in this embodiment, the security device is an IC card, but the present invention can also be applied to a security device other than the IC card (for example, a USB key). In the present embodiment, the designated instruction may be an instruction other than the NOP instruction.
更に、ICカードに実装されるICチップの構成は、図2で図示した構成に限定されることはなく、例えば、キャッシュが備えられていないICチップであっても構わない。 Furthermore, the configuration of the IC chip mounted on the IC card is not limited to the configuration illustrated in FIG. 2, and may be, for example, an IC chip without a cache.
1 ICカード
10 バーチャルマシン(VM)
100 フェッチ手段
101 指定オペコード検出手段
102 実行オペコード検証手段
11 アプリケーション
2 ICチップ
20 CPU
22 EEPROM
23 ROM
1
100 fetch means 101 designated opcode detection means 102 execution opcode verification means 11 application 2
22 EEPROM
23 ROM
Claims (6)
前記バーチャルマシンが、前記ステップaでフェッチした前記実行オペコードと、前記バーチャルマシンに予め指定されている命令のオペコード(指定オペコード)が一致するか確認し、前記指定オペコードをフェッチしたことを検出する処理を実行するステップb、
前記バーチャルマシンが、前記ステップbにおいて、前記指定オペコードをフェッチしたことを検出したとき、前記実行オペコードの正当性を検証する処理を実行するステップc、
前記バーチャルマシンが、前記ステップcで前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するステップd、
を含むことを特徴とする故障攻撃の検知方法。 A method for detecting a failure attack that alters the contents of a memory, wherein a virtual machine installed in a security device fetches an operation code (execution operation code) of an instruction to be executed from a bytecode stored in the memory of the security device Step a,
A process in which the virtual machine confirms whether the execution opcode fetched in the step a matches an opcode (designated opcode) of an instruction designated in advance in the virtual machine, and detects that the designated opcode has been fetched Performing step b,
A step c for executing a process of verifying the validity of the execution opcode when the virtual machine detects that the designated opcode is fetched in the step b;
When the virtual machine fails to verify the validity of the execution opcode in the step c, the step d executes a process for dealing with a failure attack;
A failure attack detection method comprising:
前記セキュリティデバイスのメモリに記憶されたバイトコードから、実行する命令のオペコード(実行オペコード)をフェッチするフェッチ手段と、
前記フェッチ手段がフェッチした前記実行オペコードと、前記バーチャルマシンに予め指定されている命令のオペコード(指定オペコード)が一致するか確認し、前記指定オペコードをフェッチしたことを検出する処理を実行する指定オペコード検出手段と、
前記実行オペコードが前記指定オペコードであるとき、前記実行オペコードの正当性を検証する処理を実行する実行オペコード検証手段を、備え、
フェッチした前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するバーチャルマシンが前記ICチップに実装されていることを特徴とするセキュリティデバイス。 A security device on which an IC chip is mounted,
Fetch means for fetching an opcode of an instruction to be executed (execution opcode) from the bytecode stored in the memory of the security device;
A designated opcode that executes processing for confirming whether the execution opcode fetched by the fetch means matches an opcode (designated opcode) of an instruction designated in advance in the virtual machine, and detecting that the designated opcode has been fetched. Detection means;
When the execution opcode is the designated opcode, an execution opcode verification means for executing processing for verifying the validity of the execution opcode is provided,
A security device, wherein a virtual machine that executes processing to cope with a failure attack when verification of the validity of the fetched operation opcode fails is mounted on the IC chip.
前記実行オペコードと、前記セキュリティデバイスに予め指定されている命令のオペコード(指定オペコード)が一致するか確認し、前記指定オペコードをフェッチしたことを検出する処理を実行するステップb、
前記ステップbにおいて、前記指定オペコードをフェッチしたことを検出したとき、前記実行オペコードの正当性を検証する処理を実行するステップc、
前記ステップcで前記実行オペコードの正当性の検証に失敗した時、故障攻撃に対処する処理を実行するステップdを、
前記セキュリティデバイスに実行させるためのコンピュータプログラム。 A step of fetching an operation code (execution operation code) of an instruction to be executed from a byte code stored in a memory of a security device mounted with an IC chip;
A step of confirming whether the execution opcode and an opcode (designated opcode) of an instruction designated in advance in the security device match, and executing a process of detecting that the designated opcode is fetched; b
A step c for executing a process of verifying the validity of the execution opcode when it is detected in step b that the designated opcode is fetched;
When the verification of the validity of the execution opcode fails in the step c, a step d for executing a process for dealing with a failure attack is performed.
A computer program for causing the security device to execute.
6. The computer program according to claim 5, wherein the designated operation code is an operation code of a NOP instruction (NOP: No Operation).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008138837A JP5200664B2 (en) | 2008-05-28 | 2008-05-28 | Fault attack detection method, security device, and computer program for falsifying memory contents |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008138837A JP5200664B2 (en) | 2008-05-28 | 2008-05-28 | Fault attack detection method, security device, and computer program for falsifying memory contents |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009288908A true JP2009288908A (en) | 2009-12-10 |
JP5200664B2 JP5200664B2 (en) | 2013-06-05 |
Family
ID=41458085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008138837A Active JP5200664B2 (en) | 2008-05-28 | 2008-05-28 | Fault attack detection method, security device, and computer program for falsifying memory contents |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5200664B2 (en) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011181049A (en) * | 2010-03-04 | 2011-09-15 | Dainippon Printing Co Ltd | Method and program for controlling ic chip and ic card |
JP2014215979A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2015041349A (en) * | 2013-08-23 | 2015-03-02 | 大日本印刷株式会社 | Information storage medium, bytecode execution method, and program for information storage medium |
JP2015082233A (en) * | 2013-10-23 | 2015-04-27 | 大日本印刷株式会社 | Security token and handler routine execution method |
JP2016126696A (en) * | 2015-01-08 | 2016-07-11 | 大日本印刷株式会社 | Electronic information storage medium, abnormality detection method, and program |
US11216717B2 (en) | 2017-04-04 | 2022-01-04 | Hailo Technologies Ltd. | Neural network processor incorporating multi-level hierarchical aggregated computing and memory elements |
US11221929B1 (en) | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
US11237894B1 (en) * | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
JP2022105981A (en) * | 2021-01-05 | 2022-07-15 | 新唐科技股▲ふん▼有限公司 | Processor with in-band fault-injection detection function |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US12248367B2 (en) | 2020-09-29 | 2025-03-11 | Hailo Technologies Ltd. | Software defined redundant allocation safety mechanism in an artificial neural network processor |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002539523A (en) * | 1999-03-09 | 2002-11-19 | ジェムプリュス | How to monitor program execution |
JP2004178250A (en) * | 2002-11-27 | 2004-06-24 | Le Tekku:Kk | Microprocessor |
EP1450232A1 (en) * | 2003-02-18 | 2004-08-25 | SCHLUMBERGER Systèmes | Method for code secure execution against attacks |
JP2007513422A (en) * | 2003-12-04 | 2007-05-24 | アクサルト・エス・アー | A method for ensuring the execution of a program against attacks by radiation or otherwise |
JP2009187438A (en) * | 2008-02-08 | 2009-08-20 | Dainippon Printing Co Ltd | Method for detecting attack on ic card, ic card, and program for ic card |
-
2008
- 2008-05-28 JP JP2008138837A patent/JP5200664B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002539523A (en) * | 1999-03-09 | 2002-11-19 | ジェムプリュス | How to monitor program execution |
JP2004178250A (en) * | 2002-11-27 | 2004-06-24 | Le Tekku:Kk | Microprocessor |
EP1450232A1 (en) * | 2003-02-18 | 2004-08-25 | SCHLUMBERGER Systèmes | Method for code secure execution against attacks |
JP2007513422A (en) * | 2003-12-04 | 2007-05-24 | アクサルト・エス・アー | A method for ensuring the execution of a program against attacks by radiation or otherwise |
JP2009187438A (en) * | 2008-02-08 | 2009-08-20 | Dainippon Printing Co Ltd | Method for detecting attack on ic card, ic card, and program for ic card |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011181049A (en) * | 2010-03-04 | 2011-09-15 | Dainippon Printing Co Ltd | Method and program for controlling ic chip and ic card |
JP2014215979A (en) * | 2013-04-30 | 2014-11-17 | 大日本印刷株式会社 | Information storage medium and bytecode execution method |
JP2015041349A (en) * | 2013-08-23 | 2015-03-02 | 大日本印刷株式会社 | Information storage medium, bytecode execution method, and program for information storage medium |
JP2015082233A (en) * | 2013-10-23 | 2015-04-27 | 大日本印刷株式会社 | Security token and handler routine execution method |
JP2016126696A (en) * | 2015-01-08 | 2016-07-11 | 大日本印刷株式会社 | Electronic information storage medium, abnormality detection method, and program |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US11216717B2 (en) | 2017-04-04 | 2022-01-04 | Hailo Technologies Ltd. | Neural network processor incorporating multi-level hierarchical aggregated computing and memory elements |
US11675693B2 (en) | 2017-04-04 | 2023-06-13 | Hailo Technologies Ltd. | Neural network processor incorporating inter-device connectivity |
US11238331B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method for augmenting an existing artificial neural network |
US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
US11263512B2 (en) | 2017-04-04 | 2022-03-01 | Hailo Technologies Ltd. | Neural network processor incorporating separate control and data fabric |
US11354563B2 (en) | 2017-04-04 | 2022-06-07 | Hallo Technologies Ltd. | Configurable and programmable sliding window based memory access in a neural network processor |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US11461614B2 (en) | 2017-04-04 | 2022-10-04 | Hailo Technologies Ltd. | Data driven quantization optimization of weights and input data in an artificial neural network |
US11461615B2 (en) | 2017-04-04 | 2022-10-04 | Hailo Technologies Ltd. | System and method of memory access of multi-dimensional data |
US11514291B2 (en) | 2017-04-04 | 2022-11-29 | Hailo Technologies Ltd. | Neural network processing element incorporating compute and local memory elements |
US11221929B1 (en) | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
US11237894B1 (en) * | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US12248367B2 (en) | 2020-09-29 | 2025-03-11 | Hailo Technologies Ltd. | Software defined redundant allocation safety mechanism in an artificial neural network processor |
JP2022105981A (en) * | 2021-01-05 | 2022-07-15 | 新唐科技股▲ふん▼有限公司 | Processor with in-band fault-injection detection function |
JP7413335B2 (en) | 2021-01-05 | 2024-01-15 | 新唐科技股▲ふん▼有限公司 | Processor with in-band fault injection detection |
Also Published As
Publication number | Publication date |
---|---|
JP5200664B2 (en) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5200664B2 (en) | Fault attack detection method, security device, and computer program for falsifying memory contents | |
EP2519908B1 (en) | Jcvm bytecode execution protection against fault attacks | |
CN110990084A (en) | Chip secure starting method and device, storage medium and terminal | |
US20130055025A1 (en) | Microprocessor protected against memory dump | |
JP2018508063A (en) | Secure element | |
JP2018169694A (en) | Security device having tamper resistance against failure utilization attack | |
JP5050893B2 (en) | IC card attack detection method, IC card and IC card program | |
JP2009259126A (en) | Method for detecting fault attack and security device | |
US8528081B2 (en) | Memory system | |
JP6424633B2 (en) | Electronic information storage medium, abnormality detection method, and program | |
US20150333903A1 (en) | Method for Operating a Portable Data Carrier, and Such a Portable Data Carrier | |
JP6175882B2 (en) | Information storage medium, IC card, and bytecode execution method | |
US20060289656A1 (en) | Portable electronic apparatus and data output method therefor | |
JP6769265B2 (en) | Electronic information storage medium, IC card, data abnormality confirmation method, and data abnormality confirmation program | |
JP2008204085A (en) | Semiconductor memory | |
JP6828548B2 (en) | Electronic information storage medium, IC card, tampering check method and tampering check program | |
EP1739519A1 (en) | Method to secure the execution of a program against attacks by radiation or other | |
JP6610002B2 (en) | Arithmetic apparatus, arithmetic method, and arithmetic processing program | |
JP5949357B2 (en) | Security token, data falsification detection method, and computer program | |
JP5082782B2 (en) | Data processing method, IC card, and IC card program | |
JP6136541B2 (en) | Information storage medium and bytecode execution method | |
JP2007206765A (en) | Method of issuing ic card, ic card issuing system, and ic card | |
JP6493672B2 (en) | Electronic information storage medium, abnormality detection method, abnormality detection program, and IC card | |
JP2015082233A (en) | Security token and handler routine execution method | |
JP2016004371A (en) | Ic chip, abnormality detection processing method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110325 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121010 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121023 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121219 |
|
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: 20130115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5200664 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160222 Year of fee payment: 3 |