JP2008197810A - 情報処理装置およびicカード装置 - Google Patents
情報処理装置およびicカード装置 Download PDFInfo
- Publication number
- JP2008197810A JP2008197810A JP2007030863A JP2007030863A JP2008197810A JP 2008197810 A JP2008197810 A JP 2008197810A JP 2007030863 A JP2007030863 A JP 2007030863A JP 2007030863 A JP2007030863 A JP 2007030863A JP 2008197810 A JP2008197810 A JP 2008197810A
- Authority
- JP
- Japan
- Prior art keywords
- register
- clock
- program
- clocks
- stored
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】小さい回路規模で、故障利用攻撃による秘密情報の不正な読み取りを防ぐことができる情報処理装置およびICカード装置を提供する。
【解決手段】本発明のICカード装置は、プロセッサ100と、出力が更新されてから入力線の電位が安定するまでの遷移時間が最大であり、クロック信号をカウントするクロックカウンタ300と、正しいクロック数を記憶する記憶部430と、クロックカウンタ300のクロック数と記憶部430のクロック数を比較する比較器440と、比較結果が一致した場合に演算結果を出力するI/Oインターフェース450とを備えるICチップを有する。
【選択図】図3
【解決手段】本発明のICカード装置は、プロセッサ100と、出力が更新されてから入力線の電位が安定するまでの遷移時間が最大であり、クロック信号をカウントするクロックカウンタ300と、正しいクロック数を記憶する記憶部430と、クロックカウンタ300のクロック数と記憶部430のクロック数を比較する比較器440と、比較結果が一致した場合に演算結果を出力するI/Oインターフェース450とを備えるICチップを有する。
【選択図】図3
Description
本発明は、情報処理装置およびICカード装置に係わり、特に秘密情報の漏洩を防止する機能を有する情報処理装置およびICカード装置に関するものである。
秘密情報を記憶するICチップを搭載したICカード装置は広く普及している。情報処理装置などの性能が飛躍的に向上するにつれて、ICカード装置のICチップに記憶される秘密情報の量も増加の一途をたどり、その秘密情報の漏洩を防止することの重要性も日々高まっている。秘密情報を不正に取得する方法として、ICチップ内のプロセッサを誤動作させる故障利用攻撃がある。故障利用攻撃とは、ICチップが誤動作した際に出力された情報などを利用する攻撃である。このような攻撃に対して特許文献1に開示されているように、異なる2つの演算装置で異なる時刻に同じ演算を2回行い、それらの演算結果が同一であることを持って、演算結果が正しいことを確認する方法が報告されている。
しかし、上記の特許文献1に記載される発明では、同じ演算を行う演算回路が2つ必要となるため回路規模が大きくなる。
特開2004−310752公報
ICカード装置における秘密情報を有するICチップは、秘密情報への不正なアクセスを防止する機能を有し、回路規模が小さいことが望ましい。
しかし、上記の特許文献1に記載される発明では、同じ演算を行う演算回路が2つ必要となるため、実装するための回路規模が大きくなるという問題があった。また、一般的に誤動作が起きたことを検知する方法、または誤動作を訂正する方法として、データの誤り検知機能あるいは誤り訂正機能がある。ここで、これらの機能をICカード装置に持たせる方法も考えられるが、同様に回路規模が大きくなるという問題がある。
本発明は、上記従来技術の問題点を解決するためになされたものであって、秘密情報の漏洩を小規模な回路を追加することで防ぐことができる情報処理装置およびICカード装置を提供することを目的とする。
上記目的を達成するために、本発明の実施形態に係る情報処理装置は、クロック信号に同期して、実行命令のアドレスを出力するプログラムカウンタレジスタと、前記クロック信号に同期して、前記実行命令による演算の処理結果が格納されるレジスタと、前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号をカウントするクロックカウンタと、プログラムを実行するのに要するクロック数を記憶する記憶手段と、前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とを比較する比較器と、前記プログラムの実行時に使用するデータの入力あるいは前記プログラムの処理結果を出力するI/Oインターフェースとを備え、前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とが一致しない場合、前記I/Oインターフェースが前記レジスタに格納された演算の処理結果を出力しないことを特徴とする。
本発明は、秘密情報に対する不正なアクセスを小規模な回路で防ぐことができる情報処理装置およびICカード装置を提供することができる。
以下、本発明の第1の実施形態について説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係わるICカード装置10の外観を示す図であり、図2はICカード装置10のカード内部の断面図である。
図1は、本発明の第1の実施形態に係わるICカード装置10の外観を示す図であり、図2はICカード装置10のカード内部の断面図である。
この第1の実施形態に係わるICカード装置10は、クレジットカードサイズのプラスチック製のカード20と、カード20内に実装されるICチップ30と、ICチップ30に接続されたコンタクト端子40とを備える。
なお、ICチップ30内には、図示しないカード読取装置とコンタクト端子40を介して通信する機能を備える。
図3は、第1の実施形態に係わるICカード装置10に実装されるICチップ30のブロック図である。
この実施形態に係わるICチップ30は、実行しようとする命令のアドレスが格納されるプログラムカウンタレジスタ110を有するプロセッサ100と、暗号演算の処理結果が格納されるデータパスレジスタ210を有する専用回路200と、プロセッサ100が実行する命令が記憶される命令メモリ410と、専用回路200の暗号演算処理に用いるデータが記憶されるデータメモリ420と、クロック数をカウントするクロックカウンタ300と、プログラムを実行するのに要するクロック数を記憶する記憶部430と、クロックカウンタ300のクロック数と記憶部430に記憶されたクロック数とを比較する比較器440と、比較器440の結果に応じてプロセッサ100または専用回路200の処理結果を出力するI/Oインターフェース450とを備える。
なお、プロセッサ100、専用回路200、命令メモリ410、データメモリ420、記憶部430、比較器440、I/Oインターフェース450、およびクロックカウンタ300は、バス500を介して相互に接続される。バス500は、各種命令(コマンド)の送受信に使用されるコマンドライン510、アドレスの送受信に使用されるアドレスライン520、およびデータの送受信に使用されるデータライン530を備える。また、ICカード装置10のクロック信号線は、プロセッサ100のプログラムカウンタレジスタ110、専用回路200のデータパスレジスタ210、およびクロックカウンタ300のクロックカウンタレジスタ310において共通に供給されており、各種レジスタはクロック信号に同期して動作する。ここで、プロセッサ100は、実行しようとする命令のアドレスを演算するための、図示しないデータパスレジスタおよびデータパス組み合わせ回路を備えており、プロセッサ100のデータパスレジスタも同じクロック信号に同期して動作する。
なお、プログラムカウンタレジスタ110の出力値に基づく演算がプログラムカウンタ組み合わせ回路120で実行されて、その演算結果がプログラムカウンタレジスタ110の入力値となる。これは、データパスレジスタ210とデータパス組み合わせ回路220、およびクロックカウンタレジスタ310とクロックカウンタ組み合わせ回路320についても同様である。
また、例えば、命令メモリ410は不揮発性メモリであるEEPROM(Electronically Erasable and Programmable Read Only Memory)、データメモリ420は揮発性メモリであるSRAMにより構成される。更に本実施の形態では、プロセッサ100のプログラムカウンタレジスタ110は32bit、専用回路200のデータパスレジスタ210は64bit、クロックカウンタ300のクロックカウンタレジスタ310は32bitとする。
ここで、記憶部430はプログラムの種類、例えば暗号の種類ごとに、実行に要するクロック数を記憶している。また、クロックカウンタ300はプログラムの実行に要したクロック数をカウントしている。ICチップ30が正常動作した場合は、クロックカウンタ300のカウント結果と記憶部430の記憶するクロック数は同一となる。
一方、ICチップ30が誤動作した場合は、クロックカウンタ300のカウント結果と記憶部430の記憶するクロック数は相違する。故障利用攻撃は、ICチップ30の誤動作を利用するものであるため、クロックカウンタ300のカウント結果と記憶部430の記憶するクロック数が相違した場合にI/Oインターフェース450から暗号演算の処理結果を出力しないことで、故障利用攻撃による秘密情報の漏洩を防止することができる。
図4は、ICチップ30の動作を示すフローチャートである。
まず、ICチップ30の初期動作として、プロセッサ100のプログラムカウンタレジスタ110およびクロックカウンタ300のクロックカウンタレジスタ310が初期値に設定される(ステップS101)。
クロックの立ち上がりをトリガとして(ステップS102)、プログラムカウンタレジスタ110が記憶する値はインクリメントされる(ステップS103)。即ち、クロック立ち上がり前に、プログラムカウンタレジスタ110の記憶値は、プログラムカウンタ組み合わせ回路120に入力されている。ここで、プログラムカウンタ組み合わせ回路120は、入力値をインクリメントして出力する。プログラムカウンタ組み合わせ回路120の出力は、プログラムカウンタレジスタ110の入力と接続されている。そのため、クロック立ち上がり前のプログラムカウンタレジスタ110の入力値は、記憶値をインクリメントした値である。よって、クロックの立ち上がりにより、プログラムカウンタレジスタ110の記憶する値はインクリメントされる。
また、同様にクロックの立ち上がりをトリガとして(ステップS102)、クロックカウンタレジスタ310が記憶する値はカウントアップされる(ステップS103)。即ち、クロック立ち上がり前に、クロックカウンタレジスタ310の記憶値は、クロックカウンタ組み合わせ回路320に入力されている。ここで、クロックカウンタ組み合わせ回路320は、入力値に一定値を加算して出力する。クロックカウンタ組み合わせ回路320の出力は、クロックカウンタレジスタ310の入力と接続されている。そのため、クロック立ち上がり前のクロックカウンタレジスタ310の入力値は、記憶値に一定値を加算した(カウントアップした)値である。よって、クロックの立ち上がりにより、クロックカウンタレジスタ310の記憶する値はカウントアップされる。
ここで、クロックカウンタレジスタ310の出力が更新されてからクロックカウンタレジスタ310の入力線の電位が安定するまでの遷移時間は、プログラムカウンタレジスタ110の出力が更新されてからプログラムカウンタレジスタ110の入力線の電位が安定するまでの遷移時間、および専用回路200のデータパスレジスタ210の出力が更新されてからデータパスレジスタ210の入力線の電位が安定するまでの遷移時間よりも大きく設計される。
即ち、クロックカウンタレジスタ310の入力の遷移時間は、ICチップ30が備えるレジスタの入力の遷移時間の中で最大となるように設計される。これは、故障利用攻撃を検出するためであるが、詳細は後述する。
次に、プログラムカウンタレジスタ110に記憶されているアドレス値が、アドレスライン520を介して命令メモリ410に送信される(ステップS104)。命令メモリ410は、受信したアドレスにより指定される領域に格納されている命令を読み出して、データライン530を介してプロセッサ100のデコーダ130に送信する。デコーダ130は、命令メモリ410から受信した命令を解釈する(ステップS105)。以後、デコーダ130により解釈された命令の種類に応じたデータ処理が実行される(ステップS106)。ここで、実行される命令は、各種暗号演算を実行するものである。
例えば、Load命令の場合は、デコーダ130からLoad命令のアドレスがアドレスライン520を介してデータメモリ420に送信される。データメモリ420は、受信したアドレスに指定される領域に格納されているデータを読み出して、データライン530を介して専用回路200のデータパスレジスタ210に送信する。その後、データメモリ420から受信したデータによって、データパスレジスタ210の記憶データが更新される。
また例えば、Store命令の場合は、デコーダ130からStore命令のアドレスと書き込みコマンドがアドレスライン520、コマンドライン510を介してデータパス組み合わせ回路220に送信される。データパス組み合わせ回路220は、書き込みコマンドに応じて出力データをアドレスと共にデータライン530、アドレスライン520を介してデータメモリ420へ送信する。データメモリ420は、受信したアドレスにより指定される番地に受信したデータを記憶更新する。
また、加算、乗算などの演算命令の場合は、デコーダ130から演算の種類を指定する演算コマンドがコマンドライン510を介してデータパス組み合わせ回路220に送信される。データパス組み合わせ回路220は、演算コマンドにより指定される演算を、データパスレジスタ210に記憶されているデータに対して行う。データパス組み合わせ回路220の演算結果は、データパスレジスタ210に記憶される。
ステップS106において各種命令が処理された後、プロセッサ100はプログラムが終了であるか否かを判断する(ステップS107)。プログラムが終了しない場合は、次のクロック立ち上がりをトリガとして開始されるステップS102〜S106の処理が繰り返し実行される。
一方、ステップS107においてプログラムが終了したと判断された場合には、クロックカウンタ300のクロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数が一致するか否かが判断される(ステップS108)。
即ち、プロセッサ100は、クロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数をデータライン530を介して比較器440に送信する。比較器440は、受信したクロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数とが一致するか否かを判断する。
クロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数が一致した場合は、プロセッサ100は、データメモリ420に記憶されたデータをI/Oインターフェース450から出力する(ステップS109)。
一方、クロックカウンタレジスタ310に記憶されているクロック数と記憶部430に記憶されているクロック数が一致しなかった場合は、プロセッサ100は、データメモリ420に記憶されたデータをI/Oインターフェース450から出力しない(ステップS110)。なお、ステップS109、S110において、I/Oインターフェース450が比較器440の出力(クロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数とが一致するか否かを示す情報)を直接受信し、データメモリ420に記憶されたデータの出力の可否を判断しても良い。また、クロックカウンタレジスタ310が記憶するクロック数と記憶部430に記憶されたクロック数とが一致するか否かに応じて、プロセッサ100によりI/Oインターフェース450の出力の可否が制御されても良い。
次に、第1の実施形態に係わるICカード装置10に実装されるICチップ30が、故障利用攻撃による秘密情報の不正な読み取りを防ぐことができる理由について詳細に説明する。
図5は、故障利用攻撃の標的となるデータパスレジスタ210の正常動作時におけるクロック信号と入力値と出力値の遷移の様子を示す。
クロック信号が立ち上がり、即ちクロック信号の入力線の電位が閾値電圧を超えた瞬間の時間を「t_th」とする。クロック信号が立ち上がり時刻「t_th」から一定時間経過した後、データパスレジスタ210の出力値は、例えば「Data0」から「Data1」に更新される。
なお、データパスレジスタ210の入力値が遷移中などの理由により、入力線の電位が不安定となる期間がある。図5では、入力線の電位が不安定である期間を「遷移中」と表示する。
ここで、クロック信号の立ち上がり直前の一定時間(セットアップタイム:t_th−t_s〜t_th)、および、クロック信号の立ち上がり直後の一定時間(ホールドタイム:t_th〜t_th+t_h)に、レジスタの入力線の電位が不安定であると誤動作を起こすという性質を持つ。誤動作を起こしたレジスタが記憶する値はランダムとなる。
図6は、第1の実施形態に係わるICカード装置10に実装されるプログラムカウンタレジスタ110とデータパスレジスタ210とクロックカウンタレジスタ310の、入力値と出力値のタイミングチャートを示す。なお、それぞれのレジスタの入力線の電位が不安定(遷移中)である期間をハッチングで示す。
プログラムカウンタレジスタ110の入力値を、クロック信号の立ち上がり時刻「T1」に、例えば「PC1」とする。すると、クロック信号の立ち上がり時刻「T1」の後、プログラムカウンタレジスタ110の出力値は「PC1」に更新される。ここで、プログラムカウンタレジスタ110の出力値は、プログラムカウンタ組み合わせ回路120の入力値である。そのため、プログラムカウンタ組み合わせ回路120は、インクリメント演算を開始し、出力値は「PC2」となる。よって、プログラムカウンタレジスタ110の入力値は「PC2」に更新される。
ここで、プログラムカウンタ組み合わせ回路120におけるインクリメント演算中は、プログラムカウンタ組み合わせ回路120の出力線の電位であるプログラムカウンタレジスタ110の入力線の電位は不安定となる。そのため、プログラムカウンタレジスタ110の入力線の電位は、「PC1」から、電位が安定しない期間(遷移時間:t_pc)を経て、「PC2」の電位に更新される。
また、データパスレジスタ210およびクロックカウンタレジスタ310についても同様である。なお、データパスレジスタ210の入力の遷移時間は「t_dp」であり、クロックカウンタレジスタ310の入力の遷移時間は「t_cc」である。
ここで、プログラムカウンタレジスタ110の入力の遷移時間「t_pc」よりも、データパスレジスタ210の入力の遷移時間「t_dp」の方が大きい(「t_pc」<「t_dp」)。即ち、プログラムカウンタ組み合わせ回路120では入力値が更新されてからインクリメント演算が行われるだけである。一方、データパス組み合わせ回路220では、入力値が更新されてから暗号演算処理が行われる。よって、プログラムカウンタ組み合わせ回路120よりもデータパス組み合わせ回路220のほうが複雑な演算を行うため演算時間が大きく、それに伴ってプログラムカウンタレジスタ110の入力の遷移時間:「t_pc」よりもデータパスレジスタ210の入力の遷移時間「t_dp」の方が大きくなる。
第1の実施形態に係わるICカード装置10に実装されるICチップ30には、クロックカウンタ300を備えている。クロックカウンタレジスタ310の入力の遷移時間「t_cc」は、データパスレジスタ210の入力の遷移時間「t_dp」よりも大きく設計される(「t_cc」>「t_dp」)。そのため、ICカード装置10に対し故障利用攻撃を受けて、データパスレジスタ210のみを誤動作させるようなグリッチがクロック信号線に印加されたとしても、クロックカウンタレジスタ310が誤動作することになる。
図7は、データパスレジスタ210を誤動作させるようなグリッチがクロック信号線に印加された場合のプログラムカウンタレジスタ110とデータパスレジスタ210とクロックカウンタレジスタ310の入力と出力の波形を示す。なお、それぞれのレジスタの入力線の電位が不安定(遷移中)である期間をハッチングで示す。また、それぞれのレジスタの入力値および出力値が誤動作のため不明である期間を斜線で示す。
ここでは、時刻「Tg」において、クロック信号線にグリッチが印加されたとしている。時刻「Tg」において、プログラムカウンタレジスタ110の入力値は「PC1」で安定しているため、プログラムカウンタレジスタ110とプログラムカウンタ組み合わせ回路120は正常動作を続けている。一方、時刻「Tg」においてデータパスレジスタ210とクロックカウンタレジスタ310の入力電位は不安定であるため、データパスレジスタ210とクロックカウンタレジスタ310は誤動作する。そのため、データパスレジスタ210とクロックカウンタレジスタ310の入力値、出力値は不明となる。
しかしながら、図7に示すように、データパスレジスタ210の入力電位が不安定な期間で、クロックカウンタレジスタ310の入力電位が安定する期間は存在しない。そのため、データパスレジスタ210が誤動作した場合には、クロックカウンタレジスタ310が誤動作することが保証される。
よって、故障利用攻撃の外乱としてICチップ30のクロック信号線にグリッチが印加された場合、クロックカウンタレジスタ310の値は異常値となる。
上述した図4において、プログラムが終了したと判断された場合、ステップS108において、クロックカウンタ300のクロックカウンタレジスタ310に格納されているクロック数と記憶部430に格納されているクロック数が一致するか否かが判断される。
上記のように故障利用攻撃が行われた際には、クロックカウンタレジスタ310の値は異常値となり、記憶部430に記憶されているクロック数とは値が異なる。そのため、故障利用攻撃を検出することができる。
故障利用攻撃を検出した際には、プロセッサ100の制御などにより、内部レジスタの内容がI/Oインターフェース450から出力されることはないため、外部からの秘密情報の不正な読み取りを防止することができる。
このように、第1の実施形態に係わるICカード装置10によれば、故障利用攻撃による秘密情報の不正な読み取りを防止することが可能となる。
ここで、故障利用攻撃を検出するために追加した構成要件は主にクロックカウンタ300、比較器440のみであり、ICチップ30の回路規模の増大を抑制できる。
なお、第1の実施形態に係わるICカード装置10では、暗号演算処理を行う機能を専用回路200に持たせたが、プロセッサ100に暗号演算処理を行う機能を持たせても良い。この場合、プロセッサ100のデータパスレジスタ210の入力の遷移時間よりもクロックカウンタレジスタ310の入力の遷移時間が大きくなるように設定される。このような構成をとることにより、専用回路200を備えないICチップ30をICカード装置に実装し、かつ、故障利用攻撃による秘密情報の不正なアクセスを防止することが可能となる。
また、クロックカウンタレジスタ310の初期値をビット列(32bit)で表現したときに「1」となる桁が多くなるように設定し、クロック数をカウントする際の桁上がりの発生確率を増大させることができる。このように初期値を設定することにより、クロック数をカウントする前後で、クロック数を示すビット列のうち反転するビットの数を確率的に増加させることができる。
さらに、クロック信号をカウントする際にクロックカウントレジスタ310の値に「1」を加算するのではなく特定の値(例えば、3(11b)、7(111b)など)を加算することができる。即ち、ビット列(32bit)で表現したときに「1」となる桁が多い値を加算値として選択し、クロック数をカウントする前後で、クロック数を示すビット列のうち反転するビットの数を確率的に増加させることができる。なお、クロック信号をカウントする際にクロックカウントレジスタ310の値に対して行う演算は、クロック信号のカウント結果とクロックカウントレジスタ310の値とが1対1対応すれば良く、減算、積算、シフト演算などであっても良い。このように、クロック数をカウントする際にクロックカウンタレジスタ310に対して行う演算の種類を適切に設定することにより、クロック数をカウントする前後で、クロック数を示すビット列のうち反転するビットの数をより大きく増加させることができる。
ここで、反転するビットの数を増やすことで、故障利用攻撃を受けた際にクロックカウントレジスタ310の値が誤る確率が大きくなる。その結果、故障利用攻撃の検出精度が向上し、より確実に秘密情報の漏洩を防止することが可能となる。
また、ICチップ30において各種暗号化プログラムの実行に要するクロック数を同一にすることができる。このような構成をとることにより、記憶部430において各種暗号化プログラムごとに実行に要するクロック数を記憶する必要が無くなる。さらに、各種暗号化プログラムにおいて実行に要するクロック数が同一となるため、ICチップ30内のプロセッサ100や専用回路200などの処理時間が暗号化プログラムの種類によらず一定となるために、サイドチャネル攻撃に対する耐性を強化することができる。
さらに、共通鍵暗号方式と公開鍵暗号方式とで暗号化プログラムの処理に要する時間が大きく異なるため、共通鍵暗号方式に基づく各種暗号化プログラムの実行に要するクロック数を同一にし、それとは別に、公開鍵暗号方式に基づく各種暗号化プログラムの実行に要するクロック数を同一としても良い。また、公開鍵暗号方式は鍵長によって処理時間が大きく異なるので、共通鍵暗号方式に基づく各種暗号化プログラムの実行に要するクロック数のみを同一としても良い。このような構成をとることにより、サイドチャネル攻撃に対する耐性を強化させながら、共通鍵暗号方式に基づく各種暗号化プログラムの実行に要するクロック数の増加を抑制することができる。
(第2の実施形態)
本発明の第2の実施形態に係わるICカード装置10は、第1の実施形態に係わるICカード装置10と比較して、ICチップ30の内部構成のみが相異する。
本発明の第2の実施形態に係わるICカード装置10は、第1の実施形態に係わるICカード装置10と比較して、ICチップ30の内部構成のみが相異する。
図8は、本発明の第2の実施形態に係わるICカード装置10に実装されるICチップ30のブロック図である。
この第2の実施形態に係わるICチップ30は、実行される命令のアドレスが格納されるプログラムカウンタレジスタ110を有するプロセッサ100と、暗号演算の処理結果が格納されるデータパスレジスタ210を有する専用回路200と、プロセッサ100が実行する命令が記憶される命令メモリ410と、暗号演算処理に用いるデータが記憶されるデータメモリ420と、プロセッサ100および専用回路200の処理結果を出力するI/Oインターフェース450とを備える。
即ち、第2の実施形態に係わるICチップ30は、第1の実施形態に係わるICチップ30と比較して、クロックカウンタ300と、記憶部430と、比較器440を備えない点で異なる。
なお、第2の実施形態に係わるICチップ30の動作は、図4に示すステップS101からS107は、第1の実施形態に係わるICチップ30の動作と同一である。ステップS107においてプログラムが終了したと判断した場合は、常にI/Oインターフェース450から演算結果が出力される(ステップS109と同じ)点のみ相異する。
ここで、プログラムカウンタレジスタ110の出力が更新されてからプログラムカウンタレジスタ110の入力線の電位が安定するまでの遷移時間は、専用回路200のデータパスレジスタ210の出力が更新されてからデータパスレジスタ210の入力線の電位が安定するまでの遷移時間よりも大きく設計される。
即ち、プログラムカウンタレジスタ110の入力の遷移時間は、ICチップ30が備えるレジスタの入力の遷移時間の中で最大となるように設計される。これは、故障利用攻撃を検出するためである。
次に、第2の実施形態に係わるICカード装置10に実装されるICチップ30が、故障利用攻撃を防ぐことができる理由について説明する。
第2の実施形態に係わるICカード装置10に実装されるICチップ30のプログラムカウンタレジスタ110の入力の遷移時間「t_pc」は、データパスレジスタ210の入力の遷移時間「t_dp」よりも大きく設計される(「t_pc」>「t_dp」)。そのため、データパスレジスタ210を誤動作させるようなグリッチがクロック信号線に印加されたとしても、プログラムカウンタレジスタ110が誤動作することになる。よって、プロセッサ100および専用回路200による演算結果の出力が正常に行われない。
このように、第2の実施形態に係わるICカード装置10によれば、回路規模のより小さい構成を用いて、故障利用攻撃による秘密情報の不正なアクセスを防止することが可能となる。
なお、第2の実施形態に係わるICカード装置10では、暗号演算処理を行う機能を専用回路200に持たせたが、プロセッサ100に暗号演算処理を行う機能を持たせても良い。この場合、プロセッサ100のデータパスレジスタ210の入力の遷移時間よりもプログラムカウンタレジスタ110の入力の遷移時間が大きくなるように設定される。このような構成をとることにより、専用回路200を備えないICチップ30をICカード装置10に実装し、かつ、故障利用攻撃による秘密情報の不正なアクセスを防止することが可能となる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
10・・・ICカード装置
20・・・カード
30・・・ICチップ
40・・・コンタクト端子
100・・・プロセッサ
110・・・プログラムカウンタレジスタ
120・・・プログラムカウンタ組み合わせ回路
130・・・デコーダ
200・・・専用回路
210・・・データパスレジスタ
220・・・データパス組み合わせ回路
300・・・クロックカウンタ
310・・・クロックカウンタレジスタ
320・・・クロックカウンタ組み合わせ回路
410・・・命令メモリ
420・・・データメモリ
430・・・記憶部
440・・・比較器
450・・・I/Oインターフェース
500・・・バス
510・・・コマンドライン
520・・・アドレスライン
530・・・データライン
20・・・カード
30・・・ICチップ
40・・・コンタクト端子
100・・・プロセッサ
110・・・プログラムカウンタレジスタ
120・・・プログラムカウンタ組み合わせ回路
130・・・デコーダ
200・・・専用回路
210・・・データパスレジスタ
220・・・データパス組み合わせ回路
300・・・クロックカウンタ
310・・・クロックカウンタレジスタ
320・・・クロックカウンタ組み合わせ回路
410・・・命令メモリ
420・・・データメモリ
430・・・記憶部
440・・・比較器
450・・・I/Oインターフェース
500・・・バス
510・・・コマンドライン
520・・・アドレスライン
530・・・データライン
Claims (8)
- クロック信号に同期して、実行命令のアドレスを出力するプログラムカウンタレジスタと、
前記クロック信号に同期して、前記実行命令による演算の処理結果が格納されるレジスタと、
前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号をカウントするクロックカウンタと、
プログラムを実行するのに要するクロック数を記憶する記憶手段と、
前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とを比較する比較器と、
前記プログラムの実行時に使用するデータの入力あるいは前記プログラムの処理結果を出力するI/Oインターフェースとを備え、
前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とが一致しない場合、前記I/Oインターフェースが前記レジスタに格納された演算の処理結果を出力しないことを特徴とする情報処理装置。 - クロック信号に同期して、実行命令のアドレスを出力するプログラムカウンタレジスタと、
前記クロック信号に同期して、前記実行命令による演算の処理結果が格納されるレジスタと、
前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号をカウントするクロックカウンタと、
プログラムを実行するのに要するクロック数を記憶する記憶手段と、
前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とを比較する比較器と、
前記プログラムの実行時に使用するデータの入力あるいは前記プログラムの処理結果を出力するI/Oインターフェースとを備え、
前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とが一致しない場合、前記プロセッサが前記レジスタに格納された演算の処理結果を前記I/Oインターフェースから出力しないことを特徴とする情報処理装置。 - クロック信号に同期して、実行命令のアドレスを生成し出力するプログラムカウンタレジスタを内蔵するプロセッサと、
前記クロック信号に同期して前記実行命令により暗号演算を実行し、その処理結果を格納するレジスタを内蔵する専用回路と、
前記専用回路の前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号をカウントするクロックカウンタと、
プログラムを実行するのに要するクロック数を記憶する記憶手段と、
前記クロックカウンタがカウントするクロック数と前記記憶手段が記憶するクロック数とを比較する比較器とを備え、
前記プログラムの実行時に使用するデータの入力あるいは前記プログラムの処理結果を出力するI/Oインターフェースとを備え、
前記クロックカウンタがカウントするクロック数と前記記憶手段が記憶するクロック数とが一致しない場合、前記I/Oインターフェースが前記レジスタに格納された演算の処理結果を出力しないことを特徴とする情報処理装置。 - クロック信号に同期して、実行命令のアドレスを生成し出力するプログラムカウンタレジスタを内蔵するプロセッサと、
前記クロック信号に同期して前記実行命令により暗号演算を実行し、その処理結果を格納するレジスタを内蔵する専用回路と、
前記専用回路の前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号をカウントするクロックカウンタと、
プログラムを実行するのに要するクロック数を記憶する記憶手段と、
前記クロックカウンタがカウントするクロック数と前記記憶手段が記憶するクロック数とを比較する比較器と、
前記プログラムの実行時に使用するデータの入力あるいは前記プログラムの処理結果を出力するI/Oインターフェースとを備え、
前記クロックカウンタが記憶するクロック数と前記記憶手段に記憶されたクロック数とが一致しない場合、前記プロセッサが前記レジスタに格納された演算の処理結果を前記I/Oインターフェースから出力しないことを特徴とする情報処理装置。 - 前記クロックカウンタが、前記クロック信号をカウントする際に、クロック数を示すビット列において複数のビットが反転するような演算を行うことを特徴とした請求項1乃至請求項4のいずれか1項に記載の情報処理装置。
- 前記プログラムが平文を暗号化する複数の暗号化プログラムであり、複数の前記暗号化プログラムが実行されるのに要するクロック数が同一であることを特徴とする請求項1乃至請求項4のいずれか1項に記載の情報処理装置。
- 請求項1乃至請求項4のいずれか1項に記載の情報処理装置がICチップに組み込まれていることを特徴とするICカード装置。
- クロック信号に同期して、実行命令による演算の処理結果が格納されるレジスタと、
前記レジスタの入力線の電位が安定するまでの遷移時間よりも遷移時間が大きく設定され、前記クロック信号に同期して、前記実行命令のアドレスを出力するプログラムカウンタレジスタと、
前記プログラムの実行時に使用するデータの入力あるいは前記レジスタに格納された演算の処理結果を出力するI/Oインターフェースと
を備えることを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007030863A JP2008197810A (ja) | 2007-02-09 | 2007-02-09 | 情報処理装置およびicカード装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007030863A JP2008197810A (ja) | 2007-02-09 | 2007-02-09 | 情報処理装置およびicカード装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008197810A true JP2008197810A (ja) | 2008-08-28 |
Family
ID=39756709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007030863A Pending JP2008197810A (ja) | 2007-02-09 | 2007-02-09 | 情報処理装置およびicカード装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008197810A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015082233A (ja) * | 2013-10-23 | 2015-04-27 | 大日本印刷株式会社 | セキュリティトークンおよび処理ルーチンの実行方法 |
US9104890B2 (en) | 2012-07-12 | 2015-08-11 | Samsung Electronics Co., Ltd. | Data processing device and a secure memory device including the same |
-
2007
- 2007-02-09 JP JP2007030863A patent/JP2008197810A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9104890B2 (en) | 2012-07-12 | 2015-08-11 | Samsung Electronics Co., Ltd. | Data processing device and a secure memory device including the same |
JP2015082233A (ja) * | 2013-10-23 | 2015-04-27 | 大日本印刷株式会社 | セキュリティトークンおよび処理ルーチンの実行方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8583880B2 (en) | Method for secure data reading and data handling system | |
US8375253B2 (en) | Detection of a fault by long disturbance | |
US8990578B2 (en) | Password authentication circuit and method | |
US20080016415A1 (en) | Evaluation system and method | |
US10223110B2 (en) | Central processing unit and arithmetic unit | |
JPWO2007096997A1 (ja) | メモリ制御装置およびメモリ制御方法 | |
US20190130103A1 (en) | Method, System and Apparatus for Error Correction Coding Embedded in Physically Unclonable Function Arrays | |
EP2960665B1 (en) | Device and method for calibrating a digital sensor | |
JP2007041665A (ja) | Ecc機能検査回路およびecc機能検査方法 | |
JP2010003355A (ja) | 半導体装置 | |
EP1739587A1 (en) | Portable electronic apparatus and secured data output method therefor | |
JP2008197810A (ja) | 情報処理装置およびicカード装置 | |
US20050041803A1 (en) | On-device random number generator | |
JPWO2009037770A1 (ja) | メモリ回路およびメモリ回路のデータ書き込み・読み出し方法 | |
US20090150623A1 (en) | Semiconductor device and test mode control circuit | |
CN106484477B (zh) | 安全的软件下载与启动方法 | |
US10242183B2 (en) | Method of executing a program by a processor and electronic entity comprising such a processor | |
US8010585B2 (en) | Checking the integrity of programs or the sequencing of a state machine | |
JP2008204085A (ja) | 半導体記憶装置 | |
US12038808B2 (en) | Memory integrity check | |
JP2006155735A (ja) | 記憶装置 | |
JP2003223372A (ja) | メモリ制御装置及びシリアルメモリ | |
JP2008052842A (ja) | 半導体集積回路 | |
KR20020054519A (ko) | 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법. | |
KR100651866B1 (ko) | 데이터 처리장치 |