JP2010002975A - 情報処理装置、正常処理判別方法、及び情報処理プログラム - Google Patents

情報処理装置、正常処理判別方法、及び情報処理プログラム Download PDF

Info

Publication number
JP2010002975A
JP2010002975A JP2008159072A JP2008159072A JP2010002975A JP 2010002975 A JP2010002975 A JP 2010002975A JP 2008159072 A JP2008159072 A JP 2008159072A JP 2008159072 A JP2008159072 A JP 2008159072A JP 2010002975 A JP2010002975 A JP 2010002975A
Authority
JP
Japan
Prior art keywords
value
stored
address
information processing
instructions
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
Application number
JP2008159072A
Other languages
English (en)
Other versions
JP5200686B2 (ja
Inventor
Masanori Asano
正徳 浅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2008159072A priority Critical patent/JP5200686B2/ja
Publication of JP2010002975A publication Critical patent/JP2010002975A/ja
Application granted granted Critical
Publication of JP5200686B2 publication Critical patent/JP5200686B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】正常実行、ループ処理を含む処理をも正常に行われたか否かをチェックすることが可能な情報処理装置、正常処理判別方法、及び情報処理プログラムを提供する。
【解決手段】本発明は、一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、前記命令を実行するCPUと、を備え、前記CPUは、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別する。
【選択図】図3

Description

ICカードやメモリカード等のセキュリティデバイスにおいて、攻撃者による処理フローの改ざんを検知する技術分野に関する。
セキュリティデバイス上のプログラムを実行する際、必ず実行しなければならないクリティカルな処理が存在するケースがある。ここで、クリティカルな処理とは、PINや生体情報の認証等、セキュリティデバイスが担保するセキュリティレベルを維持するために必要な処理プロセスを指す。
一方で、セキュリティデバイスに対し不正な動作を行わせるための攻撃としてレーザアタック等のDFA(Differential Fault Attack)が存在するが、このDFAによってセキュリティデバイス上の処理フローを改ざんし、クリティカルな処理を実行させないことにより、当該セキュリティデバイスのセキュリティ強度を低下させる攻撃が知られている。このような処理フローを改ざんする攻撃が成功した場合、ソフトウェア設計者や実装者が意図したクリティカルな処理の実行をスキップさせることができる。
このような処理フロー改ざんの対策として、特許文献1には、分岐処理後に、分岐に関する内部データを検証する方式が提案されている。この方式では、分岐処理が実行された際、分岐先にて経路情報を記録しておき、分岐から戻った後に分岐経路情報の正当性を確認することにより、正常に分岐が実施されたかを検証している。
特開2002−334317号公報
しかしながら、特許文献1に開示された方式は、分岐処理のみを対象としており、正常実行、ループ処理の検証における検証方法を提供していない。
そこで、本発明は、このような点等に鑑みてなされたものであり、正常実行、ループ処理を含む処理をも正常に行われたか否かをチェックすることが可能な情報処理装置、正常処理判別方法、及び情報処理プログラムを提供することを課題の一つとする。
上記課題を解決するために、請求項1に記載の発明は、一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、前記命令を実行するCPUと、を備え、前記CPUは、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項2に記載の発明は、請求項1に記載の情報処理装置において、前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値であり、前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を前記第二の値として一時的に格納しておき、その後当該格納された値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項3に記載の発明は、請求項1に記載の情報処理装置において、前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値であり、前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を一時的に格納しておき、その後当該格納された値に対して所定の演算を施した前記第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項4に記載の発明は、請求項1に記載の情報処理装置において、前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値であり、前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値を前記第二の値として一時的に格納しておき、その後当該格納された値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載の情報処理装置において、前記特定の命令は複数有り、夫々の当該命令が格納されている記憶領域のアドレスは互いに異なることを特徴とする。
請求項6に記載の発明は、請求項1に記載の情報処理装置において、前記特定の命令は複数有り、夫々の当該命令が格納されている記憶領域のアドレスは互いに異なり、前記第一の値は、各前記特定の命令が格納されている各記憶領域のアドレスを示す各値を所定の演算により縮退した値であり、前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を一時的に格納しておき、その後当該格納された値を前記演算により縮退し、当該縮退した値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項7に記載の発明は、請求項6に記載の情報処理装置において、前記演算はハッシュ計算又はXOR計算であることを特徴とする。
請求項8に記載の発明は、請求項2乃至7の何れか一項に記載の情報処理装置において、前記アドレスを示す値は、プログラムカウンタの値であることを特徴とする。
請求項9に記載の発明は、請求項1乃至8の何れか一項に記載の情報処理装置において、前記CPUは、前記特定の命令を複数回実行した場合、その回数をも一時的に格納しておき、当該格納された回数と前記第二の値との積と、前記格納された回数と前記アドレス記憶手段に予め記憶されている前記第一の値との積と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項10に記載の発明は、請求項1乃至9の何れか一項に記載の情報処理装置において、前記特定の命令は、前記一連の処理に含まれる、セキュリティレベルを維持するために必要なクリティカル処理において実行されることを特徴とする。
請求項11に記載の発明は、一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、前記命令を実行するCPUと、を用いた正常処理判別方法であって、前記CPUが、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする。
請求項12に記載の発明は、一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、前記命令を実行するCPUと、を備えた情報処理装置における前記CPUを、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別するように機能させることを特徴とする。
本発明によれば、処理フロー改ざんの対策として単なるフラグではなく、特定の命令が格納されている記憶領域のアドレスに関する値を使用するように構成したので、正常実行、ループ処理を含む処理をも正常に行われたか否かをチェックすることができ、よって、セキュリティレベルを向上させることができる。
以下、図面を参照して本発明の最良の実施形態について詳細に説明する。以下に説明する実施形態は、ICカードに搭載される(埋め込まれる)ICチップに対して本発明を適用した場合の実施の形態である。
[1.ICチップの構成及び機能等]
先ず、本発明の一実施形態に係るICチップの構成及び機能等について、図1等を用いて説明する。
図1は、本実施形態に係るICチップのハードウェア構成例を示す図である。
図1に示すように、ICチップ1は、演算機能を有するCPU(Central Processing Unit)11、プログラム記憶手段の一例としてのROM(Read Only Memory)12、アドレス記憶手段の一例としての不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))13、RAM(Random Access Memory)14、及び外部機器とデータ通信するためのI/O回路15等を備えて構成されている。なお、I/O回路15を介した外部機器とのデータ通信は、接触方式と非接触方式の何れの方式であっても良い。
ROM12には、一連のコマンド処理において実行される複数の命令(機械語で表わされる命令)からなるプログラムが記憶されている。かかるコマンド処理には、例えばICカードが担保するセキュリティレベルを維持するために必要なクリティカル処理(セキュリティ上重要な処理)が含まれている。このクリティカル処理としては、例えば、PINや生体情報の認証等のセキュリティ処理が挙げられる。
不揮発性メモリ13には、処理フロー検証用の情報が事前に(CPU11による処理実行前に)予め記憶される。具体的には、上記複数の命令のうち、上記クリティカル処理において実行される特定の命令が格納(配置)されている記憶領域のアドレス(論理アドレスや物理アドレスであり、各命令毎に互いに異なる)に関する値(第一の値)が記憶される。例えば、ICカードの提供者は、プログラムをコンパイラによりコンパイルしてROM12上に書き込んだ際に、どの命令がどのアドレスに格納されたかをエミュレータにより取り出した後、当該アドレスに関する値を不揮発性メモリ13における所定領域に記憶させる。
RAM(揮発性メモリ)14には、CPU11により実行された上記特定の命令が格納されている記憶領域のアドレスに関する値(第二の値)が一時的に記憶(格納)される。
ここで、アドレスに関する値としては、例えば、当該アドレスを示す値、又は当該アドレスを示す値に対して所定の演算を施した値等が挙げられる。また、当該アドレスを示す値は、例えば、CPU11に搭載されるプログラムカウンタ(実行するべき命令が格納されているROM12上のアドレスを指し示すレジスタ)の値(以下、「PC値」という)である。
図2は、ICチップ内のメモリマップの概略図である。図2に示すように、不揮発性メモリ13に設けられた事前PC値等保持領域には、処理フロー検証用の情報として事前にPC値又は当該PC値に対して所定の演算を施した値(以下、「PC値等」という)が記憶保持され、RAM14に設けられた実行中PC値等保持領域には、上記コマンド処理において特定の命令が実行された際にPC値等が記憶保持される。
CPU11は、上記コマンド処理において上記特定の命令を実行した場合、当該命令に対応するPC値等(当該命令が格納されている記憶領域のアドレスに関する値の一例)をRAM14に一時的に格納しておき、その後当該格納された値と、不揮発性メモリ13に予め記憶されているPC値等と、が一致しているか否かを比較(つまり、RAM14の実行中PC値等保持領域に格納された値と不揮発性メモリ13の事前PC値等保持領域に格納された値を比較)判別することにより上記処理が正常に行われたか否かを判別するようになっている。
図3は、CPU11におけるコマンド処理の一例を示すフローチャートである。図3に示すコマンド処理が開始されると、CPU11は、通常処理(クリティカル処理以外の処理)を行った(ステップS1)後、クリティカル処理を行う(ステップS2)。このクリティカル処理では、先ずセキュリティ処理が行われる(ステップS21)。図3の例では、セキュリティ処理は、命令A〜Eまでの5つの特定の命令で構成され、上から順に実行される。当該セキュリティ処理後、CPU11は、実行した特定の命令に対応するPC値等を、RAM14の実行中PC値等保持領域に格納する(ステップS22)。
ここで、図3に示すセキュリティ処理の例では、5つの特定の命令A〜Eが実行されるようになっており、これら全ての命令に対応するPC値等が格納されるように構成しても良いが、記憶領域を有効に活用するため、このうち一部の命令に対応するPC値等を格納することが望ましい。例えばセキュリティ処理において実行される5つの命令A〜Eのうち最後の命令Eに対応するPC値等のみ格納すれば、例えば最初の命令Aが実行された後、その後の命令がDFAによりスキップされた場合であっても当該スキップを後から検知することができる。
そして、ステップS3では、CPU11は、RAM14の実行中PC値等保持領域に格納されたPC値等と、不揮発性メモリ13の事前PC値等保持領域に事前に格納されているPC値等と、が一致しているか否かを比較判別し(正常/エラーの判定)、両者が一致している場合には(ステップS3:YES)、コマンド処理は正常に実行されたものと判別(正常判定)して、正常処理(例えば、外部にデータを出力)を行い(ステップS4)、両者が一致していない場合には(ステップS3:NO)、コマンド処理は正常に実行されていないと判別(エラー判定)して、DFA検知時のエラー処理(例えば、DFAを受けている可能性が高いとして、ICカードの動作を停止)を行う(ステップS5)。
[2.事前PC値等保持領域及び実行中PC値等保持領域に格納される値の具体例]
ここで、事前PC値等保持領域及び実行中PC値等保持領域に格納される値の具体例について説明する。
(2.1 PC値(PCの即値)の場合)
プログラム全体(コマンド処理)の中で、クリティカル処理が1つしかない場合は、特定の命令に対応するPC値を1つ格納すれば良いが、クリティカル処理が複数個所にある場合は、各クリティカル処理において実行される特定の命令に対応するPC値を全て格納する。
図4(A)は、PC値を格納した事前PC値等保持領域の一例を示す図である。
例えば、あるコマンド処理で複数のクリティカル処理を通過する場合、その通過する各クリティカル処理において実行される特定の命令(ここでは、各クリティカル処理につき、特定の命令が一つある場合を想定)が格納されている記憶領域のアドレスを示す値が、“0x003522”,“0x005678”,“0x006788”のとき、図4(A)に示すように、これら全てを事前PC値等保持領域に格納しておく。
そして、CPU11は、コマンド処理の実行時に、“0x003522”,“0x005678”,及び“0x006788”の各アドレスにおける特定の命令を実行した際に、当該特定の命令に対応する全てのPC値を実行中PC値等保持領域に格納(即値で格納)しておき、その後、実行中PC値等保持領域に格納された値と、事前PC値等保持領域に格納された値を比較する際は、両者を即値で比較することにより、上述した正常/エラーの判定を行う。
(2.2 PC値に対して所定の演算を施した値の場合)
上記2.1と同様、クリティカル処理が複数個所にある場合は、各クリティカル処理において実行される特定の命令に対応するPC値に対して所定の演算を施した値を全て格納する。ここで、所定の演算を施した値とは、例えば、PC値に対して、固定値若しくは乱数等の不定値を加減乗除した値である。
図4(B)は、PC値に対して所定の演算を施した値を格納した事前PC値等保持領域の一例を示す図である。
例えば、上記2.1と同様、通過する各クリティカル処理において実行される特定の命令が格納されている記憶領域のアドレスを示す値が、“0x003522”,“0x005678”,“0x006788”のとき、各アドレスを示す値に対して所定の演算を施し、即値とは異なる値を、事前PC値等保持領域に格納しておく。一例として、各アドレスを示す値に対して固定値“0x112233”を加算した値を格納した場合、図4(B)に示す通りになる。
そして、CPU11は、コマンド処理の実行時に、“0x003522”,“0x005678”,及び“0x006788”の各アドレスにおける特定の命令を実行した際に、当該特定の命令に対応する全てのPC値を実行中PC値等保持領域に格納(即値で格納)しておき、その後、当該実行中PC値等保持領域に格納された各PC値に対して上記演算を施した値(つまり、比較時に演算)と、事前PC値等保持領域に格納された値を比較することにより、正常/エラーの判定を行う。
或いは、CPU11は、コマンド処理の実行時に、“0x003522”,“0x005678”,及び“0x006788”の各アドレスにおける特定の命令を実行した際に、当該特定の命令に対応する各PC値に対して上記演算を施した値を実行中PC値等保持領域に格納しておき、その後、実行中PC値等保持領域に格納された値と、事前PC値等保持領域に格納された値を比較することにより、上述した正常/エラーの判定を行う。
(2.3 複数のPC値を縮退した値の場合)
上記2.1と同様、クリティカル処理が複数個所にある場合、全ての特定の命令に対応するPC値若しくはPC値に対して所定の演算を施した値を事前PC値等保持領域に格納しておくのは、記憶領域を多く取るため、経済的とはいえない場合がある。そこで、これらの複数のPC値を所定の演算(例えば、ハッシュ計算、又はXOR(排他的論理和)計算)により縮退(データ量を縮退)した値(複数のPC値のデータをまとめてより小さなデータに縮退)を格納する。
図5(A)は、複数のPC値を連結しハッシュ計算により縮退する例を示す図である。この場合、通過する各クリティカル処理において実行される特定の命令が格納されている記憶領域のアドレスを示す値が、図5(A)に示すように、“0x003522”,“0x005678”,“0x006788”・・・のとき、各アドレスを示す値を連結し、ハッシュ関数(例えば、SHA−1)によりハッシュ計算を行い、その結果(ハッシュ値)を、事前PC値等保持領域に格納しておく。
また、図5(B)は、複数のPC値のXOR計算により縮退する例を示す図である。この場合、通過する各クリティカル処理において実行される特定の命令が格納されている記憶領域のアドレスを示す値が、図5(B)に示すように、“0x003522”,“0x005678”,“0x006788”・・・のとき、各アドレスを示す値のXOR計算を行い、その結果を、事前PC値等保持領域に格納しておく。
そして、CPU11は、コマンド処理の実行時に、“0x003522”,“0x005678”,及び“0x006788”・・・の各アドレスにおける特定の命令を実行した際に、当該特定の命令に対応する全てのPC値を実行中PC値等保持領域に格納(即値で格納)しておき、その後、当該格納された値を上記演算(例えば、ハッシュ計算、又はXOR計算)により縮退し、当該縮退した値と、事前PC値等保持領域に格納された値を比較することにより、上述した正常/エラーの判定を行う。
[3.コマンド処理の実施例]
次に、本実施形態に係るICチップにおけるコマンド処理の実施例について、図6等を用いて説明する。
図6は、分岐、ループを含むコマンド処理の一例を示すフローチャートである。図6に示すコマンド処理は、クリティカル処理と分岐処理を夫々3つずつ有している。また、分岐処理03は、最小0回、最大1回のみループし、クリティカル処理02が最大2回実行されることは設計上明らかであるとする。
また、事前PC値等保持領域には、通過する各クリティカル処理において実行される特定の命令が格納されている記憶領域のアドレスを示す値を加算した加算値が格納されるが、複数のパスが想定されるため、想定される各パスを経た際の加算値が全て事前PC値等保持領域に格納されるものとする。
図7は、各パスにおける加算値を各パスに対応付けて格納した事前PC値等保持領域の一例を示す図である。
なお、各クリティカル処理における特定の命令実行時には、当該特定の命令に対応するPC値が実行中PC値等保持領域に格納される。
以上の前提条件の下、コマンド処理が正常に実行された場合と、正常に実行されなかった場合の検証について以下に説明する。
先ず、コマンド処理が正常に実行された場合の検証について説明する。
図6において、例えば、通常処理01→分岐処理01→クリティカル処理01→分岐処理02→クリティカル処理02→分岐処理03→クリティカル処理02→分岐処理03の順で処理が実行された場合、実行中PC値等保持領域には、図8(A)に示すように、各特定の命令に対応するPC値が格納される。そして、CPU11は、正常/エラー判定において、上記実行中PC値等保持領域に格納された各PC値(図8(A)に示す“0x003253”,“0x003469”,“0x003469”)を加算し、その加算値(0x009B25)と一致する値が事前PC値等保持領域に格納されているか否かを比較判別する。図7に示す事前PC値等保持領域では、No.3の加算値が一致しているので、処理は正常に行われていることを検証できる。
次に、コマンド処理が正常に実行されなかった場合の検証について説明する。
図6において、例えば、通常処理01→分岐処理01→クリティカル処理01→分岐処理02→クリティカル処理02→分岐処理03→クリティカル処理02→分岐処理03というフローの中で、分岐処理02において処理フロー改ざんを発生させ、通常処理01→分岐処理01→クリティカル処理01→分岐処理02→分岐処理03→クリティカル処理02→分岐処理03というようにクリティカル処理02の実行がスキップされた場合、実行中PC値等保持領域には、図8(B)に示すように、各特定の命令に対応するPC値が格納される。そして、CPU11は、正常/エラー判定において、上記実行中PC値等保持領域に格納された各PC値(図8(B)に示す“0x003253”,“0x003469”)を加算し、その加算値(0x0066CC)と一致する値が事前PC値等保持領域に格納されているか否かを比較判別する。図7に示す事前PC値等保持領域では、何れの値にも一致していないので、処理フロー改ざんが発生したことを検知することができる。
以上説明したように、上記実施形態によれば、コマンド処理において特定の命令を実行した場合、当該命令に対応するPC値等を事前PC値等保持領域に一時的に格納しておき、その後当該格納された値と、実行中PC値等保持領域に予め記憶されているPC値等と、が一致しているか否かを比較判別することにより上記コマンド処理が正常に行われたか否かを判別するように構成し、処理フロー改ざんの対策として単なるフラグではなく、PC値等を使用するように構成したので、正常実行、ループ処理を含む処理をも正常に行われたか否かをチェックすることができ、よって、セキュリティレベルを向上させることができる。
また、上記実施形態によれば、特段のセキュリティ機構を持たないコンピュータに対するフロー改ざんを防止することができ、局所的な対策から、処理全体に対する対策までスケーリングが可能である。
更に、ハードウェアに最も近いアセンブリレベルでの対策、および高級言語における対策をサポートすることができる。
なお、上記図6で示したように、条件分岐など、複数のパスを持つコマンド処理に対しては、想定される全てのパスに対してPC値等(例えば、加算値)を計算、格納しておき、どのパスを経た場合でも比較を実施するように構成する他にも、例えば、特定のパス(例えば、正常系)についてのみPC値等を計算、格納しておき、それ以外のパス(例えば、異常系)についてはPC値等を計算、格納しないように構成しても良い。この構成によれば、記憶領域をより有効に活用することができる。
ここで、正常系とは、プログラムにおいて、利用者が正常な操作、運用を行ったと判断されるケースを意味する。この具体例としては、以下の(i)〜(iii)が挙げられる。
(i)パーソナルコンピュータのログイン画面で正しいパスワードを入力したため、ログイン可能となり、以降、パーソナルコンピュータの機能を利用できるようになった。
(ii)携帯電話機で正しいPINの入力を行ったので、通話が可能になった。
(iii)USBメモリに、メモリに格納可能なサイズのファイルをコピーしたので、メモリ内に正しくファイルがコピーされた。
一方、異常系とは、プログラムにおいて、利用者が不正な(許可されない)操作や、誤った操作を行ったと判断されるケースを意味する。この具体例としては、以下の(iv)〜(vi)が挙げられる。
(iv)パーソナルコンピュータのログオン画面で間違ったパスワードを入力したため、ログインを拒否された。
(v)携帯電話機でPINの入力値を間違えたため、通話することができなくなった。
(vi)USBメモリに、メモリに格納できないサイズのファイルをコピーしようとしたら、コピーできない旨のメッセージが表示された。
また、上記図6においては、クリティカル処理02が最大2回実行されることが設計上明らかであるとしたが、同一の特定の命令が何回実行されるかが明らかでない場合(例えば、ICカードの提供先でアプリケーションをインストールするような場合)が想定される。このような場合、CPU11は、特定の命令を実行した回数(n回)をもPC値等と共に一時的に事前PC値等保持領域に格納しておき、当該格納された回数とPC値等との積と、当該格納された回数と実行中PC値等保持領域に事前に格納されたPC値等との積と、が一致しているか否かを比較判別することによりコマンド処理が正常に行われたか否かを判別するように構成すれば、同一の特定の命令が何回実行されるかが明らかでないにも対応することができる。
なお、上記実施形態においては、ICカードを例にとって説明したが、メモリカード等のその他のセキュリティデバイス、例えば、PC値を保持するCPUを搭載し高度なセキュリティ強度が要求され揮発性及び不揮発性メモリを備えたコンピュータにおいて適用が可能である。
本実施形態に係るICチップのハードウェア構成例を示す図である。 ICチップ内のメモリマップの概略図である。 CPU11におけるコマンド処理の一例を示すフローチャートである。 (A)は、PC値を格納した事前PC値等保持領域の一例を示す図であり、(B)は、PC値に対して所定の演算を施した値を格納した事前PC値等保持領域の一例を示す図である。 (A)は、複数のPC値を連結しハッシュ計算により縮退する例を示す図であり、(B)は、複数のPC値のXOR計算により縮退する例を示す図である。 分岐、ループを含むコマンド処理の一例を示すフローチャートである。 各パスにおける加算値を各パスに対応付けて格納した事前PC値等保持領域の一例を示す図である。 PC値を格納した実行中PC値等保持領域の一例を示す図である。
符号の説明
1 ICチップ
11 CPU
12 ROM
13 不揮発性メモリ
14 RAM
15 I/O回路

