(57)【特許請求の範囲】
【請求項１】
リーダライタを介してメモリカードと接続される、処理装置と記憶装置を有するＩＣカード利用端末におけるコマンド制御方法であって、
前記メモリカードに送るコマンドを一時的に蓄積するコマンドキューを有し、該メモリカードに送るコマンド及び該メモリカードから送られたコマンドに対する制御を行うミドルウェアを前記記憶装置に格納し、
前記記憶装置に格納されている端末アプリケーションから該メモリカードに送るコマンドが発生したとき、他の端末アプリケーションから該メモリカードに送られたコマンドが実行中であるか該ミドルウェアにより判定し、実行中の場合、該ミドルウェアにより該端末アプリケーションから発生したコマンドを該コマンドキューに蓄積し、
実行中のコマンドが終了したとき、該コマンドキューに蓄積されたコマンドを前記メモリカードに送信し、
前記ミドルウェアはコマンドの送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、
前記記憶装置に格納されている端末アプリケーションから前記メモリカードに送るコマンドが発生したとき、前記ミドルウェアにより該コマンドに割り当てられた識別ＩＤが前記ＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに割り当てられた識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信し、存在しないとき、一意な識別ＩＤを作成し、該識別ＩＤと、送信元と送信先の関係とを前記ＩＤ管理ＤＢに登録し、該識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信することを特徴とするコマンド制御方法。
【請求項２】
リーダライタを介してＩＣカード利用端末と接続される、処理装置と記憶装置を有するメモリカードにおけるコマンド制御方法であって、
前記ＩＣカード利用端末から送られたコマンドに付加された送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、該ＩＣカード利用端末から送られたコマンド及び該ＩＣカード利用端末に送るコマンドに対する制御を行うミドルウェアを前記記憶装置に格納し、
該ＩＣカード利用端末から送られたコマンドを受信したとき、該ミドルウェアにより該コマンドに割り当てられた識別ＩＤが該ＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに付加された識別ＩＤを除去して該コマンドを送信先の前記記憶装置に格納されているカードアプリケーションに対して送信し、存在しないとき、該コマンドに付加された識別ＩＤを該ＩＤ管理ＤＢに蓄積し、該コマンドに付加された識別ＩＤを除去して該コマンドを該コマンドに付された送信先の前記記憶装置に格納されているカードアプリケーションに対して送信することを特徴とするコマンド制御方法。
【請求項３】
リーダライタを介してメモリカードと接続される、処理装置と記憶装置を有するＩＣカード利用端末装置であって、
前記記憶装置に格納されている端末アプリケーションから該メモリカードに送るコマンドが発生したとき、他の端末アプリケーションから該メモリカードに送られたコマンドが実行中であるかを判定し、実行中の場合、該端末アプリケーションから発生したコマンドをコマンドキューに蓄積し、実行中のコマンドが終了したとき、該コマンドキューに蓄積されたコマンドを前記メモリカードに送信する手段を有し、
前記手段は、さらにコマンドの送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、前記記憶装置に格納されている端末アプリケーションから前記メモリカードに送るコマンドが発生したとき、該コマンドに割り当てられた識別ＩＤが前記ＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに割り当てられた識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信し、存在しないとき、一意な識別ＩＤを作成し、該識別ＩＤと、送信元と送信先の関係とを前記ＩＤ管理ＤＢに登録し、該識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信することを特徴とするＩＣカード利用端末装置。
【請求項４】
リーダライタを介してＩＣカード利用端末と接続される、処理装置と記憶装置を有するメモリカードであって、
前記ＩＣカード利用端末から送られたコマンドに付加された送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、該ＩＣカード利用端末から送られたコマンドを受信し、該コマンドに割り当てられた識別ＩＤが該ＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに付加された識別ＩＤを除去して該コマンドを送信先の前記記憶装置に格納されているカードアプリケーションに対して送信し、存在しないとき、該コマンドに付加された識別ＩＤを該ＩＤ管理ＤＢに蓄積し、該コマンドに付加された識別ＩＤを除去して該コマンドを該コマンドに付された送信先の前記記憶装置に格納されているカードアプリケーションに対して送信する手段を有することを特徴とするメモリカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、処理装置と記憶装置を有するメモリカードに記憶される複数のカードアプリケーションの実行方法に係り、特に複数同時起動の際に自分宛ではないコマンドを受け取ってしまい誤動作が起こったり、コマンドの返答先もマルチタスクによりタイミング次第で本来返すべきアプリケーションに返せない可能性が出てくるのを回避して正常に実行できる仕組みを記述したものである。
【０００２】
【従来の技術】
カード上に大容量の記憶装置をもち、さらにカード上での計算処理を可能としたＩＣカードと呼ばれるデバイスが実用化されている。
このＩＣカードは近年ますます性能が向上してカード上に軽量のＯＳを持つことにより、１枚のカードに一つのアプリケーションだけではなく種類の異なる複数のアプリケーションを持てるマルチアプリケーションカードの作成が可能となった。
マルチアプリケーションの実現により、例えば銀行のキャッシュカードアプリケーションや信販会社のクレジットカードアプリケーションを一枚のカードに相乗りさせることが可能となり、ユーザが複数枚のカードを管理するという手間をなくすことができるようになった。
一方で、ＩＣカードはアプリケーションこそ複数持つことは可能となったが、ＰＣ上で現在当然のごとく行われているマルチタスクによる複数同時実行は性能上不具合が出る可能性がある。
従来のＩＣカードマルチアプリケーションの実行方式として、クレジットカードアプリケーションやポイントカードシステムアプリケーションの両方に対してコマンド送信を考えたとき、一方のクレジットアプリケーションのタスク実行中にもう一方のポイントアプリケーションへのコマンド送信要求が来ると実行中のセキュリティステータスを一時的に安全な領域に退避させておき、要求のあったアプリケーションの実行を許可する。
その実行が完了すれば、退避させておいたセキュリティステータスを復帰させて元のアプリケーションを実行状態に戻す。
これにより、一からアプリケーションの再実行とならずに途中段階のセキュリティ認証を終えた状態からの再実行が可能となる特開２００１−３０７０４３号公報記載のマルチアプリケーション実行方式がある。
【０００３】
【発明が解決しようとする課題】
上記のように１枚のメモリカード上に複数のアプリケーションが搭載され、かつ同時に起動されるケースを考える。
メモリカードの性能上、一つのアプリケーションのタスクが終了するまではメモリカード上にある他のアプリケーションの処理を開始することはできない。
メモリカード一つのタスクは数個のコマンドを順番に実行することにより処理されることが知られている。
しかし、複数同時起動のように１つのタスクを実行中に他のカードアプリケーションに送信するコマンドが送られると、メモリカードは現在実行中のタスクに送られたものと誤認しエラーが発生したり、万一エラーとならなくても誤動作することは確実であるという問題がある。
また、カードアプリケーションがＩＣカード利用端末側から送信されたコマンドの処理をしている最中に、ＩＣカード利用端末上のマルチタスクによりＩＣカード利用端末側のアプリケーションが切り替わった場合、メモリカードがそのコマンドの処理を終わりそのコマンドに対する何らかの応答を返す場合、アプリケーションが切り替わってしまっているため、本来返すべきアプリケーションに応答が返らないことになリ、ここでもエラーを発生するという可能性があるという問題がある。
本発明の目的は、上記の問題を解決し、コマンドの送信ミスおよびレスポンスのあて先間違いをなくすことにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するために、本発明は、リーダライタを介してメモリカードと接続される、処理装置と記憶装置を有するＩＣカード利用端末におけるコマンド制御方法であり、
メモリカードに送るコマンドを一時的に蓄積するコマンドキューを有し、メモリカードに送るコマンド及びメモリカードから送られたコマンドに対する制御を行うミドルウェアを記憶装置に格納し、
記憶装置に格納されている端末アプリケーションからメモリカードに送るコマンドが発生したとき、他の端末アプリケーションからメモリカードに送られたコマンドが実行中であるかミドルウェアにより判定し、実行中の場合、ミドルウェアにより端末アプリケーションから発生したコマンドをコマンドキューに蓄積し、
実行中のコマンドが終了したとき、コマンドキューに蓄積されたコマンドをメモリカードに送信する。
さらに、ミドルウェアはコマンドの送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、
記憶装置に格納されている端末アプリケーションからメモリカードに送るコマンドが発生したとき、ミドルウェアにより該コマンドに割り当てられた識別ＩＤがＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに割り当てられた識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信し、存在しないとき、一意な識別ＩＤを作成し、該識別ＩＤと、送信元と送信先の関係とを前記ＩＤ管理ＤＢに登録し、該識別ＩＤをコマンドに付加して該コマンドを該メモリカードに送信する。
また、リーダライタを介してＩＣカード利用端末と接続される、処理装置と記憶装置を有するメモリカードにおけるコマンド制御方法であり、
ＩＣカード利用端末から送られたコマンドに付加された送信元と送信先の関係を示す識別ＩＤを蓄積するＩＤ管理ＤＢを有し、ＩＣカード利用端末から送られたコマンド及びＩＣカード利用端末に送るコマンドに対する制御を行うミドルウェアを記憶装置に格納し、
ＩＣカード利用端末から送られたコマンドを受信したとき、ミドルウェアにより該コマンドに割り当てられた識別ＩＤがＩＤ管理ＤＢに存在するか判定し、存在するとき、該コマンドに付加された識別ＩＤを除去して該コマンドを送信先の記憶装置に格納されているカードアプリケーションに対して送信し、存在しないとき、該コマンドに付加された識別ＩＤをＩＤ管理ＤＢに蓄積し、該コマンドに付加された識別ＩＤを除去して該コマンドを該コマンドに付された送信先の記憶装置に格納されているカードアプリケーションに対して送信する。
【０００５】
【発明の実施の形態】
以下、本発明の実施の形態を詳細に説明する。
図１は、本発明の概略構成を示す図である。
カードアプリケーションの複数同時起動処理は、セキュリティアプリケーションやクレジットアプリケーションなど複数のＩＣカード利用端末側アプリケーションを同時に動作させることが可能であり、更にカードマルチタスクを補助するためのミドルウェアを組み込んだＩＣカード利用端末１と、それに接続されたメモリカードとＩＣカード利用端末間のデータ通信を行うカードリーダライター２と、複数のカードアプリケーションを搭載して、さらにＩＣカード利用端末と同様にマルチタスクを補助するためのミドルウェアを組み込んだ媒体であるメモリカード３からなる。
【０００６】
図２は図１の１で示した本実施形態でのカードアプリケーションを複数同時に呼び出すＩＣカード利用端末の構造を示している。
ＩＣカード利用端末１は処理装置11、記憶装置12、カードとやり取りを行うリーダライタ２やディスプレイなどの外部出力装置１４とのデータ通信を行うユーザＩ/Ｏ部13を有する。
記憶装置12にはカードアプリケーションを利用するアプリケーションが格納されているアプリケーションプログラム格納部121と、本発明でカードアプリケーションの複数同時起動の処理を実現するのに必要なマルチタスク補助ミドルウェア122と、ＯＳとして機能する制御プログラム123が格納され、アプリケーションプログラム格納部121には１以上の端末アプリケーションが格納される。
マルチタスク補助ミドルウェア122には、ＩＣカードに送るコマンドを一時的に蓄積するためのコマンドキュー1222と、識別ＩＤに関連するＩＣカード利用端末アプリケーションとカードアプリケーションを記述したテーブルであるＩＤ管理ＤＢ1221を持つ。
処理装置11は、端末アプリケーション、マルチタスク補助ミドルウェア、制御プログラムにしたがつて処理を行う。
【０００７】
図３では図１に示したメモリカード３の構造を示す。
本実施形態のメモリカード３は、マイクロプロセッサのような処理装置31と、EEPROM、フラッシュメモリなどの記憶装置32と、図１に示したリーダライタ２のような機器との間でデータ、メッセージなどの転送を行うためのインタフェース部33を持つ。
記憶装置32にはセキュリティやクレジット、ポイントサービスといった各種の機能を実現するためのカードアプリケーションを格納するためのアプリケーションプログラム格納部321と、本発明でカードアプリケーションの複数同時起動を実現するためのマルチタスク補助ミドルウェア322と、メモリカードのＯＳとも言うべき制御プログラム323が格納され、アプリケーションプログラム格納部321には１以上のカードアプリケーションが格納される。
処理装置31は、アプリケーションプログラム格納部321に格納されたアプリケーション処理を実行し、これらのアプリケーションにより達成される各種の機能を実現し、また、マルチタスク補助ミドルウェア、制御プログラムにしたがって処理を行う。
アプリケーションプログラム格納部321は記憶装置のメモリ容量の許す限り、複数のアプリケーションを格納することができる。
【０００８】
図４は本発明における実施形態であるカードアプリケーション複数同時起動におけるシステム処理方法のフローチャートの例である。
まず、処理装置により起動され実行中のＩＣカード利用端末1上のアプリケーションＡ1211からメモリカード上のアプリケーションａ3211に対するタスクを構成するコマンドが発生する（ステップ100）。タスクを構成するコマンドのうち、最初のコマンドと最後のコマンドには、それぞれ最初であることを示す情報と最後であることを示す情報が付されている。
次に本実施形態では、メモリカードへのコマンド要求は、処理装置11において全てICカード利用端末側マルチタスク補助ミドルウェア122を用いて処理され、このミドルウェア122のＩＤ管理ＤＢ1221を参照して送られてきたコマンドの送信元と送信先の関係を示す識別ＩＤを検索し、識別ＩＤが既に存在するかどうか判定する（ステップ101）。
存在した場合は、既に割り当てられている識別ＩＤをコマンドに付加し、メモリカード3にカード側マルチタスク補助ミドルウェア322に対するコマンドとして送信する。
【０００９】
存在しない場合は、一意な識別ＩＤを作成し、この識別ＩＤと、送信元と送信先の関係とをＤＢ1221へ新たに登録し、この識別ＩＤをコマンドに付加し、メモリカードにカード側マルチタスク補助ミドルウェア322に対するコマンドとして送信する（ステップ102）。
ＩＣカード利用端末1上の端末アプリケーションＡ1211からのカードアプリケーションａ3211に対する最初のコマンドには送信先が記述されており、送信元はコマンド受取時にICカード利用端末側マルチタスク補助ミドルウェア122により認識されるため、識別ＩＤの送信元と送信先の関係を取得できる。
【００１０】
メモリカード3に送られてきたメモリカードへのコマンド要求は、処理装置において全てメモリカード側マルチタスク補助ミドルウェア322を用いて処理され、このミドルウェア322のＩＤ管理ＤＢ3221を参照して送られてきたコマンドに付された識別ＩＤを検索し、識別ＩＤが既に存在するかどうか判定する（ステップ103）。
存在しなければ、この識別ＩＤをＩＤ管理ＤＢ3221に新たに登録し、最初のコマンドに付された送信先をこの識別ＩＤに対応する送信先として登録する（ステップ104）。
コマンドに付加されてきた識別番号はカードアプリケーションには不要なのでここで除去する（ステップ105）。
除去した後の本来のコマンドを搭載されている複数のカードアプリケーションのうち該当するアプリケーションに対して送信する。
メモリカード内の処理装置31はコマンド送信先のカードアプリケーションードによりコマンドの処理を行う。
【００１１】
この際、ICカード利用端末1のマルチタスクシステムによりコマンドａが実行中であるにもかかわらず、ＩＣカード利用端末1上のアプリケーションＢ1212からメモリカード上のアプリケーションＢ3211に対するコマンドbの送信要求が発生する可能性もある（ステップ106）。
このときICカード利用端末1の処理装置11は前コマンドがまだ実行中であることから、ICカード利用端末側マルチタスク補助ミドルウェア122により、このコマンドの実行を一時保留するためにコマンドキュー1222にコマンドbをプールする（ステップ107）。
コマンドａのメモリカード内での処理が終わると、処理をしたカードアプリケーションによる処理結果をカード側マルチタスク補助ミドルウェア322に対して返信する（ステップ108）。
処理装置31は、カード側マルチタスク補助ミドルウェア322によって管理ＤＢ3221と処理結果を返信したカードアプリケーションを照合し、ICカード利用端末1への返信情報に入力時と同じ識別ＩＤを付加し、ICカード利用端末側マルチタスク補助ミドルウェア122に対する返信情報として処理装置11に送る（ステップ109）。
処理装置11は、ICカード利用端末側マルチタスク補助ミドルウェア122により付属された識別ＩＤから返信先の端末アプリケーションを特定し、返信情報を送る（ステップ110）。
返信まで済んだことが確認されれば、コマンドキュー1222にプールされていたコマンドｂが実行状態に移され、コマンドａと同様の処理が行われる（ステップ111）。
【００１２】
図５では、タスク中に異なるカードアプリケーションへのコマンド要求が起こった場合のコマンドの処理と時間の関係を表したものである。
図では、まずＩＣカード利用端末アプリケーションＡ1211からのコマンドａ1を処理装置11がメモリカードに送信してその返答をもらうまでの時間が矢印で表されている（ステップ500）。
次にコマンドａ1終了後にコマンドａ2が送信され、処理が行われる（ステップ501）。
このａ2処理最中にＩＣカード利用端末アプリケーションＢ1212からコマンドｂ１が送信されると（ステップ502）、コマンドａ2の処理が終わるまでコマンドキュー1222にプールされ、実行は遅延されて、終わり次第処理される（ステップ503）。
コマンドb2が処理されている最中にICカード利用端末アプリケーションＡ1211よりコマンドａ3が送信されてもコマンドキュー1222にプールされ（ステップ504）、コマンドｂ2が処理終わってからコマンドａ3は処理される（ステップ505）。
【００１３】
図６はＩＣカード利用端末アプリケーションＡ1211からコマンドのメモリカード3への送信時に両側のマルチタスク補助ミドルウェア122、および322のフローを描いた図である。
まずＩＣカード利用端末側アプリケーションＡ1211より新規にコマンドを送信する（ステップ600）。
ＩＣカード利用端末側マルチタスク補助ミドルウェア122内のコマンドキュー1222にコマンドが残されているかの判別をする（ステップ601）。
もし残っているならばコマンドキュー1222内のコマンドが優先なので、新規コマンドはコマンドキュー1222の最後尾に回される。
コマンドキュー1222内にコマンドが残ってなければ次に処理が終わっていないコマンドがあるかどうかの判別を行う。
これは、メモリカードからの応答待ちがあるかどうかで判断する（ステップ603）。
コマンドキュー1222内のコマンドがなく、応答待ちもなければこの新規コマンドは処理ができるとしてステップ800に進む。
【００１４】
また、新規のコマンドが発生しなくてもコマンドの応答が終了した時点でコマンドキュー1222にコマンドが残っていればその処理を行わなければいけないので、まず応答待ち処理があるかどうか判別する（ステップ700）。
応答待ちがなければコマンドキュー1222にコマンドが残っているかどうかを調べる（ステップ701）。
コマンドが残っていれば、コマンドキュー1222内の最も古いコマンドを処理可能コマンドとして選択し、ステップ800に飛ぶ。
処理の可能なコマンドが選択されるとＩＣカード利用端末側マルチタスク補助ミドルウェア122によりコマンド内容から送信先と送信元アプリケーションを特定して、識別ＩＤが付与されているかどうかをＩＤ管理ＤＢ1221を用い判定する（ステップ800）。
なければ新たな識別ＩＤをキーとして送信先アプリケーション名と送信元アプリケーション名を登録する（ステップ801）。
登録が済んだか、もともと識別ＩＤを持っているならばその識別ＩＤをコマンドに付加してメモリカード3に送信する（ステップ802）。
メモリカード3の処理装置31は、カード側マルチタスク補助ミドルウェア322により、コマンドに付加されてきた識別ＩＤが新規であるならばＩＤ管理ＤＢ3221に登録する（ステップ803）。
送信先カードアプリケーションにコマンドを送る場合は、識別用ＩＤは必要なくなるのではずしてから送られる（ステップ804）。
【００１５】
図７は、カードアプリケーションでのコマンド処理の終了後から、ＩＣカード利用端末側アプリケーションへの応答までのカード側マルチタスク補助ミドルウェア322とＩＣカード利用端末側マルチタスク補助ミドルウェア122による処理を表した図である。
処理結果を受け取った後、アプリケーション送信時の識別ＩＤを付加する（ステップ900）。
その際に、終了したコマンドがタスクを構成するコマンドの最後のコマンドであればタスク終了であり、その識別ＩＤは使用されなくなるのでＩＤ管理ＤＢ3221からその識別ＩＤを削除する（ステップ901）。
ＩＣカード利用端末１では、ＩＣカード利用端末側マルチタスク補助ミドルウェア122により、返信されてきた識別ＩＤから返信すべきＩＣカード利用端末側アプリケーションを特定する（ステップ902）。
同じくタスク終了ならばこちら側のＩＤ管理ＤＢ1221からも識別ＩＤを削除する（ステップ903）。
最後に処理結果を返すべき端末アプリケーションに送信して終了となる（ステップ904）。
【００１６】
【発明の効果】
以上述べたように、本発明により、ICカード利用端末１上とメモリカード3上にマルチタスク補助ミドルウェアを持たせることで、ICカード利用端末1上のマルチタスクシステムから複数のカードアプリケーションへの起動の要求が同時に来てもそれを制御して不具合無く実行することが可能である。
【図面の簡単な説明】
【図１】本発明が対象とするシステムの基本的な構成を示した図である。
【図２】ＩＣカード利用端末の内部構造を示す図である。
【図３】メモリカードの構造を示す図である。
【図４】ＩＣカード利用端末とメモリカード間の処理のフローチャートを示す図である。
【図５】コマンドの処理と時間軸の関係を表した図である。
【図６】  ICカード利用端末からコマンド送信が行われ、メモリカード内のアプリが受け取るまでに行われる各ミドルウェアに係る処理のフローチャートを示す図である。
【図７】メモリカードからICカード利用端末へ応答結果が返るまでに行われる各ミドルウェアに係る処理のフローチャートを示す図である。
【符号の説明】
１  ＩＣカード利用端末
１１  処理装置
１２  記憶装置
１２１  アプリケーションプログラム格納部
１２１１、１２１２  端末アプリケーション
１２２  マルチタスク補助ミドルウェア
１２２２  コマンドキュー
１２２１  ＩＤ管理ＤＢ
１２３  制御プログラム
１３  ユーザＩ/Ｏ
１４  出力装置
２  リーダライタ
３  メモリカード
３１  処理装置
３２  記憶装置
３２１  アプリケーションプログラム格納部
３２１１、３２１２  カードアプリケーション
３２２  マルチタスク補助ミドルウェア
３２２１  ＩＤ管理ＤＢ
３２３  制御プログラム
３３  インタフェース部
【図１】
0004212296.tif 000002
【図２】
0004212296.tif 000003
【図３】
0004212296.tif 000004
【図４】
0004212296.tif 000005
【図５】
0004212296.tif 000006
【図６】
0004212296.tif 000007
【図７】
0004212296.tif 000008