(57)【特許請求の範囲】
【請求項１】
データ処理を行うアプリケーションである第１クライアントアプリを読み書き装置からダウンロードして実行するＩＣカードであって、
前記読み書き装置を介して前記第１クライアントアプリをダウンロードする第１ダウンロード管理部と、
ダウンロード済みアプリケーションを格納するアプリ格納部と、
前記第1クライアントアプリのダウンロード中において、前記アプリ格納部が、前記第１クライアントアプリにより利用されるＳＩＯ（Ｓｈａｒｅａｂｌｅ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔ）を提供する第１サーバアプリを格納しているか否かを判定するアドレス計算部と、
前記アプリ格納部が前記第１サーバアプリを格納していないと前記アドレス計算部によって判定された場合に、前記第１クライアントアプリのダウンロード中において、前記読み書き装置がアクセス可能な他のＩＣカードが、前記読み書き装置を介して、参照を許可されている前記第１サーバアプリを有しているか否かを判定する参照先存在判定部と、
前記他のＩＣカードが前記参照を許可されている前記第１サーバアプリを有している場合、前記第１クライアントアプリのダウンロード中において、前記第１サーバアプリを参照することを許可する情報を示す許可コードを発行する許可コード発行部と、
前記第１クライアントアプリのダウンロード完了後、前記許可コードに基づいて、前記読み書き装置を介して、前記第１クライアントアプリを実行するアプリ実行部と、
を備えるＩＣカード。
【請求項２】
請求項１に記載のＩＣカードであって、
前記第１クライアントアプリのダウンロード中、もしくは前記第１クライアントアプリの実行時に、前記他のＩＣカードへ前記読み書き装置を介してアクセスするカード間ＩＦ実行部を更に備え、
前記参照先存在判定部は、前記カード間ＩＦ実行部が前記他のＩＣカードから前記第１サーバアプリの参照許可を示す許可確認情報を受信したか否かに基づいて、前記他のＩＣカードが前記第１サーバアプリを有しているか否かを判定するＩＣカード。
【請求項３】
請求項１に記載のＩＣカードであって、
前記第１サーバアプリのアプリ識別子を含む管理情報を管理する許可コード管理部を、更に備え、
前記アプリ実行部が前記第１クライアントアプリを実行する場合に、前記管理情報に含まれる前記アプリ識別子と前記他のＩＣカードのカード間ＩＦ利用を依頼する旨を意味するデータとを含む情報を、前記読み書き装置からのコマンドに対するレスポンスとして、前記読み書き装置に送信するＩＣカード。
【請求項４】
前記カード間ＩＦ実行部により送受信されるデータのセキュリティを確保するセキュリティ管理部を更に備える請求項２記載のＩＣカード。
【請求項５】
請求項１に記載のＩＣカードであって、
前記許可コード発行部が、前記第１クライアントアプリが前記第１サーバアプリを利用する場合の利用制限に応じた利用制限付き許可コードを発行する場合に、
前記アプリ実行部は、前記許可コードに基づいて、前記第１クライアントアプリからの前記第１サーバアプリへの参照を制限するＩＣカード。
【請求項６】
請求項２に記載のＩＣカードであって、
前記読み書き装置を介して第２クライアントアプリをダウンロードする第２ダウンロード管理部を更に備え、
前記カード間ＩＦ実行部が、前記第２クライアントアプリにより利用されるＳＩＯ（Ｓｈａｒｅａｂｌｅ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔ）を提供する第２サーバアプリを参照できない場合、
前記許可コード発行部は、前記他のＩＣカードが前記第２サーバアプリを有していない場合に前記第２ダウンロード管理部が前記第２クライアントアプリをダウンロードすることを許可する仮許可コードを発行するＩＣカード。
【請求項７】
請求項６に記載のＩＣカードであって、
前記カード間ＩＦ実行部は、前記カード間ＩＦ実行部が前記第２サーバアプリを参照することができる場合に、前記第２サーバアプリと、前記仮許可コードによりダウンロードが許可された前記第２クライアントアプリと、によるデータ通信を行うＩＣカード。
【請求項８】
請求項１に記載のＩＣカードであって、
前記カード間ＩＦ実行部は、前記他のＩＣカードが有する第１サーバアプリの所定の処理による戻り値を、前記他のＩＣカードから前記読み書き装置を介して取得し、
前記戻り値を前記第１クライアントアプリのスタックに積む操作を行うスタック操作部を更に備え、
前記アプリ実行部は、前記スタックに積まれた戻り値を利用して、第１クライアントアプリを処理するＩＣカード。
【請求項９】
請求項１に記載のＩＣカードであって、
前記第１クライアントアプリは、視聴権および視聴コンテンツを含み、
前記第１サーバアプリは、前記第１クライアントアプリから渡された前記視聴権に付随する条件をチェックするＩＣカード。
【請求項１０】
クライアントアプリにより利用されるＳＩＯ（Ｓｈａｒｅａｂｌｅ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔ）を提供するサーバアプリを有する第1のＩＣカードと、前記クライアントアプリを実行する第２のＩＣカードと、のデータのやり取りを制御する読み書き装置であって、
前記第１のＩＣカード及び前記第２のＩＣカードとデータ通信を行う排他制御通信部と、
前記第１のＩＣカード及び前記第２のＩＣカードに送信するコマンドを管理し、前記第１のＩＣカード及び前記第２のＩＣカードからの前記コマンドに対するレスポンスを解析し、前記第２のＩＣカードが前記クライアントアプリをダウンロードするときに前記第２のＩＣカード内に前記サーバアプリが存在しない場合にダウンロードを許可し、前記第２のＩＣカードによる前記クライアントアプリの実行時に各々異なるＩＣカードに搭載された前記サーバアプリと前記クライアントアプリとを連携させるアプリ制御部と、
を備え、
前記アプリ制御部が、前記第２のＩＣカードから前記連携の利用を示す前記カード間ＩＦ利用を希望する旨を含むデータを受信してから、前記カード間ＩＦ利用の完了を希望する旨を含むデータを受信するまでの間において、前記第２のＩＣカードからのレスポンスをコマンドとして、前記排他制御通信部に前記第１のＩＣカードへ送信させ、前記第１のＩＣカードからのレスポンスをコマンドとして、前記排他制御通信部に前記第２のＩＣカードへ送信させる読み書き装置。
【請求項１１】
請求項１０に記載の読み書き装置であって、
前記第１のＩＣカードを識別する第１のカードＩＤ及び前記第１のカードＩＤから一意に定まる第１の所有者の情報と、前記第２のＩＣカードを識別する第２のカードＩＤ及び前記第２のカードＩＤから一意に定まる第２の所有者の情報と、を管理する所有者管理部と、
前記第１の所有者の情報と前記第２の所有者の情報とが一致するとき、前記第２のＩＣカードに、前記クライアントアプリのダウンロードを許可するダウンロード条件判定部と、
を更に備える読み書き装置。
【請求項１２】
請求項１１に記載の読み書き装置であって、
前記所有者管理部により前記ＩＣカードの所有者の正当性を判定するための情報を入力する所有者情報確認入力部を備える読み書き装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアデバイス並びに、セキュアデバイスに接続される外部機器に関するものである。
【背景技術】
【０００２】
現在セキュリティデバイスとしてＩＣカードが着目されている。ユーザの利便性の向上、ＩＣカードによるサービスを提供したい事業者の参入障壁を下げることを目的に、カード発行後にアプリをダウンロードすることが可能なマルチアプリ対応カードの開発が行われている。
【０００３】
また最近では、ＩＣチップに大容量メモリを備えることで、この大容量メモリをＩＣカード拡張メモリ保護領域として利用可能なデバイス（以下、セキュアメモリカード）が提案され、ＩＣカードアプリデータの大容量化ニーズに対応可能となる。セキュアメモリカードは、モバイル機器の大きさに適合できることから、スロットつきのモバイル機器に直接挿入し、モバイル機器を利用したＥＣ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｍｍｅｒｃｅ）サービス利用への展開が期待されている。
【０００４】
ここで、ＩＣカードのハードウェア構成について概観する。
【０００５】
図３０は、ＩＣカードのハードウェアに関する機能ブロック図である。ＩＣカード３００１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３００２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３００３、揮発性メモリ（例：ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３００４、揮発性メモリ（例：ＥＥＰＲＯＭ：Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３００５、Ｉ／Ｏ  ＩＦ３００６を備えている。ＣＰＵ３００２は、演算を行う。ＲＯＭ３００３は書き換えができない読み出し専用のメモリである。ＲＯＭ３００３に格納される内容は、ＩＣカード製造時に決定され、その後変更することはできない。ＲＡＭ３００４は読み書きが可能なメモリである。ＥＥＰＲＯＭ３００５は電源が切断されても内容が保持されるようになっている。Ｉ／Ｏ  ＩＦ３００６は、ＩＣカードと外部とのデータ交換を担当する。ＣＰＵ３００２で実行されるプログラムは、通常「アプリケーション」（以下、アプリと称する。）と呼ばれる。アプリの実行のためのコードは、ＲＯＭ３００３やＥＥＰＲＯＭ３００５に格納される。また図３０に示す以外に、ＩＣカードが暗号操作のため暗号用コプロセッサを備える場合もある。
【０００６】
ＩＣカードに登載されるアプリと外部（リーダ）は、ＩＳＯ／ＩＥＣ７８１６−４で規定されているＡＰＤＵ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）を使ってデータを交換する。ＡＰＤＵは、リーダがＩＣカードに与えるコマンドと、ＩＣカードからリーダに返すレスポンスの２つの構成からなる。
【０００７】
図３１はＡＰＤＵコマンド３１０１を示しており、ヘッダと本体から構成される。本体は、任意の長さで、空白の場合はなくてもよい。ヘッダは、クラス（ＣＬＡ）、命令（ＩＮＳ）とパラメータ１と２（Ｐ１，Ｐ２）で構成されている。
【０００８】
図３２はＡＰＤＵレスポンスコマンド３２０１を示しており、データ部とＳｔａｔｕｓＷｏｒｄ（ＳＷ）から構成される。
【０００９】
ICカードの特徴としてアプリケーションファイアウォールがある。アプリケーションファイアウォールとは、ICカード内に複数のアプリが並存する場合に、他のアプリが明示的にアクセスするためのインタフェースを与えない限り、アプリは他のアプリの関数呼び出しやオブジェクトへのデータアクセスができないことを意味する。
【００１０】
ここでアプリ間のオブジェクト共有方法としてＳｈａｒｅａｂｌｅ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔ（ＳＩＯ）が知られている。（特許文献１参照）
【００１１】
以下、ＳＩＯを提供するアプリをサーバアプリ、ＳＩＯを利用するアプリをクライアントアプリと称する。
【００１２】
例えば、携帯電話に２種類のアプリが搭載されたICカード（チップ）を挿入し、改札機と改札アプリが非接触通信を行って改札を通過し、カード内で改札アプリが表示アプリに結果を渡し、携帯電話が表示アプリと接触通信を行って携帯電話の画面に表示することにより、表示装置を持たないICカードの利用結果を表示するのに有効な方法が提案されている。
【００１３】
この例において、改札アプリがクライアントアプリ、表示アプリがサーバアプリとして機能することになる。
【特許文献１】特表２００３−５２２９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ＩＣカードのようなデバイスが改札の通過や入退出チェックに利用される場合には、処理全体が１秒以下〜数秒程度で完結することが期待される。ICカードのCPU処理能力が一般のPCやモバイル機器に比べて低いため、ダウンロード時にリンクを実施し、アドレス参照先として即値を設定することが多い。Dynamic Link Libraryのように必要に応じてメモリに呼び出して利用するような手法は、リンク処理自体がボトルネックとなりICカードアプリに利用できない。
【００１５】
したがって、サーバアプリが搭載されていない状態でクライアントアプリをダウンロードするとリンクエラーとして失敗するICカードが多い。
【００１６】
そのため、既存技術においてサーバアプリとクライアントアプリは同一カード内に存在する必要がある。
【００１７】
しかし、サーバアプリによっては複数のクライアントアプリから利用されるものもあり、所有するカード全てに同じサーバアプリを搭載することは、ＩＣカードの限られたメモリを有効活用できていない。
【００１８】
本発明はこうした従来の問題点を解決するものであり、クライアントアプリをダウンロードするときに同一カード内にサーバアプリが存在しない場合にもダウンロードを許可し、クライアントアプリの実行時に別のカードに搭載されたサーバアプリと連携する方法（以下、カード間IF利用と称する。）を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本願発明は、データ処理を行うアプリケーションである第１クライアントアプリを読み書き装置からダウンロードして実行するＩＣカードであって、前記読み書き装置を介して前記第１クライアントアプリをダウンロードする第１ダウンロード管理部と、ダウンロード済みアプリケーションを格納するアプリ格納部と、前記第1クライアントアプリのダウンロード中において、前記アプリ格納部が、前記第１クライアントアプリにより利用されるＳＩＯ（Ｓｈａｒｅａｂｌｅ  Ｉｎｔｅｒｆａｃｅ  Ｏｂｊｅｃｔ）を提供する第１サーバアプリを格納しているか否かを判定するアドレス計算部と、前記アプリ格納部が前記第１サーバアプリを格納していないと前記アドレス計算部によって判定された場合に、前記第１クライアントアプリのダウンロード中において、前記読み書き装置がアクセス可能な他のＩＣカードが、前記読み書き装置を介して、参照を許可されている前記第１サーバアプリを有しているか否かを判定する参照先存在判定部と、前記他のＩＣカードが前記参照を許可されている前記第１サーバアプリを有している場合、前記第１クライアントアプリのダウンロード中において、前記第１サーバアプリを参照することを許可する情報を示す許可コードを発行する許可コード発行部と、前記第１クライアントアプリのダウンロード完了後、前記許可コードに基づいて、前記読み書き装置を介して、前記第１クライアントアプリを実行するアプリ実行部と、を備えるＩＣカードである。
【００２０】
これにより、自己のセキュアデバイスにサーバアプリがない場合にも、他のセキュアデバイスのサーバアプリにより、自己のセキュアデバイスのクライアントアプリを実行することが出来るかを確認できる。
【発明の効果】
【００２１】
本発明により、セキュアデバイス内のメモリ領域の削減を図ることが出来るという効果を有する。
【発明を実施するための最良の形態】
【００２２】
本発明は、クライアントアプリをダウンロードするときに同一カード内にサーバアプリが存在しない場合にもダウンロードを許可し、クライアントアプリの実行時に別のカードに搭載されたサーバアプリと連携するセキュアデバイスに関するものである。
【００２３】
実施の形態１は、クライアントアプリをダウンロードするときに同一カード内にサーバアプリが存在しない場合にもダウンロードを許可し、クライアントアプリの実行時に別のカードに搭載されたサーバアプリと連携するセキュアデバイスに関する発明である。
【００２４】
実施の形態２は、連携時にセキュリティを確保するシステムに関する発明である。
【００２５】
実施の形態３は、連携時にセキュアデバイスと、他のセキュアデバイスの所有者の同一性を確認するシステム（その１）に関する発明である。
【００２６】
実施の形態４は、連携時にセキュアデバイスと、他のセキュアデバイスの所有者の同一性を確認するシステム（その２）に関する発明である。
【００２７】
実施の形態５は、サーバアプリが搭載されたセキュアデバイスのライフサイクルに連動したクライアントアプリの利用制御方法に関する発明である。
【００２８】
実施の形態６は、同一カード内にサーバアプリが存在しない場合のクライアントアプリの条件付きダウンロード方法と、条件のチェック方法に関する発明である。
【００２９】
実施の形態７は、他のセキュアデバイスに搭載されたサーバアプリに処理を依頼し、サーバアプリの処理データをクライアントアプリで利用する方法に関する発明である。
【００３０】
以下、本発明の実施形態について図を用いて説明する。なお、本発明はこれら実施形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々なる態様で実
施しうる。
【００３１】
（実施の形態１）
本実施例に記載の発明は、クライアントアプリをダウンロードするときに同一カード内にサーバアプリが存在しない場合にもダウンロードを許可し、クライアントアプリの実行時に別のカードに搭載されたサーバアプリと連携するセキュアデバイスである。
【００３２】
たとえば、携帯電話の画面にクライアントアプリの処理結果を表示する表示アプリをサーバアプリとし、定期券アプリ、プリペイドアプリをクライアントアプリとしたセキュアデバイスに適用する場合が考えられる。
【００３３】
あるいは、視聴権のチェックを行うサーバアプリと、視聴権と視聴コンテンツを格納するクライアントアプリの関係において、クライアントアプリが視聴権をサーバアプリに渡し、サーバアプリによる視聴権に付随する年齢、回数、有効期限、総再生時間などの条件チェックに合格しないと視聴できない例にも適用できる。
【００３４】
本実施の形態について図１から図１１、図２８を用いて説明する。
【００３５】
図１は本実施の形態におけるセキュアデバイスと、他のセキュアデバイスとの連携システムを示した図であり、セキュアデバイス１０１と他のセキュアデバイス１０２と読み書き装置１０３とから構成される。
【００３６】
図２、図４、図５は、それぞれ図１に示す、セキュアデバイス１０１、他のセキュアデバイス１０２、読み書き装置１０３の構成図である。
【００３７】
図２は、上記のように、セキュアデバイス１０１の構成を示したブロック図である。
【００３８】
ダウンロード管理部２０１は、読み書き装置１０３と通信を行い、セキュアデバイス１０１にアプリをダウンロードする場合の動作を管理する。
【００３９】
アプリ格納部２０２は、ダウンロード中のアプリ２０３とダウンロード済みのアプリ２０４とを含む。
【００４０】
図３は、図２のアプリ格納部２０２中で、アプリが占有する領域を示したものである。
【００４１】
ダウンロード中のアプリ３０１（２０３）が確保する領域は、アプリコード用データ領域３０２とアドレス計算用データ領域３０３とアプリデータ領域３０４である。
【００４２】
アプリコード用データ領域３０２にはアプリコード用データ３０５が格納され、アドレス計算用データ領域３０３には、アドレス計算用データ３０６が格納される。
【００４３】
ダウンロード後のアプリ３０７が占有する領域は、アプリコード用データ領域３０２とアプリデータ領域３０４である。アプリコード用データ領域３０２には、アプリコード３０８が格納され、アプリデータ領域３０４には、アプリデータ３０９が格納される。
【００４４】
アドレス計算部２０５は、ダウンロード中のアプリ２０３中のアプリコード用データ３０５とアプリ計算用データ３０６と、ダウンロード済みの他アプリ２０４を利用して、ダウンロード対象のアプリ２０３の「アドレス解決」を行う。
【００４５】
「アドレス解決」とは、関数呼び出しやオブジェクトアクセス時の参照先のアドレスを直接的なデータに更新することをいう。
【００４６】
また、アドレス解決後に  アドレス計算用データ領域３０３は削除され、ダウンロードが完了した後にはアプリコード３０８とアプリデータ３０９とからなるアプリ３０７がダウンロード済みアプリとしてアプリ格納部２０２に格納される。
【００４７】
ダウンロード済みのアプリ３０７は、読み書き装置１０３からのコマンドによって、セキュアデバイス１０１のアプリ実行部２０６により実行される。
【００４８】
例えば、アプリ格納部２０２には、アプリコード３０８としてバイトコードが格納され、アプリデータ３０９としてオブジェクトが格納され、アプリ実行部２０６として仮想マシンが上記バイトコードを解釈し処理を行う技術が広く知られている。
【００４９】
本実施の形態１をはじめ本文中の実施の形態において、このような処理系を用いて説明する。また、仮想マシンが管理するメモリ空間におけるアドレスを１６ビット（２バイト）で表記することにする。
【００５０】
許可コード発行部２０７は、アドレス解決中のアドレス計算部２０５からの依頼を受けて「許可コード」を発行する。「許可コード」については後述する。
【００５１】
このとき参照先存在判定部２１０が、“参照先が他のセキュアデバイス内に存在するか”を確認する。この動作については後述する。
【００５２】
また、カード間ＩＦ実行部２０８は、アドレス解決中の参照先存在判定部２１０からの依頼や、アプリ３０７の実行時にアプリ実行部２０６からの依頼を受けて、他のセキュアデバイス１０２との通信を行う。
【００５３】
図４は、上記のように、他のセキュアデバイス１０２の構成を示したブロック図である。
【００５４】
他のセキュアデバイス１０２には、他のアプリ２０４が明示的にアクセスするためのインタフェースを提供するアプリ（以下、サーバアプリ４０１と称する。一方インタフェースを利用するアプリをクライアントアプリ３０７と称する（図２におけるダウンロード後のアプリ３０７）。）がアプリ格納部４０２に格納され、アプリ実行部４０３により実行される。
【００５５】
図５は、上記のように、読み書き装置１０３の構成を示したブロック図である。
【００５６】
読み書き装置１０３は、セキュアデバイス１０１、他のセキュアデバイス１０２等の複数のセキュアデバイスと通信が可能であり、通信を実施するセキュアデバイス１０１、他のセキュアデバイス１０２を個別に認識する。
【００５７】
読み書き装置１０３は、上記動作を行うために、セキュアデバイス１０１に送信するデータを誤って別のセキュアデバイス１０２に送信すること（あるいはその逆）を防止する排他制御通信部５０１と、セキュアデバイス１０１内のアプリ３０７，他のセキュアデバイス内のサーバアプリ４０１にコマンドを送り、レスポンスを処理するアプリ制御部５０２と、から構成される。
【００５８】
例えば、複数スロットを設け、各スロットに挿入したセキュアデバイスに接触して通信する読み書き装置や、電波の届く範囲内にある複数のセキュアデバイスに対して非接触通信を行う読み書き装置などが知られている。
【００５９】
また、アプリ制御部５０２は、１）すべてが読み書き装置１０３内にある場合と、２）その一部が読み書き装置１０３内に、残りがネットワークを介した別の装置内にある場合と、があるが、いずれの場合も本文中において同様に扱う。
【００６０】
以下、本実施例では上記構成要素を有する、セキュアデバイス１０１、他のセキュアデバイス１０２、読み書き装置１０３とのデータのやり取りについて説明する。
【００６１】
なお、本実施例を含む本願では、データ等のやり取りは、明示しない限り、基本的に制御部（図示なし）が行うこととする。
【００６２】
本実施例の特徴部分を説明する前に、まず、参照先のアプリが同じセキュアデバイス内に存在する場合のアプリのダウンロードについて図７、図２８を用いて説明する。
【００６３】
読み書き装置１０３から送信されたアプリのダウンロード用のコマンドをセキュアデバイス１０１中のダウンロード管理部２０１が受信し、処理結果をレスポンスとして読み書き装置１０３に送信する。基本的に、アプリのダウンロードはこれを繰り返すことによって実行される。
【００６４】
（ＳＴＥＰ１（Ｓ２８０１））
読み書き装置１０３から送信されたダウンロード用のコマンドで指定されたサイズに応じて、セキュアデバイス１０１では、アプリコード用データ領域３０２とアドレス計算用データ領域３０３とアプリデータ領域３０４とを確保し、上記ダウンロード用のコマンドからアプリコード用データ３０５とアドレス計算用データ３０６を抽出してそれぞれの領域に格納する。
【００６５】
（ＳＴＥＰ２（Ｓ２８０２））
セキュアデバイス１０１では、アプリコード用データ３０５とアドレス計算用データ３０６とが抽出された後、ダウンロード管理部２０１からの依頼を受けてアドレス計算部２０５がアドレス解決を実行する。
【００６６】
アドレス計算部２０５はアプリコード用データ３０５の先頭からバイト単位で解釈していく。例えば、図６に示すように  アドレス計算部２０５は、他のアプリ２０４が提供するＩＦ（インターフェイス）を経由して関数を呼び出す命令コードである「ｉｎｖｏｋｅｉｎｔｅｒｆａｃｅ」を読み出したときに「ｉｎｖｏｋｅｉｎｔｅｒｆａｃｅ」に応じた処理をおこなう。
【００６７】
上記「応じた処理」とは、「ｉｎｖｏｋｅｉｎｔｅｒｆａｃｅ」といった種々の命令コードが定義されており、それぞれの処理内容が異なっていることを意味する。
【００６８】
「ｉｎｖｏｋｅｉｎｔｅｒｆａｃｅ」の直後の１バイトは、呼び出す引数を制御するものであり、その後の２バイト“０００２”がアドレス計算用データ３０６のインデックスである。アドレス計算部２０５は、このアドレス計算用データ３０６のインデックスに基づいて該当するアドレス計算用データ３０６を参照する。
【００６９】
図６に示す、参照先“０１８０００００”は、パッケージ、クラストークン、メソッドの識別番号などから構成されており、アドレス計算部２０５はこれらを用いて呼び出す関数の先頭位置を示すアドレスを抽出し、インデックス“０００２”を呼び出し先のアドレス“ａ０００”に変換する。
【００７０】
（ＳＴＥＰ３（Ｓ２８０３））
セキュアデバイス１０１では、アドレス計算部２０５が、アプリコード用データ３０５のすべてを解釈した後、アドレス計算が完了した旨を、ダウンロード管理部２０１に通知する。
【００７１】
（ＳＴＥＰ４（Ｓ２８０４））
セキュアデバイス１０１では、ダウンロード管理部２０１は不要になったアドレス計算用データを格納した領域３０３を開放する。ただし、カードのメモリリソースを鑑みると本ステップは非常に有効であるが、オプションとしてもよい。
【００７２】
（ＳＴＥＰ５（Ｓ２８０５））
ダウンロード管理部２０１は、読み書き装置１０３から「アプリの初期化」を依頼するコマンドを受信したときに、アプリを初期化する。
【００７３】
「アプリの初期化」とは、アプリのインスタンスを生成し、オブジェクトに初期値を設定することである。これらデータはアプリデータ３０９としてアプリデータ領域３０４に格納される。
【００７４】
以後、読み書き装置１０３からのコマンドに対してアプリ実行部２０６によるアプリ３０７、２０４の選択や実行が可能となる。
【００７５】
以上、アドレス解決が成功する場合の処理について説明した。
【００７６】
次に、参照するアプリがカード内に存在しないためにアドレス解決ができない場合について図７を用いて説明する。
【００７７】
図７において前述の（ＳＴＥＰ２（Ｓ２８０２））と同様に他のアプリの関数呼び出しをアドレス解決する場合に、アドレス計算部２０５は参照先がセキュアデバイス１０１内に存在しないことを認識する。
【００７８】
アドレス計算部２０５は参照先存在判定部２１０に“他のセキュアデバイス１０２内に該当する参照先が存在するかどうか”を確認するよう依頼する。
【００７９】
そのときに、アドレス計算部２０５は、参照先存在判定部２１０に対して、参照先アプリの識別子Ａｐｐｌｉｃａｔｉｏｎ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｄａｔａ（ＡＩＤ）やメソッドＩＤや引数の数などを含む存在確認情報を渡す。
【００８０】
カード間ＩＦ実行部２０８は、参照先存在判定部２１０から存在確認情報を渡され、読み書き装置１０３を介して  他のセキュアデバイス１０２に、存在確認情報を転送する。
【００８１】
他のセキュアデバイス１０２は、存在確認情報で示される関数が存在することを確認したのち、使用許可もしくは使用拒絶を意味する許可確認情報をセキュアデバイス１０１に転送する。
【００８２】
セキュアデバイス１０１のカード間ＩＦ実行部２０８が受信した、許可確認情報は参照先存在判定部２１０に渡され、参照先存在判定部２１０により許可確認情報が確認された結果、他のセキュアデバイス１０２のサーバアプリ４０１の使用が許可された場合に許可コードの発行を許可コード発行部２０７に依頼する。また使用が拒絶された場合は、許可コード発行部２０７は、エラーを発行する。
【００８３】
エラーが発行された場合は、ダウンロード管理部２０１を通じて読み書き装置１０３に“参照先がないためダウンロードに失敗した”旨を意味するＳＷが返却される。
【００８４】
許可コードの長さは本来アドレスとして更新する場合と同じ長さであり、例えばアドレスが２バイトで示される場合は許可コードも２バイトとする。
【００８５】
また、許可コードは、アプリの配置が許可されないアドレス領域を示す情報と、許可コード管理部で管理するテーブルのインデックスと、から構成される。
【００８６】
図８はセキュアデバイス１０１内のメモリ空間を示す。
【００８７】
メモリ空間８０１の中でアプリの配置に許可されるメモリ空間８０２が００００h〜ＥＦＦＦhで示されるとき、アプリに許可されない領域（例えばシステム領域）８０３はＦ０００h〜ＦＦＦＦhである。
【００８８】
例えば、許可コードとして、アプリに許可されない領域８０３の範囲内であって、かつ後半の１バイトによってテーブルのインデックス“２”を示すＦＦ０２ｈが付与される。この場合には、許可コード発行後に、許可コード管理部２０９で管理する許可コードテーブル９０１のインデックス“２”の行に参照先アプリ（サーバアプリ４０１）の識別子、メソッドＩＤ、引数の数など、が格納される。
【００８９】
次に、許可コードが付与されたアプリ（クライアントアプリ３０７）の実行動作について図１０、図１１を用いて説明する。
【００９０】
図１０は動作フロー、図１１はセキュアデバイス１０１、他のセキュアデバイス１０２と読み書き装置１０３との間で通信するコマンドおよびレスポンスの一例を示したものである。
【００９１】
以下、図１０の動作フローを用いて、セキュアデバイス１０１、他のセキュアデバイス１０２、読み書き装置１０３の動作について説明する。
【００９２】
図３３は、読み書き装置１０３が扱うデータの構造を記述した定義書３３０１を示すものである。なお、定義書３３０１は、図３３ａに示すデータ列から図３３ｂの左側に示すデータ列へと続き、さらに同図の右側に示すデータ列へと連続するものである。ここでは、標準を定義するための言語であるＡＳＮ．１（Ａｂｓｔｒａｃｔ  Ｓｙｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ）を使用して記述している。さらにC言語においてｔｙｐｅｄｅｆキーワードによるデータ型の定義も可能である。
【００９３】
また本実施の形態における定義書と実装の関係、すなわち定義されたデータ型が、どのようなコマンド／レスポンスに反映されているかを、定義書３３０１内のコメントに追加している。ここではＡＰＤＵの送受信について説明しているが、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）に基づいたデータの送受信でもよい。
【００９４】
このように読み書き装置１０３におけるデータ型の定義、ＩＣカードに登載されるアプリ（クライアントアプリ３０７、サーバアプリ４０１）と読み書き装置１０３とが交換するデータの構造は種々なる態様で実施しうる。以下、実施の形態２から7における同様の説明は省略する。
【００９５】
（実行動作ＳＴＥＰ１（Ｓ１００１））
既にセキュアデバイス１０１内のクライアントアプリ３０７が起動されているものとする（図示は省略）。
【００９６】
読み書き装置１０３から送信されたコマンド１に対応する処理が、セキュアデバイス１０１のアプリ実行部２０６により実行される。
【００９７】
コマンド１は、映像コンテンツ視聴時の許可条件の確認を求めるといった、クライアントアプリが提供する機能ごとに種々の形式が存在しうる。
【００９８】
アプリ実行部２０６が、メソッド呼び出しを意味する命令コードを読み出した後、直後のアドレス情報を取り出す。
【００９９】
アドレス情報により示される領域が、アプリ実行部２０６によって、「アプリに許可された領域」かどうかが判断され、許可された領域であればアドレス先を呼び出す。
【０１００】
許可された領域でなければ、アプリ実行部２０６は、許可コードであることを認識し、許可コードを許可コード管理部２０９に渡し、メソッドで利用するパラメータをカード間ＩＦ実行部２０８に渡す。
【０１０１】
許可コード管理部２０９は、許可コードに含まれるインデックスを読み出し、許可コードテーブル９０１に含まれる参照先アプリのＡＩＤを取り出してカード間ＩＦ実行部２０８に渡す。
【０１０２】
カード間ＩＦ実行部２０８は、参照先アプリのＡＩＤをレスポンス１１０１のデータ部に設定し、カード間ＩＦ利用を依頼する旨を意味するデータをレスポンス１１０１のＳＷに設定し、このレスポンス１１０１を読み書き装置１０３に送信する。
【０１０３】
（実行動作ＳＴＥＰ２（Ｓ１００２））
読み書き装置１０３の排他制御通信部５０１が、セキュアデバイス１０１からのレスポンス１１０１を受信すると、アプリ制御部５０２がレスポンスを解析し、セキュアデバイス１０１がカード間ＩＦ利用を希望している旨を認識する。
【０１０４】
アプリ制御部５０２は、セキュアデバイス１０１から受け取ったレスポンスがカード間ＩＦ利用完了を意味することを認識するまで、セキュアデバイス１０１から受信したデータ（セキュアデバイス１０１からのレスポンス）を加工して、他のセキュアデバイス１０２へのコマンドとして転送し、他のセキュアデバイス１０２から受信したデータ（他のセキュアデバイス１０２からのレスポンス）を加工してセキュアデバイス１０１へのコマンドとして転送する。
【０１０５】
読み書き装置１０３は、セキュアデバイス１０１から、最初にカード間ＩＦ利用を希望している旨を含むレスポンスを受け取った場合は、このセキュアデバイス１０１からのレスポンスを、図１１に示す、選択コマンド１１０２に加工し、他のセキュアデバイス１０２に送信する。
【０１０６】
この選択コマンド１１０２によって、他のセキュアデバイス１０２のアプリ格納部４０２に格納されているサーバアプリ４０１が起動する。
【０１０７】
以下、サーバアプリ４０１がＲｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ（ＲＭＩ）を実装している場合を例に説明する。
【０１０８】
ＲＭＩはＪａｖａＣａｒｄTMで定義されている技術であり、読み書き装置側で動くアプリケーションがカードのリモートオブジェクトのメソッドを呼び出すメカニズムである。
【０１０９】
ＲＭＩを実装したサーバアプリ４０１は、読み書き装置１０３からの選択コマンド１１０２に対して、ＩＮＳとオブジェクトＩＤを含むレスポンス１１０３を、読み書き装置１０３へ返却する。
【０１１０】
（実行動作ＳＴＥＰ３（Ｓ１００３））
読み書き装置１０３は、サーバアプリ４０１からのレスポンス１１０３を、図１１（a）に示す、共有コマンド１１０４中のデータ部に設定し、この共有コマンド１１０４をセキュアデバイス１０１のカード間ＩＦ実行部２０８に送信する。
【０１１１】
ここで、共有コマンド１１０４は、セキュアデバイス１０１がカード間ＩＦ利用を希望している場合における、読み書き装置１０３からセキュアデバイス１０１に送信されるコマンドに特化したものであり、固有のＩＮＳが割り当てられることが望ましい。
【０１１２】
セキュアデバイス１０１のカード間ＩＦ実行部２０８は、サーバアプリ４０１から渡されたＩＮＳとオブジェクトＩＤと、許可コードテーブル９０１に格納されたメソッドＩＤと、セキュアデバイス１０１のアプリ実行部２０６から渡されたパラメータと、を含むリクエストデータを、図１１（b）に示す、レスポンス１１０５のデータ部に設定し、カード間ＩＦ利用を依頼する旨をレスポンス１１０５のＳＷに設定し、このレスポンス１１０５を読み書き装置１０３に返却する。
【０１１３】
（実行動作ＳＴＥＰ４（Ｓ１００４））
読み書き装置１０３は、カード間ＩＦ利用を依頼する旨を解釈し、レスポンス１１０５のデータ部に格納されたデータをもとに作成したＩＮＶＯＫＥコマンド１１０６をサーバアプリ４０１に送信する。
【０１１４】
サーバアプリ４０１は、メソッドＩＤとパラメータを使用して処理を行い、レスポンス１１０７を読み書き装置１０３に返却する。
【０１１５】
（実行動作ＳＴＥＰ５（Ｓ１００５））
読み書き装置１０３は、ＩＮＶＯＫＥコマンドに対するサーバアプリの処理結果（例えば、レスポンス１１０７で図示されるＳＷのみ）を、図１１（b）に示す、共有コマンド１１０８のデータ部に設定し、この共有コマンド１１０８を、セキュアデバイス１０１のカード間ＩＦ実行部２０８に送信する。
【０１１６】
カードＩＦ実行部２０８は、ＩＮＶＯＫＥコマンドに対するサーバアプリの処理結果をアプリ実行部２０６に渡す。
【０１１７】
以後、アプリ実行部２０６はＩＮＶＯＫＥコマンドに対するサーバアプリの処理結果に対する処理を継続し、コマンド１に対するレスポンス１１０９を読み書き装置１０３に送信する。
【０１１８】
コマンド１に対するレスポンス１１０９には、成功を意味する９０００ｈが含まれており、カード間ＩＦ利用を希望している旨を含むＳＷが含まれていない。
【０１１９】
したがって、読み書き装置１０３は、カード間ＩＦ利用完了を意味することを認識し、以後のセキュアデバイス１０１、セキュアデバイス１０２  間の転送を中止する。
【０１２０】
もしくは、セキュアデバイス１０１から明示的にカード間ＩＦ利用完了を意味するＳＷを送信してもよい。
【０１２１】
以上、本実施の形態により、セキュアデバイス内に搭載されたサーバアプリへのアクセスだけでなく、他のセキュアデバイスに搭載されたサーバアプリへのアクセスも可能とした。
【０１２２】
これにより、共通的に利用されるサーバアプリを、所持するセキュアデバイスごとに搭載する必要がなく、メモリリソースの乏しいセキュアデバイスにとって有効である。
【０１２３】
すなわち、２枚目以降のカードにはサーバアプリ分、他のアプリを搭載することができるユーザメリットが発生する。
【０１２４】
さらに、同じセキュアデバイス内に搭載されたサーバアプリを利用する場合と、他のセキュアデバイスに搭載されたサーバアプリを利用する場合のいずれにおいてもクライアントアプリのソースコードは同じとなる。
【０１２５】
これにより、一般的にユーザの利便性が向上し、利用シーンが拡大する場合には開発側の負担も拡大する傾向にあるが、一方で、アプリ開発者にとっては、本方式においてはユーザ利用シーン拡大の影響を受けることなく、従来どおりの開発が可能である。
【０１２６】
また、既に開発済みのアプリのダウンロードや実行にも影響をあたえない（バックワードコンパチビリティが確保されている）。
【０１２７】
そのため、従来のセキュアデバイスから、本実施の形態で提案するセキュアデバイスへの移行が容易となる。
【０１２８】
（実施の形態２）
本実施の形態２は、セキュアデバイスと、他のセキュアデバイスとが連携するときにセキュリティ確保について説明する。
【０１２９】
本実施の形態２について図１２から図１４を用いて説明する。
【０１３０】
図１２は、本実施の形態におけるセキュアデバイス１２０１の構成を示したブロック図である。
【０１３１】
図１２におけるダウンロード管理部２０１、アプリ格納部２０２、ダウンロード中アプリ２０３（ダウンロード後はクライアントアプリ３０７）、ダウンロード済みアプリ２０４、アドレス計算部２０５、アプリ実行部２０６、許可コード発行部２０７、カード間ＩＦ実行部２０８、許可コード管理部２０９、参照先存在判定部２０１は、それぞれ図２におけるものと同様である。
【０１３２】
図２におけるセキュアデバイス１０１の構成要素と同一のものは、同一の番号を付してある。
【０１３３】
実施の形態１で説明した図2におけるセキュアデバイス１０１と、本実施の形態で説明する図１２におけるセキュアデバイス１２０１と、の差異部分である、セキュリティ管理部１２０２を中心に、以下、詳述する。
【０１３４】
セキュリティ管理部１２０２は、本実施の形態１で述べた許可コードを発行する段階や、アプリ実行中に他のセキュアデバイスを参照する段階での「セキュリティを確保」する。
【０１３５】
ここで、「セキュリティを確保」とは、自身（セキュアデバイス）が通信相手（他のセキュアデバイス）を認証する外部認証、通信相手が自身を認証する内部認証（以下、外部認証と内部認証を合わせて相互認証と称する。）、通信するデータの秘匿、改ざん検知等を実施することであり、実現のために暗号技術が用いられる。
【０１３６】
本実施の形態では、“サーバアプリは、このサーバアプリを利用するための事前登録がされていない不特定多数のクライアントアプリからも利用される可能性がある。”ことを前提にして、上記「セキュリティの確保」について、公開鍵暗号技術を用いて説明する。
【０１３７】
公開鍵暗号技術は、一般的に処理速度の点で共通鍵暗号技術に劣る。
【０１３８】
したがって、公開鍵暗号技術を利用して外部認証や内部認証と、セッション鍵（もしくはセッション鍵の種）の共有と、を行い、セッション鍵を使った共通鍵暗号技術により通信データの暗復号や改ざん検知が行われる。
【０１３９】
本実施の形態に、上記公開鍵、セッション鍵暗号化技術を適用すると、以下の３つの「セキュリティの確保」の方法が考えられる。
【０１４０】
方法１：許可コードを発行する段階で外部認証、内部認証を実施して、セッション鍵を共有し、アプリ実行中に他のセキュアデバイスを参照する際、セッション鍵を利用する。
【０１４１】
方法２：許可コードを発行する段階で外部認証、内部認証を実施して、セッション鍵の種を共有し、アプリ実行中にセキュアデバイス、他のセキュアデバイスが互いに同じアルゴリズムでセッション鍵の種からセッション鍵を作成し、セッション鍵を利用する。
【０１４２】
方法３：許可コードを発行する段階も、アプリ実行中に他のセキュアデバイスを参照する段階も、外部認証、内部認証を実施し、セッション鍵を共有する。
【０１４３】
処理をするタイミングや、通信するデータに若干の差があるものの、基本的な考え方はいずれも同じである。
【０１４４】
したがって、本実施の形態では、上記３つの方法の中で、例として、方法１について説明する。
【０１４５】
図１３は、本実施の形態における他のセキュアデバイス１３０１の構成を示したブロック図である。
【０１４６】
図１３におけるアプリ実行部２０６、アプリ格納部２０２、サーバアプリ４０１は、それぞれ図４におけるものと同様である。
【０１４７】
図４における他のセキュアデバイス１０２と異なる構成は、カード間IF実行部１３０２と、セキュリティ管理部１３０３である。
【０１４８】
カード間ＩＦ実行部１３０２は、セキュアデバイス１３０１が許可コードを発行する段階や、アプリ実行中に他のセキュアデバイスを参照する段階の通信を実行する。
【０１４９】
セキュリティ管理部１３０３は、セキュリティ管理部１２０２と同様の機能を有し、セキュリティを確保する。
【０１５０】
以下、上記構成を有する、セキュアデバイス１２０１と他のセキュアデバイス１３０１との動作について説明する。
【０１５１】
最初に、許可コードを発行する段階について説明する。
【０１５２】
実施の形態１で述べた（ＳＴＥＰ２）と同様に他のアプリの関数呼び出しをアドレス解決する場合に、セキュアデバイス１２０１のアドレス計算部２０５は、参照先がカード内に存在しないことを認識する。
【０１５３】
次に、アドレス計算部２０５は参照先存在判定部２１０に“他のセキュアデバイス１０２内に該当する参照先が存在するかどうか”を確認するよう依頼する。
【０１５４】
以下の動作フローを図２９に示す。
【０１５５】
（セキュリティ確保ステップ１（Ｓ２９０１））
セキュアデバイス１２０１のカード間ＩＦ実行部２０８は、参照先存在判定部２１０からの依頼を受けて、セキュリティ管理部１２０２が有するセキュアデバイス１２０１のカード公開鍵証明書Aと、セキュリティ管理部１２０２が生成した乱数aと、を取得する。
【０１５６】
セキュアデバイス１２０１のカード間ＩＦ実行部２０８は、カード間ＩＦ実行部１３０２にカード公開鍵証明書Aと乱数aとを、他のセキュアデバイス１３０１に対して送信する。
【０１５７】
（セキュリティ確保ステップ２（Ｓ２９０２））
他のセキュアデバイス１３０１のカード間ＩＦ実行部１３０２は、セキュリティ管理部１３０３にカード公開鍵証明書Aと、乱数aと、を渡し、セキュリティ管理部１３０３において証明書検証を実施し、セキュリティデバイス１２０１のカードＩＤと、カード公開鍵Aと、を取得する。
【０１５８】
次に、他のセキュアデバイス１３０１のセキュリティ管理部１３０３は、乱数bを生成し、乱数aをカード秘密鍵Bで暗号化する。
【０１５９】
続いて乱数bと、暗号化された乱数aと、セキュアデバイス１３０１のカード公開鍵証明書Bと、をカード間ＩＦ実行部１３０２に渡す。
【０１６０】
他のセキュアデバイス１３０１のカード間ＩＦ実行部１３０２は、乱数bと、暗号化された乱数aと、セキュアデバイス１３０１のカード公開鍵証明書Bと、をセキュアデバイス１２０１のカード間ＩＦ実行部２０８に送信する。
【０１６１】
（セキュリティ確保ステップ３（Ｓ２９０３））
セキュアデバイス１２０１のカード間ＩＦ実行部２０８は、乱数bと、暗号化された乱数aと、セキュアデバイス１３０１のカード公開鍵証明書Bと、をセキュリティ管理部１２０２に渡し、セキュリティ管理部１２０２において証明書検証を実施し、他のセキュアデバイスのカードＩＤと、カード公開鍵Bと、を取得する。
【０１６２】
次に、セキュリティ管理部１２０２は、暗号化された乱数aをカード公開鍵Bで復号して、生成した乱数aと一致するかを確かめる（外部認証が完了）。
【０１６３】
続いて、セキュリティ管理部１２０２は、乱数bをカード秘密鍵Aで暗号化し、カード間ＩＦ実行部２０８に渡す。
【０１６４】
カード間ＩＦ実行部２０８は、他のセキュアデバイス１３０１のカード間ＩＦ実行部１３０２に暗号化された乱数bを送信する。
【０１６５】
（セキュリティ確保ステップ４（Ｓ２９０４））
他のセキュアデバイス１３０１のカード間ＩＦ実行部１３０２は、暗号化された乱数bをセキュリティ管理部１３０３に渡し、セキュリティ管理部１３０３は、暗号化された乱数bを、カード秘密鍵Bで復号して、生成した乱数bと一致するかを確かめる（内部認証が完了）。
【０１６６】
（セキュリティ確保ステップ５（Ｓ２９０５））
次に、他のセキュアデバイス１３０１のセキュリティ管理部１３０３は、セッション鍵を作成し、セッション鍵をカード公開鍵Aで暗号化し、暗号化されたセッション鍵をカード間ＩＦ実行部１３０２に渡す。
【０１６７】
カード間ＩＦ実行部１３０２は、暗号化されたセッション鍵を、セキュアデバイス１２０１のカード間ＩＦ実行部２０８に送信する。
【０１６８】
カード間ＩＦ実行部２０８は、セキュリティ管理部１２０２に対して、暗号化されたセッション鍵を渡し、セキュリティ管理部１２０２は、暗号化されたセッション鍵をカード秘密鍵Aで復号化し、セッション鍵を取得する（セッション鍵の共有が完了）。
【０１６９】
この段階で、上記ステップ中に交換や生成によって新たに保持したデータのうち、セキュリティ管理部１２０２はセッション鍵を、セキュリティ管理部１３０３はセキュアデバイス１２０１のカードＩＤとセッション鍵を、少なくとも保持しておく必要がある、
【０１７０】
上記セキュリティ確保ステップ５が完了した後、セキュアデバイス１２０１のカード間ＩＦ実行部２０８には、参照先存在判定部２１０から参照先アプリの識別子やメソッドＩＤや引数の数などを含む存在確認情報が渡され、これらの存在確認情報は、カード間IF実行部２０８が読み書き装置１０３を介して、他のセキュアデバイス１３０１に転送する。
【０１７１】
このとき、セキュアデバイス１２０１のセキュリティ管理部１２０２においてセッション鍵を用いた送信データの暗号化や改ざん検知用データの付与が実施される。
【０１７２】
他のセキュアデバイス１３０１は、存在確認情報で示される関数が存在することを確認したのち、使用許可を意味する情報をセキュアデバイス１２０１に転送する。
【０１７３】
この場合も、他のセキュアデバイス１３０１のセキュリティ管理部１３０３においてセッション鍵を用いた送信データの暗号化や改ざん検知用データの付与が実施される。
【０１７４】
セキュアデバイス１２０１のカード間ＩＦ実行部２０８が受信した情報は、セキュリティ管理部１２０２においてセッション鍵を用いた復号化や改ざんチェックが実施された後に参照先存在判定部２１０に渡される。
【０１７５】
参照先存在判定部２１０は、使用が許可された場合に許可コードの発行を許可コード発行部２０７に依頼する。
【０１７６】
また、使用が拒絶された場合にエラーを発行し、ダウンロード管理部２０１を通じて読み書き装置１０３に“参照先がないためダウンロードに失敗した”旨を意味するＳＷが返却される。
【０１７７】
次に、許可コードが付与されたクライアントアプリの実行について説明する。基本的に実施の形態１と同様であり、差分は以下のとおりとなる。
【０１７８】
第一に、セキュアデバイス１２０１、他のセキュアデバイス１３０１からのレスポンスはセキュリティ管理部１２０２、１３０３によって管理されるセッション鍵を用いて暗号化される。
【０１７９】
第二に、セキュアデバイス１２０１、他のセキュアデバイス１３０１からのレスポンスは暗号化されているため、読み書き装置１０３がデータを解釈し、必要なデータを抽出して、コマンドを作成することはできない。
【０１８０】
したがって読み書き装置１０３は、レスポンスのデータ部から必要なデータを抽出し、それをコマンドに組み込んで、セキュアデバイス１２０１、他のセキュアデバイス１３０１に送信する必要がある。
【０１８１】
次に、セキュアデバイス１２０１、他のセキュアデバイス１３０１、読み書き装置１０３によるクライアントアプリ実行中の動作フローについて図１０を用いて説明する。
【０１８２】
以下の説明では、図１０におけるセキュアデバイス１０１をセキュアデバイス１２０１に、他のセキュアデバイス１０２を他のセキュアデバイス１３０１としてそのまま適用するものとする。
【０１８３】
また、前提として、既にセキュアデバイス１２０１内のクライアントアプリ３０７が起動されているものとする。
【０１８４】
（実行動作ＳＴＥＰ１（Ｓ１００１））
読み書き装置１０３から送信されたコマンド１に対応する処理が、セキュアデバイス１２０１のアプリ実行部２０６により実行される。
【０１８５】
アプリ実行部２０６が、メソッド呼び出しを意味するコードを読み出した後、直後のアドレス情報を取り出す。
【０１８６】
アドレス情報がアプリに許可された領域かどうかを判断し、許可された領域であればアドレス先を呼び出す。
【０１８７】
“否"であれば許可コードであることを認識し、許可コードを許可コード管理部２０９に渡す。
【０１８８】
許可コード管理部２０９は、許可コードに含まれるインデックスを読み出し、テーブル９０１に含まれる参照先アプリのＡＩＤを取り出して、この参照アプリのAIDをカード間ＩＦ実行部２０８に渡す。
【０１８９】
カード間ＩＦ実行部２０８は、参照先アプリのＡＩＤをレスポンスのデータ部に設定し、カード間ＩＦ利用を依頼する旨を意味するデータをレスポンスのＳＷに設定し、このレスポンスを読み書き装置１０３に送信する。
【０１９０】
（実行動作ＳＴＥＰ２（Ｓ１００２））
読み書き装置１０３の排他制御通信部５０１がレスポンスを受信すると、アプリ制御部５０２がレスポンスを解析し、セキュアデバイス１２０１がカード間ＩＦ利用を希望している旨を認識する。
【０１９１】
アプリ制御部５０２は、セキュアデバイス１２０１から受け取ったデータがカード間ＩＦ利用完了を意味することを認識するまで、セキュアデバイス１２０１から受信したデータ（セキュアデバイス１２０１からのレスポンス）を加工して、他のセキュアデバイス１３０１へのコマンドとして、他のセキュアデバイス１３０１に転送し、他のセキュアデバイス１３０１から受信したデータ（セキュアデバイス１３０１からのレスポンス）を加工してセキュアデバイス１２０１へのコマンドとして、セキュアデバイス１２０１へ転送する。
【０１９２】
読み書き装置１０３は、セキュアデバイス１２０１から、最初にカード間ＩＦ利用を希望している旨を含むレスポンスを受け取った場合は、選択コマンドに加工し、他のセキュアデバイス１３０１に送信する。
【０１９３】
選択コマンドによって、他のセキュアデバイス１３０１のサーバアプリ４０１が起動する。
【０１９４】
以下、サーバアプリ４０１がＲｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ（ＲＭＩ）を実装している場合を例に説明する。
【０１９５】
ＲＭＩを実装したサーバアプリ４０１は、選択コマンドに対する応答として、読み書き装置１０３に、ＩＮＳとオブジェクトＩＤを含むレスポンスを返却する。
【０１９６】
（実行動作ＳＴＥＰ３（Ｓ１００３））
読み書き装置１０３は、サーバアプリ４０１からのレスポンスを、共有コマンドのデータ部に設定し、この共有コマンドをセキュアデバイス１２０１のカード間ＩＦ実行部２０８に送信する。
【０１９７】
カード間ＩＦ実行部２０８は、サーバアプリ４０１から渡されたＩＮＳとオブジェクトＩＤと、を保持する。
【０１９８】
このINSとオブジェクトIDとを保持方法については、特に図示していないが、セキュアデバイス１２０１の内部にメモリを設けて、保持する形が考え得る。
【０１９９】
以降、セキュアデバイス１２０１、他のセキュアデバイス１３０１からのレスポンスは、それぞれのセキュリティ管理部１２０２、１３０３にてセッション鍵を用いて暗号化されている。
【０２００】
また、相手から受信したデータをセキュリティ管理部１２０２、１３０３でセッション鍵を用いて復号した後、それぞれのカードＩＦ実行部２０８、１３０２で処理を行う。
【０２０１】
図１４は、読み書き装置１０３への入力と出力の関係を示したものである。
【０２０２】
読み書き装置１０３は、セキュアデバイス１２０１からのレスポンス１４０１のデータ部をそのままコマンド１４０２として他のセキュアデバイス１３０１に送信する。
【０２０３】
また他のセキュアデバイス１３０１からのレスポンス１４０３をそのままコマンド１４０４のデータ部に設定し、共有コマンド用のヘッダをつけてセキュアデバイス１２０１に送信する。
【０２０４】
セキュアデバイス１２０１のカード間ＩＦ実行部２０８は、他のセキュアデバイス１３０１のサーバアプリ４０１から渡されたＩＮＳとオブジェクトＩＤと、セキュアデバイス１２０１のアプリ実行部２０６が指定したメソッドＩＤとアプリ実行部から渡されたパラメータを含むリクエストデータをレスポンスのデータ部に設定し、カード間ＩＦ利用を依頼する旨をＳＷに設定し、読み書き装置１０３に返却する。
【０２０５】
（実行動作ＳＴＥＰ４（Ｓ１００４））
読み書き装置１０３は、セキュアデバイス１２０１からのカード間ＩＦ利用を依頼する旨を解釈し、レスポンスのデータ部に格納されたデータ（暗号化ずみのＩＮＶＯＫＥコマンド）を抽出し、それをコマンドとして、他のセキュアデバイス１３０１のサーバアプリ４０１に送信する。
【０２０６】
サーバアプリ４０１は、ＩＮＶＯＫＥコマンドで指定されたメソッドＩＤとパラメータを使用して処理を行い、処理結果を読み書き装置１０３に返却する。
【０２０７】
（実行動作ＳＴＥＰ５（Ｓ１００５））
読み書き装置１０３は上記処理結果をデータ部に設定した共有コマンドを、セキュアデバイス１２０１のカード間ＩＦ実行部２０８に送信する。
【０２０８】
カードＩＦ実行部２０８は、結果をアプリ実行部２０６に渡す。
【０２０９】
以後、アプリ実行部２０６は結果に対する処理を継続し、コマンド１に対するレスポンスを読み書き装置１０３に送信する。
【０２１０】
コマンド１に対するレスポンスには、一般的にカード間ＩＦ利用を希望している旨を含むＳＷが含まれない。
【０２１１】
したがって、読み書き装置１０３は、カード間ＩＦ利用完了を意味することを認識し、以後のセキュアデバイス１２０１、他のセキュアデバイス１３０１間の転送を中止する。
【０２１２】
もしくは、セキュアデバイス１２０１から明示的にカード間ＩＦ利用完了を意味するＳＷを送信してもよい。
【０２１３】
本実施の形態２では、セキュリティ管理部１２０２、１３０３によって、参照先の存在確認や、アプリ実行中の他セキュアデバイスへの参照においてセキュリティを確保するシステムについて説明した。
【０２１４】
上記構成を用いることで、セキュアデバイスの成りすまし防止や、セキュアデバイス間で交換されるデータの盗聴防止、改ざん検知が可能となる。
【０２１５】
（実施の形態３）
本実施の形態３は、セキュアデバイスと、他のセキュアデバイスの所有者が一致することを確認するシステム（その１）について説明する。
【０２１６】
本実施の形態３について図１２、図１３、図１５、図１６を用いて説明する。
【０２１７】
図１２は、本実施の形態におけるセキュアデバイス１２０１の構成を示したブロック図であり、実施の形態２で説明したものと同様である。
【０２１８】
図１３は、本実施の形態における他のセキュアデバイス１３０１の構成を示したブロック図であり、実施の形態２で説明したものと同様である。
【０２１９】
図１５は、本実施の形態における読み書き装置１５０１の構成を示したブロック図である。
【０２２０】
図１５における排他制御部５０１、アプリ制御部５０２は、それぞれ図５における排他制御部５０１、アプリ制御部５０２と同様である。
【０２２１】
本実施の形態の特徴は、読み書き装置にあり、上記実施の形態１、実施の形態２との差異は、所有者管理部１５０２と、ダウンロード条件判定部１５０３とを有する点である。
【０２２２】
所有者管理部１５０２は、セキュアデバイス１２０１の所有者と、セキュアデバイス１２０１に設定したカードＩＤを管理する。
【０２２３】
ダウンロード条件判定部１５０３は、クライアントアプリのダウンロードに際しての条件を定義したダウンロード条件情報を管理する。
【０２２４】
ユーザがクライアントアプリのダウンロードを希望した場合に、読み書き装置１５０１は、該当するダウンロード条件情報をアプリ制御部５０２に渡し、アプリ制御部５０２はダウンロード条件を満足しているかを確認するための処理を実行する。
【０２２５】
本実施の形態では、以下で、セキュアデバイス１２０１と他のセキュアデバイス１３０１と読み書き装置１５０１からなるシステムについて説明する。
【０２２６】
上記実施の形態１、２では、クライアントアプリがアドレス解決をする際、同じセキュアデバイス内にサーバアプリがない場合に、他のセキュアデバイス内に存在するサーバアプリを利用する方法について説明した。
【０２２７】
その際、クライアントアプリを利用してサービスを享受する「クライアントアプリ所有者（＝セキュアデバイスの所有者）」と、サーバアプリを利用してサービスを享受する「サーバアプリ所有者（＝他のセキュアデバイスの所有者）」との同一性等については考慮していない。
【０２２８】
本実施の形態では、クライアントアプリ所有者とサーバアプリ所有者に何らかの関係が要求される場合に、要求された関係を確認し、確保する方法について言及する。
【０２２９】
例えば、サーバアプリがクレジットアプリで、クライアントアプリがコンテンツ購入アプリであると仮定する。
【０２３０】
この場合、クレジットカード業者にとって“どのユーザがどのコンテンツをいくらで購入したか”を正しく把握する必要があるため、クライアントアプリの所有者とサーバアプリの所有者とは同一人物であることが望ましいと考えられる状況が起こりうる。
【０２３１】
本実施の形態では、このような状況を想定して、クライアントアプリがアドレス解決を実行するときにサーバアプリ所有者とクライアントアプリ所有者の同一性を確認する方法を説明する。
【０２３２】
このサーバアプリ所有者とクライアントアプリ所有者との同一性確保の方法として下記2パターンが考えられる。
【０２３３】
（１）同一性確認を読み書き装置で確認した後に、セキュアデバイスで、クライアントアプリをダウンロードする。
【０２３４】
（２）ダウンロードの段階で、各セキュアデバイスを個人認証する（例：PIN照合）ことで同一性を確認する。
【０２３５】
実施の形態３では、上記（１）について説明する。
【０２３６】
また、上記（２）については、実施の形態４で説明する。
【０２３７】
上記（１）について説明するにあたって、以下を前提とする。（図１６の“Ｓｔａｒｔ”）
【０２３８】
・読み書き装置１５０１は、サーバアプリがダウンロードされた他のセキュアデバイス１３０１と、これからクライアントアプリをダウンロードするセキュアデバイス１２０１と通信可能な状態になっている。
【０２３９】
・クライアントアプリをダウンロードする条件として、“他のセキュアデバイスの参照が可能でその場合にサーバアプリ所有者とクライアントアプリ所有者が同一であること”と定義されている。
【０２４０】
・読み書き装置１５０１はセキュアデバイス１２０１内にサーバアプリが存在しないことを把握済みである。
【０２４１】
前提の実現は一般的な技術で可能であり、図では省略する。以下、図１６に示すフロー図を用いて、上記（１）に関するシステムの動作を説明する。
【０２４２】
最初に、図１６に示されるように、読み書き装置１５０１はＳＥＬＥＣＴコマンドを他のセキュアデバイス１３０１に送信し、サーバアプリが、他のセキュアデバイス内に存在するか否かを確認する。
【０２４３】
次に、ＧＥＴＤＡＴＡコマンドにより他のセキュアデバイス１３０１に付与されたカードＩＤを取得する。
【０２４４】
ここで、「カードＩＤ」とはセキュアデバイスを一意に特定するための情報で、例えばカード発行者に一意となるＩｓｓｕｅｒ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒとカード発行者が発行したカードを一意に特定するＣａｒｄ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒとから成る。
【０２４５】
同様に、読み書き装置１５０１は、セキュアデバイス１２０１からもカードＩＤを取得する。
【０２４６】
読み書き装置１５０１のアプリ制御部５０２は、所有者管理部１５０２に依頼して、上記のように取得した、セキュアデバイス１２０１と他のセキュアデバイス１３０１それぞれのカードＩＤで関連付けられたセキュアデバイスの所有者が一致することを確かめる。
【０２４７】
所有者管理部１５０２が、セキュアデバイス１２０１の所有者と他のセキュアデバイス１３０１の所有者とが一致しているか否かを判定した結果、両セキュアデバイスの所有者が一致している場合、読み書き装置１５０１は、クライアントアプリのダウンロードを開始する。
【０２４８】
ここで少なくともセキュアデバイス１２０１のアドレス計算部２０５がアドレス解決を実施する前に、読み書き装置１５０１は他のセキュアデバイス１３０１のカードＩＤをセキュアデバイス１２０１に送信する必要がある。
【０２４９】
セキュアデバイス１２０１は、カードＩＤを許可コード管理部２０９に保存しておく。
【０２５０】
セキュアデバイス１２０１がアドレス解決を実施するときに、自己のセキュアデバイス内である、セキュアデバイス１２０１内にサーバアプリがないことを認識し、他のセキュアデバイス１３０１に存在するかを確かめる。
【０２５１】
ここでは、実施の形態２で述べたセキュリティ確保ステップ１からステップ５までを同様に実施する。
【０２５２】
ただし、この途中で他のセキュアデバイス１３０１のカード公開鍵証明書から取得したカードＩＤと、許可コード管理部２０９に保存されたカードＩＤとが一致しているかを確かめる必要がある。
【０２５３】
カードＩＤと所有者の一致は既に読み書き装置１５０１で確認されているため、省略することも可能である。
【０２５４】
ただし、カードＩＤを送信した後に他のセキュアデバイス１３０１がすりかえられる脅威に対して、事前の確認に加えてアドレス解決中に再確認することでセキュリティレベルが向上する。
【０２５５】
本実施の形態３では、サーバアプリとクライアントアプリがそれぞれ異なるセキュアデバイスに搭載されている場合に、サーバアプリ所有者とクライアント所有者の同一性を確保する方法について述べた。
【０２５６】
同一性を確認することによって、なりすましによるクライアントアプリのダウンロードを防止することができる。
【０２５７】
本手法は、所有者の同一性だけでなく、クライアントアプリ所有者が、サーバアプリ所有者の家族か、同じグループに所属しているか、などにも適用できる。
【０２５８】
以上により、サーバアプリ所有者とクライアントアプリ所有者の関係を柔軟に設定、確認可能なシステムを提供することができる。
【０２５９】
（実施の形態４）
本実施の形態４は、セキュアデバイスと、他のセキュアデバイスの所有者が一致することを確認するシステム（その２）について説明する。
【０２６０】
本実施の形態４について図１２、図１３、図１７、図１８を用いて説明する。
【０２６１】
図１２は、本実施の形態におけるセキュアデバイス１２０１の構成を示したブロック図であり、実施の形態２で説明したものと同様である。
【０２６２】
図１３は、本実施の形態における他のセキュアデバイス１３０１の構成を示したブロック図であり、実施の形態２で説明したものと同様である。
【０２６３】
図１７は、本実施の形態における読み書き装置１７０１の構成を示したブロック図である。
【０２６４】
図１７における排他制御部５０１、アプリ制御部５０２は、それぞれ図５における排他制御部５０１、アプリ制御部５０２と同様である。
【０２６５】
また所有者管理部１５０２は、図１５における所有者管理部１５０２と同様である。
【０２６６】
上記実施の形態３との差異は、所有者情報確認入力部１７０２を有する点である。
【０２６７】
所有者情報確認入力部１７０２は、セキュアデバイス所有者の正当性を判定するための情報（例：ＰＩＮ）を入力するためのものである。
【０２６８】
所有者情報確認入力部１７０２の例として、入力画面が考えられる。
【０２６９】
ただし、本画面は、セキュアデバイス１２０１からＰＩＮ入力画面を提供するように依頼する旨のレスポンスが返却された後、アプリ制御部５０２がその旨を解釈し、所有者確認情報入力部１７０２に画面出力を依頼した場合のみ表示される。
【０２７０】
本実施の形態では、セキュアデバイス１２０１と他のセキュアデバイス１３０１と読み書き装置１７０１からなるシステムについて説明する。
【０２７１】
実施の形態１、２では、セキュアデバイス内のクライアントアプリがアドレス解決をする際に、自己のセキュアデバイス内にサーバアプリがない場合には、他のセキュアデバイス内に存在するサーバアプリを利用するシステムについて説明した。
【０２７２】
その際、クライアントアプリを利用してサービスを享受する「クライアントアプリ所有者（＝セキュアデバイスの所有者）」と、サーバアプリを利用してサービスを享受する「サーバアプリ所有者（＝他のセキュアデバイスの所有者）」との同一性等については考慮していない。
【０２７３】
本実施の形態では、上記実施の形態３と同様、クライアントアプリ所有者とサーバアプリ所有者に何らかの関係が要求される場合に、要求された関係を確認し、確保する方法について言及する。
【０２７４】
例えば、サーバアプリがクレジットアプリで、クライアントアプリがコンテンツ購入アプリであると仮定する。この場合、クレジットカード業者にとって“どのユーザがどのコンテンツをいくらで購入したか”を正しく把握する必要があるため、クライアントアプリの所有者とサーバアプリの所有者とは同一人物であることが望ましいと考えられる状況が起こりうる。
【０２７５】
したがって、このような状況を想定して、本実施の形態ではクライアントアプリがアドレス解決を実行するときにサーバアプリ所有者とクライアントアプリ所有者の同一性を確認する方法を、図１８を用いて説明する。
【０２７６】
本実施の形態に記載の発明を説明するにあたって、まずは前提を述べる。（図１８の“Ｓｔａｒｔ”）
【０２７７】
・読み書き装置は、サーバアプリがダウンロードされた他のセキュアデバイスと、これからクライアントアプリをダウンロードするセキュアデバイスと通信可能な状態になっている。
【０２７８】
・クライアントアプリをダウンロードする条件として、“他のセキュアデバイスの参照が可能でその場合にサーバアプリ所有者とクライアントアプリ所有者が同一であること”と定義されている。
【０２７９】
・読み書き装置はセキュアデバイス内にサーバアプリが存在しないことを把握済みである。
【０２８０】
前提の実現は一般的な技術で実現可能であり、図では省略する。
【０２８１】
以下、図１８に示すフロー図を用いて、本実施の形態に記載の発明に関するシステムの動作を説明する。
【０２８２】
最初に、読み書き装置１７０１はダウンロード条件をセキュアデバイス１２０１に送信する。
【０２８３】
ダウンロード管理部１２０１はダウンロード条件を受信し、セキュリティ管理部１２０２に渡し、セキュリティ管理部１２０２で保存する。
【０２８４】
次にクライアントアプリのダウンロードを開始する。
【０２８５】
セキュアデバイス１２０１がアドレス解決を実施するときに、自己のセキュアデバイス内である、セキュアデバイス１２０１内にサーバアプリがないことを認識し、他のセキュアデバイス１３０１に、サーバアプリが存在するかを確かめる。
【０２８６】
ここでは、実施の形態２で述べたセキュリティ確保ステップ１からステップ５までを同様に実施する。
【０２８７】
ただし、この途中で、セキュアデバイス１２０１のカード間ＩＦ実行部２０８はセキュリティ管理部１２０２に保存されたダウンロード条件を満足しているかを確認するための処理を読み書き装置１７０１と連携して実行する。
【０２８８】
カード間ＩＦ実行部２０８は、ダウンロード条件に応じて条件を満足しているかを確認するための処理を切り替えることができる。
【０２８９】
本実施の形態における“他のセキュアデバイスの参照が可能でその場合にサーバアプリ所有者とクライアントアプリ所有者が同一であること”がダウンロード条件である場合には、ＰＩＮの入力を依頼する旨のレスポンスを読み書き装置１７０１に送信する。
【０２９０】
読み書き装置１７０１は、排他制御通信部５０１においてレスポンスを受信し、レスポンスをアプリ制御部５０２に渡す。
【０２９１】
アプリ制御部５０２は、ＰＩＮの入力を依頼されていることを解釈し、所有者確認情報入力部１７０２に画面を表示するように依頼する。
【０２９２】
次に所有者情報入力部１７０２によって表示された画面に所有者がＰＩＮを入力する。
【０２９３】
入力されたＰＩＮは、排他制御通信部５０１から他のセキュアデバイス１３０１に送信され、カード間ＩＦ実行部１３０２が受信する。
【０２９４】
カード間ＩＦ実行部１３０２からの依頼を受けてセキュリティ管理部１３０３においてＰＩＮ照合を実施し、その結果を、読み書き装置１７０１を経由してセキュアデバイス１２０１に送信する。
【０２９５】
このPIN照合は、必ずしも、セキュリティ管理部１３０３で行う必要はなく、例えば、PIN照合部などの構成を設けても良い。
【０２９６】
セキュアデバイス１２０１のカード間ＩＦ実行部２０８は、結果が“ＯＫ"であった場合に、他のセキュアデバイスの所有者が、ダウンロード対象のセキュアデバイスの所有者と同一であると判定し、アドレス解決を継続する。
【０２９７】
ここで、他のセキュアデバイスの所有者が、セキュアデバイスの所有者と異なるにもかかわらず、それぞれの所有者が連携することで他のセキュアデバイスのＰＩＮ照合に成功する脅威が存在する。
【０２９８】
そこで、ダウンロード終了後に、他のセキュアデバイスのカード証明書をセキュアデバイスから読み書き装置に送信し、読み書き装置で所有者の同一性をチェックする。この結果、なりすましを検知できる。
【０２９９】
以上より、本実施の形態４では、サーバアプリとクライアントアプリがそれぞれ異なるセキュアデバイスに搭載されている場合に、サーバアプリ所有者とクライアント所有者の同一性を確保する方法について述べた。
【０３００】
特に、所有者情報データベースから切り離された環境でダウンロードを実行する場合に、本手法は最適である。
【０３０１】
（実施の形態５）
本実施の形態５は、サーバアプリが搭載されたセキュアデバイスのライフサイクルに連動したクライアントアプリの利用制御に関するものである。
【０３０２】
本実施の形態５について図２、図４、図５、図１９、図２０を用いて説明する。
【０３０３】
図２は、本実施の形態におけるセキュアデバイス１０１の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３０４】
図４は、本実施の形態における他のセキュアデバイス１０２の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３０５】
図５は、本実施の形態における読み書き装置１０３の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３０６】
図２０は、許可コード管理部２０９に含まれる許可コードテーブル２００１であり、図９におけるインデックス、参照先アプリの識別子、メソッドＩＤ、引数の数に加えて、クライアントアプリの識別子が含まれる。
【０３０７】
本実施の形態では、このクライアントアプリの識別子が含まれる点が、他の実施の形態に記載の発明と異なる点である。
【０３０８】
本実施の形態では、セキュアデバイス１０１と他のセキュアデバイス１０２と読み書き装置１０３からなるシステムについて説明する。
【０３０９】
サーバアプリとクライアントアプリが同一セキュアデバイスに搭載されている場合には、両アプリのライフサイクルはセキュアデバイスのライフサイクルに連動する。
【０３１０】
すなわち、セキュアデバイスが利用可能な状態であれば両アプリは利用可能であり、セキュアデバイスが一時停止や廃棄状態であれば両アプリも利用不可となる。
【０３１１】
ここで、これまでの実施の形態で述べた、サーバアプリとクライアントアプリが別々のセキュアデバイスに搭載されている場合について、セキュアデバイスが一時停止、廃棄状態のときに、どのようになるのかを述べる。
【０３１２】
サーバアプリが搭載されている他のセキュアデバイス（以下、サーバ側デバイス）が利用可能で、クライアントアプリが搭載されているセキュアデバイス（以下、クライアント側デバイス）が利用不可の場合は、そもそもクライアント側が実行できないので問題ない。
【０３１３】
一方でサーバ側デバイスが利用不可でクライアント側デバイスが利用可能な場合、従来と異なる処理が必要である。
【０３１４】
すなわち、“サーバ側デバイスが一時停止であるためクライアントアプリは利用できません。”という内容を読み書き装置に返却する必要がある。
【０３１５】
また、返却するタイミングはできるだけ早いことが望ましい。
【０３１６】
したがって、本実施の形態では他のセキュアデバイスに登録されたサーバアプリを参照するクライアントアプリを実行するときに他のセキュアデバイスのライフサイクルを確認する処理について図１９を用いて説明する。
【０３１７】
読み書き装置１０３はクライアントアプリを選択するＳＥＬＥＣＴコマンドを、セキュアデバイス１０１に送信する。
【０３１８】
セキュアデバイス１０１のアプリ実行部２０６が、ＳＥＬＥＣＴコマンドを受信し、データ部に設定されたクライアントアプリのＡＩＤをカード間ＩＦ実行部２０８に渡す。
【０３１９】
カード間ＩＦ実行部２０８は、許可コード管理部２０９に格納された許可コードテーブル２００１を参照する。
【０３２０】
許可コードテーブル２００１中に、該当するクライアントアプリのＡＩＤが存在しない場合は、アプリ実行部２０６にその旨を通知し、アプリ実行部２０６は通常のＳＥＬＥＣＴコマンド処理を実行する。
【０３２１】
該当するクライアントアプリのＡＩＤが存在する場合は、許可コードテーブル２００１から他のセキュアデバイスに搭載されたサーバアプリのＡＩＤを抽出し、サーバアプリのＡＩＤと、“ＳＥＬＥＣＴコマンドを他のセキュアデバイスに送信することを依頼する”旨のデータとからなるレスポンスを、読み書き装置１０３に返却する。
【０３２２】
読み書き装置１０３は、セキュアデバイス１０１のカード間ＩＦ実行部２０８から受信したデータからＳＥＬＥＣＴコマンドを作成し、他のセキュアデバイス１０２に送信する。
【０３２３】
次に、他のセキュアデバイス１０２からのレスポンスをセキュアデバイス１０１に渡す。
【０３２４】
セキュアデバイス１０１のカード間ＩＦ実行部２０８は、レスポンスを解析し、他のセキュアデバイス１０２の利用可能状態を把握する。
【０３２５】
他のセキュアデバイス１０２が利用可能な場合は、アプリ実行部２０８にその旨を伝え、アプリ実行部２０８は、通常のＳＥＬＥＣＴコマンド処理を実行する。
【０３２６】
他のセキュアデバイス１０２が利用不可な場合は、アプリ実行部２０８にその旨を伝え、アプリ実行部は、“他のセキュアデバイスが利用不可であるためクライアントアプリは使用できない”旨を示すＳＷを設定したレスポンスを読み書き装置１０３に返却する。
【０３２７】
本実施の形態５では、サーバアプリとクライアントアプリがそれぞれ異なるセキュアデバイスに搭載されている場合に起こりうる、サーバアプリが搭載されているセキュアデバイスが一時停止もしくは廃棄状態にあるときのクライアントアプリが搭載されているセキュアデバイスの振舞について述べた。
【０３２８】
クライアントアプリのＳＥＬＥＣＴ時にサーバアプリの状態を確認することで、クライアントアプリの処理実行中にサーバアプリの状態を確認する場合に比べてカード内や読み書き装置側におけるリカバリ処理のような余分な処理をなくすことができる。
【０３２９】
また、サーバアプリの機能を利用しない範囲に限ってクライアントアプリを実行するように切り替えることもできる。
【０３３０】
以上、従来のサーバアプリとクライアントアプリが揃って利用可能あるいは利用不可であった従来技術に対してクライアントアプリを実行するサーバ側で、サーバアプリの状態に応じた処理を選択可能となり、柔軟なサービス提供が実現できる。
【０３３１】
（実施の形態６）
実施の形態６は、同一カード内にサーバアプリが存在しない場合のクライアントアプリの条件付きダウンロード方法と、条件のチェック方法に関する発明である。
【０３３２】
例えば、サーバアプリが搭載されたセキュアデバイスを携帯するのを忘れた場合においても、実際にクライアントアプリを使うまでにサーバアプリを参照することを条件に、クライアントアプリのダウンロードを許可するシステムに適用できる。
【０３３３】
本実施の形態６について図２、図４、図５、図９、図１０、図２１、図２２、図２３を用いて説明する。
【０３３４】
図２は、本実施の形態におけるセキュアデバイス１０１の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３３５】
図４は、本実施の形態における他のセキュアデバイス１０２の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３３６】
図５は、本実施の形態における読み書き装置１０３の構成を示したブロック図であり、各構成要素は実施の形態１で説明したものと同様である。
【０３３７】
図９は、許可コードテーブル９０１の一例を示したものであり、各構成要素は実施の形態１で説明したものと同様である。
【０３３８】
図２２、図２３に示す、許可コード又は仮許可コード等が本実施例の特徴となりものである。
【０３３９】
図２２は、許可コード発行部２０７が許可コードを発行する際のルールを定義した指示書である。
【０３４０】
図２３は、アプリ実行部２０６が管理する仮許可コード管理テーブル２３０１の一例を示すものである。仮許可コード管理テーブル２３０１は、インデックス、クライアントアプリの識別子、サーバアプリの識別子、アドレス計算用データからなる。
【０３４１】
本実施の形態では、セキュアデバイス１０１と他のセキュアデバイス１０２と読み書き装置１０３からなるシステムについて説明する。
【０３４２】
本実施の形態１では、サーバアプリのＩＦを利用するクライアントアプリのダウンロードにおいて、他のセキュアデバイスに搭載されたサーバアプリを参照可能な場合に許可コードを発行する方法について説明した。
【０３４３】
これに対して、本実施の形態では、種々の許可コードの発行と、発行した許可コードの活用方法について図２１を用いて説明する。
【０３４４】
事前に、許可コード発行部２０７には、読み書き装置１０３から送信されたアプリの属性を設定するコマンドにより、「アプリの種類」や「仮許可コード発行許可」などが設定されている。
【０３４５】
ここで「アプリの種類」とは、例えば、アプリが利用回数や利用期間などを制限した一時的なアプリであったり、制限を課さない正式なアプリであったり、アプリに対する様々な制限で分類されたものである。
【０３４６】
そのため、「アプリの種類」は、アプリがどのような制限が課されたものであるのかを識別するために用いられる。
【０３４７】
「仮許可コード発行許可」とは、アドレス解決時に参照先存在判定部２１０がサーバアプリへの参照を確認した際に、参照先がないにもかかわらずダウンロードエラーとして扱わずに仮許可コードを発行することを許可するものでありアプリ実行部２０６にとっては、仮許可コードの解釈において「まだ参照先を確かめてない状態であることを判別できる」かつ「いつまでその状態が許容されるかを判別できる」必要がある。
【０３４８】
例えば、サーバアプリが搭載されたセキュアデバイスを所持しない（たとえば、携帯するのを忘れた等）場合でも仮にクライアントアプリのダウンロードを実行し、その後サーバアプリが搭載されたセキュアデバイスを確認し許可コードを発行する場面を想定される。
【０３４９】
本実施の形態では、この想定される状況でのシステムの動作について説明する。
【０３５０】
図２１において「許可コードを発行する」までのフローは実施の形態１と同様であり、その後の処理が、本実施の形態において記載する発明の特徴部分となる。
【０３５１】
（制限付き許可コードの発行）
ここでは、制限付き許可コードの発行について説明する。
【０３５２】
事前に、参照先存在判定部２０１には、読み書き装置１０３から送信されたアプリの属性を設定するコマンドにより、「アプリの種類」が設定されている。
【０３５３】
ここでは、利用回数の上限を３回とする一時的なアプリとして設定されていると仮定する。
【０３５４】
アプリのダウンロード時にアドレス解決を開始し、他のセキュアデバイス１０２が使用許可を意味する情報をセキュアデバイス１０１に転送するまでは実施の形態１と同様である。
【０３５５】
参照先存在判定部２１０はカード間ＩＦ実行部２０８が受信した情報を解析することで“ＯＫ”と判定した後、許可コード発行部２０７に「アプリの種類」を用いた制限付き許可コードの発行を依頼する。
【０３５６】
許可コード発行部２０７は、アプリの種類が一時的なアプリであること、利用回数が3回であることから指示書２２０１にしたがったＦＣＢ１ｈを制限付き許可コードとして発行する。
【０３５７】
指示書２２０１によれば、アプリの配置に許可されないアドレス領域を示す情報のうちFC〜ＦＤｈが先頭１バイトに割り当てられ、次の４ビットで制限の種類や内容が表現され、最後の４ビットで許可コードテーブル９０１のインデックスが付与されることになる。
【０３５８】
また、制限付き許可コード発行後に、許可コード管理部２０９で管理する許可コードテーブル９０１には、参照先アプリ（サーバアプリ）の識別子、メソッドＩＤ、引数の数などが格納される。
【０３５９】
次に、制限付き許可コードが付与されたクライアントアプリの実行中の動作について図１０を利用して説明する。
【０３６０】
ここでは実施の形態１と差異のあるSTEP１０−１についてのみ詳述する。
【０３６１】
（STEP１０−１）
既にセキュアデバイス１０１内のクライアントアプリ３０７が起動されているものとする。
【０３６２】
読み書き装置１０３から送信されたコマンド１に対応する処理が、セキュアデバイス１０１のアプリ実行部２０６により実行される。
【０３６３】
アプリ実行部２０６が、メソッド呼び出しを意味する命令コードを読み出した後、直後のアドレス情報を取り出す。
【０３６４】
アドレス情報がアプリに許可された領域かどうかを判断し、許可された領域であればアドレス先を呼び出す。
【０３６５】
“否"であれば許可コードであることを認識し、さらに許可コードの種類を判別する。
【０３６６】
判別した結果が制限付き許可コードであれば、次に制限の種類や内容を満足するかどうかを判定する。
【０３６７】
例えば、利用制限がある場合に残りの試行回数が０に到達していれば“これ以上の利用は不可”を意味するエラーを発行する。
【０３６８】
まだ試行回数が残されている場合は、制限付き許可コードを許可コード管理部２０９に渡す。
【０３６９】
残りの試行回数の確認は、利用時に制限付き許可コードを更新してもよいし、利用回数を許可コード管理部２０９に保存しておいて制限付き許可コードに含まれる利用回数と比較してもよい。
【０３７０】
許可コード管理部２０９は、制限付き許可コードに含まれるインデックスを読み出し、テーブル９０１に含まれる参照先アプリのＡＩＤを取り出してカード間ＩＦ実行部２０８に渡す。
【０３７１】
カード間ＩＦ実行部２０８は、参照先アプリのＡＩＤをレスポンスのデータ部に設定し、カード間ＩＦ利用を依頼する旨を意味するデータをレスポンスのＳＷに設定し、このレスポンス１１０１を読み書き装置１０３に送信する。
【０３７２】
STEP１０−２以降は、許可コードを発行した実施の形態１と同様であり、ここでは、省略する。
【０３７３】
（仮許可コードの発行）
最後に仮許可コードの発行について説明する。
【０３７４】
事前に、クライアントアプリがダウンロード後に選択されるまで仮許可状態を許可する旨のアプリ属性が参照先存在判定部２１０に設定されていると仮定する。
【０３７５】
これにより、サーバアプリが搭載されたセキュアデバイスを携帯するのを忘れた場合においても、実際にクライアントアプリを使うまでにサーバアプリを参照する許可コードを発行すればよい。
【０３７６】
アプリのダウンロード時にアドレス解決を開始し、他のセキュアデバイス１０２が使用許可を意味する情報をセキュアデバイス１０１に転送するまでは実施の形態１と同様である。
【０３７７】
この場合、セキュアデバイス１０１のカード間ＩＦ実行部２０８は参照するアプリが存在しない旨を含む情報を受信し、参照先存在判定部２１０は“ＮＧ”と判定した後、「仮許可コード発行許可」が設定されていることを確認し、仮許可コードの発行を許可コード発行部２０７に依頼する。
【０３７８】
許可コード発行部２０７は、指示書２２０１に従った“ＦＡ０２h”を仮許可コードとして発行する。
【０３７９】
指示書２２０１によれば、アプリの配置に許可されないアドレス領域を示す情報のうちＦＡ〜ＦＢｈが先頭１バイトに割り当てられ、後半の１バイトで仮状態が許可される条件が表現されることになる。
【０３８０】
また、制限付き許可コード発行後に、アプリ実行部２０６が保持する仮許可コード管理テーブル２３０１が更新される。
【０３８１】
仮許可状態管理テーブル２３０１は、仮許可コードを発行した場合に更新される。
【０３８２】
ＳＥＬＥＣＴコマンドにてアプリの選択を試みたとき、アプリ実行部２０６は仮許可コード管理テーブル２３０１を参照し、選択対象のアプリがまだサーバアプリとのアドレス解決が実行されていないことを確認し、アプリ使用不可を意味するエラーを発行する。
【０３８３】
アプリを選択可能とするためには、１）サーバアプリを同じセキュアデバイスにダウンロードする、あるいは２）サーバアプリが搭載された別のセキュアデバイスとリンク処理を実行する、のいずれかが必要となる。
【０３８４】
上記１）サーバアプリを同じセキュアデバイスにダウンロードする場合は、公知の技術にてサーバアプリをダウンロードした後、アドレス計算部２０５はアプリ実行部２０６が管理する仮許可コード管理テーブル２３０１を参照し、サーバアプリとのリンク処理待ちのクライアントアプリの存在を確認する。
【０３８５】
クライアントアプリが存在する場合、仮許可コード管理テーブルで保持されているアドレス計算用データを利用してアドレス解決を実行する。
【０３８６】
この後、仮許可コード管理テーブルからリンクを完了したクライアントアプリに関する行を削除する。
【０３８７】
上記２）サーバアプリが搭載された別のセキュアデバイスとリンク処理を実行する場合は、読み書き装置１０３から、リンク専用コマンドを送信する。
【０３８８】
リンク専用コマンドは、リンク専用コマンドであることを解釈可能なヘッダ部と、サーバアプリの識別子を含むデータ部からなる。
【０３８９】
ダウンロード管理部２０１がリンク専用コマンドを受信すると、アドレス計算部２０５は、アプリ実行部２０６が管理する仮許可コード管理テーブル２３０１を参照し、サーバアプリとのリンク処理待ちのクライアントアプリの存在を確認する。
【０３９０】
リンク処理待ちのクライアントアプリが存在する場合、仮許可コード管理テーブル２３０１で保持しているアドレス計算用データと、サーバアプリの識別子とを、カード間ＩＦ実行部２０８に渡し、カード間ＩＦ実行部２０８と他のセキュアデバイス１０２間で参照先の存在を確認する。
【０３９１】
使用許可を意味する情報をカード間ＩＦ実行部２０８が受信すると、参照先存在判定部２１０が許可コードの発行を許可コード発行部２０７に依頼する。
【０３９２】
許可コード発行部２０７は、許可コードを発行し、許可コードテーブル９０１を更新する。
【０３９３】
また参照先存在判定部２１０は、アプリ実行部２０６に依頼して仮許可コード管理テーブルからリンクを完了したクライアントアプリに関する行を削除する。
【０３９４】
以上１）、２）いずれかの処理を行うことにより、以降のクライアントアプリの選択、実行が実現できる。
【０３９５】
本実施の形態６では、実施の形態１で詳述した許可コード以外にも、制限付き許可コードや仮許可コードの発行と、それら許可コードを付与されたアプリの動作について説明した。
【０３９６】
制限付き許可コードにより、サーバアプリ側を変更すること無く、利用回数などを制限できるため、お試し版のような一時的なアプリの発行に適用できる。
【０３９７】
仮許可コードにより、クライアントアプリをダウンロードするときにサーバアプリが搭載されたセキュアデバイスを所有しなくても、後でリンク処理を行うことができる。これにより、ユーザがクライアントアプリのダウンロードを希望するにもかかわらず、その時点でサーバアプリが搭載されたセキュアデバイスを持ち合わせていないために断念せざるを得ない場面がなくなる。
【０３９８】
したがって、サービス提供者からみた事業機会の損失、ユーザから見たサービス利用機会の損失に対する有効な対策となる。
【０３９９】
（実施の形態７）
実施の形態７は、他のセキュアデバイスに搭載されたサーバアプリに処理を依頼し、サーバアプリの処理データをクライアントアプリで利用する方法に関する発明である。
【０４００】
本実施の形態７について図５、図２４〜図２７を用いて説明する。
【０４０１】
図２４は、本実施の形態におけるセキュアデバイス２４０１の構成を示したブロック図である。
【０４０２】
ダウンロード管理部２０１、アプリ格納部２０２、アプリ２０３、２０４、アドレス計算部２０５、アプリ実行部２０６、許可コード発行部２０７、カード間ＩＦ実行部２０８、許可コード管理部２０９は、それぞれ実施の形態１で説明したものと同様である。
【０４０３】
図２に示す、セキュアデバイス１０１との差異は、クライアントアプリ２４０２と、スタック操作部２４０３である。
【０４０４】
クライアントアプリ２４０２は、他のセキュアデバイス２５０１に搭載されたサーバアプリが提供するＩＦを利用する。
【０４０５】
スタック操作部２４０３は、サーバアプリが提供するＩＦを利用する際のクライアントアプリが扱うスタックを操作する。
【０４０６】
図２５は、本実施の形態における他のセキュアデバイス２５０１の構成を示したブロック図である。アプリ格納部２０２、アプリ実行部２０６、サーバアプリ４０１は実施の形態１で説明したものと同様である。
【０４０７】
図４に示す、セキュアデバイス１０２との差異は、スタック制御部２５０２である。
【０４０８】
スタック制御部２５０２は、同一のセキュアデバイスに搭載されたクライアントアプリからの呼び出しと、別のセキュアデバイスに搭載されたクライアントアプリからの呼び出しと、に対してのサーバアプリが同じ動作をするための制御を行う。
【０４０９】
図５は、本実施の形態における読み書き装置１０３であり、実施の形態１と同様である。
【０４１０】
本実施の形態では、セキュアデバイス２４０１と他のセキュアデバイス２５０１と読み書き装置１０３からなるシステムについて説明する。
【０４１１】
本実施の形態１では、サーバアプリからのレスポンスにSW以外のデータを含まないケースについて述べた。（図１１（ａ）のレスポンス１１０３参照）
【０４１２】
もしもレスポンスがデータとSWから構成され、以降のクライアントアプリの処理でデータを利用するならば、そのデータはスタック上に積まれている必要がある。
【０４１３】
同一セキュアデバイス上にサーバアプリが存在する場合には、サーバアプリでの処理結果である戻り値がスタック上に積まれて呼び出し元であるクライアントアプリに戻ってくることが知られている。
【０４１４】
しかしながら、サーバアプリが同一セキュアデバイス上に存在せず、他のセキュアデバイス上のサーバアプリを利用した場合の戻り値は、セキュアデバイス間の通信プロトコルに従ってＡＰＤＵ（Application Protocol Data Unit）に内蔵される。
【０４１５】
したがって、サーバアプリがどのセキュアデバイス上にあるかに関係なくクライアントアプリに同じ動作をさせるためには、ＡＰＤＵから戻り値を抽出し、クライアントアプリのスタック上に積む操作が必要になる。
【０４１６】
本実施の形態７では、サーバアプリからの戻り値を、以降のクライアントアプリの処理で利用する方法について説明する。
【０４１７】
これに際し、以下に前提を述べる。
【０４１８】
・サーバアプリは他のセキュアデバイスに搭載され、クライアントアプリのアドレス解決は完了している。
【０４１９】
・クライアントアプリが実行され、図１０のＳＴＥＰ１０−３までは完了している。
【０４２０】
この前提は、実施の形態１に記載のシステムの動作と同様にして実施される。
【０４２１】
図２６に示すように“ｍｅｔｈｏｄ＿１”が“ｍｅｔｈｏｄ＿２”を呼び出している場合について説明する。
【０４２２】
アプリ実行部２０６は関数単位でフレームを作成し、処理を実行する。フレームとは、関数が値を返したり、例外の処置を行ったり、データと結果の一部をストアするために使用する作業エリアのことである。“ｍｅｔｈｏｄ＿１"にはフレーム１が、“ｍｅｔｈｏｄ＿２”はフレーム２が割り当てられる。また各フレームは、ローカル変数とスタックからなる。
【０４２３】
“ｍｅｔｈｏｄ＿１”が“ｍｅｔｈｏｄ＿２”を呼び出した直後に、フレーム２が生成される。“ｍｅｔｈｏｄ＿２”は、フレーム２を用いて処理を行い、最後に“ｂ”を返却する。
【０４２４】
“ｂ”の返却とは、“ｂ”の値が“ｓｒｅｔｕｒｎ”という命令コードによって直接フレーム１のスタックに積まれることを意味する。また、“ｂ”を返却した後にフレーム２は消去される。
【０４２５】
その後、“ｍｅｔｈｏｄ＿１”が処理を継続する。
【０４２６】
このようにして、関数同士の呼び出しが成立する。
【０４２７】
しかしながら、“ｍｅｔｈｏｄ＿１”と“ｍｅｔｈｏｄ＿２”が異なるセキュアデバイス上にある場合には、本来“ｍｅｔｈｏｄ＿１”のフレームに積まれているはずの“ｍｅｔｈｏｄ＿２”のフレームが他のセキュアデバイス管理下にあるため、“ｍｅｔｈｏｄ＿２”による処理結果を、呼び出し側の“ｍｅｔｈｏｄ＿１”のスタックに直接積むことはできない。
【０４２８】
したがって、本来“ｍｅｔｈｏｄ＿２”が処理結果を“ｍｅｔｈｏｄ＿１"のスタックに直接積む操作と同等の処理を、“ｍｅｔｈｏｄ＿２”が直接積むことができない状況で実現可能な仕組みが必要になる。
【０４２９】
したがって、スタック制御部２５０２は、別のセキュアデバイスに搭載されたクライアントアプリからの参照時に限って、戻り値の操作に関係する命令コード（例：ｓｒｅｔｕｒｎ）に対して通常と異なる処理を実行する。
【０４３０】
別のセキュアデバイスに搭載されたクライアントアプリからの呼び出される際、アプリ実行部４０３には呼び出し元のフレームがない。
【０４３１】
この場合に、“ｓｒｅｔｕｒｎ”の処理はスタック制御部２５０２が担当する。
【０４３２】
スタック制御部２５０２は、呼び出し元フレームのスタックへの書き込みを中止し、代わりに図２７に示すデータを作成する。
【０４３３】
本実施の形態に記載の発明では、図２７のようなデータを生成し、利用することで、クライアントアプリが、サーバアプリを有するセキュアデバイス内に存在しない場合にも、スタックに積むことができる。
【０４３４】
図２７は、“ｓｒｅｔｕｒｎ”であることを意味するＴＡＧと、戻り値の長さを意味するＬＥＧＮＴＨと、戻り値を表すＶａｌｕｅから構成される。
【０４３５】
これが、サーバアプリから送信されるレスポンスのデータ部に設定され、呼び出し結果として、クライアントアプリを実行するセキュアデバイス１０１に渡されることになる。
【０４３６】
次に、データを受信した後のセキュアデバイス２４０１の動作について図１０を用いて説明する。
【０４３７】
本実施の形態においては、図１０におけるセキュアデバイス１０１をセキュアデバイス２４０１に、他のセキュアデバイス１０２を他のセキュアデバイス２５０１に置き換えて説明する。
【０４３８】
また、クライアントアプリ２４０２がサーバアプリを参照するときの複数ステップのうちＳＴＥＰ１０−１から１０−４までは実施の形態１と同様であるため説明を省略し、サーバアプリの処理結果が戻ってくるＳＴＥＰ１０−５について説明する。
【０４３９】
セキュアデバイス２４０１のカード間ＩＦ実行部２０８が共有コマンドを受信し、スタック操作部２４０３に共有コマンドのデータ部を渡す。
【０４４０】
スタック操作部２４０３は、“ｓｒｅｔｕｒｎ”であることを意味するＴＡＧを解釈し、呼び出し元（クライアントアプリ）のフレームのスタック上にＶａｌｕｅを積む。
【０４４１】
この後、クライアントアプリも、サーバアプリが同一セキュアデバイスに搭載されている場合と同様に処理を継続することができる。
【０４４２】
本実施の形態６では、セキュアデバイス２４０１にスタック操作部２４０３を、他のセキュアデバイス２５０１にスタック制御部２５０２を備えることにより、サーバアプリとクライアントアプリのコードに特殊な加工をすることなく、他のセキュアデバイスに搭載されたサーバアプリからの戻り値をクライアントアプリが利用できる方法について述べた。
【０４４３】
サーバアプリの戻り値を、クライアントアプリで確認・利用する場面は多く、本方式の効果は大きい。
【産業上の利用可能性】
【０４４４】
本発明のセキュアデバイス、読み書き装置により、セキュアデバイスのメモリ領域の削減を図ることが出来るという効果を有するシステムを提供することができる。
【図面の簡単な説明】
【０４４５】
【図１】本発明の実施の形態１におけるシステム構成図
【図２】本実施の形態１におけるセキュアデバイスのブロック図
【図３】ダウンロード中と終了後のアプリ領域を示す図
【図４】本実施の形態１における他のセキュアデバイスのブロック図
【図５】本実施の形態１における読み書き装置のブロック図
【図６】カード内に参照先が存在する場合の処理フロー図
【図７】カード内に参照先が存在しない場合の処理フロー図
【図８】本実施の形態１におけるアドレス空間を示す図
【図９】許可コードテーブルの一例を示す図
【図１０】許可コードを付与されたアプリの処理フロー図
【図１１ａ】コマンドとレスポンスの一例を示す図（ａ）
【図１１ｂ】コマンドとレスポンスの一例を示す図（ｂ）
【図１２】本実施の形態２におけるセキュアデバイスのブロック図
【図１３】本実施の形態２における他のセキュアデバイスのブロック図
【図１４】読み書き装置への入力と出力の関係図
【図１５】本実施の形態３における読み書き装置のブロック図
【図１６】本実施の形態３における処理フロー図
【図１７】本実施の形態４における読み書き装置のブロック図
【図１８】本実施の形態４における処理フロー図
【図１９】本実施の形態５における処理フロー図
【図２０】本実施の形態５における許可コードテーブルの例
【図２１】本実施の形態５における許可コード発行フロー図
【図２２】指示書の一例を示す図
【図２３】仮許可コード管理テーブルの一例を示す図
【図２４】本実施の形態７におけるセキュアデバイスのブロック図
【図２５】本実施の形態７における他のセキュアデバイスのブロック図
【図２６】アプリ実行部が扱うフレームの一例を示す図
【図２７】スタック制御部が作成するデータの一例を示す図
【図２８】参照先のアプリが同じセキュアデバイス内に存在する場合のアプリのダウンロードフロー図
【図２９】本実施の形態２におけるセキュリティ確保フロー図
【図３０】ＩＣカードのハードウェアに関する機能ブロック図
【図３１】ＡＰＤＵコマンドのフォーマット図
【図３２】APDUレスポンスのフォーマット図
【図３３ａ】読み書き装置が扱うデータ型定義を示す図（１）
【図３３ｂ】読み書き装置が扱うデータ型定義を示す図（２）
【符号の説明】
【０４４６】
１０１    セキュアデバイス
１０２    他のセキュアデバイス
１０３    読み書き装置
２０１    ダウンロード管理部
２０２    アプリ格納部
２０３    アプリ（ダウンロード中）
２０４    他アプリ（ダウンロード済み）
２０５    アドレス計算部
２０６    アプリ実行部
２０７    許可コード発行部
２０８    カード間ＩＦ実行部
２０９    許可コード管理部
２１０    参照先存在判定部
３０１    ダウンロード中のアプリ
３０２    アプリコード用データ領域
３０３    アプリ計算用データ領域
３０４    アプリデータ領域
３０５    アプリコード用データ
３０６    アプリ計算用データ
３０７    ダウンロード後のアプリ
３０８    アプリコード
３０９    ダウンデータ
４０１    サーバアプリ
５０１    排他制御通信部
５０２    アプリ制御部
８０１    メモリ空間
８０２    アプリに許可された領域
８０３    システム領域
９０１    許可コードテーブル
１１０１、１１０３、１１０５、１１０７    レスポンス、
１１０２    選択コマンド
１１０４、１１０８    共有コマンド
１１０６    ＩＮＶＯＫＥコマンド
１２０１    セキュアデバイス
１２０２    セキュリティ管理部
１３０１    セキュアデバイス
１３０２    カード間ＩＦ実行部
１３０３    セキュリティ管理部
１４０１    読み書き装置への入力（セキュアデバイスからのレスポンス）
１４０２    読み書き装置からの出力（他のセキュアデバイスへのコマンド）
１４０３    読み書き装置への入力（他のセキュアデバイスからのレスポンス）
１４０４    読み書き装置からの出力（セキュアデバイスへのコマンド）
１５０１    読み書き装置
１５０２    所有者管理部
１７０１    読み書き装置
１７０２    所有者確認情報入力部
１７０３    ダウンロード条件判定部
２００１    許可コードテーブル
２２０１    指示書
２３０１    仮許可コード管理テーブル
２４０１    セキュアデバイス
２４０２    クライアントアプリ
２４０３    スタック操作部
２５０１    他のセキュアデバイス
２５０２    スタック制御部
２６０１    アプリの一部
２６０２    フレーム１
２６０３    フレーム２ＲＯＭ
２６０４    スタック
２６０５    ローカル変数
２７０１    レスポンスデータ
３００１    ＩＣカード
３００２    ＣＰＵ
３００３    ＲＯＭ
３００４    ＲＡＭ
３００５    ＥＥＰＲＯＭ
３００６    Ｉ／Ｏ  ＩＦ
３１０１    ＡＰＤＵコマンド
３２０１    ＡＰＤＵレスポンス
３３０１    読み書き装置が扱うデータ構造定義書
【図１】
0005150116.tif 000002
【図２】
0005150116.tif 000003
【図３】
0005150116.tif 000004
【図４】
0005150116.tif 000005
【図５】
0005150116.tif 000006
【図６】
0005150116.tif 000007
【図７】
0005150116.tif 000008
【図８】
0005150116.tif 000009
【図９】
0005150116.tif 000010
【図１０】
0005150116.tif 000011
【図１１ａ】
0005150116.tif 000012
【図１１ｂ】
0005150116.tif 000013
【図１２】
0005150116.tif 000014
【図１３】
0005150116.tif 000015
【図１４】
0005150116.tif 000016
【図１５】
0005150116.tif 000017
【図１６】
0005150116.tif 000018
【図１７】
0005150116.tif 000019
【図１８】
0005150116.tif 000020
【図１９】
0005150116.tif 000021
【図２０】
0005150116.tif 000022
【図２１】
0005150116.tif 000023
【図２２】
0005150116.tif 000024
【図２３】
0005150116.tif 000025
【図２４】
0005150116.tif 000026
【図２５】
0005150116.tif 000027
【図２６】
0005150116.tif 000028
【図２７】
0005150116.tif 000029
【図２８】
0005150116.tif 000030
【図２９】
0005150116.tif 000031
【図３０】
0005150116.tif 000032
【図３１】
0005150116.tif 000033
【図３２】
0005150116.tif 000034
【図３３ａ】
0005150116.tif 000035
【図３３ｂ】
0005150116.tif 000036