Claims (12)

  1. 一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、
    前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、
    前記命令を実行するCPUと、
    を備え、
    前記CPUは、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置において、
    前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値であり、
    前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を前記第二の値として一時的に格納しておき、その後当該格納された値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  3. 請求項1に記載の情報処理装置において、
    前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値であり、
    前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を一時的に格納しておき、その後当該格納された値に対して所定の演算を施した前記第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  4. 請求項1に記載の情報処理装置において、
    前記第一の値は、前記特定の命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値であり、
    前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値に対して所定の演算を施した値を前記第二の値として一時的に格納しておき、その後当該格納された値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  5. 請求項1乃至4の何れか一項に記載の情報処理装置において、
    前記特定の命令は複数有り、夫々の当該命令が格納されている記憶領域のアドレスは互いに異なることを特徴とする情報処理装置。
  6. 請求項1に記載の情報処理装置において、
    前記特定の命令は複数有り、夫々の当該命令が格納されている記憶領域のアドレスは互いに異なり、
    前記第一の値は、各前記特定の命令が格納されている各記憶領域のアドレスを示す各値を所定の演算により縮退した値であり、
    前記CPUは、前記特定の命令を実行した場合、当該命令が格納されている記憶領域のアドレスを示す値を一時的に格納しておき、その後当該格納された値を前記演算により縮退し、当該縮退した値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  7. 請求項6に記載の情報処理装置において、
    前記演算はハッシュ計算又はXOR計算であることを特徴とする情報処理装置。
  8. 請求項2乃至7の何れか一項に記載の情報処理装置において、
    前記アドレスを示す値は、プログラムカウンタの値であることを特徴とする情報処理装置。
  9. 請求項1乃至8の何れか一項に記載の情報処理装置において、
    前記CPUは、前記特定の命令を複数回実行した場合、その回数をも一時的に格納しておき、当該格納された回数と前記第二の値との積と、前記格納された回数と前記アドレス記憶手段に予め記憶されている前記第一の値との積と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする情報処理装置。
  10. 請求項1乃至9の何れか一項に記載の情報処理装置において、
    前記特定の命令は、前記一連の処理に含まれる、セキュリティレベルを維持するために必要なクリティカル処理において実行されることを特徴とする情報処理装置。
  11. 一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、
    前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、
    前記命令を実行するCPUと、
    を用いた正常処理判別方法であって、
    前記CPUが、実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別することを特徴とする正常処理判別方法。
  12. 一連の処理において実行される複数の命令からなるプログラムを記憶するプログラム記憶手段と、
    前記複数の命令のうち、特定の命令が格納されている記憶領域のアドレスに関する第一の値を、前記命令の実行前に予め記憶するアドレス記憶手段と、
    前記命令を実行するCPUと、
    を備えた情報処理装置における前記CPUを、
    実行した前記命令のうち前記特定の命令が格納されている記憶領域のアドレスに関する第二の値と、前記アドレス記憶手段に予め記憶されている前記第一の値と、が一致しているか否かを比較判別することにより前記処理が正常に行われたか否かを判別するように機能させることを特徴とする情報処理プログラム。
JP2008159072A 2008-06-18 2008-06-18 情報処理装置、正常処理判別方法、及び情報処理プログラム Active JP5200686B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008159072A JP5200686B2 (ja) 2008-06-18 2008-06-18 情報処理装置、正常処理判別方法、及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008159072A JP5200686B2 (ja) 2008-06-18 2008-06-18 情報処理装置、正常処理判別方法、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2010002975A true JP2010002975A (ja) 2010-01-07
JP5200686B2 JP5200686B2 (ja) 2013-06-05

Family

ID=41584684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008159072A Active JP5200686B2 (ja) 2008-06-18 2008-06-18 情報処理装置、正常処理判別方法、及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP5200686B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP2002539523A (ja) * 1999-03-09 2002-11-19 ジェムプリュス プログラムの実行の監視方法
JP2004178250A (ja) * 2002-11-27 2004-06-24 Le Tekku:Kk マイクロプロセッサ
EP1450232A1 (fr) * 2003-02-18 2004-08-25 SCHLUMBERGER Systèmes Procede de securisation de l'execution de code contre des attaques
JP2007513422A (ja) * 2003-12-04 2007-05-24 アクサルト・エス・アー 放射またはそれ以外による攻撃に対抗したプログラムの実行を保証するための方法
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP2002539523A (ja) * 1999-03-09 2002-11-19 ジェムプリュス プログラムの実行の監視方法
JP2004178250A (ja) * 2002-11-27 2004-06-24 Le Tekku:Kk マイクロプロセッサ
EP1450232A1 (fr) * 2003-02-18 2004-08-25 SCHLUMBERGER Systèmes Procede de securisation de l'execution de code contre des attaques
JP2007513422A (ja) * 2003-12-04 2007-05-24 アクサルト・エス・アー 放射またはそれ以外による攻撃に対抗したプログラムの実行を保証するための方法
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム

