まず、後述される本発明の一実施形態のICカードリーダの技術的意義を理解しやすくするために、前提となる情報処理システムについて説明する。後述される本発明の実施形態のICカードリーダは、図1の情報処理システム(旧情報処理システム101−1)を、将来的に図2、図3に図示された情報処理システム(新情報処理システム101−2)に更新する過程において発生し得る問題について対処するためのものである。ここで、図1の旧情報処理システム101−1は、従前の通信プロトコル(以下、「旧プロトコル」ということがある)にのみ対応しており、図2、図3の新情報処理システム101−2は、旧プロトコルに加えて、新しい通信プロトコル(以下、「新プロトコル」ということがある)に対応している。
図1〜図3に図示されているように、本実施形態では、情報処理システム101が、ホスト機102と、ICカードリーダ103と、ICカード104とを備えて構成されている。ここで、図1、図2Aにおいて、参照符号に付された添字“1”は、旧プロトコルにしか対応していない構成要素を示している。即ち、図1のホスト機102−1と、ICカードリーダ103−1と、ICカード104−1とは、旧プロトコルにしか対応していない。また、図2、図3において、添字“2”は、旧プロトコルと新プロトコルの両方に対応している構成要素を示している。即ち、図2のホスト機102−2と、ICカードリーダ103−2と、ICカード104−2とは、旧プロトコルと新プロトコルの両方に対応している。なお、以下において、旧プロトコルにしか対応していない構成要素と旧プロトコルと新プロトコルの両方に対応している構成要素とを区別しない場合、添字は参照符号に添付されない。また、図1〜図3には、一つのホスト機102と一つのICカードリーダ103とが図示されているが、一つのホスト機102に、複数のICカードリーダ103が接続され得ることに留意されたい。
当該情報処理システム101がETCシステムとして用いられる場合、ホスト機102及びICカードリーダ103は、路側装置として用いられる。より具体的には、ICカードリーダ103が料金所の車路のそれぞれに設置され、ホスト機102は、当該料金所に設置されたICカードリーダ103を統括する装置として用いられる。より具体的には、ホスト機102は、ICカードリーダ103を介してICカード104から読み取ったデータ(進入料金所、車種等のデータ)に基づいて課金処理を行い、又は、ICカード104に対して所望のデータ(進入料金所、車種等のデータ)の書き込みを行う。
ここで、新プロトコルでの通信では、ICカードリーダ103−2とICカード104−2との間の通信の通信速度が、旧プロトコルでの通信におけるICカードリーダ(103−1又は103−2)とICカード104−1との通信における通信速度よりも速くなるように設定されている。通信速度の高速化は、ICカードリーダ103−2と新カード104−2の間の通信において、データ演算に割り当てられる時間を増大可能にするという利点がある。例えば、新プロトコルにおいて高度な暗号化処理が行われる場合、暗号化処理に必要なデータ演算量が増大し、データ演算に必要な時間も増大する。このような状況の下で一定時間内でICカードとの通信を完了するためには、暗号化処理に必要な演算を行うための演算時間を確保する必要があり、通信速度の高速化は、演算時間の確保のために有効である。
図1を参照して、本実施形態では、旧情報処理システム101−1が下記の動作を行うものとする。ICカード104−1がICカードリーダ103−1に挿入されると、ICカードリーダ103−1は、ICカード104−1を活性化するための動作を行う。例えば、ICカードリーダ103−1は、ICカード104−1への電力及び動作クロックの供給を開始すると共に、リセット信号をICカード104−1に供給する。
ICカード104−1が活性化されると、ICカード104−1は、活性化応答をICカードリーダ103−1に送る。ICカードリーダ103−1は、ICカード104−1から活性化応答を受け取ると、ICカード104−1のICカードリーダ103−1への挿入を検出したことを知らせるICカード検出通知をホスト機102−1に送信する。
ICカード検出通知がホスト機102−1に送られると、ホスト機102−1とICカード104−1との間で、ICカードリーダ103−1を介した通信が行われる。ここで、ホスト機102−1とICカード104−1との間の通信は、旧プロトコルで行われる。
詳細には、ホスト機102−1は、基本情報(ICカード104−1に関する様々な情報)の読み出しを要求するコマンドである基本情報読み出し要求コマンドを、ICカードリーダ103−1を介してICカード104−1に送信する。ICカード104−1は、基本情報読み出し要求コマンドへの応答(レスポンス)を、ホスト機102−1に送信する。この応答には、ICカード104−1が、旧プロトコルにのみ対応しているICカードであることを示す情報(例えば、ICカード104−1のバージョンを示す情報)が含まれている。ホスト機102−1は、基本情報読み出し要求コマンドへの応答を受け取ると、所望の動作を実現するためのコマンド(ICカードコマンド)を、ICカード104−1に送信する。ICカード104−1は、受け取った各ICカードコマンドに対する応答をホスト機102−1に送信する。ホスト機102−1とICカード104−1との間で交換されるICカードコマンド及び応答は、いずれも、旧プロトコルで定義されているものが使用される。ここで、ホスト機102−1とICカード104−1との間の通信では、ICカードリーダ103−1は、コマンド及び応答を転送する転送処理のみを行うことに留意されたい。
一方、図2、図3は、本実施形態における新情報処理システム101−2の動作を示している。新情報処理システム101−2では、旧プロトコルにのみ対応しているICカード104−1(以下、「旧カード104−1」ということがある。)と新プロトコルに対応しているICカード104−2(以下、「新カード104−2」ということがある。)のいずれがICカードリーダ103−2に挿入されても、処理を正常に実行できる必要がある。図2は、旧カード104−1がICカードリーダ103−2に挿入された場合の新情報処理システム101−2の動作を示しており、図3は、新カード104−2がICカードリーダ103−2に挿入された場合の新情報処理システム101−2の動作を示している。
新情報処理システム101−2は、旧カード104−1及び新カード104−2のいずれがICカードリーダ103−2に挿入された場合でも、当初は、ICカードとの通信を旧プロトコルで行う。この過程で、挿入されたICカードが新カード104−2であると判断した時、新情報処理システム101−2は、通信で用いられるプロトコルを、旧プロトコルから新プロトコルに切り換える。
詳細には、図2、図3に図示されているように、ICカード(104−1又は104−2)がICカードリーダ103−2に挿入されると、ICカードリーダ103−2は、挿入されたICカードを活性化するための動作を行う。例えば、ICカードリーダ103−2は、ICカードへの電力及び動作クロックの供給を開始すると共に、リセット信号を挿入されたICカードに供給する。
ICカードが活性化されると、該ICカードは、活性化応答をICカードリーダ103−2に送る。ICカードリーダ103−2は、該ICカードから活性化応答を受け取ると、ICカードのICカードリーダ103−2への挿入を検出したことを知らせるICカード検出通知をホスト機102−2に送信する。
ICカード検出通知がホスト機102−2に送られると、挿入されたICカードとホスト機102−2との間で、ICカードリーダ103−2を介した通信が行われる。
詳細には、ホスト機102−2は、ICカードから基本情報(ICカードに関する様々な情報)の読み出しを要求するコマンドである基本情報読み出し要求コマンドを、ICカードリーダ103−2を介してICカードに送信する。ICカードは、基本情報読み出し要求コマンドへの応答を、ホスト機102−2に送信する。この応答には、当該ICカードが、旧プロトコルにのみ対応しているICカードであるのか、新プロトコルに対応しているICカードであるのかを示す情報(例えば、ICカードのバージョンを示す情報)が含まれている。
ホスト機102−2は、基本情報読み出し要求コマンドへの応答に含まれている情報から、挿入されたICカードが、旧カード104−1と新カード104−2のいずれであるかを判断する。
挿入されたICカードが旧カード104−1であると判断した場合、図2に示されているように、旧プロトコルでの通信が継続して行われる。ホスト機102−2は、所望の動作を実現するためのICカードコマンドを、旧カード104−1に送信し、ICカード104−1は、受け取った各ICカードコマンドに対する応答をホスト機102−2に送信する。ホスト機102−2と旧カード104−1との間で交換されるICカードコマンド及び応答は、いずれも、旧プロトコルで定義されているものが使用される。
一方、挿入されたICカードが新カード104−2であると判断した場合、図3に示されているように、新情報処理システム101−2は、通信に用いられるプロトコルを、旧プロトコルから新プロトコルに切り替える動作を行う。詳細には、ホスト機102−2は、新カード104−2に、新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図3においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(カード)」として図示されている。新カード104−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応する動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機102−2に返す。ホスト機102−2は、この応答により、新カード104−2が新プロトコルに対応する動作を開始したことを認識することができる。
ホスト機102−2は、新カード104−2から新プロトコル切替要求コマンドに対する応答を受け取ると、ICカードリーダ103−2に新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを送信する。図3においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(リーダ)」として図示されている。ICカードリーダ103−2は、新プロトコル切替要求コマンドを受け取ると、新プロトコルに対応した動作を開始するとともに、この新プロトコル切替要求コマンドに対する応答をホスト機102−2に返す。
その後、ホスト機102−2は、所望の動作を実現するためのICカードコマンドを、新カード104−2に送信し、新カード104−2は、受け取った各ICカードコマンドに対する応答をホスト機102−2に送信する。ホスト機102−2と新カード104−2との間で交換されるICカードコマンド及び応答は、いずれも、新プロトコルで定義されているものが使用される。
ここで、旧情報処理システム101−1で用いられているICカードリーダ103−1が、ハードウェア上の問題によって新プロトコルで用いられる通信速度に対応できない場合には、ICカードリーダ103−1を新プロトコルによる通信に用いることはできない。このような場合、新プロトコルに規定された通信速度で通信可能なハードウェアを有するICカードリーダ、即ち、ICカードリーダ103−2に置き換える必要性が生じることになる。
図1の旧情報処理システム101−1を、図2、図3に図示された新情報処理システム101−2に更新する場合、ホスト機102−1及びICカードリーダ103−1の両方を同時に新プロトコルに対応したホスト機102−2及びICカードリーダ103−2に置き換えることが望ましい。しかしながら、存在しているICカードリーダ103の全てを同時に更新することは、コスト面から困難なことがある。このような場合、ICカードリーダ103−1をシステムに残存させておく(即ち、図2、図3に示された動作を行うホスト機102−2にICカードリーダ103−1を接続する)ことが考えられる。
その一方で、旧プロトコルにしか対応していないICカードリーダ103−1をシステムに残存させておくと、予期しない動作により、システムに不具合を起こすことがあり得る。例えば、ICカードリーダ103−1は、新プロトコルに規定された通信速度で新カード104−2と通信することが不可能であるにもかかわらず、新プロトコルに対応した動作に切り換えることを指示する新プロトコル切替要求コマンドが新カード104−2に転送されると、以後、ICカードリーダ103−1と新カード104−2との間の通信ができなくなる。更に、新プロトコルに対応したICカードリーダ103−2は、新プロトコルに対応した動作に切り換えることをICカードリーダ103−2に指示する新プロトコル切替要求コマンド(図3では、「新プロトコル切替要求(カード)」として図示されている)を受け取ると、該新プロトコル切替要求コマンドを正しく解釈して、新プロトコルに対応した動作に切り換わる。一方、旧プロトコルにしか対応していないICカードリーダ103−1は、新プロトコル切替要求コマンドを受け取っても、当該コマンドを正しく解釈することができず、予期しない動作をする可能性がある。これは、システムの不具合を引き起こす可能性がある。
以下に述べられる本発明の実施形態は、このような問題に対処するためのものである。本実施形態では、ハードウェア上の問題によって新プロトコルに対応できないICカードリーダ103−1に対し、ソフトウェア的な改修を行うことで、システムの不具合の発生を防止するための技術が提供される。
図4は、本実施形態のICカードリーダ3の構成を示すブロック図である。本実施形態のICカードリーダ3は、通信インタフェース11と、ICカードインタフェース12と、演算装置13と、記憶媒体14と、通信ポート15とを備えている。
通信インタフェース11は、ホスト機102−2に接続され、ホスト機102−2と通信するために使用されるインタフェースである。ICカードインタフェース12は、ICカード104が挿入されるスロットを有しており、挿入されたICカード104と通信するために使用されるインタフェースである。
演算装置13は、ICカードリーダ3の動作において必要となる様々なデータ処理を行う。より具体的には、演算装置13は、ホスト機102−2から送られてきたコマンドを解釈し、そのコマンドに応じたデータ処理を行う。演算装置13によって行われるデータ処理には、コマンドをICカード104に転送する転送処理が含まれており、更に、コマンドをフィルタリングする処理(フィルタリング処理)が含まれる。後述されるように、演算装置13が、フィルタリング処理を行うことが、本実施形態において重要である。加えて、演算装置13は、ICカード104から送られてきた応答をホスト機102−2に転送する動作も行う。
記憶媒体14は、ICカードリーダ3の動作において必要となる様々なデータを記憶する記憶部として機能する。詳細には、記憶媒体14は、動作プログラム16と、コマンドフィルタリングテーブル17とを記憶する。動作プログラム16は、演算装置13が実行すべきデータ処理を記述しており、演算装置13は、動作プログラム16を実行することで、所望のデータ処理を行う。コマンドフィルタリングテーブル17は、コマンドのフィルタリング処理において参照される。本実施形態では、コマンドフィルタリングテーブル17は、ホワイトリスト17aと、ブラックリスト17bとを備えている。ホワイトリスト17aとは、ホスト機102−2から送られてきたコマンドをICカード104に転送する転送処理において、ICカード104に転送することが許可されるコマンド(転送許可コマンド)のリストであり、ブラックリスト17bとは、ICカード104に転送することが禁止されるコマンド(転送禁止コマンド)のリストである。ここで、ホワイトリスト17aとブラックリスト17bに実際に登録される情報は、コマンドの種類を識別するために十分なデータ列、例えば、コマンドヘッダであってもよい。
後述されるように、本実施形態では、ホワイトリスト17aに転送許可コマンドが登録されている場合にはホワイトリスト17aがコマンドのフィルタリング処理に用いられ、ホワイトリスト17aに何らの転送許可コマンドも登録されていない場合には、ブラックリスト17bがコマンドのフィルタリング処理に用いられる。一方、ホワイトリスト17aに転送許可コマンドが登録されている場合には、ホワイトリスト17aがコマンドのフィルタリング処理に用いられる。
通信ポート15は、ICカードリーダ3を設定するために使用される外部機器が接続されるポートである。外部機器は、通信ポート15に接続されると、通信ポート15から記憶媒体14にアクセスして記憶媒体14に記憶されているデータを書き換えることができる。外部機器は、記憶媒体14に記憶されている動作プログラム16の書き換えを行うことができ、また、コマンドフィルタリングテーブル17を記憶媒体14に書き込み、又は、書き換えることができることになる。
上述の本実施形態のICカードリーダ3は、ハードウェアの構成としては(旧プロトコルにしか対応していない)ICカードリーダ103−1と同一であり、ICカードリーダ103−1に対してソフトウェア的な改修を行った構成を有している。即ち、ICカードリーダ3とICカードリーダ103−1とでは、記憶媒体14に記憶されているデータの内容が異なる。詳細には、ICカードリーダ3の記憶媒体14に記憶されている動作プログラム16の内容は、ICカードリーダ103−1の動作プログラムの内容と異なっており、また、ICカードリーダ3は、コマンドフィルタリングテーブル17が記憶媒体14に登録されている点でもICカードリーダ103−1と相違している。
ここで、ICカードリーダ3がハードウェア構成においては旧プロトコルにしか対応していないICカードリーダ103−1と同一であるため、ICカードリーダ3においてICカード104と通信するために使用されるICカードインタフェース12は、旧プロトコルの通信速度にしか対応していないことに留意されたい。
ICカードリーダ103−1のICカードリーダ3への改修は、ICカードリーダ103−1の動作プログラムを上述の動作プログラム16に書き換え、更に、コマンドフィルタリングテーブル17を記憶媒体14に書き込むことで行うことができる。ここで、記憶媒体14に記憶された動作プログラム16への書き換え、及び、記憶媒体14へのコマンドフィルタリングテーブル17の書き込みは、通信ポート15を介して記憶媒体14にアクセスすることで行われる。
続いて、本実施形態のICカードリーダ3の動作について説明する。図5A、図5Bは、ICカードリーダ3の動作を説明するフローチャートである。以下に述べられるICカードリーダ3の動作は、演算装置13が、動作プログラム16を実行することで実現されることに留意されたい。
図5Aを参照して、ICカードリーダ3の演算装置13は、ICカード104がICカードリーダ3のスロットに挿入されたことを検知すると(ステップS01)、ICカード検出通知をホスト機102−2に送信する(ステップS02)。
また、ホスト機102−2からコマンドを受け取った場合(ステップS03)、ICカードリーダ3の演算装置13は、受け取ったコマンドを解釈し、受け取ったコマンドの種類に応じて異なる処理を行う。受け取ったコマンドの解釈は、例えば、コマンドに含まれるヘッダ(コマンドヘッダ)に基づいて行われる。
詳細には、ホスト機102−2から受け取ったコマンドが基本情報読み出しコマンドである場合、ICカードリーダ3は、ICカード104から基本情報を読み出すための処理を行う(ステップS04)。より具体的には、ICカードリーダ3の演算装置13は、ホスト機102−2から受け取った基本情報読み出しコマンドをICカード104に転送し、更に、ICカード104から受け取った基本情報読み出しコマンドに対する応答を、ホスト機102−2に転送する。この応答には、ICカード104が、旧カード104−1と新カード104−2のいずれであるかを示す情報(例えば、ICカード104のバージョンを示す情報)が含まれている。
更に、ホスト機102−2から受け取ったコマンドがカード排出コマンドである場合、ICカードリーダ3の演算装置13は、挿入されたICカード104をICカードリーダ3のスロットから排出する(ステップS05)。
また、ホスト機102−2から受け取ったコマンドが、ICカードリーダ3が対応していないコマンドであると解釈した場合、ICカードリーダ3の演算装置13は、ホスト機102−2に、異常応答(即ち、異常なコマンドを受け取ったことをホスト機102−2に通知する応答)を返す(ステップS06)。
更に、ホスト機102−2から受け取ったコマンドが、ICカード104に向けて送信されたICカードコマンドであると解釈した場合、ICカードリーダ3の演算装置13は、コマンドフィルタリングテーブル17を参照しながら、当該ICカードコマンドをICカード104に転送するか、当該ICカードコマンドをブロックする(即ち、ICカード104に転送しない)かを決定する。
詳細には、当該ICカードリーダ3が学習モードに設定されているかが判断される(ステップS07)。ここで、学習モードとは、ホワイトリスト17aを作成するモードである。学習モードについては、後に詳細に説明する。
ICカードリーダ3が学習モードに設定されていない場合、ホワイトリスト17aに登録されている転送許可コマンドの数が参照される(ステップS08)。ホワイトリスト17aに少なくとも一の転送許可コマンドが登録されている場合、ホワイトリスト17aが検索され、ホスト機102−2から受け取ったICカードコマンドが転送許可コマンドとしてホワイトリスト17aに登録されているか確認される(ステップS09)。ホスト機102−2から受け取ったICカードコマンドがホワイトリスト17aに登録されている場合、当該ICカードコマンドがICカード104に転送される(ステップS10)。更に、当該ICカードコマンドに対してICカード104から応答があった場合、当該応答がホスト機102−2に転送される。また、ホスト機102−2から受け取ったICカードコマンドがホワイトリスト17aに登録されていない場合、当該ICカードコマンドはブロックされ、ICカード104には転送されない(ステップS12)。ホスト機102−2から受け取ったICカードコマンドをブロックした場合、ICカードリーダ3は、ホスト機102−2に異常応答を返しても良く、また、何らの応答を返さなくても良い。
一方、ステップS08でホワイトリスト17aに何らの転送許可コマンドも登録されていないと判断された場合には、ブラックリスト17bがフィルタリング処理に用いられる。詳細には、ブラックリスト17bが検索され、ホスト機102−2から受け取ったICカードコマンドが転送禁止コマンドとしてブラックリスト17bに登録されているか確認される(ステップS11)。ホスト機102−2から受け取ったICカードコマンドがブラックリスト17bに登録されていない場合、当該ICカードコマンドがICカード104に転送される(ステップS10)。更に、当該ICカードコマンドに対してICカード104から応答があった場合、当該応答がホスト機102−2に転送される。また、ホスト機102−2から受け取ったICカードコマンドがブラックリスト17bに登録されている場合、当該ICカードコマンドはブロックされ、ICカード104には転送されない(ステップS12)。この場合も、ICカードリーダ3は、ホスト機102−2に異常応答を返しても良く、また、何らの応答を返さなくても良い。
ホワイトリスト17a及びブラックリスト17bの内容は、フィルタリング処理を適正に行うために重要である。ホワイトリスト17aには、基本情報読み出しコマンドと、旧プロトコルに定義されたICカードコマンドとが登録されることが望ましい。一方、ブラックリスト17bとしては、新カード104−2に対して新プロトコルに対応した動作に切り換えることを指示する新プロトコル切替要求コマンド(図3において、「新プロトコル切替要求(カード)」として示されているコマンド)が登録されていることが望ましい。加えて、ブラックリスト17bに、ICカードリーダ3に対して新プロトコルに対応した動作に切り換えることを指示する新プロトコル切替要求コマンド(図3において、「新プロトコル切替要求(リーダ)」として示されているコマンド)が登録されていることが望ましい。
ここで、ステップS07において、ICカードリーダ3が学習モードに設定されている場合には、ホワイトリスト17aを作成するための処理が行われる。詳細には、ICカードリーダ3が学習モードに設定されている場合には、ホスト機102−2から受け取ったICカードコマンドがホワイトリスト17aに登録される(ステップS20)。一例としては、ホスト機102−2から受け取ったコマンドのコマンドヘッダが、ホワイトリスト17aに登録される。ここで、ホスト機102−2から受け取ったコマンドが、既にホワイトリスト17aに登録されている場合には、当該コマンドは登録されない。更に、ホスト機102−2から受け取ったICカードコマンドが、ICカード104に転送される。
学習モードにおける上記の処理は、ホワイトリスト17aの作成を容易にするためのものである。ホワイトリスト17aに基づくフィルタリング(即ち、ホワイトリスト17aに登録されたコマンドのみをICカード104に転送するフィルタリング)は、システムの不具合を起こさないと確認されたコマンドのみをICカード104に転送できる点で、システムの不具合の防止に有効である。その一方で、ホワイトリスト17aの作成は、実際上の困難性が存在する。一つの困難性は、セキュリティー担保の問題から、ホスト機102とICカード104との間で行われる通信に用いられるコマンドの詳細が、ICカードリーダ3の製造事業者には知らされない場合がある点である。ホスト機102及びICカード104では暗号化処理が行われるため、ホスト機102及びICカード104で実際に行われるデータ処理についての情報にアクセス可能な事業者は限定される。これは、ICカードリーダ3の製造事業者が、適正なホワイトリスト17aを作成することに困難性が存在することを意味している。
学習モードは、このような困難性を克服するために用意されている。ホワイトリスト17aに登録すべきコマンドは、ホスト機102から旧カード104−1に送られるべきICカードコマンドであることから、ホスト機102と旧カード104−1の間で実際に通信を行い、このときにホスト機102から旧カード104−1に送られるICカードコマンドをホワイトリスト17aに登録することで、適正なホワイトリスト17aを作成することができる。上述の学習モードを用いることで、ホスト機102と旧カード104−1の間で実際に通信を行ったときにホスト機102から旧カード104−1に送られるコマンドをホワイトリスト17aに登録することができる。
図6、図7は、上述の動作を行うICカードリーダ3が新情報処理システム101−2に組み込まれた場合、即ち、新プロトコルに対応するホスト機102−2にICカードリーダ3が接続された場合における、新情報処理システム101−2の動作を示す図である。詳細には、図6は、旧カード104−1がICカードリーダ3に挿入された場合の新情報処理システム101−2の動作を示しており、図7は、新カード104−2がICカードリーダ3に挿入された場合の新情報処理システム101−2の動作を示している。
図6に示されているように、旧カード104−1がICカードリーダ3に挿入された場合には、コマンドをブロックする動作は行われない。詳細には、旧カード104−1がICカードリーダ3に挿入されると、ICカードリーダ3は、旧カード104−1を活性化する。旧カード104−1が活性化されると、旧カード104−1は、活性化応答をICカードリーダ3に送る。ICカードリーダ3は、旧カード104−1から活性化応答を受け取ると、ICカード104がICカードリーダ3に挿入されたことを知らせるICカード検出通知をホスト機102−2に送信する。
ICカード検出通知がホスト機102−2に送られると、ホスト機102−2と旧カード104−1との間で、ICカードリーダ3を介した通信が行われる。ここで、ホスト機102−2と旧カード104−1との間の通信は、旧プロトコルで行われる。
詳細には、ホスト機102−2は、基本情報読み出し要求コマンドを、ICカードリーダ3に送る。基本情報読み出し要求コマンドは、ホワイトリスト17aに登録され、よって、基本情報読み出し要求コマンドはブロックされない。ICカードリーダ3は、受け取った基本情報読み出し要求コマンドを、旧ICカード104−1に転送する。その代わりに、ホワイトリスト17aに何らのコマンドも登録せず、基本情報読み出し要求コマンドをブラックリスト17bに登録しないことで、基本情報読み出し要求コマンドのブロックが実行されないようにしてもよい。旧カード104−1は、基本情報読み出し要求コマンドへの応答を、ICカードリーダ3を介してホスト機102−2に送信する。この応答には、旧カード104−1が、旧プロトコルにのみ対応しているICカードであることを示す情報(例えば、旧カード104−1のバージョンを示す情報)が含まれている。
基本情報読み出し要求コマンドへの応答によってICカードリーダ3に挿入されたICカードが旧カード104−1であることを認識すると、以後、ホスト機102−2は、旧プロトコルで定義されているICカードコマンドを、ICカードリーダ3に送る。旧プロトコルで定義されているICカードコマンドは、ホワイトリスト17aに登録され、ICカードリーダ3は、ホスト機102−2から送られてきたICカードコマンドをブロックせず、旧カード104−1に転送する。その代わりに、ホワイトリスト17aに何らのコマンドも登録せず、旧プロトコルで定義されているICカードコマンドをブラックリスト17bに登録しないことで、旧プロトコルで定義されているICカードコマンドのブロックが実行されないようにしてもよい。旧カード104−1は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3を介してホスト機102−2に送信する。
一方、図7に示されているように、新カード104−2がICカードリーダ3に挿入された場合には、少なくとも、新カード104−2に対して新プロトコルに対応した動作に切り換えることを指示する新プロトコル切替要求コマンド(図7において、「新プロトコル切替要求(カード)」として示されているコマンド)がブロックされる。
詳細には、新カード104−2がICカードリーダ3に挿入されると、ICカードリーダ3は、新カード104−2を活性化する。新カード104−2が活性化されると、新カード104−2は、活性化応答をICカードリーダ3に送る。ICカードリーダ3は、新カード104−2から活性化応答を受け取ると、ICカード104がICカードリーダ3に挿入されたことを知らせるICカード検出通知をホスト機102−2に送信する。
ICカード検出通知がホスト機102−2に送られると、ホスト機102−2と新カード104−2との間で、ICカードリーダ3を介した通信が行われる。詳細には、ホスト機102−2は、基本情報読み出し要求コマンドを、ICカードリーダ3に送る。基本情報読み出し要求コマンドは、ホワイトリスト17aに登録され、よって、基本情報読み出し要求コマンドはブロックされない。ICカードリーダ3は、受け取った基本情報読み出し要求コマンドを、新カード104−2に転送する。その代わりに、ホワイトリスト17aに何らのコマンドも登録せず、基本情報読み出し要求コマンドをブラックリスト17bに登録しないことで、基本情報読み出し要求コマンドのブロックが実行されないようにしてもよい。新カード104−2は、基本情報読み出し要求コマンドへの応答を、ICカードリーダ3を介してホスト機102−2に送信する。この応答には、新カード104−2が、新プロトコルに対応しているICカードであることを示す情報(例えば、新カード104−2のバージョンを示す情報)が含まれている。
基本情報読み出し要求コマンドへの応答によってICカードリーダ3に挿入されたICカードが新カード104−2であることを認識すると、ホスト機102−2は、新カード104−2に新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンドを、ICカードリーダ3に送信する。図7においては、この新プロトコル切替要求コマンドは、「新プロトコル切替要求(カード)」として図示されている。
このとき、ICカードリーダ3は、ホスト機102−2から送られた新プロトコル切替要求コマンドをブロックする。この新プロトコル切替要求コマンドのブロックは、新プロトコル切替要求コマンドをホワイトリスト17aに登録しないことによって行っても良く、また、ブラックリスト17bに新プロトコル切替要求コマンドを登録することで行っても良い。このとき、ICカードリーダ3は、ホスト機102−2から送られた新プロトコル切替要求コマンドをブロックした後、異常応答をホスト機102−2に返してもよく、また、何らの応答もホスト機102−2に返さなくても良い。
ホスト機102−2は、異常応答を受け取ったことにより、又は、ICカードリーダ3から何らの応答も返ってこないことにより、旧プロトコルで継続して通信を行うべきであることを認識する。以後、ホスト機102−2は、旧プロトコルで定義されているICカードコマンドを、ICカードリーダ3に送る。旧カード104−1は、受け取った各ICカードコマンドに対する応答を、ICカードリーダ3を介してホスト機102−2に送信する。
以上のようなICカードリーダ3の動作によれば、システムの不具合の発生を抑制することができる。まず、新プロトコルに対応した動作に切り換えることを指示する新プロトコル切替要求コマンドがブロックされる。これにより、ICカードリーダ3が新プロトコルに規定された通信速度で新カード104−2と通信することが不可能であるにもかかわらず、新カード104−2が新プロトコルに対応する動作に移行することを防ぐことができる。更に、ホスト機102−2は、新プロトコルに対応した動作に切り換えることをICカードリーダ3に指示する新プロトコル切替要求コマンドを発行する動作を行わない。このため、ICカードリーダ3は、新プロトコルに対応した動作に切り換えることをICカードリーダに指示する新プロトコル切替要求コマンドは、ICカードリーダ3に到達しない。よって、ICカードリーダ3が予期しない動作をすることによるシステムの不具合を回避することができる。
なお、上述の実施形態では、ホワイトリスト17aとブラックリスト17bの両方がフィルタリング処理に用いられるが、ホワイトリスト17aとブラックリスト17bの一方のみがフィルタリング処理に用いられても良い。ホワイトリスト17aのみがフィルタリング処理に用いられる場合、図5BのステップS08及びS11は実行されない。即ち、ICカードリーダ3が学習モードに設定されない場合には、直ちにホワイトリスト17aの検索(ステップS09)が行われる。また、この場合には、ホワイトリスト17aには、基本情報読み出しコマンドと、旧プロトコルに定義されたICカードコマンドとが登録される。ホワイトリスト17aへのコマンドの登録は、ICカードリーダ3を学習モードに設定することで行っても良い。
一方、ブラックリスト17bのみがフィルタリング処理に用いられる場合、図5BのステップS07〜S09、S20は行われない。即ち、ICカードリーダ3は、ホスト機102−2からICカードコマンドを受け取った場合、直ちに、ブラックリスト17bの検索(ステップS11)が行われる。この場合、ICカードリーダ3には学習モードは用意されない。
ただし、上述されているようなホワイトリスト17aにコマンドが登録されていない場合にはブラックリスト17bがフィルタリング処理に使用され、ホワイトリスト17aにコマンドが登録されるとホワイトリスト17aがフィルタリング処理に使用される実施形態は、ICカードリーダ3の新情報処理システム101−2への導入を容易にする点で好適である。上述のように、ホワイトリスト17aを用いたフィルタリング処理は、システムの不具合を防ぐためにより有効である。しかしながら、ホスト機102で実際に行われるデータ処理についての情報へのアクセスの困難性から、ICカードリーダ3の導入の初期段階では、ホワイトリスト17aに登録すべきコマンドを正確に把握できない場合がある。このような場合、ホワイトリスト17aにコマンドを登録せず、ブロックしなければならないと把握されているコマンド(例えば、新カード104−2に新プロトコルに対応した動作に切り換えるように要求する新プロトコル切替要求コマンド)をブラックリスト17bに登録することで、ICカードリーダ3の運用を開始できる。
詳細には、ICカードリーダ103−1をソフトウェア的に改修する場合に、ブロックしなければならないと把握されているコマンドを含むブラックリスト17bを含むコマンドフィルタリングテーブル17を記憶媒体14に書き込むことで、ICカードリーダ3の運用を初期的に開始できる。このとき、ホワイトリスト17aは、コマンドフィルタリングテーブル17に含まれなくてもよい。その後、例えば学習モードを利用してホワイトリスト17aにコマンドが登録されることで、ホワイトリスト17aが作成される。ホワイトリスト17aが作成された後では、ブラックリスト17bは使用されない。これにより、システムの不具合を防ぐためにより有効である、ホワイトリスト17aを用いたフィルタリング処理での運用を開始できる。
以上には、本発明の実施形態が具体的に記載されているが、本発明は、上記の実施形態に限定されると解釈してはならない。本発明が、様々な変更と共に実施され得ることは、当業者には自明的であろう。