説明

ICカードシステム、ICカードシステムのリカバリ方法およびサーバ

【課題】シーケンスの途中で処理が中断した場合でも、効率的なリカバリ処理を可能とする。
【解決手段】サーバ10は、端末20と通信する通信部12と、ICカード30の処理シーケンスを定義するスクリプト13と、スクリプト13に基づきAPDUコマンドを生成し通信部12に送信する処理制御部11とを有する。端末20は、サーバ10と通信する通信部22と、APDUコマンドをICカード30に送信しAPDUレスポンスを受信するリーダライタ部24とを有し、処理制御部11が、リカバリ処理が定義されているAPDUコマンドに対応するレスポンスを所定時間内に受信しない場合、該APDUコマンドに対してスクリプト13で定義されたリカバリ処理を行い、リカバリ処理が定義されていないAPDUコマンドに対応するレスポンスを所定時間内に受信しない場合、該APDUコマンドをICカード30に再送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバが端末を介してICカードと通信を行うICカードシステム、ICカードシステムにおけるコマンドシーケンスのリカバリ方法およびこのようなICカードシステムにおけるサーバに関するものである。
【背景技術】
【0002】
ICカード等のセキュアデバイスに対するコマンドシーケンスをスクリプトで定義する技術として、例えば、特許文献1には、1つのICカードに複数のアプリケーションが搭載されているマルチアプリケーションシステムにおいて、サーバとICカードとの間のデータの送受信の際に定義ファイルを参照することにより、単一の通信制御アプリケーションでデータ通信可能な技術が記載されている。また、特許文献2には、各種シーケンス処理の実行に必要なプログラムと、シーケンス処理に用いられるデータとを分離し、シーケンス処理の実行に必要な入力パラメータ情報等を格納した定義ファイルを設け、プログラムを変更することなく定義ファイルの内容を修正するだけでシーケンスを変更可能な技術が記載されている。
【0003】
上述した従来技術のように、コマンドシーケンスをスクリプトで定義することにより、新たなICカードの発行、あるいは、新たなカードアプリケーションへの対応がスクリプトの編集で可能となる。そのため、コマンドシーケンスをCやJava(登録商標)等のプログラムに埋め込む場合と比較し、新たなICカードの発行、あるいは、新たなカードアプリケーションへの対応が容易であるという利点がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第3887263号
【特許文献2】特許第3857190号
【発明の概要】
【発明が解決しようとする課題】
【0005】
ICカードを発行する処理、あるいは、発行済みのICカードにカードアプリケーションを搭載・設定する等の処理においては、複数のコマンドをICカードに対して規定されたシーケンスで実行する必要がある。シーケンスの途中で通信断等により、ICカードからのレスポンスがサーバ側に届かなかった場合、そのコマンドがICカードに対して実行されたのか否かを、サーバは判断することができない。ICカードに対してそのコマンドが未実施の場合は、リカバリ処理において、再度、レスポンスの届かなかったコマンドからシーケンスをリトライすればよい。しかし、ICカードに対してそのコマンドが実施されていた場合、コマンドの種類によっては、そのコマンドを再度実行すると、ICカードが想定と異なる状態に遷移する。例えば、ICカードのコマンドの「WRITE RECORD」は、同一のコマンドを1度実行した場合と2度実行した場合で、ICカードが異なる状態に遷移する。それゆえ、サーバは、このようなコマンドに対しては、適切なリカバリ処理を実行する必要がある。
【0006】
従来のスクリプト技術では、リカバリ処理を定義する方法が規定されていないため、シーケンスの途中で処理が中断した場合は、ICカードを初期化してシーケンスの最初から実行する必要があった。それゆえ、ICカードを発行する処理を最初からやり直したり、搭載済みのアプリケーションを削除して再度アプリケーションを搭載し、設定をやり直したりといった、時間的に非効率なリカバリ処理を行う必要があった。
【0007】
そこで、本発明の目的は、ICカードの処理シーケンスを定義するスクリプトにおいて、処理シーケンスの中断箇所に応じたリカバリ処理を定義することにより、効率的なリカバリ処理が可能なICカードシステム、ICカードシステムのリカバリ方法およびサーバを提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本発明に係るICカードシステムは、サーバが、前記サーバとネットワークにより接続されている端末を介してICカードと通信を行うICカードシステムであって、前記サーバは、前記端末と通信を行う通信部と、前記ICカードの処理シーケンスを定義するスクリプトと、前記スクリプトに基づきAPDUコマンドを生成し、前記通信部に送信する処理制御部と、を有し、前記端末は、前記サーバと通信を行う通信部と、前記APDUコマンドを前記ICカードに送信し、前記APDUコマンドに対応するAPDUレスポンスを前記ICカードから受信するリーダライタ部と、を有し、前記処理制御部が、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行い、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御することを特徴とする。
【0009】
また、上記課題を解決するため、本発明に係るICカードシステムのリカバリ方法は、サーバが、前記サーバとネットワークにより接続されている端末を介してICカードと通信を行うICカードシステムのリカバリ方法であって、前記サーバにより、前記ICカードの処理シーケンスを定義するスクリプトに基づきAPDUコマンドを生成し、前記端末に送信するステップと、前記端末により、前記サーバから受信したAPDUコマンドを前記ICカードに送信し、前記APDUコマンドに対応するAPDUレスポンスを前記ICカードから受信するステップと、前記サーバにより、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行うステップと、前記サーバにより、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御するステップと、を含むことを特徴とする。
【0010】
また、上記課題を解決するため、本発明に係るサーバは、ネットワークにより接続されている端末を介してICカードと通信を行うサーバであって、前記サーバは、前記端末と通信を行う通信部と、前記ICカードの処理シーケンスを定義するスクリプトと、前記スクリプトに基づきAPDUコマンドを生成し、前記通信部に送信する処理制御部と、を有し、前記処理制御部が、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行い、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御することを特徴とする。
【発明の効果】
【0011】
本発明では、ICカードの発行、あるいは、ICカード発行後のアプリケーション搭載・設定等の処理において、シーケンスの途中で処理が中断した場合でも、効率的なリカバリ処理が可能となる。また、本発明では、ICカードの処理シーケンスをスクリプトで定義するため、プログラムコードで記述するよりも、可読性・メンテナンス性が高いという有利な効果をあわせて奏する。
【図面の簡単な説明】
【0012】
【図1】ICカードシステムの全体構成の一例を示す図である
【図2】ICカードシステムの処理のシーケンス図である。
【図3】(a)はコマンドシーケンスの定義の一例を示し、(b)はリカバリ処理の定義の一例を示す図である。
【発明を実施するための形態】
【0013】
図1は本発明のICカードシステムの全体構成の一例を示す図である。ICカードシステム100では、セキュアデバイス管理サーバ(以下、サーバと称する)10は、運用者端末(以下、端末と称する)20を介してICカード30と通信を行う。サーバ10と端末20とは、インターネット、LAN等のネットワーク40を介して接続されている。
【0014】
サーバ10は、処理制御部11と、通信部12と、スクリプト13と、利用者パーソナライズ情報DB14と、を有する。処理制御部11は、処理の順番を制御する。また、処理制御部11は、スクリプト13を解釈し、ICカード30用のAPDU(Application Protocol Data Unit)コマンドを生成する。また、処理制御部11は、利用者パーソナライズ情報DB14から利用者パーソナライズ情報を取得する。その他、処理制御部11は、サーバ10全体の制御を行う。通信部12は、端末20との通信を行う。スクリプト13は、ICカード30用のAPDUコマンドを生成するための雛形である。利用者パーソナライズ情報DB14は、ICカード30用のAPDUコマンドの一部に埋め込まれる利用者ID等の利用者に関連する情報を管理するデータベースである。
【0015】
端末20は、処理制御部21と、通信部22と、GUI部23と、リーダライタ部24と、を有する。処理制御部21は、端末20全体の制御を行う。通信部22は、サーバ10との通信を行う。GUI部23は、運用者からの指示を受信し、運用者に対して処理結果を表示する。リーダライタ部24は、通信部22から受信したAPDUコマンドをICカード30に送信し、ICカード30からAPDUレスポンスを受信する。なお、リーダライタ部24は、ICカード発行機等の装置に組み込まれていてもよい。
【0016】
ICカード30は、マルチアプリケーションシステムのICカードであり、同一の又は異なるサービスプロバイダのサーバからダウンロードしたN個のカードアプリケーションAP1〜APNが格納されている。
【0017】
以下、図2および図3を参照して、ICカードシステム100の処理手順を説明する。図2は、本発明のICカードシステム100の処理手順を示すシーケンス図である。
【0018】
図3(a)は、コマンドシーケンスの定義の一例であり、ICカードの発行処理、あるいは、カードアプリケーションの搭載・設定のためのコマンドシーケンスを定義するスクリプトである。図3(a)において、16進の文字列は、カードに送信されるAPDUコマンドを示す。また、スクリプト中の記号として、「#」はコメント行を意味する。また、「Point n」はシーケンスにおける特定の箇所を意味し、図3(b)に示すリカバリ処理の定義において利用される。また、「Recovery_type」は、処理制御部11が、APDUレスポンスを受信しなかった場合に実施すべきリカバリのタイプを意味する。
【0019】
図3(b)は、リカバリ処理の定義の一例であり、図3(a)に示すコマンドシーケンスの定義のスクリプトにおいて「Recovery_type」で指定されるリカバリのタイプ毎に、リカバリ処理を定義する。16進の文字列は、ICカードに送信されるAPDUコマンドを示す。また、スクリプト中の記号として、「#」はコメント行を意味する。また、「Def」はリカバリ処理の定義の開始を意味し、「Def_end」はリカバリ処理の定義の終了を意味する。また、「Retry from Point n」は、図3(a)に示すコマンドシーケンスの定義のスクリプトにおける「Point n」で示される特定の箇所からシーケンスをリトライすることを意味する。また、「SW」はリカバリ処理を構成する最初のコマンドにおいて、ICカードからの返却値が正常終了(9000h)以外もありうる場合に、その値を記載する。処理制御部11は、ここに記述される値以外の返却値をICカード30から受信した場合、リカバリが正常に実施されていないと判断し、ICカード30に対するコマンド実行を中断し、エラーとして処理する。
【0020】
ステップS101では、運用者が端末20のGUI部23に、AP1搭載のパーソナライズ情報の要求を入力する。パーソナライズ情報は、アプリケーション識別子(AID)およびカード識別子(CID)を含む。GUI部23は、AP1搭載のパーソナライズ情報の要求を処理制御部21に送信する。処理制御部21は、AP1搭載のパーソナライズ情報の要求を通信部22に送信する。
【0021】
ステップS102では、端末20の通信部22は、AP1搭載のパーソナライズ情報の要求をサーバ10の通信部12に送信する。通信部12は、AP1搭載のパーソナライズ情報の要求を処理制御部11に送信する。
【0022】
ステップS103では、処理制御部11は、AIDに関するスクリプトをスクリプト13から取得する。
【0023】
ステップS104では、処理制御部11は、AP1搭載のパーソナライズ情報(AID、CID)を利用者パーソナライズ情報DB14から取得する。
【0024】
ステップS105では、処理制御部11は、取得したスクリプトを解釈し、APDUコマンドを作成する。
【0025】
ステップS106では、処理制御部11は、APDUコマンドを通信部12に送信する。サーバ10の通信部12は、APDUコマンドを端末20の通信部22に送信する。通信部22は、APDUコマンドを処理制御部21に送信する。処理制御部21は、APDUコマンドをリーダライタ部24に送信する。
【0026】
ステップS107では、リーダライタ部24は、APDUコマンドをICカード30に送信する。
【0027】
ステップS108では、ICカード30は、APDUレスポンスをリーダライタ部24に送信する。
【0028】
ステップS109では、リーダライタ部24は、APDUレスポンスを処理制御部21に送信する。処理制御部21は、APDUレスポンスを通信部22に送信する。端末20の通信部22は、APDUレスポンスをサーバ10の通信部12に送信する。通信部12は、APDUレスポンスを処理制御部11に送信する。
【0029】
ステップS110では、処理制御部11は、所定の時間内にAPDUレスポンスを受信したか否かを判定する。
【0030】
ステップS106〜ステップS110をAPDUコマンド数だけ繰り返す。具体的には、図3(a)に示すコマンドシーケンスの定義に記述されているスクリプトを上から順番に実行する。すなわち、はじめに、処理制御部11は、1行目の「SELECT DF1」に相当するAPDUコマンド「00 A4 00 00 … 00 00」を実行する。処理制御部11が、このAPDUコマンドに対するAPDUレスポンスを受信したら、3行目の「CREATE WEF1」に相当するAPDUコマンド「00 33 00 00 … 00 00」を実行する。この動作を、スクリプトに記述されている最後(28行目)の「SET STATUS」に相当するAPDUコマンド「00 50 00 00 … 00 00」まで繰り返し実行する。
【0031】
ステップS111では、処理制御部11は、処理完了通知を通信部12に送信する。サーバ10の通信部12は、処理完了通知を端末20の通信部22に送信する。通信部22は、処理完了通知を処理制御部21に送信する。処理制御部21は、処理完了通知をGUI部23に送信する。
【0032】
ステップS112では、GUI部23は、処理完了通知を運用者に対して表示する。
【0033】
次に、ステップS106〜ステップS110を繰り返している最中に通信断が発生した場合について説明する。すなわち、ステップS110において、処理制御部11が、所定の時間内にAPDUレスポンスを受信しなかったと判定した場合について説明する。
【0034】
第1に、リカバリ処理がスクリプトで定義されているAPDUコマンド(第1のAPDUコマンド)の送信中に、通信断が発生した場合を検討する。この場合、処理制御部21は、第1のAPDUコマンドに対する第1のAPDUレスポンスを所定の時間内に受信しないので、第1のAPDUコマンドに対してスクリプトで定義されているリカバリ処理を行い、スクリプトのリカバリ定義で指定されている箇所からシーケンスをリトライする。
【0035】
例えば、処理制御部11が、図3(a)の9行目の「WRITE RECORD」に相当するAPDUコマンド「00 D2 00 00 … 00 00」に対するAPDUレスポンスを、所定の時間内に受信しなかった場合、図3(a)において、このAPDUコマンドのリカバリタイプが1であることが記載されているので(10行目に「Recovery_type:1」が記載されているので)、図3(b)のリカバリタイプ1の定義を参照する。すなわち、図3(b)の2行目の「Def Recovery_type:1」を参照し、3行目の「DELETE WEF1」に相当するAPDUコマンド「00 22 00 00 … 00 00」を実行する。続けて、5行目の「Retry from Point 1」に従い、図3(a)の5行目の「Point 1」を参照し、6行目の「WRITE RECORD」に相当するAPDUコマンド「00 D2 00 00 … 00 00」からリトライする。
【0036】
この場合、通信断が発生する前に、9行目の「WRITE RECORD」(2回目の「WRITE RECORD」)に相当するAPDUコマンド「00 D2 00 00 … 00 00」を実行したか否かに係わらず、「DELETE WEF1」に相当するAPDUコマンド「00 22 00 00 … 00 00」を実行することにより、WEF1を削除している。それゆえ、改めて、6行目の「WRITE RECORD」(1回目の「WRITE RECORD」)に相当するAPDUコマンド「00 D2 00 00 … 00 00」からリトライするため、上述したような、同一の「WRITE RECORD」に相当するAPDUコマンドを実行したことにより、ICカード30が想定と異なる状態に遷移するといった問題が生じることはない。なお、WEFは作業用基礎ファイル(Working Elementary File)を意味する。
【0037】
その他の例として、処理制御部11が、図3(a)の28行目の「SET STATUS」に相当するAPDUコマンドに対するAPDUレスポンスを所定の時間内に受信しなかった場合、図3(a)において、このAPDUコマンドのリカバリタイプが3であることが記載されているので(29行目に「Recovery_type:3」が記載されているので)、図3(b)のリカバリタイプ3の定義を参照する。すなわち、図3(b)の14行目の「Def Recovery_type:3」を参照し、15行目の「Retry from Point 3」に従い、図3(a)の27行目の「Point 3」を参照する。続けて、28行目の「SET STATUS」に相当するAPDUコマンド「00 50 00 00 … 00 00」を実行する。
【0038】
なお、図3(b)の16行目に「SW = 9000 or 6354」との記載があるため、ICカード30からのAPDUレスポンスが正常終了を表す「9000」ではなく「6354」であっても処理制御部11は正常と判断する。また、処理制御部11が、図3(b)に記載されているAPDUレスポンスを、所定の時間内に受信しなかった場合は、ICカード30に対するコマンド実行を中断し、エラーとして処理する。
【0039】
第2に、リカバリ処理がスクリプトで定義されていないAPDUコマンド(第2のAPDUコマンド)の送信中に、通信断が発生した場合を検討する。この場合、処理制御部21は、第2のAPDUコマンドに対する第2のAPDUレスポンスを所定の時間内に受信しないので、同一の第2のAPDUコマンドからシーケンスをリトライする。
【0040】
例えば、処理制御部11が、図3(a)の3行目の「CREATE WEF1」に相当するAPDUコマンド「00 33 00 00 … 00 00」に対するAPDUレスポンスを、所定の時間内に受信しなかった場合、図3(a)において、このAPDUコマンドにはリカバリタイプが定義されていないため(「Recovery_type:n」との記載がないため)、同一のAPDUコマンドからシーケンスをリトライする。すなわち、3行目の「CREATE WEF1」に相当するAPDUコマンド「00 33 00 00 … 00 00」を再度実行する。
【0041】
上述したように、第1のAPDUコマンドは、2度実行すると、ICカードが想定と異なる状態に遷移するため、処理制御部11が、第1のAPDUコマンドに対する第1のAPDUレスポンスを所定の時間内に受信しない場合、第1のAPDUコマンドに対してスクリプトで定義されたリカバリ処理を行う。一方、第2のAPDUコマンドは、2度実行しても、ICカードは想定した状態に遷移するため、処理制御部11が、第2のAPDUコマンドに対する第2のAPDUレスポンスを所定の時間内に受信しない場合、第2のAPDUコマンドを再度実行する、すなわち、第2のAPDUコマンドからシーケンスをリトライする。
【0042】
以上のように、本発明によれば、ICカードの発行や、ICカード発行後のアプリケーション搭載・設定等の処理において、シーケンスの途中で処理が中断した場合でも、効率的なリカバリ処理が可能なICカードシステムを提供することができる。
【符号の説明】
【0043】
10 サーバ
11 処理制御部
12 通信部
13 スクリプト
14 利用者パーソナライズ情報DB
20 端末
21 処理制御部
22 通信部
23 GUI部
24 リーダライタ部
30 ICカード
40 ネットワーク

