(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、このＣＰＵによって直接実行可能なインストラクションコードからなるプログラムを記憶したＲＯＭと、前記ＣＰＵの作業領域として使用されるＲＡＭと、前記ＣＰＵを介してデータの読出しおよび書き込みが可能な不揮発性メモリと、を備え、外部から与えられたコマンドに基いて、前記ＣＰＵが前記ＲＯＭ内の所定のプログラムを実行し、その結果をレスポンスとして外部へ返送する機能を有する携帯可能情報記録媒体において、
外部から「複数のコマンドを羅列してなるバッチファイル」を書込対象データとする書込コマンドが与えられたときに、前記バッチファイルを前記不揮発性メモリに書き込む処理を実行し、実行結果を前記書込コマンドに対するレスポンスとして外部へ返送する処理と、
外部から所定のバッチ処理実行コマンドが与えられたときに、前記不揮発性メモリに書き込まれた前記バッチファイルに含まれている複数のコマンドを、外部から与えられたコマンドと解釈して順次実行する処理を行い、前記バッチファイル内のすべてのコマンドの処理が完了した時点で、これらのコマンドに対する必要なレスポンスを一括して、前記バッチ処理実行コマンドに対するレスポンスとして外部へ返送する処理と、
を行う機能を有することを特徴とする携帯可能情報記録媒体。
【請求項２】
請求項１に記載の媒体において、
バッチファイル内の各コマンドの実行によって生じるレスポンスを、ＲＡＭ内に一時蓄積しておき、バッチファイル内の全コマンドの実行が終了した後、ＲＡＭ内に蓄積されているレスポンスをバッチ処理実行コマンドに対するレスポンスとして外部へ一括して送出することを特徴とする携帯可能情報記録媒体。
【請求項３】
ＣＰＵと、このＣＰＵによって直接実行可能なインストラクションコードからなるプログラムを記憶したＲＯＭと、前記ＣＰＵの作業領域として使用されるＲＡＭと、前記ＣＰＵを介してデータの読出しおよび書き込みが可能な不揮発性メモリと、を備え、外部から与えられたコマンドに基いて、前記ＣＰＵが前記ＲＯＭ内の所定のプログラムを実行し、その結果をレスポンスとして外部へ返送する機能を有する携帯可能情報記録媒体、をアクセスする方法において、
前記携帯可能情報記録媒体に対して与える複数のコマンドを羅列してなるバッチファイルを用意し、
前記携帯可能情報記録媒体に対して、所定の書込コマンドとともに前記バッチファイルを与え、前記バッチファイルを前記不揮発性メモリ内に書き込み、その結果を前記書込コマンドに対するレスポンスとして外部へ返送させ、
前記携帯可能情報記録媒体に対して、所定のバッチ処理実行コマンドを与えることにより、前記不揮発性メモリ内に書き込まれたバッチファイル内の各コマンドを、外部から与えられたコマンドと解釈して実行させ、前記バッチファイル内のすべてのコマンドの処理が完了した時点で、これらのコマンドに対する必要なレスポンスを一括して、前記バッチ処理実行コマンドに対するレスポンスとして外部へ返送させるようにしたことを特徴とする携帯可能情報記録媒体のアクセス方法。
【請求項４】
請求項３に記載のアクセス方法において、
バッチファイル内の各コマンドの実行によって生じるレスポンスを、ＲＡＭ内に一時蓄積しておき、バッチファイル内の全コマンドの実行が終了した後、ＲＡＭ内に蓄積されているレスポンスをバッチ処理実行コマンドに対するレスポンスとして外部へ一括して送出させることを特徴とする携帯可能情報記録媒体のアクセス方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は携帯可能情報記録媒体およびそのアクセス方法、特に、ＣＰＵを内蔵したＩＣカードに対して利用するのに適した新規なアクセス方法に関する。
【０００２】
【従来の技術】
磁気カードに代わる次世代の携帯可能情報記録媒体として、ＩＣカードが注目を集めている。最近では、半導体集積回路の小型化、低コスト化のための技術進歩により、実社会の種々のシステムにおいてＩＣカードが実用されるに至っている。
【０００３】
特に、ＣＰＵを内蔵したＩＣカードでは、単なる情報記録媒体としての機能だけではなく、情報処理機能が付加されるため、高度なセキュリティを必要とする情報処理システムへの利用が期待されている。現在普及している一般的なＩＣカードは、ＣＰＵと、このＣＰＵによってアクセスされる３種類のメモリ、すなわち、ＲＯＭ，ＲＡＭ，ＥＥＰＲＯＭを有している。ＲＯＭ内には、ＣＰＵによって直接実行可能なインストラクションコードからなるプログラムが記憶されており、ＣＰＵはこのプログラムに基いて、ＩＣカードを統括制御する機能を有する。ＲＡＭは、ＣＰＵがこのような統括制御を行う上での作業領域として使用されるメモリである。一方、ＥＥＰＲＯＭは、ＣＰＵを介してデータの読出しおよび書き込みが可能な不揮発性メモリであり、このＩＣカードに記録すべき本来のデータを格納するために用いられる。
【０００４】
通常、ＥＥＰＲＯＭへのアクセスは、すべてＣＰＵを介して行われ、外部からＥＥＰＲＯＭを直接アクセスすることはできない。このため、ＥＥＰＲＯＭ内に格納される個々のファイルごとに様々なアクセス権を設定することができ、高度なセキュリティを確保することが可能になる。ＩＣカード内のＥＥＰＲＯＭに対して、外部から何らかのアクセスを行いたい場合には、必ずＣＰＵに対して、外部から所定のコマンドを与えるという方法をとることになる。たとえば、ＥＥＰＲＯＭ内の所定のファイルへデータの書き込みを行う場合は、所定の書込コマンドとともに書込対象となるデータをＣＰＵに与え、ＣＰＵによる書込コマンドの実行という形式で書込処理が行われることになる。また、ＥＥＰＲＯＭ内の所定のファイルからデータの読出しを行う場合は、所定の読出コマンドをＣＰＵに与え、ＣＰＵによる読出コマンドの実行という形式で読出処理が行われることになる。外部からＩＣカードに対して所定のコマンドを与えると、このコマンドに対するレスポンスがＩＣカードから外部に対して返送される。たとえば、書込コマンドを与えた場合には、書込処理が支障なく実行されたか否かを示すレスポンスが返送され、読出コマンドを与えた場合には、読出対象となったデータがレスポンスという形で返送されることになる。
【０００５】
セキュリティ確保の上でアクセス権を設定した場合には、特定のコマンドの実行に特定のキーが要求されるようになる。このようなキーが要求されるコマンドを実行させるためには、その前に、キーの照合を行っておく必要がある。このようなキーの照合は、外部からＩＣカードに対して、照合コマンドとともに所定のキーを与えることによって行われる。ＩＣカード内部で、与えられたキーと、ＥＥＰＲＯＭ内に記録されていたキーとが照合され、両者が一致していれば、特定のコマンドの実行が許可される。
【０００６】
【発明が解決しようとする課題】
上述のように、ＣＰＵを内蔵した携帯可能情報記録媒体では、通常、外部から所定のコマンドを送信し、これに対するレスポンスの返送を受ける、という方法でアクセスが行われる。別言すれば、携帯可能情報記録媒体にどのようなアクセスを行わせる場合であっても、コマンド送信／レスポンス返送／コマンド送信／レスポンス返送／…という処理を繰り返し実行する必要がある。このようなコマンド送信およびレスポンス返送処理は、外部装置と携帯可能情報記録媒体との間に形成されたＩ／Ｏラインを介して行われるが、このＩ／Ｏラインを介したデータ転送速度は、媒体内部におけるＣＰＵ・メモリ間のデータ転送速度に比べて非常に遅くなる。このため、媒体内部のＣＰＵの性能に比して、外部から媒体をアクセスする処理には非常に時間がかかることになる。このように、長い時間にわたって、Ｉ／Ｏライン上に大量のデータが流れるということは、セキュリティの観点からも好ましくない。すなわち、外部装置と媒体との間に形成されるＩ／Ｏラインは、外部から物理的にアクセスすることが容易であり、Ｉ／Ｏライン上を流れるデータは、外部から不正に観測される可能性が高く、長時間にわたってデータ転送を行うことは、セキュリティ確保の上から問題になる。また、Ｉ／Ｏラインを介したデータ転送を行う場合、本来転送すべきデータに、所定の伝送プロトコルに従った制御情報（いわゆるヘッダ、フッタ情報）を付加する必要があり、冗長性が高くなるという問題もある。このように、Ｉ／Ｏラインを介したコマンド送信／レスポンス返送という手順による媒体のアクセスは、必ずしも効率的なものにはなっていない。
【０００７】
このような問題に対する解決法として、媒体に対するアクセス内容に応じて、その都度、インストラクションコードからなるプログラムを書き、このプログラムをバイナリデータとしてＥＥＰＲＯＭ内にファイルとして書き込み、媒体内のＣＰＵには、このＥＥＰＲＯＭ内のインストラクションコードを直接実行させるというアクセス方法も提案されている。この方法によれば、Ｉ／Ｏラインを介したデータ転送は、プログラムをバイナリデータとして転送するだけの短時間ですむ。以後は、ＣＰＵはＥＥＰＲＯＭ内のプログラムを実行すればよいので媒体内だけの処理ですみ、非常に高速な処理が可能になる。しかしながら、この方法は、セキュリティの点で大きな問題がある。すなわち、ＣＰＵの制御は、ＲＯＭ内に用意された通常のルーチンの支配を離れ、ＥＥＰＲＯＭ内に転送されたインストラクションコードのルーチンによって完全に支配されることになる。このため、不正利用者が、不正なプログラムをインストラクションコードで記述してこの方法を利用すれば、ＣＰＵはこの不正なプログラムを忠実に実行してしまうことになる。
【０００８】
そこで本発明は、十分なセキュリティを確保しつつ、外部からのアクセスを効率的に行うことができる携帯可能情報記録媒体およびそのアクセス方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
(1)   本発明の第１の態様は、ＣＰＵと、このＣＰＵによって直接実行可能なインストラクションコードからなるプログラムを記憶したＲＯＭと、ＣＰＵの作業領域として使用されるＲＡＭと、ＣＰＵを介してデータの読出しおよび書き込みが可能な不揮発性メモリと、を備え、外部から与えられたコマンドに基いて、ＣＰＵがＲＯＭ内の所定のプログラムを実行し、その結果をレスポンスとして外部へ返送する機能を有する携帯可能情報記録媒体において、
外部から「複数のコマンドを羅列してなるバッチファイル」を書込対象データとする書込コマンドが与えられたときに、このバッチファイルを不揮発性メモリに書き込む処理を実行し、実行結果を書込コマンドに対するレスポンスとして外部へ返送する処理と、
外部から所定のバッチ処理実行コマンドが与えられたときに、不揮発性メモリに書き込まれたバッチファイルに含まれている複数のコマンドを、外部から与えられたコマンドと解釈して順次実行する処理を行い、バッチファイル内のすべてのコマンドの処理が完了した時点で、これらのコマンドに対する必要なレスポンスを一括して、バッチ処理実行コマンドに対するレスポンスとして外部へ返送する処理と、
を行う機能を設けたものである。
【００１０】
(2)   本発明の第２の態様は、上述の第１の態様に係る携帯可能情報記録媒体において、
バッチファイル内の各コマンドの実行によって生じるレスポンスを、ＲＡＭ内に一時蓄積しておき、バッチファイル内の全コマンドの実行が終了した後、ＲＡＭ内に蓄積されているレスポンスをバッチ処理実行コマンドに対するレスポンスとして外部へ一括して送出するようにしたものである。
【００１１】
(3)   本発明の第３の態様は、上述の第１または第２の態様に係る携帯可能情報記録媒体をアクセスする方法において、
携帯可能情報記録媒体に対して与える複数のコマンドを羅列してなるバッチファイルを用意し、
携帯可能情報記録媒体に対して、所定の書込コマンドとともに用意したバッチファイルを与え、このバッチファイルを不揮発性メモリ内に書き込み、その結果を書込コマンドに対するレスポンスとして外部へ返送させ、
携帯可能情報記録媒体に対して、所定のバッチ処理実行コマンドを与えることにより、不揮発性メモリ内に書き込まれたバッチファイル内の各コマンドを、外部から与えられたコマンドと解釈して実行させ、バッチファイル内のすべてのコマンドの処理が完了した時点で、これらのコマンドに対する必要なレスポンスを一括して、バッチ処理実行コマンドに対するレスポンスとして外部へ返送させるようにしたものである。
【００１２】
(4)   本発明の第４の態様は、上述の第３の態様に係る携帯可能情報記録媒体のアクセス方法において、
バッチファイル内の各コマンドの実行によって生じるレスポンスを、ＲＡＭ内に一時蓄積しておき、バッチファイル内の全コマンドの実行が終了した後、ＲＡＭ内に蓄積されているレスポンスをバッチ処理実行コマンドに対するレスポンスとして外部へ一括して送出させるようにしたものである。
【００１３】
【発明の実施の形態】
本発明に係る携帯可能情報記録媒体には、不揮発性メモリ内に書き込まれたデータを、外部から与えられたコマンドと解釈して実行するバッチ処理実行機能が備わっている。したがって、複数のコマンドを羅列してなるバッチファイルを用意し、このバッチファイルを外部から媒体に書込コマンドとともに与えて不揮発性メモリ内に書き込めば、このバッチ処理実行機能によって、バッチファイルを構成するコマンドを、外部から与えられたコマンドと解釈して実行させることが可能になる。すなわち、媒体内のＣＰＵは、同じ媒体内の不揮発性メモリに格納されているバッチファイル内のコマンドを、あたかも外部から与えられたコマンドであるかのように取り扱い、これを実行することになる。
【００１４】
この方法によれば、Ｉ／Ｏラインを介したデータ転送は、バッチファイルを媒体に転送するだけの短時間ですむ。以後、ＣＰＵはＥＥＰＲＯＭ内のコマンドを実行すればよいので媒体内だけの処理ですみ、非常に高速な処理が可能になる。また、バッチファイル内の個々のコマンドについては、所定の伝送プロトコルに従った制御情報（いわゆるヘッダ、フッタ情報）は不要であり、冗長性も低減させることができる。しかも、ＣＰＵが実行するのは、あくまでもコマンドであり、インストラクションコードそのものではない。したがって、Ｉ／Ｏラインを介したコマンド送信／レスポンス返送という手順によるアクセスと同じセキュリティを維持させることができる。
【００１５】
このように本発明によれば、十分なセキュリティを確保しつつ、外部からのアクセスを効率的に行うことができるようになる。
【００１６】
【実施例】
以下、本発明を図示する実施例に基いて説明する。
【００１７】
§１．  ＩＣカードの一般的なアクセス方法
はじめに、現在普及しているＩＣカードに対する一般的なアクセス方法を説明する。図１は、一般的なＩＣカード１０に、外部装置としてのリーダライタ装置２０を接続し、アクセスを行っている状態を示すブロック図である。ＩＣカード１０とリーダライタ装置２０とはＩ／Ｏライン３０によって相互に接続されている。ここで、ＩＣカード１０には、Ｉ／Ｏインタフェース１１、ＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、ＥＥＰＲＯＭ１５が内蔵されている。Ｉ／Ｏインタフェース１１は、Ｉ／Ｏライン３０を介してデータを送受するための入出力回路であり、ＣＰＵ１２はこのＩ／Ｏインタフェース１１を介して、リーダライタ装置２０と交信することになる。ＲＯＭ１３内には、ＣＰＵ１２によって直接実行可能なインストラクションコードからなるプログラムが記憶されており、ＣＰＵ１２はこのプログラムに基いて、ＩＣカード１０を統括制御する機能を有する。ＲＡＭ１４は、ＣＰＵ１２がこのような統括制御を行う上での作業領域として使用されるメモリである。一方、ＥＥＰＲＯＭ１５は、このＩＣカード１０に記録すべき本来のデータを格納するメモリである。
【００１８】
通常、ＩＣカード１０に対しては、外部のリーダライタ装置２０から電源やクロックが供給される。したがって、ＩＣカード１０がリーダライタ装置２０と切り離されると、ＩＣカード１０への電源およびクロックの供給は停止する。しかしながら、ＥＥＰＲＯＭ１５は不揮発性メモリであるため、電源供給が停止した後もその記録内容はそのまま保持される。ただ、ＲＡＭ１４内のデータは、電源供給の停止によりすべて失われる。
【００１９】
ＩＣカード１０内の各メモリ１３，１４，１５へのアクセスは、すべてＣＰＵ１２を介して行われ、外部からこれらメモリを直接アクセスすることはできない。すなわち、リーダライタ装置２０からＣＰＵ１２に対して所定の「コマンド」を与えると、ＣＰＵ１２はこの「コマンド」を解釈実行し、その結果を、リーダライタ装置２０に対して「レスポンス」として返送することになる。たとえば、ＥＥＰＲＯＭ１５内の所定のファイルに書き込みを行う場合には、「書込コマンド」とともに書込対象となるデータをＣＰＵ１２に与え、ＣＰＵ１２による「書込コマンド」の実行という形式で書込処理が行われることになる。逆に、ＥＥＰＲＯＭ１５内の所定のファイルからデータの読出しを行う場合は、所定の「読出コマンド」をＣＰＵ１２に与え、ＣＰＵ１２による「読出コマンド」の実行という形式で読出処理が行われることになる。このように、ＩＣカード１０内において「コマンド」の実行が終了すると、実行した「コマンド」に対する「レスポンス」が外部に対して返送される。たとえば、「書込コマンド」を与えた場合には、書込処理が支障なく実行されたか否かを示す「レスポンス」返送され、「読出コマンド」を与えた場合には、読出対象となったデータがレスポンスという形で返送されることになる。
【００２０】
通常、ＥＥＰＲＯＭ１５内へは、ファイル単位でデータが格納され、個々のファイルごとにそれぞれアクセス権が設定される。この場合、特定のファイルに対して特定の「コマンド」を実行する場合には、所定のキーの入力が要求される。したがって、「書込コマンド」や「読出コマンド」を実行する前に、所定の「照合コマンド」を実行してキー照合を行わなければならない。このため、ＥＥＰＲＯＭ１５内に格納されたデータに対して、高度なセキュリティを確保することが可能になる。
【００２１】
図２は、このような一般的なアクセス方法を説明するブロック図である。ＩＣカード１０に対するアクセスを行う場合、まず、リーダライタ装置２０からＩ／Ｏライン３０を介してＣＰＵ１２へ、送信データ３１を転送する。この送信データ３１は、ＣＰＵ１２に与えるべき本来の「コマンド」の前後に、「ヘッダ」および「フッタ」を付加したものである。この「ヘッダ」および「フッタ」は、Ｉ／Ｏライン３０を介した伝送を行う上での所定の伝送プロトコルに従った制御情報である。こうして「コマンド」が転送されてくると、ＣＰＵ１２はこれを解釈して実行し、「レスポンス」を発生させる。この「レスポンス」は、返送データ３２としてリーダライタ装置２０へと返送される。この返送データ３２は、「レスポンス」の前後に、「ヘッダ」および「フッタ」を付加したものである。
【００２２】
ＣＰＵ１２に「コマンド」を実行させるために、ＲＯＭ１３内には、個々の「コマンド」ごとにプログラムルーチンが用意されている。たとえば、「書込コマンド」、「読出コマンド」、「照合コマンド」のそれぞれに対応して、ＲＯＭ１３内には、「書込処理ルーチン」、「読出処理ルーチン」、「照合処理ルーチン」が用意されている。実際には、この他にもいくつかの「コマンド」が定義されており、定義された「コマンド」には、それぞれ固有のサブルーチンがＲＯＭ１３内に用意されていることになる。このＲＯＭ１３内のサブルーチンは、ＣＰＵ１２が直接実行可能なインストラクションコード、すなわち、いわゆる「機械語」で記述されたプログラムである。ＣＰＵ１２は、Ｉ／Ｏライン３０を介して「コマンド」を受信すると、まず、ＲＯＭ１３内の「共通コマンド処理ルーチン」を実行して受信した「コマンド」を解釈し、その「コマンド」に応じたサブルーチンを選択する。そして、個々の「コマンド」に応じたサブルーチンの先頭のインストラクションコードへのジャンプが起こり、所定の処理が実行される。この処理が完了すると、再び「共通コマンド処理ルーチン」へと戻り、所定の「レスポンス」を返送する処理が行われる。以上が、ＣＰＵ１２に対して１つの「コマンド」が与えられたときの全体の処理の流れである。
【００２３】
このように、ＩＣカードに対する一般的なアクセスは、コマンド送信／レスポンス返送／コマンド送信／レスポンス返送／…という処理を繰り返すことによって行われる。このため、▲１▼アクセスに長時間かかる、▲２▼伝送中のセキュリティが低下する、▲３▼冗長性が高くなる、といった問題が生じることは既に述べたとおりである。すなわち、Ｉ／Ｏライン３０を介しての「コマンド」および「レスポンス」の転送速度は、ＣＰＵ１２の演算処理速度に比べて非常に遅く、▲１▼アクセスに時間がかかる、という問題が生じることになる。また、Ｉ／Ｏライン３０上を流れるデータは、外部から不正に観測される可能性が高く、長時間にわたってデータ転送を行うと、▲２▼伝送中のセキュリティが低下する、という問題が生じることになる。更に、Ｉ／Ｏライン３０を介した伝送には、所定の伝送プロトコルに従った「ヘッダ」および「フッタ」といった制御情報を付加する必要性が出てくるので、▲３▼冗長性が高くなる、といった問題も生じる。このように、Ｉ／Ｏライン３０を介したコマンド送信／レスポンス返送という手順によるＩＣカード１０のアクセスは、必ずしも効率的なものにはなっていない。
【００２４】
§２．  インストラクションコードを用いたアクセス方法
このような問題に対する解決法として、インストラクションコードを用いたアクセス方法も従来から提案されている。この方法を、図３および図４のブロック図を参照して説明しよう。まず、ＩＣカード１０に対するアクセス内容に応じて、その都度、インストラクションコードからなるプログラムを用意する。前述のように、このインストラクションコードは、ＣＰＵ１２が直接実行可能な、いわゆる「機械語」で記述されたプログラムである。もっとも、通常は、高級言語で記述したソースプログラムをコンパイルすることによって、このインストラクションコードからなるプログラムを用意することになる。
【００２５】
続いて、この用意したインストラクションコードからなるプログラムを、バイナリデータとしてＥＥＰＲＯＭ１５内に書き込む処理を行う。図３は、この書込処理を示している。図示の例では、送信データ３１として、「ＷＲＩＴＥ  ＢＩＮＡＲＹ」なる「書込コマンド」をＣＰＵ１２に送信している。ここで、「書込コマンド」は、「書込コマンドコード」と「書込対象となるデータ」とによって構成されており、「書込対象となるデータ」の部分に、用意したインストラクションコードからなるプログラムを入れている。このプログラムは、バイナリデータとして取り扱われるため、結局、図４に示すように、ＥＥＰＲＯＭ１５内の所定のファイル内に、このインストラクションコードからなるプログラムがそのまま書き込まれることになる。
【００２６】
次に、図４に示すように、送信データ３１として、「ＧＯ  ＰＲＯＧ」なる「プログラム実行コマンド」をＣＰＵ１２に送信する。この「プログラム実行コマンド」は、ここで述べるインストラクションコードを用いたアクセス方法を行うために特別に定義されたコマンドであり、ＥＥＰＲＯＭ１５内に書き込まれたインストラクションコード群をそのまま実行すべきことを指示するコマンドである。このようなコマンドを実行させるためには、ＲＯＭ１３内に、この「プログラム実行コマンド」に対応したサブルーチンを用意しておく必要があるが、そのサブルーチンは非常に単純である。すなわち、ＥＥＰＲＯＭ１５内に書き込まれたインストラクションコードの先頭アドレスへのジャンプ命令によって構成しておけばよい。
【００２７】
こうして、「プログラム実行コマンド」が実行されると、ＣＰＵ１２は、ＥＥＰＲＯＭ１５内に書き込まれたインストラクションコードを直接実行することになる。このようなアクセス方法によれば、Ｉ／Ｏライン３０を介したデータ転送は、プログラムをバイナリデータとして転送するだけの短時間ですむ。以後、ＣＰＵ１２はＥＥＰＲＯＭ１５内のプログラムを実行すればよいので、ＩＣカード１０内部の処理だけですみ、非常に高速な処理が可能になり、§１で述べた一般的なアクセス方法に比べて、非常に効率的なアクセスが可能になる。
【００２８】
しかしながら、このアクセス方法は、既に述べたように、セキュリティの点で大きな問題がある。「プログラム実行コマンド」が実行された後は、ＣＰＵ１２の制御は、ＥＥＰＲＯＭ１５内に書き込んだインストラクションコードによって完全に支配されてしまうことになる。このため、不正利用者が、不正なプログラムをインストラクションコードで記述してこの方法を利用すれば、ＣＰＵはこの不正なプログラムを忠実に実行してしまうことになる。すなわち、「コマンド」の形式で与えられた命令をＣＰＵ１２が実行する限りは、ＲＯＭ１３内に用意した正規のセキュリティチェックが機能するが、「インストラクションコード」の形式で与えられた原始的な命令をＣＰＵ１２が実行する場合には、もはやこのようなセキュリティチェックは機能しなくなってしまうのである。
【００２９】
§３．  本発明に係るアクセス方法
以上のように、§１で述べた一般的なアクセス方法にも、§２で述べたインストラクションコードを用いたアクセス方法にも、それぞれ一長一短がある。本発明は、これらの方法の問題点を解決した新規なアクセス方法を提案するものである。以下、この方法を図５および図６のブロック図を参照して説明する。
【００３０】
まず、ＩＣカード１０に対するアクセス内容に応じて、その都度、コマンドの羅列からなるバッチファイルを用意する。すなわち、§１で述べた一般的なアクセス方法において、送信データ３１として送信していた「コマンド」を、いくつか並べることによりバッチファイルを作成するのである。ただし、伝送プロトコルに基いて付加していた「ヘッダ」および「フッタ」は、ここでは必要なく、用意するバッチファイルとしては、「コマンド」の部分だけを羅列したものでよい。
【００３１】
続いて、この用意したバッチファイルを、ＥＥＰＲＯＭ１５内に書き込む処理を行う。図５は、この書込処理を示している。図示の例では、送信データ３１として、「ＷＲＩＴＥ  ＢＩＮＡＲＹ」なる「書込コマンド」をＣＰＵ１２に送信している。ここで、「書込コマンド」は、「書込コマンドコード」と「書込対象となるデータ」とによって構成されており、「書込対象となるデータ」の部分に、用意したバッチファイルを入れている。このバッチファイルは、多数の「コマンド」から構成されているが、ここでは、「コマンド」としてではなく単なるデータとして取り扱われるため、結局、図６に示すように、ＥＥＰＲＯＭ１５内に、このバッチファイルがそのまま書き込まれることになる。
【００３２】
次に、図６に示すように、送信データ３１として、「ＢＡＴＣＨ」なる「バッチ処理実行コマンド」をＣＰＵ１２に送信する。この「バッチ処理実行コマンド」は、本発明に係るアクセス方法を行うために特別に定義されたコマンドであり、ＥＥＰＲＯＭ１５内に書き込まれたバッチファイル内の「コマンド」を、Ｉ／Ｏライン３０を介して外部から与えられた「コマンド」と解釈して実行する処理を行わせるためのコマンドである。このようなコマンドを実行させるためには、ＲＯＭ１３内に、この「バッチ処理実行コマンド」に対応したサブルーチンを用意しておく必要があるが、そのサブルーチンは比較的簡単に追加できる。なぜなら、既に述べたように、ＲＯＭ１３内には、Ｉ／Ｏライン３０を介して外部から与えられた「コマンド」を解釈して実行させる「共通コマンド処理ルーチン」が既に用意されているので、この「共通コマンド処理ルーチン」において、外部から与えられた「コマンド」の代わりに、バッチファイル内の「コマンド」を解釈実行するように変更を加えるようにすれば、「バッチ処理実行コマンド」に対応したルーチンを容易に作成することができる。
【００３３】
具体的には、この「バッチ処理実行コマンド」を実行中には、バッファポインタＢＰによって、ＥＥＰＲＯＭ１５に格納されているバッチファイル内の「コマンド」を指し示すようにすればよい。この基本概念を、図７を参照して説明しよう。§１で述べた一般的なアクセス方法では、Ｉ／Ｏライン３０を介して与えられた「コマンド」は、図７(a) に示すように、ＲＡＭ１４内のバッファに一時的に格納され、バッファポインタＢＰによって、このバッファ内の「コマンド」の先頭位置が指し示される。ＣＰＵ１２は、このバッファポインタＢＰを順次移動させながら、この「コマンド」を解釈実行する。すなわち、与えられた「コマンド」に応じたサブルーチンを実行した後、所定の「コマンド」を生成して返送する処理を行うことになる。これに対し、本発明に係るアクセス方法では、「バッチ処理実行コマンド」が与えられると、図７(b) に示すように、ＥＥＰＲＯＭ１５内のバッチファイルの先頭位置がバッファポインタＢＰによって指し示される。そして、このバッファポインタＢＰを順次移動させながら、この「コマンド」を解釈実行することになる。
【００３４】
このように、バッファポインタＢＰが指し示すメモリ領域は、一方はＲＡＭ１４内のバッファ領域であり、他方はＥＥＰＲＯＭ１５内のバッチファイル格納領域である点において異なるものの、「コマンド」の実質的な解釈実行処理に関しては、§１で述べた一般的なアクセス方法と本発明によるアクセス方法との間に本質的な差はない。
【００３５】
もっとも、「レスポンス」の返送方法に関しては、若干の相違がある。すなわち、Ｉ／Ｏライン３０を介して与えられ、ＲＡＭ１４内のバッファに格納された「コマンド」を実行した場合には、この「コマンド」に対する「レスポンス」が直ちに返送されることになるが、ＥＥＰＲＯＭ１５内のバッチファイルに格納された「コマンド」を実行した場合には、個々の「コマンド」に対する「レスポンス」は、ＲＡＭ１４内に一時的に蓄積され、バッチファイル内のすべての「コマンド」の処理が完了した時点で、ＲＡＭ１４内に蓄積されていた「レスポンス」を一括して返送することになる。したがって、リーダライタ装置２０側から見れば、「ＢＡＴＣＨ」なる「バッチ処理実行コマンド」をＣＰＵ１２に送信すると、この「バッチ処理実行コマンド」に対する「レスポンス」として、バッチファイル内の個々の「コマンド」についての「レスポンス」が一括して得られることになる。
【００３６】
§１で述べた一般的なアクセス方法では、常に、コマンド送信／レスポンス返送という手順の繰り返しにより、ＣＰＵ１２に所定のコマンドを順次実行させていたが、本発明に係るアクセス方法では、まず、複数の「コマンド」を羅列して記述したバッチファイルを用意し、このバッチファイルをＥＥＰＲＯＭ１５内に書き込んだ後、「バッチ処理実行コマンド」をＣＰＵ１２に与えればよい。ＣＰＵ１２は、バッチファイル内の個々の「コマンド」を、Ｉ／Ｏライン３０を介して外部から与えられた「コマンド」と解釈して順次実行するので、一般的なアクセス方法と同様の処理をＣＰＵ１２に実行させることができる。この方法によれば、Ｉ／Ｏライン３０を介したデータ転送は、バッチファイルをバイナリデータとして転送するだけの短時間ですむ。以後、ＣＰＵ１２はＥＥＰＲＯＭ１５内の「コマンド」を実行すればよいので、ＩＣカード１０内部の処理だけですみ、非常に高速な処理が可能になる。また、Ｉ／Ｏライン３０を介したデータ転送時間は比較的短くなるため、Ｉ／Ｏライン３０を介してデータが外部に不正流出する可能性も低減する。更に、バッチファイル内の個々の「コマンド」には、「ヘッダ」および「フッタ」といった伝送プロトコルに応じた制御情報を付加する必要はないため（このバッチファイルをＩ／Ｏライン３０を介して転送するときの「書込コマンド」には、「ヘッダ」および「フッタ」を付加する必要はあるが、バッチファイルを構成する個々の「コマンド」のそれぞれに「ヘッダ」および「フッタ」を付加する必要はない）、冗長性も低下することになる。
【００３７】
また、この方法は、§２で述べたインストラクションコードを用いたアクセス方法とは異なり、セキュリティの問題も生じない。図４（§２の方法の説明図）と図６（§３の方法の説明図）とを比較すると、両者は、「ＣＰＵ１２がＥＥＰＲＯＭ１５内に書き込まれた命令を実行する」という点で共通するが、前者の命令はインストラクションコード、すなわちＣＰＵ１２が直接実行可能な「機械語」レベルの命令であるのに対し、後者の命令はＩ／Ｏライン３０を介して与えられる「コマンド」レベルの命令である点で大きく異なる。すなわち、本発明に係るアクセス方法では、ＣＰＵ１２の実行対象は、あくまでも「コマンド」であり、ＣＰＵ１２が直接実行するインストラクションコードは、ＲＯＭ１３内に用意されたインストラクションコードである。したがって、ＲＯＭ１３内に用意された正規のセキュリティチェックが十分に機能し、インストラクションコードのレベルでの不正アクセスが行われることはない。
【００３８】
§４．  アクセスの具体例
次に、本発明に係るアクセス方法を具体的な例に基いて説明する。ここでは、図８に示すように、ＥＥＰＲＯＭ１５内に存在する６つのファイルに関連したアクセス処理を例にとった説明を行うことにする。これら６つのファイルには、それぞれ固有のファイルＩＤ（この例では、１６進数による２バイトコード）、すなわち、「２Ｆ１０」，「２Ｆ１１」，「２Ｆ１２」，「２Ｆ１３」，「２Ｆ１４」，「２Ｆ１５」が付与されている。ここで、ファイル「２Ｆ１０」は、このＩＣカードの所有者であるユーザに関する何らかのユーザデータを格納したデータファイルであり、他の５つのファイルは、このデータファイル「２Ｆ１０」からユーザデータを読み出すために必要なキーが格納されたキーファイルであるとする。たとえば、第１のキーファイル「２Ｆ１１」には、第１のキー「１１１１」が格納されている。データファイル「２Ｆ１０」からユーザデータを読み出すには、ＣＰＵ１２に対してこのデータファイルを選択する「選択コマンド」を与えた後に「読出コマンド」を与えればよいが、その前に、５つのキーについての照合が完了していなければ、この「読出コマンド」は実行されずに拒絶される。したがって、データファイル「２Ｆ１０」に対するアクセスを行うためには、「照合コマンド」を繰り返し実行し、５つのキーすべてについての照合を行っておく必要がある。
【００３９】
ここでは、まず、§１において述べた一般的なアクセス方法によって、データファイル「２Ｆ１０」内のユーザデータを読み出すための方法を説明しよう。この場合は、図９に示すような１２種類の「コマンド」が必要になる。これら１２種類の「コマンド」は、１つずつ、リーダライタ装置２０からＩ／Ｏライン３０を介してＣＰＵ１２へ送信される。１つの「コマンド」の実行が完了すると、これに対する「レスポンス」がＣＰＵ１２からＩ／Ｏライン３０を介してリーダライタ装置２０へと返送される。リーダライタ装置２０は、この「レスポンス」が返送された後に、次の「コマンド」を送信することになる。こうして、Ｉ／Ｏライン３０を介して、「コマンド」と「レスポンス」の往復転送を１２回繰り返すと、データファイル「２Ｆ１０」内のユーザデータがリーダライタ装置２０側に読み出されることになる。
【００４０】
この図９に示す１２種類の「コマンド」を１ステップずつ簡単に説明しておくと、まず、ステップ１の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１１」なる「選択コマンド」は、第１のキーファイル「２Ｆ１１」を選択するためのコマンドである。ＣＰＵ１２は、このキーファイル「２Ｆ１１」を選択する処理を行った後、正しく選択が行われたことを示す「レスポンス」を返送する。続くステップ２の「ＶＥＲＩＦＹ  １１１１」なる「照合コマンド」は、直前に選択されたキーファイル内のキーと、暗証コード「１１１１」とを比較照合するコマンドである。ＣＰＵ１２は、この照合を実行し、両者が一致しているか否かの結果を「レスポンス」として返送する。また、両者が一致していた場合には、ＲＡＭ１４内にこのキーについての解錠フラグを立てる。続く、ステップ３の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１２」なる「選択コマンド」は、第２のキーファイル「２Ｆ１２」を選択するためのコマンドであり、ステップ４の「ＶＥＲＩＦＹ  ２２２２」なる「照合コマンド」は、直前に選択されたキーファイル内のキーと、暗証コード「２２２２」とを比較照合するコマンドである。以下、同様に、ステップ５〜１０までの「コマンド」により、５種類のすべてのキーについての照合が行われる。
【００４１】
そして、ステップ１１の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１０」なる「選択コマンド」によって、目的とするデータファイル「２Ｆ１０」が選択される。続く、ステップ１２の「ＲＥＡＤ  ＢＩＮＡＲＹ」なる「読出コマンド」が与えられると、ＣＰＵ１２は、ＲＡＭ１４内の解錠フラグを参照して、データファイル「２Ｆ１０」に対して「読出コマンド」を実行するために設定されたアクセス権条件が満たされているか否かを判断する。この時点では、既に第１〜第５のすべてのキーについて照合一致が得られているので、ＣＰＵ１２は、この「読出コマンド」を実行することになる。これにより、「レスポンス」として、データファイル「２Ｆ１０」内のユーザデータがバイナリデータの形でリーダライタ装置２０側へ返送されることになる。
【００４２】
このように、§１で述べた従来の一般的なアクセス方法によって、データファイル「２Ｆ１０」に対する読出処理を実行するには、Ｉ／Ｏライン３０を介して、図９に示すような１２種類の「コマンド」を１つずつ送信し、「レスポンス」の返信を待って次の「コマンド」を送信する、という操作を行わねばならない。このような操作は、ＣＰＵ１２の演算処理速度に比べて非常に遅いことは既に述べたとおりであり、この「コマンド」および「レスポンス」のやりとりは、Ｉ／Ｏライン３０から不正に傍受されやすい。しかも、図９に示した各「コマンド」や、これに対する「レスポンス」を伝送する場合には、所定の伝送プロトコルに従った「ヘッダ」や「フッタ」を、個々の「コマンド」や「レスポンス」ごとに付加する必要があり、冗長性が高くなるという問題もある。
【００４３】
この同じ読出処理を本発明によって行うには、次のようにすればよい。まず、図１０に示すように、ＥＥＰＲＯＭ１５内には、前述した６つのファイルの他に、本発明を実施するための専用のデータファイル「２Ｆ１６」およびキーファイル「２Ｆ１７」を用意しておく。ここで、データファイル「２Ｆ１６」は、バッチファイルを格納するためのファイルである。また、キーファイル「２Ｆ１７」は、このバッチファイルに対して「バッチ処理実行コマンド」を実行するために必要なキーを格納したキーファイルであり、この実施例では、「７７７７」なるキーが予め書き込まれている。なお、キーファイル「２Ｆ１７」は本発明の実施に必ずしも必要なものではないが、セキュリティを高めるためには、このようなキーファイルを設けるのが好ましい。
【００４４】
一方、リーダライタ装置２０側では、図９に示すような１２種類の「コマンド」を羅列してなるバッチファイルを用意する。そして、図１１に示すような６種類の「コマンド」を、１つずつ、リーダライタ装置２０からＩ／Ｏライン３０を介してＣＰＵ１２へ送信すればよい。まず、ステップ１の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１６」なる「選択コマンド」は、バッチファイル格納用のデータファイル「２Ｆ１６」を選択するためのコマンドである。ＣＰＵ１２は、このデータファイル「２Ｆ１６」を選択する処理を行った後、正しく選択が行われたことを示す「レスポンス」を返送する。次のステップ２の「ＷＲＩＴＥ  ＢＩＮＡＲＹ（バッチファイル）」なる「書込コマンド」は、用意したバッチファイルをバイナリデータとして、直前に選択されたデータファイルに書き込む処理を行うコマンドである。この実施例では、データファイル「２Ｆ１６」に対する書込処理については、何らキー照合を必要としていないので、このステップ２の「書込コマンド」の実行により、図９に示す１２種類の「コマンド」を羅列してなるバッチファイルが、データファイル「２Ｆ１６」にそのまま書込まれることになる。
【００４５】
続いて、ステップ３の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１７」なる「選択コマンド」によって、キーファイル「２Ｆ１７」が選択され、ステップ４の「ＶＥＲＩＦＹ  ７７７７」なる「照合コマンド」によって、選択されたキーファイル内のキーと、暗証コード「７７７７」とが比較照合される。ＣＰＵ１２は、この照合を実行し、両者が一致しているか否かの結果を「レスポンス」として返送し、両者が一致していた場合には、ＲＡＭ１４内にこのキーについての解錠フラグを立てる。続く、ステップ５の「ＳＥＬＥＣＴ  ＦＩＬＥ  ２Ｆ１６」なる「選択コマンド」によって、バッチファイルを格納したデータファイル「２Ｆ１６」が再び選択される。そして、最後のステップ６において、「ＢＡＴＣＨ」なる「バッチ処理実行コマンド」がＣＰＵ１２に与えられる。ＣＰＵ１２は、ＲＡＭ１４内の解錠フラグを参照して、キー「７７７７」が既に解錠されていることを確認した上で、「バッチ処理実行コマンド」を実行する。すなわち、バッチファイル内に格納されている図９に示す「コマンド」を、あたかもＩ／Ｏライン３０を介して順次与えられた「コマンド」として実行し、「レスポンス」をＲＡＭ１４内に一時的に蓄積しておく。こうして、図９に示すステップ１２の「ＲＥＡＤ  ＢＩＮＡＲＹ」なる「コマンド」の実行を完了したら、ＲＡＭ１４内に一時的に蓄積しておいた「レスポンス」を、「バッチ処理実行コマンド」の「レスポンス」として返送する。結局、リーダライタ装置２０側から見れば、図１１のステップ６の「ＢＡＴＣＨ」なる「コマンド」の「レスポンス」として、データファイル「２Ｆ１０」内のユーザデータを読み出すことができる。
【００４６】
このように、従来の一般的なアクセス方法では、図９に示すような１２種類の「コマンド」を順次Ｉ／Ｏライン３０を介して転送し、それぞれについて「レスポンス」を待つという操作を行う必要があったのに対し、本発明に係るアクセス方法では、図１１に示す６種類の「コマンド」について、同様の操作を行えばすむ。しかも、図９に示す「コマンド」の数がいくつに増えようとも、図１１に示す「コマンド」の数は常に６ですむ（ステップ２における「ＷＲＩＴＥ  ＢＩＮＡＲＹ」なる「書込コマンド」で書込まれるバッチファイルの容量が増えるだけである）。したがって、よりたくさんのステップからなる一連の「コマンド」群を用いたアクセスを行う場合には、本発明の効果はより顕著になる。また、バッチファイル内のデータは、あくまでも「コマンド」レベルの命令であり、§２で述べた方法で用いた「インストラクションコード」レベルの命令ではないので、セキュリティの面での問題も生じない。たとえば、上述の例では、不正使用者は、「１１１１」，「２２２２」，…といった５つのキーを知り得ない限り、データファイル「２Ｆ１０」内のユーザデータを読み出すことはできない。
【００４７】
最後に、「コマンド」を羅列してバッチファイルを構成する場合のフォーマットの一例を図１２に示しておく。この例では、２バイトからなるコマンド長を示す部分（図に「ＸＸ」と記した部分）に続いて「コマンド」のコードを並べるようにしてあり、最後に、２バイトからなる終端コード「００００」を付加するようにしている。図１１のステップ２における「書込コマンド」中のバッチファイルには、この図１２に示すようなフォーマットで「コマンド」を羅列したバイナリコードが入ることになる。このバッチファイルのフォーマットとしては、この他どのようなものを用いてもよいが、予め所定のフォーマットを定義しておき、ＲＯＭ１３内の「バッチ処理実行コマンド」に対応する処理ルーチンが、この所定のフォーマットに基いて、バッチファイル内の各「コマンド」を解釈できるようにしておく必要がある。
【００４８】
以上、本発明を図示する実施例に基いて説明したが、本発明はこの実施例に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施例では、バッチファイル内の個々の「コマンド」についての「レスポンス」を、ＲＡＭ１４内に一時的に蓄積しておき、最後に一括して返送するようにしているが、必ずしもすべての「レスポンス」を返送する必要はなく、重要性の低い「レスポンス」については返送を省略するようにしてもかまわない。たとえば、図９に示す１２種類の「コマンド」については、ステップ１２の「読出コマンド」に対する「レスポンス」は、読出対象となるユーザデータを含む重要なものであるが、それ以外の「コマンド」についての「レスポンス」は、単に、ファイルの選択や照合が支障なく実行されたことを確認するためのものであるから、ＲＡＭ１４内に一時的に蓄積せずにそのまま捨ててしまってもかまわない。
【００４９】
また、バッチファイル内の一連の「コマンド」を実行中に、何らかのエラー（たとえば、照合の不一致）が発生した場合には、その時点で、「バッチ処理実行コマンド」の実行を中断し、「ＢＡＴＣＨ」なる「コマンド」に対する「レスポンス」として、エラーの発生を示すステータスを返送するようにすればよい。
【００５０】
更に、上述の実施例では、本発明をＩＣカードに適用した例を述べたが、本発明の適用は、ＩＣカードに限定されるものではなく、ＣＰＵを内蔵した携帯可能情報記録媒体に広く及ぶものである。
【００５１】
【発明の効果】
以上のとおり、本発明に係る携帯可能情報記録媒体では、不揮発性メモリ内に書き込まれたデータを、外部から与えられたコマンドと解釈して実行するバッチ処理実行機能を備えているため、複数のコマンドを羅列してなるバッチファイルを用意し、このバッチファイルを外部から媒体に書込コマンドとともに与えて不揮発性メモリ内に書き込めば、このバッチ処理実行機能によって、バッチファイルを構成するコマンドを、外部から与えられたコマンドと解釈して実行させることが可能になる。このため、十分なセキュリティを確保しつつ、外部からのアクセスを効率的に行うことができるようになる。
【図面の簡単な説明】
【図１】一般的なＩＣカードに、外部装置としてのリーダライタ装置を接続し、アクセスを行っている状態を示すブロック図である。
【図２】ＩＣカードに対する従来の一般的なアクセス方法を説明するブロック図である。
【図３】ＩＣカードに対するインストラクションコードを用いたアクセス方法の前段の操作を説明するブロック図である。
【図４】ＩＣカードに対するインストラクションコードを用いたアクセス方法の後段の操作を説明するブロック図である。
【図５】ＩＣカードに対する本発明に係るアクセス方法の前段の操作を説明するブロック図である。
【図６】ＩＣカードに対する本発明に係るアクセス方法の後段の操作を説明するブロック図である。
【図７】一般的なアクセス方法と本発明に係るアクセス方法とにおけるコマンド解釈処理の相違を説明する図である。
【図８】一般的なＩＣカード内のＥＥＰＲＯＭに格納されているファイル群の一例を示す概念図である。
【図９】図８に示すデータファイル「２Ｆ１０」から、ユーザデータを読み出す操作を行うために必要な「コマンド」群を示す図である。
【図１０】本発明を適用するために、図８に示すファイル群に更に別なファイルを付加した状態を示す概念図である。
【図１１】本発明によって、図１０に示すデータファイル「２Ｆ１０」から、ユーザデータを読み出す操作を行うために必要な「コマンド」群を示す図である。
【図１２】本発明に用いるバッチファイルのフォーマットの一例を示す図である。
【符号の説明】
１０…ＩＣカード
１１…Ｉ／Ｏインタフェース
１２…ＣＰＵ
１３…ＲＯＭ
１４…ＲＡＭ
１５…ＥＥＰＲＯＭ
２０…リーダライタ装置
３０…Ｉ／Ｏライン
３１…送信データ
３２…返送データ
【図１】
0003657315.tif 000002
【図２】
0003657315.tif 000003
【図３】
0003657315.tif 000004
【図４】
0003657315.tif 000005
【図５】
0003657315.tif 000006
【図６】
0003657315.tif 000007
【図７】
0003657315.tif 000008
【図８】
0003657315.tif 000009
【図９】
0003657315.tif 000010
【図１０】
0003657315.tif 000011
【図１１】
0003657315.tif 000012
【図１２】
0003657315.tif 000013