JP2009187438A - Method for detecting attack on ic card, ic card, and program for ic card - Google Patents
Method for detecting attack on ic card, ic card, and program for ic card Download PDFInfo
- Publication number
- JP2009187438A JP2009187438A JP2008028734A JP2008028734A JP2009187438A JP 2009187438 A JP2009187438 A JP 2009187438A JP 2008028734 A JP2008028734 A JP 2008028734A JP 2008028734 A JP2008028734 A JP 2008028734A JP 2009187438 A JP2009187438 A JP 2009187438A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- card
- stored
- error detection
- operand
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
Description
本発明は、半導体集積回路(ICチップ)が実装されたICカードに関し、ICカードに実装された半導体集積回路に対する攻撃を検知するための技術に関する。 The present invention relates to an IC card on which a semiconductor integrated circuit (IC chip) is mounted, and to a technique for detecting an attack on the semiconductor integrated circuit mounted on the IC card.
近年、半導体集積回路(ICチップ)が実装されたICカードに対する様々な攻撃方法が公開され、この攻撃方法の一つにDFA攻撃(DFA: Differential Fault Analysis)がある。 In recent years, various attack methods for an IC card on which a semiconductor integrated circuit (IC chip) is mounted have been disclosed. One of the attack methods is a DFA attack (DFA: Differential Fault Analysis).
DFA攻撃は、ICチップが動作するときに発生する電磁波やICチップの消費電流などのサイドチャネルを観察することで、ICカードに記憶された機密データ(例えば、暗号鍵)を解読するサイドチャネル攻撃(例えば、DPA: Dynamic Power Analysis)とは異なり、DFA攻撃では、ICチップに入力するクロック周波数や電圧を一時的に変動させるなどして、故意的にICカードに誤動作を生じさせ、正常時と誤動作時の出力の違いから、ICカードに記憶された機密データを解読する攻撃方法である。 A DFA attack is a side channel attack that decrypts confidential data (for example, an encryption key) stored in an IC card by observing side channels such as electromagnetic waves generated when the IC chip operates and current consumption of the IC chip. Unlike DPA (for example, DPA: Dynamic Power Analysis), in DFA attacks, the IC card is intentionally caused to malfunction by temporarily changing the clock frequency or voltage input to the IC chip. This is an attack method that decrypts confidential data stored in an IC card from the difference in output during malfunction.
故意的にICカードに誤動作を生じさせるDFA攻撃への対策として、特許文献1では、データ変換処理(例えば、暗号処理)の誤動作を検出する誤動作検出部を備え、誤動作検出部の検出結果に応じて所定の制御信号を出力するタンパーフリー装置(例えば、ICカード)が開示されている。 As a countermeasure against a DFA attack that intentionally causes a malfunction in an IC card, Patent Document 1 includes a malfunction detection unit that detects a malfunction in data conversion processing (for example, encryption processing), and responds to the detection result of the malfunction detection unit. A tamper-free device (for example, an IC card) that outputs a predetermined control signal is disclosed.
しかしながら、NDFA攻撃(Non-Differential Fault Analysis)のように、レーザ光などがICチップのシリコン上に照射されるなどして、ICチップ上の揮発性メモリのデータが変更されると、意図しない命令が実行され、その後の処理によっては、ICカードに記憶された機密データが漏洩してしまう可能性があるが、特許文献1で開示されているような、暗号鍵の漏洩防止を目的としたDFA対策では、このような脅威に対処することができなかった。 However, if the data in the volatile memory on the IC chip is changed by irradiating laser light or the like onto the silicon of the IC chip, such as NDFA attack (Non-Differential Fault Analysis), an unintended instruction Depending on the subsequent processing, the confidential data stored in the IC card may be leaked. However, as disclosed in Patent Document 1, the DFA for the purpose of preventing the leakage of the encryption key is disclosed. Countermeasures failed to deal with such threats.
そこで、本発明は、レーザ光などがICチップのシリコン上に照射されるなどして、ICチップ上の揮発性メモリのデータが変更されて、意図しない命令が実行されたしても、意図しない命令が実行されたことを検知することのできるICカードへの攻撃検知方法、ICカードおよびICカード用プログラムを提供することを目的とする。 Therefore, the present invention does not intend even when an unintended instruction is executed by changing the data in the volatile memory on the IC chip by irradiating the silicon of the IC chip with laser light or the like. An object of the present invention is to provide an IC card attack detection method, an IC card, and an IC card program that can detect that an instruction has been executed.
上述した課題を解決する第1の発明は、電気的に書換え可能な不揮発性メモリを備えたICチップが実装されたICカードにアプリケーションをロードするとき、前記不揮発性メモリにロードする前記アプリケーションに含まれる命令ごとに、所定のアルゴリズムに従い、オペレーションコードとオペランドの組み合わせから成る前記命令の第1のエラー検出コードを算出し、前記第1のエラー検出コードを付加して前記命令を前記不揮発性メモリに記憶しておき、前記命令を前記不揮発性メモリから読取り、前記ICチップの揮発性メモリに格納して前記命令を処理した後に、前記揮発性メモリに格納した前記命令から演算される第2のエラー検出コードと、前記揮発性メモリに格納した前記命令に付加されて前記不揮発性メモリに記憶されている前記第1のエラー検出コードとを照合することで、前記ICカードに対する攻撃を検知することを特徴とするICカードへの攻撃検知方法である。 A first invention that solves the above-described problem is included in the application that is loaded into the nonvolatile memory when the application is loaded onto an IC card on which an IC chip having an electrically rewritable nonvolatile memory is mounted. For each instruction, a first error detection code of the instruction consisting of a combination of an operation code and an operand is calculated according to a predetermined algorithm, and the first error detection code is added to store the instruction in the nonvolatile memory. A second error calculated from the instruction stored in the volatile memory after the instruction is read from the non-volatile memory, stored in the volatile memory of the IC chip and processed. Added to the detection code and the instruction stored in the volatile memory and stored in the nonvolatile memory And that by collating the first error detection code, is an attack detecting method of the IC card and detecting an attack on the IC card.
更に、第2の発明は、第1の発明に記載のICカードへの攻撃検知方法であって、オペランドがアドレスのオフセットである前記命令を前記不揮発性メモリに記憶するとき、前記ICカードは、オフセット間に記述されている前記命令に付加される前記第1のエラー検出コードに基づいて、オペランドの値を変更し、変更したオペランドを用いて、オペランドがアドレスのオフセットである前記命令の前記第1のエラー検出コードを算出することを特徴とするICカードへの攻撃検知方法である。 Furthermore, the second invention is a method for detecting an attack to an IC card according to the first invention, wherein when the instruction whose operand is an address offset is stored in the nonvolatile memory, the IC card is Based on the first error detection code added to the instruction described between offsets, the value of the operand is changed, and the changed operand is used to change the value of the instruction whose operand is an address offset. 1 is an attack detection method for an IC card, characterized in that an error detection code of 1 is calculated.
更に、第3の発明は、電気的に書換え可能な不揮発性メモリを備えたICカードであって、前記不揮発性メモリにロードするアプリケーションに含まれる命令ごとに、所定のアルゴリズムに従い、オペレーションコードとオペランドの組み合わせから成る前記命令の第1のエラー検出コードを算出し、前記第1のエラー検出コードを付加して前記命令を前記不揮発性メモリに書き込むアプリケーションロード手段と、前記命令を前記不揮発性メモリから読取り、前記ICチップの揮発性メモリに格納して前記命令を処理した後に、前記揮発性メモリに格納した前記命令から演算される第2のエラー検出コードと、前記揮発性メモリに格納した前記命令に付加されて前記不揮発性メモリに記憶されている前記第1のエラー検出コードとを照合することで、前記ICカードに対する攻撃を検知する攻撃検知手段を備えていることを特徴とするICカードである。 Further, the third invention is an IC card having an electrically rewritable nonvolatile memory, wherein an operation code and an operand are executed according to a predetermined algorithm for each instruction included in an application loaded into the nonvolatile memory. Application load means for calculating a first error detection code of the instruction consisting of a combination of the above, writing the instruction to the nonvolatile memory by adding the first error detection code, and the instruction from the nonvolatile memory After reading and storing in the volatile memory of the IC chip and processing the instruction, the second error detection code calculated from the instruction stored in the volatile memory and the instruction stored in the volatile memory Is added to the first error detection code stored in the non-volatile memory. It is an IC card, characterized in that it comprises an attack detection means for detecting an attack on the IC card.
更に、第4の発明は、第3の発明に記載のICカードであって、前記アプリケーションロード手段は、オペランドがアドレスのオフセットである前記命令を前記不揮発性メモリに記憶するとき、オフセット間に記述されている前記命令に付加される前記第1のエラー検出コードに基づいて、オペランドの値を変更し、変更したオペランドを用いて、オペランドがアドレスのオフセットである前記命令の前記第1のエラー検出コードを算出することを特徴とするICカードである。 Further, a fourth invention is the IC card according to the third invention, wherein the application load means writes between the offsets when the instruction whose operand is an address offset is stored in the nonvolatile memory. Based on the first error detection code added to the instruction being changed, the value of the operand is changed, and using the changed operand, the first error detection of the instruction whose operand is an address offset An IC card characterized in that a code is calculated.
更に、第5の発明は、電気的に書換え可能な不揮発性メモリにロードするアプリケーションに含まれる命令ごとに、所定のアルゴリズムに従い、オペレーションコードとオペランドの組み合わせから成る前記命令の第1のエラー検出コードを算出し、前記第1のエラー検出コードを付加して前記命令を前記不揮発性メモリに書き込むアプリケーションロード手段と、前記命令を前記不揮発性メモリから読取り、前記ICチップの揮発性メモリに格納して前記命令を処理した後に、前記揮発性メモリに格納した前記命令から演算される第2のエラー検出コードと、前記揮発性メモリに格納した前記命令に付加されて前記不揮発性メモリに記憶されている前記第1のエラー検出コードとを照合することで、前記ICカードに対する攻撃を検知する攻撃検知手段として、ICカードを機能させるためのICカード用プログラムである。 Further, according to a fifth aspect of the present invention, there is provided a first error detection code of the instruction comprising a combination of an operation code and an operand according to a predetermined algorithm for each instruction included in an application loaded into the electrically rewritable nonvolatile memory. Application load means for adding the first error detection code and writing the instruction to the nonvolatile memory, reading the instruction from the nonvolatile memory, and storing the instruction in the volatile memory of the IC chip. After processing the instruction, the second error detection code calculated from the instruction stored in the volatile memory and the instruction stored in the volatile memory are added and stored in the nonvolatile memory. The attack against the IC card is detected by collating with the first error detection code. As hammer detecting means is an IC program card for the functioning of the IC card.
更に、第6の発明は、第5の発明に記載のICカード用プログラムであって、オペランドがアドレスのオフセットである前記命令を前記不揮発性メモリに記憶するとき、オフセット間に記述されている前記命令に付加される前記第1のエラー検出コードに基づいて、オペランドの値を変更し、変更したオペランドを用いて、オペランドがアドレスのオフセットである前記命令の前記第1のエラー検出コードを算出する前記アプリケーションロード手段として、ICカードを機能させるためのICカード用プログラムである。 Further, a sixth invention is the IC card program according to the fifth invention, wherein when the instruction whose operand is an address offset is stored in the nonvolatile memory, the program described between the offsets Based on the first error detection code added to the instruction, the value of the operand is changed, and using the changed operand, the first error detection code of the instruction whose operand is an address offset is calculated. An IC card program for causing an IC card to function as the application loading means.
上述した本発明によれば、命令から算出されるエラー検出コードを付加して、命令を不揮発性メモリに記憶させることで、ICチップのシリコン上の回路である揮発性メモリ(例えば、CPUのレジスタ)に、レーザ光などによりに操作が加えられ、命令を誤動作させられたとしても、不揮発性メモリに記憶されたエラー検出コードを利用することで、揮発性メモリに格納された命令が破壊されているか検知することが可能になる。 According to the present invention described above, an error detection code calculated from an instruction is added, and the instruction is stored in a nonvolatile memory, whereby a volatile memory (for example, a register of a CPU) that is a circuit on silicon of an IC chip is stored. ) Even if an operation is applied by a laser beam or the like and the instruction is erroneously operated, the instruction stored in the volatile memory is destroyed by using the error detection code stored in the nonvolatile memory. It can be detected.
ここから、本発明に係るICカードへの攻撃検知方法、ICカードおよびICカードに実装されるICカード用プログラムについて、図を参照しながら詳細に説明する。 From here, the attack detection method to the IC card according to the present invention, the IC card, and the IC card program mounted on the IC card will be described in detail with reference to the drawings.
図1は、本実施形態に係るICカード1の外観を示した図で、図1に示したように、ICカード1は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ICカード1には、ICチップ2がモールドされたICモジュール2aが実装されている。 FIG. 1 is a view showing the appearance of an IC card 1 according to the present embodiment. As shown in FIG. 1, the IC card 1 is a plastic card having the same size as a cash card or a credit card. 1, an IC module 2a in which an IC chip 2 is molded is mounted.
図1においては、ICカード1を接触ICカードとして図示しているが、ICカード1は、無線でデータ通信する非接触ICカード、または、接触データ通信と非接触データ通信の2つの通信機能を備えたデュアルインターフェースICカードであってもよい。 In FIG. 1, the IC card 1 is illustrated as a contact IC card, but the IC card 1 has two communication functions of a contactless IC card that performs data communication wirelessly or contact data communication and contactless data 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 IC module 2a into a strip shape. Subscriber Identity Module).
図2は、ICカード1に実装されるICチップ2の回路ブロック図である。図2に図示したように、ICチップ2には、演算機能およびICチップが具備するデバイスを制御する機能を備えた中央演算装置20(CPU:Central Processing Unit)、揮発性メモリとしてランダムアクセスメモリ21(RAM:Random Access Memory)、読み出し専用の不揮発性メモリ23(ROM:Read Only Memory、)、電気的に書換え可能な不揮発性メモリであるEEPROM22(EEPROM:Electrically Erasable Programmable Read-Only Memoryの略)およびターミナル(図示していない)とデータ通信するためのUART24に加え、DESの暗号化/復号演算する機能を備えたDESコプロセッサ25などが、BUS26に接続されている。 FIG. 2 is a circuit block diagram of the IC chip 2 mounted on the IC card 1. 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 a device included in the IC chip, and a random access memory 21 as a volatile memory. (RAM: Random Access Memory), read-only nonvolatile memory 23 (ROM: Read Only Memory), EEPROM 22 (EEPROM: Electrically Erasable Programmable Read-Only Memory) which is an electrically rewritable nonvolatile memory, and In addition to the UART 24 for data communication with a terminal (not shown), a DES coprocessor 25 having a function of performing DES encryption / decryption calculation is connected to the BUS 26.
図3は、ICカード1のソフトウェアブロック図である。ICチップ2のROM23には、JAVA(登録商標)やMULTOS(登録商標)などのプラットフォーム型OS4(OS: Operating System)が実装され、EEPROM22には、プラットフォーム型OS4上で動作するアプリケーション3が実装される。 FIG. 3 is a software block diagram of the IC card 1. The ROM 23 of the IC chip 2 is mounted with a platform type OS 4 (OS: Operating System) such as JAVA (registered trademark) or MULTIS (registered trademark), and the EEPROM 22 is mounted with an application 3 operating on the platform type OS 4. The
図4は、EEPROM22に実装されるアプリケーション3の構造を説明する図である。アプリケーション3は、ICチップ2のCPU20に特定の処理を実行させるための命令30が列挙される命令部3aと、命令30で処理されるデータオブジェクト31が記憶されるデータ部3bとから構成される。 FIG. 4 is a diagram for explaining the structure of the application 3 mounted on the EEPROM 22. The application 3 includes an instruction part 3a in which instructions 30 for causing the CPU 20 of the IC chip 2 to execute a specific process are listed, and a data part 3b in which a data object 31 processed by the instruction 30 is stored. .
更に、命令部3aに列挙される命令30は、プラットフォーム型OS4によって解釈されるバイトコードで記述されたオペレーションコード300(以下、「オペコード」と記す。)と、命令30の引数となるオペランド301とからなり、命令30によってはオペランド301を必要しない。 Further, the instruction 30 listed in the instruction section 3 a includes an operation code 300 (hereinafter referred to as “opcode”) described in byte code interpreted by the platform OS 4, and an operand 301 serving as an argument of the instruction 30. Depending on the instruction 30, the operand 301 is not required.
アプリケーション3の命令部3aに記憶された命令30は、アプリケーション3が処理されるとき、プラットフォーム型OS4によって読取られ、CPU20のレジスタに格納される。 The instruction 30 stored in the instruction unit 3a of the application 3 is read by the platform OS 4 and stored in a register of the CPU 20 when the application 3 is processed.
プラットフォーム型OS4は、命令30に対応した処理を実行するための処理関数を、命令30のオペコード300に関連付けて記憶し、CPU20のレジスタに格納した命令30のオペコード300に対応する処理関数を呼び出し、読み出した命令30に対応する処理を実行する。 The platform OS 4 stores a processing function for executing processing corresponding to the instruction 30 in association with the operation code 300 of the instruction 30 and calls a processing function corresponding to the operation code 300 of the instruction 30 stored in the register of the CPU 20. A process corresponding to the read instruction 30 is executed.
CPU20のレジスタに命令30を格納した後に、CPU20のレジスタにレーザ光が照射されると、CPUのレジスタに格納された命令30の幾つかのビットが変更され、ICカード1が誤動作してしまい、データ部3bに記憶されているデータオブジェクト31の内容が漏洩したり、ICカード1が不正に利用されてしまう可能性がある。 After the instruction 30 is stored in the register of the CPU 20, when the laser beam is irradiated on the register of the CPU 20, some bits of the instruction 30 stored in the CPU register are changed, and the IC card 1 malfunctions. There is a possibility that the contents of the data object 31 stored in the data part 3b may be leaked or the IC card 1 may be used illegally.
そこで、本実施形態に係るICカード1のプラットフォーム型OSには、CPU20のレジスタに記憶された命令30の破壊を検知する手段として機能する命令実行プログラム40と、命令実行プログラム40が、CPU20のレジスタに記憶された命令30の破壊を検知できる形式で、アプリケーション3をEEPROM22に書き込むアプリケーションロードプログラムが実装されている。 Therefore, in the platform OS of the IC card 1 according to the present embodiment, the instruction execution program 40 that functions as a means for detecting destruction of the instruction 30 stored in the register of the CPU 20 and the instruction execution program 40 include the register of the CPU 20. An application load program for writing the application 3 to the EEPROM 22 in a format that can detect the destruction of the instruction 30 stored in the memory is mounted.
CPU20のレジスタに記憶された命令30の破壊を検知する方法としては、様々な方法が考えられるが、本発明では、プラットフォーム型OS4のアプリケーションロードプログラム41が、オペコード300とオペランド301の組み合わせである命令30に、命令30の破壊を検出するためのエラー検出コード(EDC: Error Detecting Code)を付加して、アプリケーション3をEEPROM22に記憶しておき、命令実行プログラム40は、実行する命令30をEEPROM22から読み込み、CPU20のレジスタに格納し、格納した命令30を処理した後、CPU20のレジスタに格納した命令30から演算されるEDCと、EEPROM22から読出した命令30に付与されているEDCを照合することで、CPU20のレジスタに格納した命令30の破壊を検知することができる。 Various methods are conceivable as methods for detecting the destruction of the instruction 30 stored in the register of the CPU 20. In the present invention, the application load program 41 of the platform OS 4 is an instruction that is a combination of the operation code 300 and the operand 301. 30, an error detection code (EDC: Error Detecting Code) for detecting destruction of the instruction 30 is added and the application 3 is stored in the EEPROM 22, and the instruction execution program 40 stores the instruction 30 to be executed from the EEPROM 22. After reading and storing in the register of the CPU 20 and processing the stored instruction 30, the EDC calculated from the instruction 30 stored in the register of the CPU 20 and the EDC given to the instruction 30 read from the EEPROM 22 are collated. , Stored in CPU20 register Can be detected.
ここから、アプリケーションロードプログラム41が、アプリケーション3をICカード1のEEPROM22にロードする手順について説明する。図5は、アプリケーション3をICカード1にロードするときに実行される手順を示したフロー図で、図6は、ロード前後のアプリケーション3を説明する図である。 From here, the procedure by which the application load program 41 loads the application 3 onto the EEPROM 22 of the IC card 1 will be described. FIG. 5 is a flowchart showing a procedure executed when loading the application 3 onto the IC card 1, and FIG. 6 is a diagram illustrating the application 3 before and after loading.
アプリケーション3をEEPROM22にロードするためのコマンドAPDUをICカード1が受信すると、プラットフォーム型OS4に備えられたアプリケーションロードプログラム41が起動し、アプリケーションロードプログラム41は、分割されて送信されるアプリケーション3をEEPROM22に書き込む処理を実行開始する(S1)。 When the IC card 1 receives a command APDU for loading the application 3 into the EEPROM 22, the application load program 41 provided in the platform OS 4 is activated, and the application load program 41 transmits the application 3 divided and transmitted to the EEPROM 22. The process of writing to the file is started (S1).
アプリケーションロードプログラム41は、アプリケーション3をEEPROM22にロードするとき、プラットフォーム型OS4の処理関数に対応しているオペコード300を参照することで、ICカード1が受信したアプリケーション3に含まれる命令30を識別する(S2)。 When the application load program 41 loads the application 3 into the EEPROM 22, the application load program 41 identifies the instruction 30 included in the application 3 received by the IC card 1 by referring to the operation code 300 corresponding to the processing function of the platform OS 4. (S2).
ここで、アプリケーション3に含まれる命令30を識別するのは、対象先までのオフセットをオペランド301にもつ命令30に関しては、命令30間にEDCが挿入されることで、対象先までのオフセットが変更されるため、対象先までに記述されている命令30を考慮して、オペランド301の値を変更することが必要になるためである。 Here, the instruction 30 included in the application 3 is identified because the offset to the target is changed by inserting an EDC between the instructions 30 for the instruction 30 having the offset to the target in the operand 301. Therefore, it is necessary to change the value of the operand 301 in consideration of the instruction 30 described up to the target destination.
アプリケーション3に含まれる命令30を識別すると、アプリケーションロードプログラム41は、特定した命令30のオペコード300を参照し、対象先までのオフセットをオペランド301にもつ命令30であるか確認し(S3)、対象先までのオフセットをオペランド301にもつ命令30であれば、対象先までに記述されている命令30の数に基づいて、オペランド301の値を変更し(S4)、対象先までのオフセットをオペランド301にもつ命令30でなければ、オペランド301の値を変更しない。 When the instruction 30 included in the application 3 is identified, the application load program 41 refers to the operation code 300 of the specified instruction 30 and confirms whether the instruction 30 has the offset to the target destination in the operand 301 (S3). If the instruction 30 has the previous offset in the operand 301, the value of the operand 301 is changed based on the number of instructions 30 described in the target destination (S4), and the offset to the target destination is changed to the operand 301. If the instruction 30 is not the instruction 30, the value of the operand 301 is not changed.
次に、アプリケーションロードプログラム41は、所定のアルゴリズムに従い、識別した命令30のオペコード300およびオペランド301からEDCを算出する(S5)。なお、オペランド301の値が変更されているときは、変更されたオペランド301の値を用いて命令30のEDCは算出される。 Next, the application load program 41 calculates EDC from the operation code 300 and the operand 301 of the identified instruction 30 according to a predetermined algorithm (S5). When the value of the operand 301 is changed, the EDC of the instruction 30 is calculated using the changed value of the operand 301.
アプリケーションロードプログラム41は、命令30のEDCを算出すると、EDCを付加した命令30をEEPROM22に書き込み(S6)、アプリケーション3すべてをEEPROM22に書き込んだか確認し(S7)、アプリケーション3すべてをEEPROM22に書き込んだときはこの手順を終了し、アプリケーション3すべてをEEPROM22に書き込んでいないときは、S2に戻り、アプリケーション3に含まれ、次に記述されている命令30を識別する処理を実行する。 When calculating the EDC of the instruction 30, the application load program 41 writes the instruction 30 with the EDC added to the EEPROM 22 (S6), checks whether all the applications 3 are written to the EEPROM 22 (S7), and writes all the applications 3 to the EEPROM 22 When this procedure is finished, when not all the applications 3 are written in the EEPROM 22, the process returns to S2, and a process of identifying the instruction 30 included in the application 3 and described next is executed.
図6は、ロード前後のアプリケーション3を説明する図で、図6(a)は、EEPROM22にロードされる前のアプリケーション3を説明する図で、図6(b)は、EEPROM22にロードされた後のアプリケーション3を説明する図である。 FIG. 6 is a diagram for explaining the application 3 before and after loading, FIG. 6A is a diagram for explaining the application 3 before being loaded into the EEPROM 22, and FIG. 6B is a diagram after being loaded into the EEPROM 22. It is a figure explaining the application 3 of.
図6(a)で図示したロード前のアプリケーション3には、命令30として命令A、命令B、命令Cおよび命令Dが少なくとも含まれ、図6(a)に図示したように、ICカード1にロードされる前のアプリケーション3は、アプリケーション3の命令30それぞれにEDCが付加されていない状態である。 The application 3 before loading illustrated in FIG. 6A includes at least an instruction A, an instruction B, an instruction C, and an instruction D as the instruction 30. As illustrated in FIG. The application 3 before being loaded is in a state in which EDC is not added to each instruction 30 of the application 3.
図5の手順が実行され、アプリケーション3がICカード1にロードされると、図6(b)に図示したように、EEPROM22にロードされたアプリケーション3は、アプリケーション3の命令30それぞれに、命令30から演算されるEDCが付加された状態である。図6(b)では、命令Aには、命令Aから演算されるEDC_Aが付加され、同様に、命令BにはEDC_Bが、命令CにはEDC_Cが、命令DにはEDC_Dがそれぞれ付加されている。 When the procedure of FIG. 5 is executed and the application 3 is loaded onto the IC card 1, as shown in FIG. 6B, the application 3 loaded into the EEPROM 22 is transferred to each of the instructions 30 of the application 3. This is a state in which an EDC calculated from is added. In FIG. 6B, EDC_A calculated from instruction A is added to instruction A. Similarly, EDC_B is added to instruction B, EDC_C is added to instruction C, and EDC_D is added to instruction D. Yes.
図6で図示している命令Bは、条件付きのJUMP命令で、命令BのオペランドB1には、ジャンプ先(ここでは、命令D)のアドレスまでのオフセット(ここでは、3)が記述される。図6(a)で図示しているように、ジャンプ先となる命令Dまでのオフセット間には、命令B自身と命令Cが含まれているため、命令30にEDCを付加した後のオフセットは+2されなければならず、図6(b)で図しているように、EEPROM22に命令Bが記憶された後のオペランドB1は、「3」に+2されて「5」に変更されている。 The instruction B illustrated in FIG. 6 is a conditional JUMP instruction, and an offset (here, 3) to the address of the jump destination (instruction D here) is described in the operand B1 of the instruction B. . As shown in FIG. 6A, since the instruction B itself and the instruction C are included between the offsets up to the instruction D as a jump destination, the offset after adding EDC to the instruction 30 is As shown in FIG. 6B, the operand B1 after the instruction B is stored in the EEPROM 22 is +2 to “3” and changed to “5”.
ここから、ICカード1に対する攻撃を検知するときの手順について説明する。図7は、ICカード1に対する攻撃を検知するときに実行される手順を示したフロー図である。 From here, a procedure for detecting an attack on the IC card 1 will be described. FIG. 7 is a flowchart showing a procedure executed when an attack on the IC card 1 is detected.
EEPROM22に記憶されたアプリケーション3に含まれる命令30を実行するとき、プラットフォーム型OS4の命令実行プログラム40は、実行する命令30のオペコード300とオペランド301をEEPROM22から読取り、読取った命令30をCPU20のレジスタに格納する(S10)。 When executing the instruction 30 included in the application 3 stored in the EEPROM 22, the instruction execution program 40 of the platform OS 4 reads the opcode 300 and operand 301 of the instruction 30 to be executed from the EEPROM 22, and reads the read instruction 30 in the register of the CPU 20. (S10).
プラットフォーム型OS4の命令実行プログラム40は、読取った命令30をCPU20のレジスタに格納すると、プラットフォーム型4に備えられている処理関数の中から、CPU20のレジスタに格納した命令30のオペコード300に対応する処理関数を検索する(S11)。 When the read instruction 30 is stored in the register of the CPU 20, the instruction execution program 40 of the platform type OS 4 corresponds to the operation code 300 of the instruction 30 stored in the register of the CPU 20 among the processing functions provided in the platform type 4. A processing function is searched (S11).
プラットフォーム型OS4の命令実行プログラム40は、CPU20のレジスタに格納した命令30のオペコード300に対応した処理関数が検索できたか確認し(S12)、処理関数が検索できなければ、不正な攻撃がCPU20のレジスタにあったと判断し、ICカード1の動作を停止させ、この手順を終了する。 The instruction execution program 40 of the platform type OS 4 confirms whether or not a processing function corresponding to the opcode 300 of the instruction 30 stored in the register of the CPU 20 can be searched (S12). It is determined that the data is in the register, the operation of the IC card 1 is stopped, and this procedure is terminated.
また、プラットフォーム型OS4の命令実行プログラム40は、CPU20のレジスタに格納した命令30のオペコード300に対応した処理関数を検索できたときは、検索した処理関数を実行することで、CPU20のレジスタに格納した命令30を実行する(S13)。 Further, when the instruction execution program 40 of the platform type OS 4 can retrieve the processing function corresponding to the operation code 300 of the instruction 30 stored in the register of the CPU 20, it is stored in the register of the CPU 20 by executing the retrieved processing function. The executed instruction 30 is executed (S13).
プラットフォーム型OS4の命令実行プログラム40は、CPU20のレジスタに格納した命令30を実行した後、CPU20のレジスタに格納した命令30のオペコード300とオペランド301からEDCを算出し、CPU20のレジスタに格納した命令30に付加されてEEPROM22に記憶されているEDCと、算出したEDCを照合し(S15)、EDCの照合に成功した場合は、EEPROM22から次に実行する命令30を読み込み、図6の手順を実行する。 The instruction execution program 40 of the platform type OS 4 executes the instruction 30 stored in the register of the CPU 20, calculates the EDC from the opcode 300 and the operand 301 of the instruction 30 stored in the register of the CPU 20, and stores the instruction stored in the register of the CPU 20 The EDC added to 30 and stored in the EEPROM 22 is collated with the calculated EDC (S15). When the EDC collation is successful, the instruction 30 to be executed next is read from the EEPROM 22 and the procedure of FIG. 6 is executed. To do.
また、EDCの照合に失敗した場合は、ICカード1に対して不正な攻撃があったと、命令実行プログラム40は判断し、ICカード1の動作を停止させる。 If the EDC verification fails, the instruction execution program 40 determines that there has been an unauthorized attack on the IC card 1 and stops the operation of the IC card 1.
1 ICカード
2 ICチップ
21 RAM
22 EEPROM
23 ROM
3 アプリケーション
30 命令
300 命令のオペレーションコード(オペコード)
301 命令のオペランド
4 プラットフォーム型OS
40 命令実行プログラム
41 アプリケーションロードプログラム
1 IC card 2 IC chip 21 RAM
22 EEPROM
23 ROM
3 Application 30 Instruction 300 Instruction operation code (opcode)
301 Instruction operand 4 Platform OS
40 Instruction execution program 41 Application load program
Claims (6)
6. The IC card program according to claim 5, wherein when the instruction whose operand is an address offset is stored in the nonvolatile memory, the first instruction added to the instruction described between the offsets. An IC card is used as the application loading means for changing the value of the operand based on the error detection code, and using the changed operand to calculate the first error detection code of the instruction whose operand is an address offset. IC card program to function.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008028734A JP5050893B2 (en) | 2008-02-08 | 2008-02-08 | IC card attack detection method, IC card and IC card program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008028734A JP5050893B2 (en) | 2008-02-08 | 2008-02-08 | IC card attack detection method, IC card and IC card program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009187438A true JP2009187438A (en) | 2009-08-20 |
JP5050893B2 JP5050893B2 (en) | 2012-10-17 |
Family
ID=41070585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008028734A Expired - Fee Related JP5050893B2 (en) | 2008-02-08 | 2008-02-08 | IC card attack detection method, IC card and IC card program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5050893B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009288908A (en) * | 2008-05-28 | 2009-12-10 | Dainippon Printing Co Ltd | Method of detecting failure attack for alterating content of memory, security device, and computer program |
JP2010002975A (en) * | 2008-06-18 | 2010-01-07 | Dainippon Printing Co Ltd | Information processing unit, normal processing discrimination method, and information processing program |
US8912815B2 (en) | 2012-09-20 | 2014-12-16 | Renesas Electronics Corporation | Semiconductor integrated circuit |
JP2022105981A (en) * | 2021-01-05 | 2022-07-15 | 新唐科技股▲ふん▼有限公司 | Processor with in-band fault-injection detection function |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04338823A (en) * | 1991-05-16 | 1992-11-26 | N T T Data Tsushin Kk | Detecting method for illicit alteration of soft module using ic card |
JP2004178250A (en) * | 2002-11-27 | 2004-06-24 | Le Tekku:Kk | Microprocessor |
JP2005535945A (en) * | 2002-03-26 | 2005-11-24 | ソテレスゲーエムベーハー | How to protect the integrity of a computer program |
JP2007513422A (en) * | 2003-12-04 | 2007-05-24 | アクサルト・エス・アー | A method for ensuring the execution of a program against attacks by radiation or otherwise |
-
2008
- 2008-02-08 JP JP2008028734A patent/JP5050893B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04338823A (en) * | 1991-05-16 | 1992-11-26 | N T T Data Tsushin Kk | Detecting method for illicit alteration of soft module using ic card |
JP2005535945A (en) * | 2002-03-26 | 2005-11-24 | ソテレスゲーエムベーハー | How to protect the integrity of a computer program |
JP2004178250A (en) * | 2002-11-27 | 2004-06-24 | Le Tekku:Kk | Microprocessor |
JP2007513422A (en) * | 2003-12-04 | 2007-05-24 | アクサルト・エス・アー | A method for ensuring the execution of a program against attacks by radiation or otherwise |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009288908A (en) * | 2008-05-28 | 2009-12-10 | Dainippon Printing Co Ltd | Method of detecting failure attack for alterating content of memory, security device, and computer program |
JP2010002975A (en) * | 2008-06-18 | 2010-01-07 | Dainippon Printing Co Ltd | Information processing unit, normal processing discrimination method, and information processing program |
US8912815B2 (en) | 2012-09-20 | 2014-12-16 | Renesas Electronics Corporation | Semiconductor integrated circuit |
US9275256B2 (en) | 2012-09-20 | 2016-03-01 | Renesas Electronics Corporation | Semiconductor integrated circuit |
US9679164B2 (en) | 2012-09-20 | 2017-06-13 | Renesas Electronics Corporation | Semiconductor integrated circuit |
US9904590B2 (en) | 2012-09-20 | 2018-02-27 | Renesas Electronics Corporation | Semiconductor integrated circuit |
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 |
---|---|
JP5050893B2 (en) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5200664B2 (en) | Fault attack detection method, security device, and computer program for falsifying memory contents | |
US10509568B2 (en) | Efficient secure boot carried out in information processing apparatus | |
EP2519908B1 (en) | Jcvm bytecode execution protection against fault attacks | |
JP5050893B2 (en) | IC card attack detection method, IC card and IC card program | |
CN102968392A (en) | Microprocessor for preventing memory dump | |
JP2006522968A (en) | Control execution of programs for virtual machines on portable data carriers | |
US20060219796A1 (en) | Integrated circuit chip card capable of determining external attack | |
JP2007004456A (en) | Portable electronic device and data output device of portable electronic device | |
JP2009289104A (en) | Security device with function for detecting trouble attack | |
JP6798157B2 (en) | Electronic information storage medium, anomaly detection method, and anomaly detection program | |
JP6424633B2 (en) | Electronic information storage medium, abnormality detection method, and program | |
US10242183B2 (en) | Method of executing a program by a processor and electronic entity comprising such a processor | |
JP5724387B2 (en) | Portable device and dynamic data storage position changing method | |
JP2008204085A (en) | Semiconductor memory | |
US7822953B2 (en) | Protection of a program against a trap | |
JP7247638B2 (en) | Electronic information storage medium, IC card, falsification check method, and program | |
JP6175882B2 (en) | Information storage medium, IC card, and bytecode execution method | |
JP7559404B2 (en) | Electronic information storage medium, program addition method, and program | |
JP5082782B2 (en) | Data processing method, IC card, and IC card program | |
JP5293113B2 (en) | SEMICONDUCTOR DEVICE, SEMICONDUCTOR DEVICE CONTROL METHOD, AND SEMICONDUCTOR DEVICE CONTROL PROGRAM | |
JP2008152452A (en) | Portable electronic device, control method for portable electronic device, and ic card | |
JP2006172005A (en) | Portable electronic instrument | |
US20220067144A1 (en) | Method, system and device for managing an execution of a program relating to part or all of a first application | |
JP2009015434A (en) | Portable information processor and information processing program | |
JP2022067721A (en) | Ic card, logging information processing method of ic card, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120328 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120411 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120524 |
|
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: 20120626 |
|
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: 20120709 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5050893 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: 20150803 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |