JP6379852B2 - 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム - Google Patents

電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム Download PDF

Info

Publication number
JP6379852B2
JP6379852B2 JP2014169207A JP2014169207A JP6379852B2 JP 6379852 B2 JP6379852 B2 JP 6379852B2 JP 2014169207 A JP2014169207 A JP 2014169207A JP 2014169207 A JP2014169207 A JP 2014169207A JP 6379852 B2 JP6379852 B2 JP 6379852B2
Authority
JP
Japan
Prior art keywords
function
processor module
storage location
pointer
processor
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.)
Active
Application number
JP2014169207A
Other languages
English (en)
Other versions
JP2016045688A (ja
Inventor
柴田 直人
直人 柴田
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 JP2014169207A priority Critical patent/JP6379852B2/ja
Publication of JP2016045688A publication Critical patent/JP2016045688A/ja
Application granted granted Critical
Publication of JP6379852B2 publication Critical patent/JP6379852B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、複数のプロセッサモジュールを備える電子情報記録媒体の技術分野に関する。
従来、ICカードにおいて、レーザー光などを用いた故障利用攻撃などにより内部の機密情報が不正に漏洩してしまうことがあり、異常を検知するなどの対策が検討されている。例えば、特許文献1には、ICカードに代表されるセキュリティデバイスに対し、レーザー光などを利用した故障攻撃が行われたときに、メモリに格納されたオペコードがセキュリティデバイスに予め指定されている命令(例えば、NOP命令)のオペコードに変化したことを検知して動作を停止する等の方法が開示されている。一方、従来から、電磁界の変動を観測するSEMA(Simple ElectroMagnetic Analysis)やDEMA(Differential ElectroMagnetic Analysis)などのサイドチャネル攻撃が知られている。サイドチャネル攻撃に対する対策としては、例えば特許文献2に開示されるように、初期秘密数量を所定の論理的関係を有する複数のランダム化した数量に変換し、ハードウェア装置の外部監視から得られる暗号操作に関する有用情報の量を減らす技術がある。
ところで、内部にキャッシュメモリを備えるプロセッサモジュールがバスに複数接続され、各プロセッサモジュールが主メモリを共有しているマルチプロセッサシステムが知られている(例えば、特許文献3参照)。
特許第5200664号 特表2002−519722号 特許第3219422号
しかしながら、上述したような従来技術では、サイドチャネル攻撃、および故障利用攻撃の両方に対して有効に対処することが困難であった。
そこで、本発明は、上記点等に鑑みてなされたものであり、複数のプロセッサモジュールを利用して、サイドチャネル攻撃および故障利用攻撃に対してセキュリティを向上させることが可能な電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラムを提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体であって、前記第1のプロセッサモジュールは、外部からのコマンドに応じて、乱数を取得する取得手段と、前記取得された乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定する設定手段と、前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行する第1実行手段と、を備え、前記第2のプロセッサモジュールは、前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行する第2実行手段を備えることを特徴とする。
請求項2に記載の発明は、1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体における前記プロセッサモジュールの処理方法であって、前記第1のプロセッサモジュールが、外部からのコマンドに応じて、乱数を取得するステップと、前記第1のプロセッサモジュールが、前記取得した乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定するステップと、前記第1のプロセッサモジュールが、前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行するステップと、前記第2のプロセッサモジュールが、前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行するステップと、を含むことを特徴とする。
請求項3に記載の発明は、1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体において、外部からのコマンドに応じて、乱数を取得するステップと、前記取得された乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定するステップと、前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行するステップと、を前記第1のプロセッサモジュールに実行させ、前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行するステップを前記第2のプロセッサモジュールに実行させることを特徴とする。
本発明によれば、複数のプロセッサモジュールを利用して、サイドチャネル攻撃および故障利用攻撃に対してセキュリティを向上させることができる。
(A)は、ICチップCの概要構成例を示す図であり、(B)は、ICチップ1が備えるRAM3のメモリマップの一例を示す図である。ICチップCの概要構成例を示す図である。 異常検知処理の一例を示すフローチャートである。 プロセッサ制御回路7が備えるスペシャルファンクションレジスタ及びタイマーを示す図である。 (A)は、プロセッサモジュール1により行われる割込み処理の一例を示すフローチャートであり、(B)は、プロセッサモジュール2により行われる割込み処理の一例を示すフローチャートである。 (A)は、プロセッサモジュール1により行われる処理の一例を示すフローチャートであり、(B)は、プロセッサモジュール2により行われる処理の一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ICチップに対して本発明を適用した場合の実施の形態である。
先ず、図1を参照して、本実施形態に係るICチップの概要構成について説明する。図1(A)は、ICチップCの概要構成例を示す図である。図1(B)は、ICチップ1が備えるRAM3のメモリマップの一例を示す図である。ICチップCは、本発明の電子情報記録媒体の一例である。なお、ICチップCは、キャッシュカード、クレジットカード、社員カード等に搭載されて使用される。或いは、ICチップCは、スマートフォンや携帯電話機等の通信機器に組み込まれる。ICチップCは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
ICチップCは、図1(A)に示すように、プロセッサモジュール1、プロセッサモジュール2、RAM(Random Access Memory)3、ROM(Read Only Memory)4、NVM(Nonvolatile Memory)5、I/O回路6、及びプロセッサ制御回路7を備えて構成され、これらの構成要素は、バス8に接続されている。バス8は、アドレスバスとデータバスを備える。プロセッサモジュール1は、第1のプロセッサモジュールの一例であり、プロセッサモジュール2は、第2のプロセッサモジュールの一例である。なお、図1に示すICチップCは、2つのプロセッサモジュールを備えるが、3つ以上のプロセッサモジュールを備えてもよい。
プロセッサモジュール1,2は、それぞれ、CPUコア11,21、及びキャッシュ12,22等を備える。プロセッサモジュール1とプロセッサモジュール2とは同一の構成を有するが、役割に応じた異なる処理を実行する。例えば、プロセッサモジュール1は、外部機器からI/O回路6を介して入力されたコマンドに応じて処理(以下、「メイン処理」という)を行う。メイン処理は、本発明における第1の処理の一例である。一方、プロセッサモジュール2は、例えば、メイン処理とは異なる冗長的なサブ処理を行う。サブ処理は、本発明における第2の処理の一例である。サブ処理の例として、例えば、異常検知処理が挙げられる。なお、サブ処理は、特に意味のない処理を繰り返すダミー処理であってもよい。CPUコア11,21は、それぞれ、図示しないが、演算器、プログラムカウンタ、及びレジスタ(関数ポインタを含む)等を備える。CPUコア11は、メイン処理において、プログラムコード(命令コード)をキャッシュ12からレジスタにフェッチ(取得)して解釈(デコード)、及び実行する。一方、CPUコア21は、サブ処理において、プログラムコードをキャッシュ22からレジスタにフェッチ(取得)して解釈(デコード)、及び実行する。キャッシュ12,22は、それぞれ、図示しないが、キャッシュメモリ、及びキャッシュメモリ制御部等により構成される。キャッシュメモリ制御部は、CPUコア11,21の制御の下、RAM3、ROM4、またはNVM5からバス8を介して取得したプログラムコードまたはデータの一部をキャッシュメモリにキャッシュ(一時的に保持)する。また、キャッシュメモリ制御部は、例えばCPUコア11から要求されたプログラムコードもしくはデータがキャッシュメモリ上に存在しない場合(つまり、キャッシュミスが発生した場合)、バス8を介して、RAM3、ROM4、またはNVM5からキャッシュメモリへのデータ転送(メモリ転送)を行う。なお、キャッシュ12,22は、プログラムコードに利用されるものと、データに利用されるものが物理的に分離されていてもよい。また、キャッシュ12,22の一部を複数のプロセッサモジュールにて共有してもよい。
図2は、異常検知処理の一例を示すフローチャートである。図2に示す異常検知処理の前提として、0番レジスタから8番レジスタまでの9つのレジスタがCPUコア11,21に備えられているものとする。図2に示す異常検知処理において、例えばCPUコア21は、0番レジスタを除く各レジスタの値を“1”に設定する(ステップS101)。次いで、CPUコア21は、0番レジスタの値を“100”に設定する(ステップS102)。次いで、CPUコア21は、2番レジスタ〜9番レジスタの各値を1番レジスタの値に加算する(ステップS103)。次いで、CPUコア21は、0番レジスタから1減算する(ステップS104)。次いで、CPUコア21は、0番レジスタの値が“0”より大きいか否かを判定し(ステップS105)、“0”より大きい場合(ステップS105:YES)、ステップS103に戻る。つまり、この例では、各レジスタの値の1番レジスタへの加算が100回繰り返される。そして、“0”より大きくない場合(ステップS105:NO)、CPUコア21は、1番レジスタの値は期待値(予め設定された値)であるか否かを判定し(ステップS106)、期待値である場合(ステップS106:YES)、正常終了し、期待値でない場合(ステップS106:NO)、異常検知されたとして異常終了する。このような異常検知処理により、レジスタ等の異常を検知することができる。異常検知処理の他の例として、例えば、CPUコア21は、所定のタイミングで、複数の特定アドレスのメモリ(例えば、RAM3、ROM4、NVM5)に特定の値を書き込み、これらをすべて読み出して期待値と一致するか否かを判定し、一致しない場合に異常終了するように構成してもよい。ここで、所定のタイミングとは、RAM3の場合、例えばICカードがリセットされたタイミングであり、ROM4の場合、例えばICチップ製造時であり、NVM5の場合、ICカード製造時である。これにより、メモリ異常を検知することもできる。
RAM3には、図1(B)に示すように、第1ワーク領域31、第2ワーク領域32、第1スタック領域33、第2スタック領域34、第1退避領域35、及び第2退避領域36が設けられている。第1ワーク領域31には、CPUコア11により演算に用いられるデータや演算結果等のデータが記憶される。第2ワーク領域32には、CPUコア21により演算に用いられるデータや演算結果等のデータが記憶される。第1スタック領域33には、プロセッサモジュール1における割込み発生時に、CPUコア11のプログラムカウンタの値(プログラムコードの記憶場所(ROM4またはNVM5内の記憶場所)を示す)が戻りアドレスとして記憶される。第2スタック領域34には、プロセッサモジュール2における割込み発生時に、CPUコア21のプログラムカウンタの値(プログラムコードの記憶場所を示す)が戻りアドレスとして記憶される。第1退避領域35には、プロセッサモジュール1が例えばメイン処理実行中に第1の割込みが発生した場合における第1の割込み処理において、CPUコア11のレジスタの値、及び第1スタック領域33に記憶されている戻りアドレスが記憶される。この戻りアドレスは、第1の割込み復帰後に実行されるべきプログラムコードの記憶場所を示す。第2退避領域36には、プロセッサモジュール2が例えばサブ処理実行中に第2の割込みが発生した場合における第2の割込み処理において、CPUコア21のレジスタの値、及び第2スタック領域34に記憶されている戻りアドレスが記憶される。この戻りアドレスは、第2の割込み復帰後に実行されるべきプログラムコードの記憶場所を示す。
ROM4またはNVM5には、OS、アプリケーションプログラム(複数のプログラムコードから構成)、及び本発明の処理プログラムが記憶される。NVM5には、フラッシュメモリ、または「Electrically Erasable Programmable Read-Only Memory」が適用される。I/O回路6は、外部機器とのインターフェイスを担う。接触式のICチップCの場合、I/O回路6には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部機器との間で通信を行うための端子である。一方、非接触式のICチップCの場合、I/O回路6には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器の例としては、ICカード発行機、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICチップCが通信機器に組み込まれる場合、外部機器には通信機器の機能を担う制御部が該当する。プロセッサ制御回路7は、プロセッサモジュール1,2の動作及び停止を制御する。
以上のように構成されたICチップCにおいて、予め設定された条件が満たされた場合に、プロセッサモジュール1はメイン処理に代えてサブ処理を実行し、プロセッサモジュール2はサブ処理に代えてメイン処理を実行する。つまり、CPUコア11とCPUコア21とは、予め設定された条件にしたがって、処理を入れ替えるので、攻撃者にとってはどのCPUコアで処理を行っているか分からず、レーザー攻撃などを行う対象(ICチップCの位置)を特定しにくくなるため、本構成は故障利用攻撃に対して耐性を持つ。また、ICチップCの特定の位置における消費電力を計測して攻撃するタイプのサイドチャネル攻撃に対しても、処理を行っているICチップC上の位置を攪乱する効果が期待できるため、本構成はサイドチャネル攻撃に対しても耐性を持つ。このように、プロセッサモジュール1の処理内容とプロセッサモジュール2の処理内容と入れ替えることにより、攻撃を行う対象(ICチップC上の位置)の特定を困難にし、サイドチャネル攻撃および故障利用攻撃の両方に対してセキュリティを向上させることができる。
次に、本発明のICチップCの動作例について、実施例1と実施例2に分けて説明する。
(実施例1)
先ず、図3及び図4を参照して、実施例1の動作について説明する。実施例1では、プロセッサ制御回路7は、タイマー、及びスペシャルファンクションレジスタを備える。図3は、プロセッサ制御回路7が備えるスペシャルファンクションレジスタ及びタイマーを示す図である。図3の例では、スペシャルファンクションレジスタとして、モジュール動作表示レジスタ71、PM1(プロセッサモジュール1)用割込み設定レジスタ72、及びPM2(プロセッサモジュール2)用割込み設定レジスタ73を示している。
モジュール動作表示レジスタ71は、プロセッサモジュール1とプロセッサモジュール2の現在の動作状態(0:停止、1:動作)を示すレジスタである。図3の例では、このレジスタ71のb(ビット)1がプロセッサモジュール1の動作状態を示し、このレジスタ71のb2がプロセッサモジュール2の動作状態を示す。また、モジュール動作表示レジスタ71のb1及びb2(“0”または“1”)は、それぞれ、プロセッサ制御回路7、またはプロセッサモジュール1,2によりスイッチ可能(言い換えれば、ソフト的に切替設定可能)になっている。これにより、プロセッサモジュール1,2は、それぞれ、動作状態が切り換えられる。
PM1用割込み設定レジスタ72は、プロセッサモジュール1に対する割込みが設定(ソフト的に設定)されるレジスタであり、PM2用割込み設定レジスタ73は、プロセッサモジュール2に対する割込みが設定されるレジスタである。レジスタ72,73において設定可能な割込みには、例えば、タイマー割込みとソフトウェア割込み(ソフト割込み)とがある。タイマー割込みは、本発明における第1の割込みの一例である。一方、ソフトウェア割込みは、本発明における第2の割込みの一例である。タイマー割込みは、タイマー74によりカウントされたカウント値が設定値に達する(或いは、設定値から所定値(例えば1)ずつ減算され0になる)ことによる割込み(ハードウェア割込み)である。タイマー割込み設定は、例えばICカードの利用者からI/O回路6を介して入力される指示に従ってプロセッサ制御回路7により行われる。タイマー割込みが発生した場合、割り込まれたプロセッサモジュールで割込み処理が実行される。一方、ソフトウェア割込みは、一方のプロセッサモジュール(1又は2)が割込み処理において設定する割込み(一方のプロセッサモジュールから他方のプロセッサモジュールに割込み)である。ソフトウェア割込みが発生した場合に割り込まれたプロセッサモジュールで割込み処理が実行される。図3の例では、PM1用割込み設定レジスタ72のb1が“1”に設定されているため、プロセッサモジュール1に対してタイマー割込みが発生する。なお、例えば、PM2用割込み設定レジスタ73のb2が“1”に設定されると、プロセッサモジュール2に対してソフトウェア割込みが発生する。
図4(A)は、プロセッサモジュール1により行われるタイマー割込み処理の一例を示すフローチャートであり、図4(B)は、プロセッサモジュール2により行われるソフトウェア割込み処理の一例を示すフローチャートである。なお、実施例1では、図3に示すように、プロセッサモジュール1に対してタイマー割込み設定がされているものとする。また、以下の説明では、プロセッサモジュール1においてメイン処理が実行中であり、且つプロセッサモジュール2においてサブ処理が実行中であるものとする。
プロセッサモジュール1においてメイン処理実行中に、タイマー74によりカウントされたカウント値が設定値に達する(或いは、設定値から所定値(例えば1)ずつ減算され0になる)ことによりプロセッサモジュール1に対してタイマー割込みが発生すると(予め設定された条件が満たされた場合の一例)、図4(A)に示すタイマー割込み処理(第1の割込み処理の一例)が呼び出され、当該呼び出し時(つまり、タイマー割込み発生時)のプログラムカウンタ(CPUコア11のプログラムカウンタ)の値が第1スタック領域33に戻りアドレスとして記憶される。なお、当該呼び出し時のプログラムカウンタの値は、第1スタック領域33ではなく別の記憶領域に記憶されるように構成してもよい。そして、図4(A)に示すタイマー割込み処理が開始すると、プロセッサモジュール1のCPUコア11は、プロセッサモジュール2を停止させる(ステップS1)。例えば、プロセッサモジュール1がバス8を介してプロセッサ制御回路7へプロセッサモジュール2の停止指令を与える。これにより、プロセッサ制御回路7は、モジュール動作表示レジスタ71においてプロセッサモジュール2に対応するビットを“1”から“0”に切り替えることでプロセッサモジュール2の動作(サブ処理)が停止する。なお、プロセッサモジュール1は、モジュール動作表示レジスタ71のアドレスをバス8を介して指定することで直接的にプロセッサモジュール2に対応するビットを“1”から“0”に切り替えることもできる。
次いで、プロセッサモジュール1のCPUコア11(第1退避手段の一例)は、自身のレジスタの値を第1退避領域35に記憶(退避)する(ステップS2)。次いで、プロセッサモジュール1のCPUコア11(第1退避手段の一例)は、タイマー割込み発生時に第1スタック領域33に記憶された戻りアドレスを第1退避領域35に記憶(退避)する(ステップS3)。
次いで、プロセッサモジュール1のCPUコア11は、プロセッサモジュール2に対してソフトウェア割込みを設定する(ステップS4)。例えば、プロセッサモジュール1がプロセッサ制御回路7に対してプロセッサモジュール2のソフトウェア割込み設定指令を与える。これにより、プロセッサ制御回路7は、PM2用割込み設定レジスタ73のb2を“0”から“1”に切り替えることでプロセッサモジュール2に対するソフトウェア割込みが設定される。なお、プロセッサモジュール1は、PM2用割込み設定レジスタ73のアドレスをバス8を介して指定することで直接的にPM2用割込み設定レジスタ73のb2を“0”から“1”に切り替えることもできる。
次いで、プロセッサモジュール1のCPUコア11は、プロセッサモジュール2を復帰させ、プロセッサモジュール1自身が停止する(ステップS5)。例えば、プロセッサモジュール1がバス8を介してプロセッサ制御回路7へプロセッサモジュール2の復帰指令、及びプロセッサモジュール1の停止指令を与える。これにより、プロセッサ制御回路7は、モジュール動作表示レジスタ71においてプロセッサモジュール2に対応するビットを“0”から“1”に切り替えることでプロセッサモジュール2の動作(サブ処理)が復帰する。また、プロセッサ制御回路7は、モジュール動作表示レジスタ71においてプロセッサモジュール1に対応するビットを“1”から“0”に切り替えることでプロセッサモジュール1の動作(メイン処理)が停止する。
一方、プロセッサモジュール2は、上記ステップS5の処理により復帰してサブ処理を再開すると、ステップS4でソフトウェア割込みが設定されているため、プロセッサモジュール2においてサブ処理実行中に、プロセッサモジュール2に対してソフトウェア割込みが発生する。これにより、図4(B)に示すソフトウェア割込み処理(第2の割込み処理の一例)が呼び出され、当該呼び出し時(つまり、ソフトウェア割込み発生時)のプログラムカウンタ(CPUコア21のプログラムカウンタ)の値が第2スタック領域34に戻りアドレスとして記憶される。そして、図4(B)に示すソフトウェア割込み処理が開始すると、プロセッサモジュール2のCPUコア21(第2退避手段の一例)は、自身のレジスタの値を第2退避領域36に記憶(退避)する(ステップS11)。次いで、プロセッサモジュール2のCPUコア21(第2退避手段の一例)は、ソフトウェア割込み発生時に第2スタック領域34に記憶された戻りアドレスを第2退避領域36に記憶(退避)する(ステップS12)。
次いで、プロセッサモジュール2のCPUコア21は、上記ステップS3で第1退避領域35に記憶(退避)された戻りアドレスを取得して第2スタック領域34に記憶する(ステップS13)。次いで、プロセッサモジュール2のCPUコア21は、プロセッサモジュール1を復帰させる(ステップS14)。次いで、プロセッサモジュール2のCPUコア21は、上記ステップS2で第1退避領域35に記憶(退避)されたレジスタの値を取得(自身のレジスタに設定)する(ステップS15)。そして、プロセッサモジュール2のCPUコア21は、第2実行手段として、上記ステップS13で第2スタック領域34に記憶された戻りアドレスを取得(自身のプログラムカウンタに設定)しソフトウェア割込みから復帰してメイン処理(つまり、サブ処理に代えてメイン処理)を実行する。
一方、プロセッサモジュール1は、上記ステップS14の処理により復帰して第1の割込み処理を再開すると、CPUコア11は、上記ステップS12で第2退避領域36に記憶(退避)された戻りアドレスを取得して第1スタック領域33に記憶する(ステップS21)。プロセッサモジュール1のCPUコア11は、タイマー74のカウント値をリセットし、乱数生成器(図示せず)により生成された乱数を用いてタイマー74の設定値を設定し(つまり、設定値は乱数によりランダムに設定される)、当該タイマー74を再起動させる(ステップS22)。これにより、タイマー74によりカウントが開始され、カウント値が設定値に達する(或いは、設定値から所定値(例えば1)ずつ減算され0になる)ことにより、再び、プロセッサモジュール1に対してタイマー割込みが発生することになる。なお、乱数生成器は、ハードウェアで構成されてもよいし、ソフトウェアで構成されてもよい。
次いで、プロセッサモジュール1のCPUコア11は、上記ステップS11で第2退避領域36に記憶(退避)されたレジスタの値を取得(自身のレジスタに設定)する(ステップS23)。そして、プロセッサモジュール1のCPUコア11は、第1実行手段として、上記ステップS21で第1スタック領域33に記憶された戻りアドレスを取得(自身のプログラムカウンタに設定)しタイマー割込みから復帰して、サブ処理(つまり、メイン処理に代えてサブ処理)を実行する。
レーザー光を用いた攻撃においてはレーザー光による効果を確認するため、外部からのコマンド送信に対して、照射するタイミングと場所を変化させ、この攻撃により異常検知のためのプロセッサモジュールが判明した場合、これを避けて攻撃されてしまう可能性がある。しかし、実施例1によれば、上述した割込みを利用して、プロセッサモジュール1とプロセッサモジュール2間でレジスタ及びプログラムカウンタの値を入れ替えることで、プロセッサモジュール1の処理内容とプロセッサモジュール2の処理内容とをハードウェア的に入れ替えるように構成したので、攻撃者に異常検知のためのプロセッサモジュールが判明され難くすることができ、サイドチャネル攻撃および故障利用攻撃に対してセキュリティを向上させることができる。しかも、タイマー74の設定値は乱数に基づいて設定されるので、ランダムなタイミングで上記プロセッサモジュール間の処理内容の入れ替えを行うことができるので、より一層、サイドチャネル攻撃および故障利用攻撃に対してセキュリティを向上させることができる。なお、通信プロトコルなどの遅延が許されない処理を実行する場合には、上記のタイマーを停止するなどにより、プロセッサモジュール間の処理内容の入れ替えを防ぐこともできる。
(実施例2)
次に、図5を参照して、実施例2の動作について説明する。実施例2では、メイン処理は第1の関数(FuncA)によりプログラム中に規定され、サブ処理は第2の関数(FuncB)によりプログラム中に規定される。なお、実施例2でも、プロセッサ制御回路7は、実施例1と同一のスペシャルファンクションレジスタを備えてもよいが、PM1用割込み設定レジスタ72、及びPM2用割込み設定レジスタ73は使用されない。図5(A)は、プロセッサモジュール1により行われる処理の一例を示すフローチャートである。図5(B)は、プロセッサモジュール2により行われる処理の一例を示すフローチャートである。
プロセッサモジュール1が受信待機状態にあり、プログラムモジュール2が動作停止状態にある場合において、外部機器からI/O回路6によりコマンドが受信されると、プロセッサモジュール1に対してデータ受信の割込みが発生し、図5(A)に示す処理が開始する。プロセッサモジュール1において図5(A)に示す処理が開始されると、プロセッサモジュール1のCPUコア11(取得手段の一例)は、外部からのコマンドに応じて、乱数生成器(図示せず)により生成された乱数を取得する(ステップS31)。
次いで、プロセッサモジュール1のCPUコア11は、ステップS31で取得された乱数は閾値(予め設定された値)以下であるかを判定する(ステップS32)。そして、CPUコア11は、乱数が閾値以下であると判定した場合(ステップS32:YES)、第1の関数(FuncA)の記憶場所(ROM4またはNVM5内の記憶場所)を示す関数アドレスを、プロセッサモジュール1のCPUコア11が参照する第1の関数ポインタ(CPUコア11内にある関数ポインタ)に設定し(ステップS33)、且つ、第2の関数(FuncB)の記憶場所を示す関数アドレスを、プロセッサモジュール2のCPUコア21が参照する第2の関数ポインタ(CPUコア21内にある関数ポインタ)に設定する(ステップS34)。一方、CPUコア11は、乱数が閾値以下でないと判定した場合(ステップS32:NO)(予め設定された条件が満たされた場合の一例)、第2の関数(FuncB)の記憶場所を示す関数アドレスを、プロセッサモジュール1のCPUコア11が参照する第1の関数ポインタに設定し(ステップS35)、且つ、第1の関数(FuncA)の記憶場所を示す関数アドレスを、プロセッサモジュール2のCPUコア21が参照する第2の関数ポインタに設定する(ステップS36)。つまり、プロセッサモジュール1(設定手段の一例)は、取得された乱数と閾値との大小関係に基づいて、第1の関数(FuncA)の記憶場所を示す関数アドレスと、第2の関数(FuncB)の記憶場所を示す関数アドレスとの何れか一方をプロセッサモジュール1が参照する第1の関数ポインタに設定し、且つ、第1の関数(FuncA)の記憶場所を示す関数アドレスと、第2の関数(FuncB)の記憶場所を示す関数アドレスとの何れか他方をプロセッサモジュール2が参照する第2の関数ポインタに設定する。
次いで、プロセッサモジュール1のCPUコア11は、プロセッサモジュール2を復帰させる(ステップS37)。次いで、プロセッサモジュール1のCPUコア11(第1実行手段の一例)は、第1の関数ポインタに設定された関数アドレスを参照して(関数アドレスに従って)、第1の関数(FuncA)と第2の関数(FuncB)との何れか一方を呼び出し、第1の関数(FuncA)により規定されるメイン処理と第2の関数(FuncB)により規定されるサブ処理との何れか一方を実行する(ステップS38)。ここで、メイン処理では、例えば、コマンドに応じてデータの読出しや演算等が行われ、その結果を示すデータがレスポンスとして外部機器へ送信される。一方、サブ処理では、例えば、図2に示す異常検知処理が行われる。
一方、プロセッサモジュール2は、上記ステップS37の処理により復帰すると、CPUコア21(第2実行手段の一例)は、第2の関数ポインタに設定された関数アドレスを参照して、第1の関数(FuncA)と第2の関数(FuncB)との何れか他方を呼び出し、第1の関数(FuncA)により規定されるメイン処理と第2の関数(FuncB)により規定されるサブ処理との何れか他方を実行する(ステップS41)。当該処理が終了すると、CPUコア21は動作を停止する(ステップS42)。つまり、プロセッサモジュール1がメイン処理を行うときはプロセッサモジュール2がサブ処理を行う一方、プロセッサモジュール1がサブ処理を行うときはプロセッサモジュール1がメイン処理を行う。
以上説明したように、実施例2によれば、コマンドが受信されるタイミングで、プロセッサモジュール1の処理内容とプロセッサモジュール2の処理内容とをソフトウェア的に入れ替える(関数レベルでスインチングする)ように構成したので、攻撃者に異常検知のためのプロセッサモジュールが判明され難くすることができ、実施例1より簡単な構成で、サイドチャネル攻撃および故障利用攻撃に対してセキュリティを向上させることができる。
なお、上記実施形態においては、電子情報記録媒体としてICチップCを例にとって説明したが、ICチップC以外の例えば組み込み型のマイクロコンピュータに対して本発明を適用してもよい。
1,2 プロセッサモジュール
3 RAM
4 ROM
5 NVM
6 I/O回路
7 プロセッサ制御回路
8 バス
11,21 CPUコア
12,22 キャッシュ
C ICチップ

Claims (3)

  1. 1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体であって
    記第1のプロセッサモジュールは、
    外部からのコマンドに応じて、乱数を取得する取得手段と、
    前記取得された乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定する設定手段と、
    前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行する第1実行手段と、
    を備え、
    前記第2のプロセッサモジュールは、前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行する第2実行手段を備えることを特徴とする電子情報記録媒体。
  2. 1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体における前記プロセッサモジュールの処理方法であって
    記第1のプロセッサモジュールが、外部からのコマンドに応じて、乱数を取得するステップと、
    前記第1のプロセッサモジュールが、前記取得した乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定するステップと、
    前記第1のプロセッサモジュールが、前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行するステップと、
    前記第2のプロセッサモジュールが、前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行するステップと、
    を含むことを特徴とするプロセッサモジュールの処理方法。
  3. 1のプロセッサモジュールと、2のプロセッサモジュールとを備える電子情報記録媒体において
    部からのコマンドに応じて、乱数を取得するステップと、
    前記取得された乱数と閾値との大小関係に基づいて、第1の関数の記憶場所を示す関数アドレスと、第2の関数の記憶場所を示す関数アドレスとの何れか一方を前記第1のプロセッサモジュールが参照する第1の関数ポインタに設定し、且つ、前記第1の関数の記憶場所を示す関数アドレスと、前記第2の関数の記憶場所を示す関数アドレスとの何れか他方を前記第2のプロセッサモジュールが参照する第2の関数ポインタに設定するステップと、
    前記第1の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と前記第2の関数との何れか一方を呼び出し、前記第1の関数により規定される第1の処理と、前記第1の処理と異なる第2の処理であって前記第2の関数により規定される前記第2の処理との何れか一方を実行するステップと、を前記第1のプロセッサモジュールに実行させ、
    前記第2の関数ポインタに設定された関数アドレスを参照して、前記第1の関数と第2の関数との何れか他方を呼び出し、前記第1の処理と前記第2の処理との何れか他方を実行するステップを前記第2のプロセッサモジュールに実行させることを特徴とするプロセッサモジュールの処理プログラム。
JP2014169207A 2014-08-22 2014-08-22 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム Active JP6379852B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014169207A JP6379852B2 (ja) 2014-08-22 2014-08-22 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014169207A JP6379852B2 (ja) 2014-08-22 2014-08-22 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム

Publications (2)

Publication Number Publication Date
JP2016045688A JP2016045688A (ja) 2016-04-04
JP6379852B2 true JP6379852B2 (ja) 2018-08-29

Family

ID=55636208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014169207A Active JP6379852B2 (ja) 2014-08-22 2014-08-22 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム

Country Status (1)

Country Link
JP (1) JP6379852B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11296488A (ja) * 1998-04-09 1999-10-29 Hitachi Ltd 電子機器
JP2000165375A (ja) * 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
JP4609113B2 (ja) * 2005-03-01 2011-01-12 セイコーエプソン株式会社 プロセッサ
ITMI20082364A1 (it) * 2008-12-31 2010-07-01 Incard Sa Metodo per proteggere un dispositivo crittografico contro attacchi spa, dpa e temporali

Also Published As

Publication number Publication date
JP2016045688A (ja) 2016-04-04

Similar Documents

Publication Publication Date Title
TWI581099B (zh) 積體電路裝置及控制積體電路裝置上記憶體存取的方法
US8762687B2 (en) Microprocessor providing isolated timers and counters for execution of secure code
EP3198399B1 (en) Detecting a change to system management mode bios code
US10671416B2 (en) Layered virtual machine integrity monitoring
US20170289193A1 (en) Secure smart terminal and an information processing method
US10223117B2 (en) Execution flow protection in microcontrollers
CN111226215B (zh) 透明附接的闪存存储器安全性
CN109558372B (zh) 用于安全处理器的设备和方法
US20090119646A1 (en) Detection of a Fault by Long Disturbance
CN111241604A (zh) 与用于存储器安全的存储器停用有关的设备和方法
CN109472172A (zh) 用于防止来自存储器的未授权数据访问的方法
JP6379852B2 (ja) 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム
US20150333903A1 (en) Method for Operating a Portable Data Carrier, and Such a Portable Data Carrier
JP6398449B2 (ja) 電子情報記録媒体、プロセッサモジュールの動作制御方法、及びプロセッサモジュールの動作制御プログラム
JP6493672B2 (ja) 電子情報記憶媒体、異常検知方法、異常検知プログラム、及びicカード
JP2020013249A (ja) Icチップ及びicカード
CN109190383B (zh) 访问指令的处理方法、装置及设备
EP4095725A1 (en) Electronic device and security protection method
JP2011180963A (ja) 半導体集積回路装置
JP6119345B2 (ja) Icチップ、icカード、検証処理方法、及び検証処理プログラム
JP2008129697A (ja) Icカードおよびメモリ間のデータ転送制御方法
CN118349486A (zh) 缓存数据的处理方法和装置、存储介质及电子设备
JP2022067721A (ja) Icカード、icカードのロギング情報処理方法、及びプログラム
JP2015082233A (ja) セキュリティトークンおよび処理ルーチンの実行方法
JP2016071600A (ja) 演算装置、演算方法、及び演算プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180618

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180716

R150 Certificate of patent or registration of utility model

Ref document number: 6379852

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150