以下、図面を参照して本発明を実施するための最良の形態について説明する。
但し、本発明は多くの異なる態様で実施することが可能であり、本発明の趣旨及びその範囲から逸脱することなくその形態及び詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本実施の形態の記載内容に限定して解釈されるものではない。なお、実施の形態を説明するための全図において、同一部分又は同様な機能を有する部分には同一の符号を付し、その繰り返しの説明は省略する。
(実施形態)
本実施の形態では、ICカードがレスポンスを送信してから、次のコマンドを受信するまでの間は、従来のICカードの動作は停止状態となる。この処理を実行しない停止状態の間に、本発明におけるICカードでは次のコマンドを予測し、投機的に処理を実行し、次のコマンドの処理時間を短縮する。この本発明におけるICカードの装置構成及び、フローチャートについて説明する。
ここで、当該機能を発揮するための構成について、図1に示す機能ブロック図を用いて説明する。
図1は、本発明における、コマンド予測機能(これまでに実行されたコマンドから、次に実行されるコマンドを推測するための機能である。コマンドを予測するために使う受信済みのコマンドは少なくとも1つ以上であり、またリセット信号入力前のコマンド、または、あらかじめ設定されたコマンドなども利用可能である。)および投機実行機能(ATR(Answer to Reset)、PPS(Protocol and Parameter Selection)送信後、またはコマンドレスポンス送信後に発生する待ち時間(停止時間)において予測したコマンドを実行するための機能である。予測機能にて決定されたコマンドを、待ち時間(停止時間)中に実行し、結果を保持する。この場合の結果とは、予測したコマンドのコマンドレスポンスや、予測したコマンドの実行に必要だと想定される演算やデータアクセス(読み出し、書き込み、バックアップなど)を示す。)を搭載するICチップを含む半導体装置を示す図である。なお、以下の実施形態においては、一例として半導体装置としてICカードについて説明するが、半導体装置はICカードに限られず、任意の携帯型の情報処理装置(携帯端末を含む)を半導体装置とすることが可能である。
以下、本発明を図示する実施形態に基づいて説明する。
図1は、一般的なICカード1と、外部装置(リーダライタ装置)20との間で、情報の伝送を行っている状態を示すブロック図である。この例では、ICカード1は、種々の演算処理機能をもったCPU11と、リーダライタ装置20に対する情報の送受を行うI/Oインターフェース部12と、ROM13,EEPROM14,RAM15なるメモリとを備えている。
すなわち、半導体装置としてのICカード1には、記憶手段としての記憶部2(ROM13、EEPROM14、RAM15が含まれる)、コマンド予測手段、コマンド比較手段、制御手段、動的予測パターン生成手段としての演算部3(CPU11が含まれる)および受信手段並びに送信手段としての入出力インターフェース部12とが含まれる。
ROM13は書換不能な不揮発性メモリであり、CPU11は、このROM13内に格納されている基本プログラムに基づいて所定の処理を実行する。EEPROM14は、書換可能な不揮発性メモリであり、ユーザデータや種々のアプリケーションプログラムが格納される。RAM15は、CPU11が種々の処理を実行する際の作業領域として利用される書換可能な揮発性メモリである。
ICカード1とリーダライタ装置(外部装置)20とは、物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの方法によって互いに接続され、情報の送受が行われる。外部装置20からICカード1へは、コマンドという形式で情報が送信される。送信されたこのコマンドは、I/Oインターフェース部12を介してCPU11に与えられる。逆に、ICカード10からリーダライタ装置20へは、与えられたコマンドに対するレスポンスという形式で情報が送信される。このレスポンスは、CPU11からI/Oインターフェース部12を介して、リーダライタ装置20へと送信される。
この実施形態では、アプリケーションプログラムは、EEPROM14内に設けられたアプリケーション格納領域(図示せず)に格納される。アプリケーション格納領域の各区画(図示せず)に、それぞれのアプリケーションプログラムが格納されている。本発明の特徴のひとつとして、ICカード1のユーザ毎に受信コマンドの履歴情報を記憶部2に記憶することがあげられるが、本発明はこれに限定されるわけではなく、各アプリケーションプログラムにICカードのユーザ毎に受信コマンドの履歴情報を記憶部2に記憶することも可能である。この場合には履歴情報を格納するための区画(図示せず)をアプリケーションプログラム毎に設け、アプリケーションプログラム毎に履歴情報を各区画に記録する。これらの区画には、それぞれアプリケーションプログラム毎の履歴情報が記録されることになる。
ここで、当該機能を発揮するための構成について、図2に示す機能ブロック図を用いて説明する。ICカード1は、受信部31および送信部32を含むI/Oインターフェース部12と、コマンド予測部33、コマンド比較部34、制御部35、動的予測パターン生成部36を含むCPU11と、記憶部2とを備える。
受信部31は、リーダライタ装置20等の外部装置からのコマンドが受信される機能を有する。
送信部32は、受信部31で受信されたコマンドに対応する情報を送信する機能を有する。また、予測コマンドの実行結果である予測処理結果情報を送信する機能をも有する。
受信部31で受信されたコマンドに対応する情報はCPU11において演算される。
受信部31および送信部32は、ISO7816等の入出力インターフェースによって構成されるが、本発明はこれに限定されるわけではなく、前述したように物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの任意の方法によってICカード10とリーダライタ装置(外部装置)20との間で情報の送受が行われる。
コマンド予測部33は、(受信部31で受信された)コマンドの次に受信されるべきコマンドを予測する機能を有する。
すなわち、受信部31においてリーダライタ装置からのコマンドが受信され、そのコマンドに対応する情報が送信部32を介して送信された後の、次のコマンドが受信部31を介して受信されるまでのICカードが待機状態(コマンド待ち状態または停止状態とも称する)にある期間に次に受信されるべき予測コマンドを予測する機能を有する。
また、コマンド予測部33は、コマンド予測部33が実行される直前に受信部31によって受信されたコマンド、および、予め定められた静的予測パターン(図3(a)に基づいて後述する)に基づいて受信されるべき予測コマンドを予測する機能を有する。
静的予測パターンは、ICカード1がユーザによって使用される前に、製造者、アプリケーションプログラム提供者等の静的予測パターン提供者によって、記憶部2内のEEPROM14等に記憶される。
静的予測パターンの一例を図3(a)に示す。
図3(a)では、ICカード1のアプリケーションプログラムが(機密性が要求される建物等の領域への)入退出アプリケーションプログラムである場合の一例が示されている。
図3(a)の表の左側列の番号はICカード1の受信部31において受信されるコマンドの順番を示す。
すなわち、最初にResetコマンド(リセット命令)が受信部31において受信され、その次にSelect Applicationコマンド(アプリケーションプログラムの選択命令)が受信部31において受信され、その次にRead Record Aコマンド(レコードAの読み取り命令)が受信部31において受信されることが示されている。
図3(a)の表の中央列は、受信部31において受信される上記受信コマンドの種類が順番に記載されている。
図3(a)の表の右側列は予測コマンドが記載されている。例えば、図3(a)の表において受信コマンドがResetコマンドである場合には、予測コマンドはSelect Applicationコマンドである。すなわち、図3(a)の静的予測パターンを使用した場合に、受信部31においてResetコマンドを受信すると、コマンド予測部33は、予測コマンドとしてSelect Applicationコマンドを予測する。
例えば、ICカード1の電源が最初に投入された場合には、リーダライタ装置20からResetコマンドが受信されるので、図3(a)の静的予測パターンを使用するコマンド予測部33は、Select Applicationコマンドを予測する。
また、例えば、図3(a)の表において受信コマンドがSelect Applicationコマンドである場合には、予測コマンドはRead Record Aコマンドコマンドである。すなわち、図3(a)の静的予測パターンを使用した場合に、受信部31においてSelect Applicationコマンドを受信すると、コマンド予測部33は、予測コマンドとしてRead Record Aコマンドを予測する。
また、例えば、図3(a)の表において受信コマンドがRead Record Aコマンドである場合には、予測コマンドはWrite Record Aコマンドである。すなわち、図3(a)の静的予測パターンを使用した場合に、受信部31においてRead Record Aコマンドを受信すると、コマンド予測部33は、予測コマンドとしてWrite Record Aコマンドを予測する。
さらに、例えば、図3(a)の表において受信コマンドがSelect Fileコマンドの次にRead Recordコマンドが受信される場合には、予測コマンドはSelect Fileコマンドである。
さらに、コマンド予測部33は、少なくとも2つ以上のコマンドを受信部31を介して受信した場合に、(受信したコマンドの)履歴情報の少なくとも一部が動的予測パターンの少なくとも一部と一致する場合には、動的予測パターンに基づいて次に受信されるべき予測コマンドを予測する機能を有する(この機能については以下の実施形態において詳述する)。
コマンド比較部34は、(受信部31で受信されたコマンドに対応する)情報を送信部32によって送信した後に、受信部31によって次のコマンドである次コマンドを受信し、当該次コマンドとコマンド予測部33によって予測された予測コマンドとを比較する機能を有する。
すなわち、コマンド比較部34は、コマンド予測部33が予め定められた静的予測パターン(図3(a)参照)または前記動的予測パターンに基づいて予測した予測コマンドと、実際に受信部31が受信した次(の)コマンドとを比較する。
コマンド比較部34は、予測コマンドと次コマンドとを比較した結果である比較情報を制御部35に送信する。
制御部35は、コマンド比較部34によって比較された次コマンドと予測コマンドとが一致する場合には記憶部2の予測処理結果情報を送信部32を介して送信し、コマンド比較部34によって比較された次コマンドと予測コマンドとが一致しない場合には、次コマンドを実行する機能を有する。
この場合に、コマンド比較部34によって比較された次コマンドと予測コマンドとが一致しない場合には記憶部2に記憶された予測処理結果情報は消去されてもよいし、消去されなくともよい。予測処理結果情報が記憶部2から消去されない場合には、後の受信コマンドに対する予測処理に使用することが可能であり、ICカード1の処理の高速化が可能になる。
また、制御部35は、コマンド予測部33によって予測された予測コマンドを実行する機能を有する。予測コマンドを実行した結果は予測処理結果情報として記憶部2へ制御部35が記憶する。
動的予測パターン生成部36は、コマンド予測部33が実行される前に受信部31によって受信されたコマンドの履歴情報に基づく動的予測パターンを生成する機能を有する。
動的予測パターンは、静的予測パターンとは異なり、ユーザがICカード1を使用することによって蓄積されるユーザのICカード1の使用履歴である。
具体的には、動的予測パターンは、ユーザがICカード1を使用するたびに、リーダライタ装置20等の外部装置から送信され、ICカード1の受信部31において受信されたコマンドの履歴情報である。動的予測パターンは、制御部35によって記憶部2内のEEPROM14等に記憶される。
動的予測パターンの一例を図3(b)に示す。
図3(b)では、ICカード1におけるアプリケーションプログラムとして(機密性が要求される建物等の領域への)入退出アプリケーションプログラムのみを利用し、電子決済アプリケーション等の他のアプリケーションプログラムをほとんど使わない利用者Aが携帯するICカード1の動的予測パターンの一例が示されている。なお、利用者AのICカード1には、入退出アプリケーションプログラムおよび電子決済アプリケーション等の他のアプリケーションプログラムを含む少なくとも2つ以上のアプリケーションプログラムが記憶部2に記憶されている。
図3(b)の表の左側列の番号はICカード1の受信部31において受信されたコマンドの順番が示されている(図3(b)の場合の順番1から番号が大きくなるに従って最近受信したコマンドを示す)。
すなわち、ICカード1を利用する利用者Aが、入室のためにICカード1をリーダライタ装置20に挿入または近づけたので、最初にリーダライタ装置20からResetコマンドが受信部31において受信され、その次にSelect Applicationコマンド(アプリケーションプログラムの選択命令)が受信部31において受信され、その次にRead Record Aコマンド(レコードAの読み取り命令)が受信部31において受信され、その次にWrite Record Aコマンド(レコードAの書き込み命令)が受信部31において受信されたことが示されている。
その後、ICカード1を利用する利用者Aは、退室のため(または、別の領域への入室のため)にICカード1をリーダライタ装置20に挿入または近づけたので、リーダライタ装置20からResetコマンドが受信部31において受信され、その次にSelect Applicationコマンド(アプリケーションプログラムの選択命令)が受信部31において受信され、その次にRead Record Aコマンド(レコードAの読み取り命令)が受信部31において受信され、その次にWrite Record Aコマンド(レコードAの書き込み命令)が受信部31において受信されたことが示されている。
すなわち、図3(b)では、ユーザである利用者AがICカード1を用いて、2回の操作を行った場合にICカード1が受信したコマンドの履歴情報が動的予測パターンとして記録されたことが示されている。
また、図3(b)の表の各行には、受信部31が受信した受信コマンドの次に利用された(実行された)コマンドが記載されており、受信番号、受信コマンドおよび受信コマンドの次に利用されたコマンドが紐づけられて記憶部2に記憶される。
ここでは、コマンド予測部33が動的予測を実行する場合の一例として、直近の過去4例(図3(b)の左側列の番号(受信番号)が5〜8)のコマンドを予測値として利用する場合について説明する。
この場合において、ICカード1がResetコマンドを受信した場合には、コマンド予測部33は図3(b)の動的予測パターンの受信番号5の直後に利用されたコマンドとして記録されているSelect Applicationコマンドを予測コマンドとして予測する。
また、ICカード1がResetコマンドを受信した後にSelect Applicationコマンドを受信した場合には、コマンド予測部33は図3(b)の動的予測パターンの受信番号6の直後に利用されたコマンドとして記録されているRead Record Aコマンドを予測コマンドとして予測する。
この図3(b)の動的予測パターンを利用した場合には、図3(a)の静的予測パターンを利用した場合と、コマンド予測部33が予測する予測コマンドは同一となる。
次に、静的予測パターンを利用した場合とは、コマンド予測部33が予測する予測コマンドが異なる動的予測パターンの一例を図4に示す。
図4では、ICカード1におけるアプリケーションプログラムとして入退出アプリケーションプログラムも利用するが、それ以上に電子決済アプリケーションを使用する利用者Bが携帯する動的予測パターンの一例が示されている。
図4の受信番号1から4までは、コマンド図3(b)の受信番号1から4と同じコマンドであるので説明を省略する。
図4の受信番号5において、ICカード1を利用する利用者Bは、電子決済のためにICカード1をリーダライタ装置20に挿入または近づけたので、リーダライタ装置20からResetコマンドが受信部31において受信され、その次にSelect Applicationコマンド(電子決済アプリケーションプログラムの選択命令)が受信部31において受信され、その次にVerifyコマンド(チェック命令)が受信部31において受信され、その次にRead Record Aコマンド(レコードAの読み込み命令)が受信部31において受信されたことが示されている。
図4の動的予測パターンを用いてコマンド予測部33が動的予測を実行する場合の一例として、図3(b)の動的予測と同様に直近の過去4例(図4の左側列の番号(受信番号)が5〜8)のコマンドを予測値として利用する場合について説明する。
この場合において、ICカード1がResetコマンドを受信した場合には、コマンド予測部33は図4の動的予測パターンの受信番号5の直後に利用されたコマンドとして記録されているSelect Applicationコマンドを予測コマンドとして予測する。この場合には、Applicationとして電子決済アプリケーションプログラムが選択されるので、Applicationとして入退出アプリケーションプログラムが選択される図3(a)の静的予測および図3(b)の動的予測とは予測結果が異なる。
また、ICカード1がResetコマンドを受信した後にSelect Application(電子決済アプリケーションプログラム)コマンドを受信した場合には、コマンド予測部33は図4の動的予測パターンの受信番号6の受信コマンドの直後に利用されたコマンドとして記録されているVerifyコマンドを予測コマンドとして予測する。
この場合にも、Select Applicationコマンドが選択される図3(a)の静的予測および図3(b)の動的予測とは予測結果が異なる。
以上説明したように、利用者Aの場合には静的予測と予測結果が変わらないが、利用者Bの場合には動的予測を優先した場合には、電子決済アプリケーションプログラムの処理が優先されるようになる。
したがって、動的予測を利用した場合、利用者ごとのICカード1の使用履歴に基づいて予測コマンドが予測されるので、利用者によって予測結果が最適化される。また、この場合には静的予測と動的予測のどちらを優先するかによっても、予測コマンドの予測結果が変化する。
また、図3(b)および図4に一例として示される動的予測パターンに基づいて(動的予測パターンを使用して)コマンド予測部33が動的予測を実行する場合には、直前に受信部31が受信したコマンド一つに基づいて(使用して)動的予測をしてもよいし、直前に受信部31が受信した少なくとも2つ以上のコマンドを使用して、その受信部31が受信したコマンドの順番(パターン)と動的予測パターンのコマンドの順番(パターン)とが一致した場合に動的予測パターンを使用して受信部31が次に受信するであろう予測コマンドを予測してもよい。この場合に動的予測パターンの一致する部分が作成された時期を制限することが可能である(一例として直近の受信コマンドからさかのぼっていくつまでのコマンドの受信履歴を使用する、または、直近の受信コマンドからさかのぼって何時までのコマンドの受信履歴を使用する等)し、また動的予測パターンの一致する部分が作成された時期を制限しないことも可能である。
記憶部2は、制御部35によって実行された予測コマンドの実行結果である予測処理結果情報を記憶する機能を有する。
リーダライタ装置20は、ICカード1との間でデータの送受信を行い、必要に応じてさらに外部のネットワーク端末等の電子機器との間でデータの送受信を行う。リーダライタ装置20とICカード1との間のデータ送受信は、USB、ISO7816等の予め規定されている規格に基づいて実施されるように構成されてもよい。
なお、本発明でいうコンピュータとは、記憶部、制御部等を備えた情報処理装置をいい、ICカード1では、CPU11、記憶部2等を備えて構成される。
また、本発明に係るICカード1は、上述のような構成を有することにより、コマンドを受信し、コマンドに対応する情報を送信し、受信したコマンドの次に受信されるべきコマンドを予測し、予測された予測コマンドを実行し、予測コマンドの実行結果である予測処理結果情報を記憶し、その情報を送信し、次のコマンドである次コマンドを受信し、その次コマンドと予測された予測コマンドとを比較し、次コマンドと予測コマンドとが一致する場合には予測処理結果情報を送信し、次コマンドと予測コマンドとが一致しない場合には、次コマンドを実行する機能を有する。
次に、図1におけるICカードにこれらの機能を実装し、実行対象となるアプリケーションプログラムの処理にかかる時間の短縮および利便性の向上を図る機能などを実現する処理動作の一部を、図5乃至図7と対応させながら説明する。
図5は、本実施形態のコマンド予測機能および投機実行機能が実行されるタイミングを示す処理フロー図である。
ステップS1では、ICカード1はリーダライタ装置20から受信部31を介してリセット信号を受信する。
ステップS2では、ICカード1はステップS1において受信したリセット信号に対応する情報としてATRを送信部32を介してリーダライタ装置20へ送信する。
ステップS3では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1はコマンド予測機能および投機実行機能を実行する。
このタイミングでは、ATR直後に実行されるコマンドを予想する。ここでは、先行して実行されるコマンドが存在しないので、あらかじめ静的に指定された(予め定められた(記憶された))静的予測パターン(図3(a)参照)から「ファイルAに対するSelect Fileコマンド」が次に実行されるコマンドであると予測する。そして、「ファイルAに対するSelect File」に対応する処理を(投機)実行する。すなわち、ICカード1はファイルAに対する選択およびFCI(File Control Information)を呼び出し、これらを専用の投機実行用RAM領域(図示せず)に保存する。
ステップS4では、ICカード1はリーダライタ装置20から受信部31を介してファイルAに対するSelect Fileコマンドを受信する。
ステップS5では、ステップS4において受信した「ファイルAに対するSelect Fileコマンド」と、ステップS3において先行して実行した予測コマンドとが一致するために、ICカード1はこのコマンドに対する処理は実行せず、投機実行用RAM領域の内容を実行領域(図示せず)に書き戻し、また投機実行用RAM領域に保持されたFCIをレスポンスデータとして送信する準備をする。
ステップS6では、ICカード1は、ステップS5において準備したファイルAに対するSelect Fileコマンドのコマンドレスポンス(投機実行用RAM領域から実行領域に書き戻されたFCI)を送信部32を介してリーダライタ装置20へ送信する。
ステップS7では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1はコマンド予測機能および投機実行機能を実行する。
先ず、ICカード1はファイルAに対するSelect Fileコマンドの次に実行されるであろうコマンドを予測する。先に実行されたコマンドはリセット信号およびファイルA に対するSelect File コマンドのみであり、この直前に受信したコマンドの情報および静的に設定された情報(静的予測パターン(図3(a)の受信番号2参照))、またはこれまでに蓄積された実行情報がある場合にはその実行情報(動的予測パターン(図3(b)の受信番号5、6を参照))を利用して、「レコードAに対するRead Recordコマンド」が次に実行されるコマンドであると予想する。
そして、「レコードAに対するRead Recordコマンド」に対応する処理を実行する。すなわち、ICカード1はレコードAの情報を読み出し、専用の投機実行用RAM領域に保存する。
ステップS8では、ICカード1はリーダライタ装置20から受信部31を介してレコードFに対するRead Recordコマンドを受信する。
ICカード1は受信したコマンド「レコードFに対するRead Recordコマンド」が、先行して実行した予測コマンド「レコードAに対するRead Recordコマンド」とは異なるため、予測は失敗と判断し、投機実行用RAM領域に格納されている情報は破棄する(破棄せずにそのまま投機実行用RAM領域に格納しておいてもよい)。
ステップS9では、ICカード1はステップS1において受信したレコードFに対するRead Recordコマンドを実行する。
ステップS10では、ICカード1はレコードFに対するRead Recordコマンドのコマンドレスポンスを送信部32を介してリーダライタ装置20へ送信する。
ステップS11では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1はコマンド予測機能および投機実行機能を実行する。
ステップS11のタイミングでは、レコードFに対するRead Recordコマンドの次に実行されるであろうコマンドを予測する。先に受信され、実行されたコマンドはファイルAに対するSelect Fileコマンド、レコードFに対するRead Recordコマンドであり、これらのコマンドの情報および静的に設定された情報(静的予測パターン(図3(a)の受信番号4参照))、またはこれまでに蓄積された実行情報がある場合にはその実行情報(動的予測パターン(図3(b)の受信番号5、6、7、8参照))を利用して次に実行されるコマンドを予想する。静的予測パターンでは「ファイルBに対するSelect Fileコマンド」が次に実行されるコマンドであると予想され、動的予測パターンでは「レコードFに対するWrite Recordコマンド」が次に実行されるコマンドであると予想される。予測手法を以下に詳述する。
静的予測パターン(図3(a)の受信番号4参照)から、ICカード1は「ファイルBに対するSelect Fileコマンド」を予想し、対応する処理を実行する。図3(a)の受信番号4では、Select Fileコマンドの次にRead Recordコマンドが受信されることが予測パターンとして格納されて、それらに対応するコマンドがステップS4、ステップS8において順番に受信されたSelect FileコマンドおよびRead Recordコマンドに対応するので、予測コマンドとしてSelect Fileコマンドが予測される。
また、図3(a)の受信番号4に記載のコマンドに対するファイル名およびレコード名と実際に受信されたコマンドに対するファイル名およびレコード名とは異なるが、図3(a)の受信番号4では受信されたSelect File CからSelect FileDが予測コマンドとして格納されているので、ICカード1は対応した対象ファイル名の変化を予測し、ステップ4において受信されたSelect File AからSelect File Bを予測することが可能となる。
動的予測パターンでは(図3(b)の受信番号5、6、7、8参照)では、Reset、Select Application、Read Recordコマンドの次にWrite Recordコマンドが予測されているので、Write Recordコマンドが予測コマンドとして予測される。ICカード1は対応した対象ファイル名の変化を予測(図3(b)の受信番号7においてReadとWriteコマンドに対するレコード名は変化していない)し、レコードFに対するRead Recordコマンドの予測コマンドとして「レコードFに対するWrite Recordコマンド」を次に実行されるコマンドであると予想する。
このように、ICカード1は、コマンドの対象となるファイル名およびレコード名を静的予測パターンおよび動的予測パターンから推測することも可能である。
以上説明したように、コマンド予測機能では、次に実行されるであろうコマンドを予測し、投機実行機能では予測された予測コマンドに関する処理を次のコマンドが受信されるまで実行する。ここでは、シーケンスにおける(処理フローにおける)ステップS3、ステップS7、ステップS11のタイミングで次コマンドを予測し、予測コマンドに対応する処理を実行する。
(実施形態1)
次に図6を用いて、本実施形態の一部を示すフローチャートについて説明する。
図6のフローチャートでは、IC1におけるコマンド予測機能によって予測された予測コマンドと次コマンドとが一致した場合について、各処理動作部に基づいて説明する。
ステップS21では、ICカード1はリーダライタ装置20から受信部31を介してリセット信号を受信する。
ステップS22では、ICカード1は受信したリセット信号に対応する情報としてATRを送信部32を介してリーダライタ装置20へ送信する。
ステップS23では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1の制御部35は次のコマンドを予測するようにコマンド予測部33に命令する。
ステップS24では、コマンド予測部33は次のコマンドに相当する予測コマンドを予測する。
ステップS25では、コマンド予測部33が予測コマンドと決定したSelect File Aコマンドを制御部35へ転送する。
ステップS26では、制御部35は、「ファイルAに対するSelect File」に対応する処理を実行する。すなわち、ICカード1はファイルAに対する選択およびFCI(File Control Information) を呼び出し、これらを専用の投機実行用RAM領域(図示せず)に保存する。
ステップS27では、制御部35は、「ファイルAに対するSelect File」に対応する処理の実行が完了したことをコマンド比較部34に転送する。
ステップS28では、ICカード1はリーダライタ装置20から受信部31を介してファイルAに対するSelect Fileコマンドを受信する。
ステップS29では、コマンド比較部34は、予測コマンドと受信した次コマンドとが一致することを確認する。
ステップS30では、コマンド比較部34から制御部35へ、予測コマンドの投機実行処理結果(予測処理結果情報)を反映するように命令する。
ステップS31では、ICカード1はこのコマンド(「ファイルAに対するSelect Fileコマンド」)に対する処理は実行せず、投機実行用RAM領域の内容を実行領域に書き戻し、また投機実行用RAM領域に保持されたFCIをレスポンスデータとして送信する準備をする。
ステップS32では、制御部35から入出力インターフェース部12へ予測コマンドの投機実行処理結果(予測処理結果情報)の反映が完了したことを転送するとともに、レスポンスデータを転送する。
ステップS33では、ICカード1は、ステップS31において準備したファイルAに対するSelect Fileコマンドのコマンドレスポンス(投機実行用RAM領域から実行領域書き戻されたFCI)を送信部32を介してリーダライタ装置20へ送信する。
次に図7を用いて、本実施形態の他の一部を示すフローチャートについて説明する。
図7のフローチャートでは、IC1におけるコマンド予測機能によって予測された予測コマンドと次コマンドとが一致しない場合について、各処理動作部に基づいて説明する。
ステップS41では、ICカード1はコマンドレスポンスを送信部32を介してリーダライタ装置20へ送信する。
ステップS42では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1の制御部35は次のコマンドを予測するようにコマンド予測部33に命令する。
ステップS43では、コマンド予測部33は次のコマンドに相当する予測コマンドを予測する。
ステップS44では、コマンド予測部33が予測コマンドと決定したRead Record Cコマンドを制御部35へ転送する。
ステップS45では、制御部35は、「レコードCに対するRead Record」に対応する処理を実行する。すなわち、ICカード1はレコードCの情報を読み出し、専用の投機実行用RAM領域に保存する。
ステップS46では、制御部35は、「レコードCに対するRead Record」に対応する処理の実行が完了したことをコマンド比較部34に転送する。
ステップS47では、ICカード1はリーダライタ装置20から受信部31を介してレコードFに対するRead Recordコマンドを受信する。
ステップS48では、コマンド比較部34は、予測コマンドと受信した次コマンドとが一致しないことを確認する。
ステップS49では、ICカード1はRead Record Fコマンド実行する。
ステップS50では、ICカード1は、ファイルFに対するRead Recordコマンドのコマンドレスポンスを送信部32を介してリーダライタ装置20へ送信する。
このように図6および図7に関わる動作によれば、ATR後のコマンドは予測が一致し、先行して実行した結果をそのまま反映/送信することが可能になる。しかし、ファイルAに対するSelect Fileコマンド後のコマンドは予測が外れたため、先行して実行した結果を破棄し、改めて受信したコマンドを実行する。この例のように、予測が一致した場合は先行した結果をそのまま反映できるため処理速度の向上が見込める。予測が外れた場合は先行した結果を利用できないが、結果を利用せずに改めて実行すればよいので従来の構成例よりも処理速度が大きく遅れることはない。そのため、予測が外れたコマンドがあったとしても、全体として処理速度の向上が可能となる。
(実施形態2)
次に、ICカード1として暗号を演算する機能を搭載したカードを想定する。
本実施形態では、以下のシーケンスを例に説明する。
1.Reset信号を受信する。2.ATRを送信する。3.アプリケーションプログラムAに対するSelect Applicationコマンドを受信する。4.待機状態に遷移する。5.暗号演算コマンドであるEnc(Encode)Dataコマンドを受信する。
一般的に、暗号演算は他の処理と比較して実行に時間がかかる。そのため、暗号演算が実行されることが予想された場合、あらかじめ待機時間中に暗号演算を先行して実行することにより、実行時間を大幅に短縮することが可能となる。
ここでは、3番目のSelect Applicationコマンド後に5番目のEnc Dataコマンドが送信されると予測したとする。
Enc Dataコマンドでは暗号処理が演算されるため、先行して暗号演算を実行する(投機実行)。この時、コマンドから与えられるデータを用いてまたはコマンドから与えられるデータを用いずに暗号演算を実行する。
この場合、以下の2通りの方法にて投機実行を実現する。
一つの投機実行方法は暗号演算に利用する値を予測し、その値を用いて暗号を演算する方法である。
もう一つの投機実行方法は、与えられたデータを必要としない部分の演算を先行して実行し、データが与えられたらすぐに以降の演算を継続して実行できるようにする方法である。
値を予測する場合では、その値を用いて暗号演算処理を実行する。コマンドにて送られてきたデータが予測した値と一致した場合には、そのまま結果を利用する。一致しない場合は結果を破棄する。
一部のみ暗号演算処理を実行する場合では、コマンドを必要としない部分(鍵がわかっている場合は鍵拡張処理など)を先行して実行する。コマンドからデータが与えられてから、残りの部分を実行する。これらの手法により、時間がかかる暗号処理をより高速に実行することが可能となる。
このように、暗号処理の一部の処理だけを実施する場合の例として、以下のような処理が挙げられる。
一つはICカード内部で保持する鍵が壊れていないことを確認するためのCRCチェックである。
他の一つは、AES(Advanced Encryption Standard)などの暗号における、鍵拡張処理(カード内で保持する鍵から、拡張鍵を作成する処理である。外部のデータが不要な場合があるために、次のコマンドを受信する前に先行して実行が可能となる)である。
さらに他の一つは、マスク情報の作成(カード内の演算処理を外部に漏洩させないため、乱数によるマスク処理を実施する場合がある。この時に利用する乱数をあらかじめ生成し、RAM上に展開させる)処理である。
このような処理を先行して実行することにより、処理速度の向上が見込める。
一例として、以下の処理フローで実行される暗号演算が想定される。
1.カード内部に保持する鍵のCRCをチェックする。2.次に暗号鍵を利用した鍵拡張処理を実施する。3.暗号処理に利用するマスク用乱数値を生成する。4.コマンドより暗号化するデータを受け取り、暗号処理を実施する。5.結果をレスポンスとして送信する。
上記のようなフローの場合、1,2,3はコマンドから与えられるデータがなくとも先行して処理が実施可能である。投機実行機能にて1から3までの処理を先行して実行し、当該コマンドを受信した後、4および5の処理を継続して実施することが可能となる。1から3までの処理は場合によって時間がかかる処理もあるため、全体として処理速度の向上が見込める。
実施形態2の処理フローを図8に示す。このフローでは、Selectコマンドに対する応答後からの処理フローであって、予測が成功した場合の処理フローである。
ステップS51では、ICカード1は受信したリセット信号に対応する情報としてATRを送信部32を介してリーダライタ装置20へ送信する。
ステップS52では、ICカード1はリーダライタ装置20からの次のコマンドを待つ待機状態に移行するので、ICカード1の制御部35は次のコマンドを予測するようにコマンド予測部33に命令する。
ステップS53では、コマンド予測部33は次のコマンドに相当する予測コマンドを予測する。
ステップS54では、コマンド予測部33が予測コマンドと決定したEnc dataコマンドを制御部35へ転送する。
ステップS55では、制御部35は、「Enc dataコマンド」に対応する処理を実行する。すなわち、ICカード1の内部で保持する鍵が壊れていないことを確認するためのCRCチェックを実行し、鍵拡張処理を実行し、マスク情報の作成処理を実行し、後の処理に必要な情報をRAM15上に展開させる。
ステップS56では、制御部35は、「Enc data」に対応する処理の一部の実行が完了したことをコマンド比較部34に転送する。
ステップS57では、ICカード1はリーダライタ装置20から受信部31を介してEnc dataコマンドを受信する。
ステップS58では、コマンド比較部34は、予測コマンドと受信した次コマンドとが一致することを確認する。
ステップS59では、コマンド比較部34から制御部35へ、ステップS55において実行した一部の「Enc data」に対応する処理に引き続く処理を実行するように命令する。
また、ステップS57において受信した「Enc dataコマンド」を処理するために必要なデータを制御部35へ送付する。
ステップS60では、ICカード1の制御部35はステップS55において実行した一部の「Enc data」に対応する処理結果情報を利用(RAM15上に展開されたデータを利用することも含む)して、「Enc dataコマンド」の処理を完了させる。
ステップS61では、制御部35から入出力インターフェース部12へ予測コマンドである「Enc dataコマンド」の処理が完了したことを転送するとともに、レスポンスデータを転送する。
ステップS33では、ICカード1は、コマンドレスポンスを送信部32を介してリーダライタ装置20へ送信する。
このように図8に関わる動作によれば、少なくとも一部の暗号演算処理(コマンドを必要としない部分(鍵がわかっている場合は鍵拡張処理など))を先行して実行し、コマンドを受信してから与えられたデータを使用して残りの部分を実行する。これらの手法により、時間がかかる暗号処理をより高速に実行することが可能となる。
以上のように、本発明の半導体装置は物品であればどのようなものにでも設けて使用し
てもよく、ほかにも免許証、保険証、定期券、キャッシュカード、クレジットカード、電
子キー、電子マネー等に使用することができる。
また上記の処理により、ICカード等の半導体装置において、実行対象となるアプリケーションプログラムの処理にかかる時間の短縮および利便性の向上を図ることが可能となる。
なお、図5乃至図8における動作手順を、ハードディスク等の記録媒体に予め記録しておき、或いはインターネット等のネットワークを介して予め記録しておき、これを汎用のマイクロコンピュータ等により読み出して実行することにより、当該汎用のマイクロコンピュータ等を実施形態に係わるCPUとして機能させることも可能である。
さらに、本発明は上記実施例に限定されるものではなく、本発明の要旨の範囲内において種々変更可能である。
さらに、本明細書に記載および図示されている実施形態は具体例としてのものであるに過ぎず、本発明の範囲を限定するものと考えるべきではないと理解すべきである。本発明の精神および範囲にしたがって上述以外の変更および修正を施すことも可能である。