【特許請求の範囲】
【請求項1】
サーバが、前記サーバとネットワークにより接続されている端末を介してICカードと通信を行うICカードシステムであって、
前記サーバは、
前記端末と通信を行う通信部と、
前記ICカードの処理シーケンスを定義するスクリプトと、
前記スクリプトに基づきAPDUコマンドを生成し、前記通信部に送信する処理制御部と、を有し、
前記端末は、
前記サーバと通信を行う通信部と、
前記APDUコマンドを前記ICカードに送信し、前記APDUコマンドに対応するAPDUレスポンスを前記ICカードから受信するリーダライタ部と、を有し、
前記処理制御部が、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行い、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御することを特徴とするICカードシステム。
【請求項2】
サーバが、前記サーバとネットワークにより接続されている端末を介してICカードと通信を行うICカードシステムのリカバリ方法であって、
前記サーバにより、前記ICカードの処理シーケンスを定義するスクリプトに基づきAPDUコマンドを生成し、前記端末に送信するステップと、
前記端末により、前記サーバから受信したAPDUコマンドを前記ICカードに送信し、前記APDUコマンドに対応するAPDUレスポンスを前記ICカードから受信するステップと、
前記サーバにより、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行うステップと、
前記サーバにより、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御するステップと、
を含むことを特徴とするICカードシステムのリカバリ方法。
【請求項3】
ネットワークにより接続されている端末を介してICカードと通信を行うサーバであって、
前記サーバは、
前記端末と通信を行う通信部と、
前記ICカードの処理シーケンスを定義するスクリプトと、
前記スクリプトに基づきAPDUコマンドを生成し、前記通信部に送信する処理制御部と、を有し、
前記処理制御部が、リカバリ処理が前記スクリプトで定義されている第1のAPDUコマンドに対応する第1のAPDUレスポンスを所定の時間内に受信しない場合、前記第1のAPDUコマンドに対して前記スクリプトで定義されたリカバリ処理を行い、リカバリ処理が前記スクリプトで定義されていない第2のAPDUコマンドに対応する第2のAPDUレスポンスを所定の時間内に受信しない場合、前記第2のAPDUコマンドを前記ICカードに対して再送するように制御することを特徴とするサーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2013−3628(P2013−3628A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−130945(P2011−130945)
【出願日】平成23年6月13日(2011.6.13)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】