Also Published As

Publication number Publication date
JP5200686B2 (ja) 2013-06-05

Similar Documents

Publication Publication Date Title
US8375219B2 (en) Program and operation verification
CN110990084B (zh) 芯片的安全启动方法、装置、存储介质和终端
JP6373888B2 (ja) 情報処理装置及び制御方法
US8127144B2 (en) Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit
JP4864762B2 (ja) 半導体記憶装置
JP4822231B2 (ja) 長い摂動による故障の検出
JP5718373B2 (ja) 不揮発性メモリのメモリブロックを検査する方法
CN105893877B (zh) 安全数据读取的方法和数据处理系统
JP2020095470A (ja) 情報処理装置及びその制御方法
US9396336B2 (en) Automatic correction of security downgraders
JP5200686B2 (ja) 情報処理装置、正常処理判別方法、及び情報処理プログラム
JP2008204085A (ja) 半導体記憶装置
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
US10242183B2 (en) Method of executing a program by a processor and electronic entity comprising such a processor
US8527835B2 (en) Method for secure data transfer
EP3460702A1 (en) Method to detect an attack by fault injection on a sensitive operation
JP2009015434A (ja) 携帯可能情報処理装置及び情報処理プログラム
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
JP2010128510A (ja) 生体情報認証システム
CN111625784B (zh) 一种应用的反调试方法、相关装置及存储介质
JP5949357B2 (ja) セキュリティトークン、データ改竄検知方法およびコンピュータプログラム
JP2008123160A (ja) メモリ管理方法
JP5070137B2 (ja) 記憶装置及びデータ書込装置
JP2009245336A (ja) 情報処理装置、情報処理方法、および、情報処理プログラム
JP2022067721A (ja) Icカード、icカードのロギング情報処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110427

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: 20121217

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: 5200686

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