1.構成
図1は、本発明の一実施形態に係る通信システムの構成を示す図である。この通信システムは、携帯電話機10と、管理サーバ20と、サービスサーバ30と、リモート発行サーバ40と、サービスサーバ50とを有する。管理サーバ20、サービスサーバ30、リモート発行サーバ40およびサービスサーバ50は、ネットワーク70を介して接続されている。リーダ/ライタ510は、携帯電話機10に内蔵されているIC(Integrated Circuit)カード500と無線通信を行い、データの読み書きを行う。
1−1.携帯電話機10
図2は、携帯電話機10の外観図である。携帯電話機10は、本発明に係る携帯端末の一例である。携帯電話機10は、筐体9Aおよび筐体9Bを有する。筐体9Aと筐体9Bとは、ヒンジ3を介して連結されている。携帯電話機10は、いわゆる折り畳み型の携帯電話機である。携帯電話機10のユーザは、図2に示されるように筐体9Aおよび筐体9Bを開いた状態で音声通信やデータ通信を行う。
筐体9Aは、スピーカ6、アンテナ7および表示装置8を有する。スピーカ6は、通話の音声、操作音、楽曲音などを出力する。アンテナ7は、無線基地局との間で無線通信を行う。表示装置8は、文字や画像を表示する。筐体9Bは、キーパッド4およびマイクロホン5を有する。キーパッド4は、ユーザの操作に応じた信号を出力する。マイクロホン5は、入力された音声を電気信号に変換して出力する。
図3は、携帯電話機10のハードウェア構成を示す図である。CPU(Central Processing Unit)102は、携帯電話機10の各構成要素を制御する制御装置である。ROM(Read Only Memory)103は、携帯電話機10の基本的な動作に必要なプログラムおよびデータを記憶する記憶装置である。ROM103は、例えば、IPL(Initial Program Loader)、OS(Operating System)プラグラムおよびJava(登録商標)プラットフォームソフトウェアを記憶している。IPLは、携帯電話機10の電源が投入されたときに最初に実行するプログラムを読み出すためのプログラムである。本実施形態において、IPLは、OSプログラムを読み出す。OSプログラムは、データの入出力、記憶装置へのアクセス、各種プログラムの実行、音声通信、データ通信、その他の携帯電話機10の基本的な機能を実現させるためのプログラムである。Java(登録商標)プラットフォームソフトウェアは、OS上にJava実行環境を実現させるためのプログラムおよびデータである。Java実行環境については後述する。
RAM(Random Access Memory)104は、CPU102がプログラムを実行する際のワークエリアとして機能する記憶装置である。記憶部105は、アプリケーションプログラムおよびデータを記憶する記憶装置である。記憶部105は、フラッシュメモリ等の不揮発性メモリを有する。本実施形態において、記憶部105は、ブラウザプログラムを記憶している。ブラウザプログラムは、ネットワークを介してHTML(HyperText Markup Language)データを受信し、受信したHTMLデータに応じた情報を表示装置8に表示させるためのプログラムである(第1のアプリケーションプログラムの一例)。また、記憶部105は、電子メールプログラムを記憶している。電子メールプログラム(メーラ)は、ネットワークを介して電子メールを送受信し、送受信した電子メールの表示、編集をするためのプログラムである。電子メールには添付ファイルとして画像データやアドレス帳データを添付することが可能である。この例で、ブラウザおよびメーラはJavaアプリケーションプログラムである。
操作部106は、ユーザの操作に応じた信号を出力する。操作部106は、テンキー、発呼キー、終話キー、クリアキー、カーソルキー、電源キー、その他の入力を行うためのキーを含むキーパッド(図2のキーパッド4)等の入力装置を有する。ユーザは、キーパッドを操作することにより携帯電話機10に対して指示を入力する。表示部107は、文字や画像を表示する。表示部107は、液晶ディスプレイなどの表示装置(図2の表示装置8)を有する。表示部107は、実行中のアプリケーションプログラムにより処理された情報を表示する。表示部107は、LCD(liquid crystal display)などの表示体およびその表示体を駆動する駆動回路を有する。通信部108は、アンテナ(図2のアンテナ7)を介して無線基地局を介して音声通信またはデータ通信を行う。バス109は、構成要素間でやりとりされる信号やデータを伝送する伝送路である。さらに、携帯電話機10は、ICカード500を有している。以上の構成要素はバス109を介して接続されている。なお、本明細書において、「ICカード」は、ICカードとしての機能を有する機能ブロック(機能構成要素)を示している。
図4は、ICカード500の構成を示す図である。アンテナ501は、リーダ/ライタ510との間での無線信号の送受信に用いられる。ICチップ502は、アンテナ501が受信した信号に応じた処理を行う。ICチップ502は、プロセッサ503(第2の制御手段の一例)と、メモリ504とを有する。
ICカード500は、CPU102とデータや信号の送受信に用いられる信号線505を有している。プロセッサ503は、アンテナ501が受信した信号またはCPU102からの信号に応じてメモリ504にアクセスし、データの読み出しまたは書き込みを行う。プロセッサ503は、データの暗号化や復号化など、データの読み出しまたは書き込みに伴う処理を実行する。
図5は、メモリ504の記憶領域の構成を例示する図である。この例で、メモリ504には、初期状態において共通領域および自由領域という2つの領域が設定されている(図5(A))。共通領域は、あらかじめ決められた事業者(この例では、リモート発行サーバ40を管理、運営している事業者)により、サービス毎の領域設定およびデータの書き込みがされる領域である。自由領域は、事業者によらずデータの書き込みが可能な領域である。
共通領域はさらに複数の領域に区分することが可能であり、各領域に、異なるサービスのデータ、例えばA社の電子マネーやB社の電子マネーのデータを記憶することが可能である(図5(B))。以下、A社およびB社が提供する電子マネーをそれぞれ、「A社マネー」および「B社マネー」という。各領域は個別にアクセス制限(セキュリティ)を設定することが可能である。これにより、一枚のカードの中で複数のサービスで用いられるデータを管理することができ、また、サービス間でのデータのセキュリティも確保される。
図6は、Java実行環境を示す図である。CPU102がJava(登録商標)プラットフォームソフトウェアを実行することにより、図6に示されるJava実行環境114がOS111上に実現される。Java実行環境114は、クラスライブラリ117、JVM(Java Virtual Machine)118およびJAM(Java Application Manager)119を有する。クラスライブラリ117は、特定の機能を有するプログラムモジュール(クラス)群を1つのファイルに結合したものである。JVM118は、Javaアプリケーションプログラムとして提供されるバイトコードを解釈して実行する機能を有する。JAM119は、Javaアプリケーションプログラムのダウンロード、インストール、起動、終了、その他の動作を管理する機能を有する(第2の管理プログラムの一例)。
JAM119は、ICカード500にアクセスするためのAPI(Application Program Interface)群120を含んでいる。API群120は、例えば、サーバとの通信を開始するためのサーバ通信開始用API、ICカード500からデータを読み出すためのデータ読み出し用API、ICカード500にデータを書き込むためのデータ書き込み用API等を含んでいる。
クライアントソフトウェア121は、リモート発行サーバ40等のサーバとの通信を中継するためのソフトウェアである。デバイスドライバ122は、ICカード500にアクセスするためのドライバプログラムである。
第1ストレージ115は、JAM119の管理の下にダウンロードされるJavaアプリケーションプログラム(JarファイルおよびADF(Application Descriptive File))を格納する領域である。第2ストレージ116は、Javaアプリケーションプログラムの実行の際に生成されたデータをその終了後に格納しておくための領域である。第2ストレージ116において、インストールされたJavaアプリケーションプログラム毎に個別の格納領域が割り当てられる。あるJavaアプリケーションプログラムに割り当てられた格納領域のデータは、そのJavaアプリケーションプログラムが実行されている間のみ書き替え可能となっており、別のJavaアプリケーションプログラムは書き替えをすることができない。
Java実行環境114の元でCPU102がJavaアプリケーションプログラムを実行することにより、アプリケーション112やアプリケーション113が実現される。
図7は、携帯電話機10のソフトウェア構成を示す図である。OS111上において、ブラウザ130等のアプリケーションプログラムが動作する。ブラウザ130は、HTMLデータに応じた情報を表示装置8に表示させる機能を有する。ブラウザ130は、ネットワークからHTMLデータを受信する機能等、情報を表示させる機能に関連する機能を有する。スクリプト処理エンジン131は、このような関連機能の一つであり、Javaスクリプトを解釈し、Javaスクリプトに記述されている命令に従った処理を実行する機能を有する。スクリプト処理エンジン131は、ICカード500にアクセスするためのAPI群132を含んでいる。API群132は、例えば、サーバとの通信を開始するためのサーバ通信開始用API、ICカード500からデータを読み出すためのデータ読み出し用API、ICカード500にデータを書き込むためのデータ書き込み用API等を含んでいる。
専用アプリ140は、A社マネーやB社マネー等、特定のサービスにおいてICカード500へのアクセスを行うためのアプリケーションプログラムである(第2のアプリケーションプログラムの一例)。専用アプリ140は、特定のサービスに特化された専用のプログラムである。例えば、A社マネーおよびB社マネーには、それぞれ独自の専用アプリ140がある。この例で、専用アプリ140は、Javaアプリケーションプログラムである。
一覧管理プログラム150(第1の管理プログラムの一例)は、ICカード一覧を管理するためのプログラムである。ICカード一覧は、携帯電話機10に登録されている(または登録予定の)サービスを示す一覧である(詳細は後述)。一覧管理プログラム150は、ICカード一覧の更新や、ICカード一覧に基づいた、スクリプト処理エンジン131や専用アプリ140の起動の制御を行う。
1−2.管理サーバ20
管理サーバ20は、携帯電話機10がネットワークを介した通信を行う際の認証や課金といった処理を行うためのサーバである。また、この例で、管理サーバ20は、付加情報の管理を行う。付加情報の詳細は後述する。
図8は、管理サーバの構成を示す図である。管理サーバ20は、携帯電話機10に対し移動通信サービスを提供する通信事業者が管理、運営するサーバである。管理サーバ20は、サービスIDと、そのサービスIDに対応する起動モードとを記録した管理テーブル、およびサービスIDと、そのサービスIDに対応する付加情報を記録したデータベースと、サーバとして機能させるためのサーバプログラムとを、HDD等の記憶手段201に記憶している。また、管理サーバ20は、ネットワークを介した通信に用いられる通信インターフェース等の通信手段202、およびプログラムを実行するCPU等の制御手段203を有している。制御手段203がサーバプログラムを実行し、記憶手段201や通信手段202を制御することにより、管理サーバ20は、携帯電話機10からの要求に応じた応答を送信する機能を有する。
1−3.サービスサーバ30
図9は、サービスサーバ30の構成を示す図である。サービスサーバ30は、電子マネーサービスを提供する事業者であるA社が管理、運営するサーバである。サービスサーバ30は、サービスに関する情報を提供するためのHTMLデータと、電子マネーサービスに用いられる各種のスクリプト(残高表示スクリプト、決済スクリプト、チャージスクリプトおよび削除スクリプト)と、サーバとして機能させるためのサーバプログラムとを、HDD等の記憶手段301に記憶している。これらのスクリプトの詳細は後述する。また、サービスサーバ30は、ネットワークを介した通信に用いられる通信インターフェース等の通信手段302、およびプログラムを実行するCPU等の制御手段303を有している。制御手段303がサーバプログラムを実行し、記憶手段301や通信手段302を制御することにより、サービスサーバ30は、携帯電話機10からの要求に応じてHTMLデータやスクリプトを送信する機能を有する。
1−4.リモート発行サーバ40
図10は、リモート発行サーバ40の構成を示す図である。リモート発行サーバ40は、ICカード500のプラットフォームを提供する事業者が管理、運営するサーバである。リモート発行サーバ40は、事業者により提供されるサービスに関する情報を記録するデータベースと、データベースに情報を登録する処理、登録や決済の認証処理など、ICカード500のサービスに用いられる処理を実行させるためのサーバプログラムとを、HDD等の記憶手段401に記憶している。また、リモート発行サーバ40は、ネットワークを介した通信に用いられる通信インターフェース等の通信手段402、およびプログラムを実行するCPU等の制御手段403を有している。制御手段403がサーバプログラムを実行し、記憶手段401や通信手段402を制御することにより、リモート発行サーバ40は、携帯電話機10からの要求に応じて、サービスの登録や認証などの処理を行う機能を有する。
1−5.サービスサーバ50
図11は、サービスサーバ50の構成を示す図である。サービスサーバ50は、電子マネーサービスを提供する事業者であるB社が管理、運営するサーバである。サービスサーバ50は、サービスに関する情報を提供するためのHTMLデータと、電子マネーサービスに用いられる各種のスクリプト(残高表示スクリプト、決済スクリプト、チャージスクリプトおよび削除スクリプト)と、サーバとして機能させるためのサーバプログラムとを、HDD等の記憶手段501に記憶している。これらのスクリプトの詳細は後述する。また、サービスサーバ50は、ネットワークを介した通信に用いられる通信インターフェース等の通信手段502、およびプログラムを実行するCPU等の制御手段503を有している。制御手段がサーバプログラムを実行し、記憶手段501や通信手段502を制御することにより、サービスサーバ50は、携帯電話機10からの要求に応じてHTMLデータやスクリプトを送信する機能を有する。
2.動作
2−1.スクリプト
携帯電話機10は、ブラウザ130上から(より詳細には、スクリプト処理エンジン1
31の機能により)スクリプトを実行する機能を有する。この例で、スクリプトは、オブジェクト指向プログラミング言語であるJava(登録商標)スクリプトで記述されている。ここで、ブラウザ上から実行されるスクリプトは、ICカード500にアクセスするスクリプトを含む。「ICカード500にアクセスする」とは、ICカード500のメモリ504に記憶領域を設定すること、設定された記憶領域からデータの読み出しをすること、記憶領域にデータの書き込みをすること、または記憶領域に記憶されているデータを消去することをいう。ICカード500にアクセスするスクリプトは、新規登録を行うためのスクリプト(以下「登録スクリプト」という)、データの読み出しを行うためのスクリプト(以下「読み出しスクリプト」という)、データの書き込みを行うためのスクリプト(以下「書き込みスクリプト」という)、および登録されているデータを削除するためのスクリプト(以下「削除スクリプト」という)に大別される。
2−1−1.登録スクリプト
登録スクリプトは、ICカード500のメモリ504内に新たな記憶領域を設定し、設定した記憶領域に初期データを書き込むためのスクリプトである。登録スクリプトは、電子マネーや電子チケットを「発券」する際に用いられる。
図12は、登録スクリプトによる処理を示すシーケンス図である。以下、必要に応じて「ブラウザ」や「メーラ」、「スクリプト処理エンジン」、「API」、「スクリプト」、「OS」などのソフトウェアを処理の主体として説明をするが、これらの記載は、ソフトウェアに含まれる命令を実行しているCPU102が、RAM104、表示部107、通信部108などのハードウェア資源と協働して処理を行うことを意味する。例えば、「ブラウザがHTMLデータに従ってページを表示する」と記載した場合、ブラウザプログラムを実行しているCPU102が、HTMLデータを解釈し、HTMLデータに応じたページ(画像)を表示部107に表示させることを意味する。あるいは、「APIがブラウザにデータを引き渡す」と記載した場合、APIを実行しているCPU102が、データを所定の記憶領域に記憶した後、ブラウザを実行し、この記憶領域からデータを読み出すことを意味する。さらにあるいは、「メーラが電子メールメッセージを表示する」と記載した場合、電子メールプログラムを実行しているCPU102が、電子メールのデータを解釈し、電子メールの内容を示す画像を表示部107に表示させることを意味する。図12において、ブラウザ130とスクリプト処理エンジン131とはそれぞれ別に記載されているが、既に説明したようにスクリプト処理エンジン131はブラウザ130の機能の一部である。
ステップS100において、ブラウザ130は、登録スクリプトを読み込む。すなわち、ブラウザ130は、サービスサーバ30に対し、登録スクリプトの送信を要求する。携帯電話機10から登録スクリプトの送信の要求を受信すると、サービスサーバ30は、登録スクリプトを携帯電話機10に送信する(ステップS101)。ブラウザ130は、読み込んだ登録スクリプトを、スクリプト処理エンジン131に渡す(ステップS102)。
図13は、登録スクリプトの読み込みを指示するHTMLデータの具体例を例示する図である。この例で、スクリプトは、HTMLのobjectタグを用いて、外部リンクとして呼び出される。単一のページのHTMLに、A社の残高表示スクリプトおよびB社の残高表示スクリプトの2つのリンクが含まれていれば、これらのスクリプトは所定のルール(例えば、HTMLに記述されている順番)により順番に呼び出される。以下、再び図12を参照して説明する。
登録スクリプトを受け取ると、スクリプト処理エンジン131は、スクリプトに記述された命令に従って処理を行う。ステップS103において、スクリプト処理エンジン13
1は、リモート発行サーバ40に対し、発券要求を送信する。具体的には以下のとおりである。登録スクリプトは、API群132の中からサーバ通信開始用APIを呼び出すための命令群を含んでいる。CPU102がこれらの命令群を実行することにより、サーバ通信開始用APIが起動される。サーバ通信用APIはクライアントソフトウェア121を呼び出す。クライアントソフトウェア121は、通信部108を介してリモート発行サーバ40と通信を行う。すなわち、クライアントソフトウェア121は、リモート発行サーバ40に発券要求を送信する。発券要求は、リモート発行サーバ40における処理に用いられる情報、例えばA社のサービスを特定する識別子およびユーザの属性を示す情報(以下「ユーザ情報」という)を含む。なお図12においては、登録スクリプトから呼び出されるAPIやデバイスドライバ等の処理も、登録スクリプトを実行するスクリプト処理エンジン131の処理として記載している。他の図においても同様である。
発券要求を受信すると、リモート発行サーバ40は、発券処理に用いられる情報(以下「発券情報」という)を生成する(ステップS104)。発券情報は、例えば、サービスおよびユーザを特定するための識別子、およびICカード500に書き込まれる初期データを含む。発券情報を生成すると、リモート発行サーバ40は、生成した発券情報および対応するユーザ情報を記憶する。リモート発行サーバ40は、発券情報を携帯電話機10に送信する(ステップS105)。携帯電話機10のクライアントソフトウェア121は、発券情報を受信し、受信した発券情報をスクリプト処理エンジン131に引き渡す。
ステップS106において、スクリプト処理エンジン131は、発券情報を用いて発券処理を行う。すなわち、登録スクリプトを実行しているCPU102は、ICカード500のメモリ504にA社のサービス用の領域を設定し、設定した領域に、A社のサービスを特定する識別子および携帯電話機10を特定する識別子を書き込む命令を、ICチップ502に送信する。ICチップ502のプロセッサ503は、CPU102からの命令を受けて、メモリ504にA社のサービス用の領域を設定し、設定した領域に、A社のサービスを特定する識別子および携帯電話機10を特定する識別子を書き込む。さらに、プロセッサ503は、CPU102からの命令を受けて、メモリ504にA社のサービス用のデータ(以下このデータを「サービスデータ」という)の初期値を書き込む。いまA社のサービスが電子マネーである場合を例にとると、サービスデータは、電子マネーの残高のデータである。あるいは別の例で、このサービスがポイントカードである場合にはサービスデータはポイントの残高であり、このサービスが入場券や乗車券等のチケット発券サービスであればサービスデータはチケットを特定する情報(日付や座席等)である。
発券処理が完了すると、スクリプト処理エンジン131は、発券が完了した旨の通知をリモート発行サーバ40に送信する(ステップS107)。この通知は、発券されたサービスおよび携帯電話機10を特定する識別子を含んでいる。
さらに、スクリプト処理エンジン131は、サービスの登録に用いられる情報、この例ではユーザ情報、A社のサービスを特定する識別子および携帯電話機10を特定する識別子をサービスサーバ30に送信する(ステップS108)。サービスサーバ30は、携帯電話機10から受信した情報を記憶(登録)する(ステップS109)。情報の登録が完了すると、サービスサーバ30は、登録が完了した旨の通知を携帯電話機10に送信する(ステップS110)。この通知は、登録された情報を表示するためのHTMLデータを含んでいる。この通知を受信すると、スクリプト処理エンジン131は、通知に含まれるHTMLデータをブラウザ130に引き渡し(ステップS111)、登録スクリプトによる処理を終了する。ブラウザ130は、取得したHTMLデータに従った情報を表示する。上記のステップS103、S106、S107、S108およびS111の処理は、登録スクリプトに記述された命令に従ってスクリプト処理エンジン131が行う処理である。
2−1−2.読み出しスクリプト
図14は、読み出しスクリプトによる処理を示すシーケンス図である。読み出しスクリプトは、ICカード500のメモリ504内に既に設定されている記憶領域から、データを読み出すためのスクリプトである。読み出しスクリプトの具体例としては、電子マネーやポイントカードの残高を表示するための「残高表示スクリプト」や電子チケットの内容を確認するための「内容表示スクリプト」などがある。
読み出しスクリプトは、サービスデータを読み出すデータ読み出し用APIを呼び出すための命令群を含んでいる。CPU102がこれらの命令群を実行することにより、データ読み出し用APIが実行される。
ステップS200において、ブラウザ130は、読み出しスクリプトを読み込む。すなわち、ブラウザ130は、サービスサーバ30に対し、読み出しスクリプトの送信を要求する。携帯電話機10から読み出しスクリプトの送信の要求を受信すると、サービスサーバ30は、読み出しスクリプトを携帯電話機10に送信する(ステップS201)。ブラウザ130は、読み込んだ読み出しスクリプトを、スクリプト処理エンジン131に渡す(ステップS202)。
読み出しスクリプトを受け取ると、スクリプト処理エンジン131は、スクリプトに記述された命令に従って処理を行う。ステップS203において、スクリプト処理エンジンは、A社のサービスを特定する識別子(以下「サービスID」という)を読み出し用APIに引き渡す(すなわち、サービスを特定する)。サービスIDは、スクリプト自身、スクリプトのファイル名またはHTMLタグに含まれている。データ読み出し用APIは、このサービスIDに対応する記憶領域から読み出したサービスデータを引き渡す要求を、ICカード500のICチップ502に送信する。この要求は、A社のサービスIDを含んでいる。
ステップS204において、スクリプト処理エンジン131は、ICチップ502からサービスデータを読み出す。具体的には以下のとおりである。データ読み出し用APIからデータ引き渡しの要求を受けると、ICチップ502のプロセッサ503は、メモリ504のうち、要求に含まれるサービスIDに対応する記憶領域からサービスデータ(この例では電子マネー残高)を読み出し、読み出したサービスデータをデータ読み出し用APIに引き渡す。データ読み出し用APIは、取得したサービスデータをスクリプト処理エンジン131に引き渡す。
ステップS205において、スクリプト処理エンジン131は、取得したサービスデータをブラウザ130に引き渡し、読み出しスクリプトの処理を終了する。ブラウザ130は、取得したサービスデータに基づいた情報を表示する。上記のステップS203−S205の処理は、読み出しスクリプトに記述された命令に従ってスクリプト処理エンジン131が行う処理である。
2−1−3.書き込みスクリプト
図15は、書き込みスクリプトによる処理を示すシーケンス図である。書き込みスクリプトは、ICカード500のメモリ504内に既に設定されている記憶領域に、データを書き込むため、または既に記憶されているデータを書き換えるためのスクリプトである。書き込みスクリプトの具体例としては、電子マネーやポイントカードの「チャージ」(残高を増やす処理)を行うためのチャージスクリプト、電子マネーやポイントカードの「決済」や「ポイント使用」(残高を減らす処理)を行うための決済スクリプトがある。
ステップS300において、ブラウザ130は、書き込みスクリプトを読み込む。すなわち、ブラウザ130は、サービスサーバ30に対し、書き込みスクリプトの送信を要求する。携帯電話機10から書き込みスクリプトの送信の要求を受信すると、サービスサーバ30は、書き込みスクリプトを携帯電話機10に送信する(ステップS301)。ブラウザ130は、読み込んだ書き込みスクリプトを、スクリプト処理エンジン131に渡す(ステップS302)。
ステップS303において、スクリプト処理エンジン131は、データ書き込み用APIを呼び出し、A社のサービスID、および書き込むべき対象データ(例えば、決済する金額やチャージする金額を示すデータ)をデータ書き込み用APIに引き渡す。データ書き込み用APIは、このサービスIDに対応する記憶領域に、対象データを書き込む要求を、ICカード500のICチップ502に送信する。この要求は、A社のサービスを特定する識別子および対象データを含んでいる。
データの書き込み要求を受けると、ICチップ502のプロセッサ503は、その書き込み要求があらかじめ決められた制約条件を満たしているか判断する(ステップS304)。制約条件は、例えば、書き込み要求が「決済」や「ポイント使用」のようにサービスデータにより示される残高を減少させる処理の場合には、サービスデータから減算しようとする値(決済の額や使用するポイント)が、サービスデータの残高以下であるという条件である。あるいは、制約条件は、書き込み要求が「チャージ」のようにサービスデータにより示される残高を増加させる処理の場合には、処理後の残高があらかじめ決められた上限値以下であるという条件である。なお、書き込み要求の種類によっては、制約条件を満たしているかどうかの判定処理を行わなくてもよい。
書き込み要求が制約条件を満たしていると判断された場合(S304:YES)、プロセッサ503は、処理をステップS305に移行する。書き込み要求が制約条件を満たしていないと判断された場合(S304:NO)、プロセッサ503は、その旨を示すエラーメッセージを、データ書き込み用APIを介してスクリプト処理エンジン131に送信する。エラーメッセージを受信すると、スクリプト処理エンジン131は、エラーが発生した旨をブラウザ130に通知し(ステップS312)、処理を終了する。
ステップS305において、プロセッサ503は、リモート発行サーバ40に、データの書き込み要求を送信する。具体的には以下のとおりである。プロセッサ503は、サーバ通信用APIを呼び出す。サーバ通信用APIはクライアントソフトウェア121を呼び出す。クライアントソフトウェア121は、通信部108を介してリモート発行サーバ40と通信を行う。すなわち、クライアントソフトウェア121は、リモート発行サーバ40にデータの書き込み要求を送信する。書き込み要求は、リモート発行サーバ40における認証に用いられる情報、例えばA社のサービスIDおよび携帯電話機10の識別子を含む。
携帯電話機10からデータの書き込み要求を受信すると、リモート発行サーバ40は、受信した書き込み要求の認証を行う(ステップS306)。認証には、後述する暗号化技術および電子署名技術が用いられる。あるいは、認証に、A社のサービスIDおよび携帯電話機10の識別子などの情報が用いられてもよい。認証処理を行うと、リモート発行サーバ40は、認証の結果を携帯電話機10に送信する(ステップS307)。
ICチップ502のプロセッサ503は(サーバ通信用APIおよびクライアントソフトウェア121を介して)、リモート発行サーバ40から認証の結果を受信する。プロセッサ503は、認証結果に応じて(制約条件を満たしているかに応じて)、次に行う処理を決定する(ステップS308)。認証が成功した場合(ステップS308:YES)、プロセッサ503は、対象データを、メ
モリ504内のA社のサービスに対応する記憶領域に書き込む(ステップS309)。対象データを記憶領域に書き込むと、プロセッサ503は、書き込みが完了した旨の通知をスクリプト処理エンジン131に送信する(ステップS310)。書き込みが完了した旨の通知を受信すると、スクリプト処理エンジン131は、書き込みが完了した旨をブラウザ130に通知し(その旨を示すHTMLデータを引き渡し)(ステップS311)、書き込みスクリプトによる処理を終了する。
認証が失敗した場合(ステップS308:NO)、プロセッサ503は、対象データをメモリ504に書き込まず、認証が失敗した旨の通知をスクリプト処理エンジン131に送信する。認証が失敗した旨の通知を受信すると、スクリプト処理エンジン131は、認証が失敗した旨(エラーメッセージ)をブラウザ130に通知し(ステップS313)、書き込みスクリプトによる処理を終了する。上記のステップS303、S311、S312およびS313の処理は、書き込みスクリプトに記述された命令に従ってスクリプト処理エンジン131が行う処理である。
2−1−4.削除スクリプト
削除スクリプトは、ICカード500のメモリ504内に設定されている記憶領域内のデータを削除し、その記憶領域に対応するサービスをICカード500から削除するためのスクリプトである。削除スクリプトは、電子マネーや電子チケットを「削除」する際に用いられる。
図16は、削除スクリプトによる処理を示すシーケンス図である。ステップS400において、ブラウザ130は、削除スクリプトを読み込む。すなわち、ブラウザ130は、サービスサーバ30に対し、削除スクリプトの送信を要求する。携帯電話機10から削除スクリプトの送信の要求を受信すると、サービスサーバ30は、削除スクリプトを携帯電話機10に送信する(ステップS401)。ブラウザ130は、読み込んだ削除スクリプトを、スクリプト処理エンジン131に渡す(ステップS402)。
削除スクリプトを受け取ると、スクリプト処理エンジン131は、スクリプトに記述された命令に従って処理を行う。ステップS403において、スクリプト処理エンジン131は、リモート発行サーバ40に対し、削除要求を送信する。削除要求は、リモート発行サーバ40における処理に用いられる情報、例えばA社のサービスIDおよびユーザ情報を含む。
削除要求を受信すると、リモート発行サーバ40は、削除処理に用いられる情報(以下「削除情報」という)を生成する(ステップS404)。削除情報は、例えば、削除すべきサービスおよびユーザを特定する識別子を含む。削除情報を生成すると、リモート発行サーバ40は、記憶していたユーザ情報を、HDD等の記憶手段から削除する。リモート発行サーバ40は、削除情報を携帯電話機10に送信する(ステップS405)。携帯電話機10のクライアントソフトウェア121は、削除情報を受信し、受信した削除情報をスクリプト処理エンジン131に引き渡す。
ステップS406において、スクリプト処理エンジン131は、削除情報を用いて削除処理を行う。すなわち、削除スクリプトを実行しているCPU102は、ICカード500のメモリ504に設定されているA社のサービス用の領域を削除する命令を、ICチップ502に送信する。ICチップ502のプロセッサ503は、CPU102からの命令を受けて、メモリ504に設定されているA社のサービス用の領域に記憶されているすべてのデータを消去(削除)する。
削除処理が完了すると、スクリプト処理エンジン131は、削除が完了した旨の通知をリモート発行サーバ40に送信する(ステップS407)。この通知は、削除されたサー
ビスおよび携帯電話機10を特定する識別子を含んでいる。
さらに、スクリプト処理エンジン131は、削除されたサービスを特定する情報、この例ではユーザ情報、A社のサービスIDおよび携帯電話機10を特定する識別子をサービスサーバ30に送信する(ステップS408)。サービスサーバ30は、携帯電話機10から受信した情報を用いて、HDD等の記憶手段に記憶されているデータを削除する(ステップS409)。情報の削除が完了すると、サービスサーバ30は、削除が完了した旨の通知を携帯電話機10に送信する(ステップS410)。この通知は、サービスが削除された旨を表示するためのHTMLデータを含んでいる。この通知を受信すると、スクリプト処理エンジン131は、通知に含まれるHTMLデータをブラウザ130に引き渡し(ステップS411)、削除スクリプトによる処理を終了する。ブラウザ130は、取得したHTMLデータに従った情報を表示する。上記のステップS403、S406、S407、S408およびS411の処理は、削除スクリプトに記述された命令に従ってスクリプト処理エンジン131が行う処理である。
2−2.ICカード一覧
2−2−1.ICカード一覧の概要
この例で、携帯電話機10において、ICカード500に登録されているサービスは、ICカード一覧を用いて管理される。
図17は、ICカード一覧を例示する図である。ICカード一覧は、記憶部105に記憶されている。この例で、ICカード一覧は、「領域ID」、「サービスID」、「起動モード」、「URL」、および「発券済み」のレコードを含む。「領域ID」は、メモリ504内の記憶領域を特定する識別子である。「サービスID」は、その記憶領域に登録されているサービスを特定する識別子である。「起動モード」は、その記憶領域に対してアクセス可能な(アクセスが認められている)ソフトウェアがスクリプトおよび専用アプリのいずれであるかを示す識別子である。この例では、識別子「アプリ」は専用のアプリケーションプログラムによるアクセスが可能であること(以下この状態を「アプリモード」という)を、識別子「ブラウザ」はスクリプトによりアクセスが可能であること(以下この状態を「ブラウザモード」という)を示している。アプリモードおよびブラウザモードを総称して「起動モード」という。「URL」は、アクセス可能なソフトウェアがスクリプトである場合に、そのスクリプトの所在を示す情報である。「発券済み」は、対応するサービスについて発券が完了しているか否かを示すフラグである。フラグ「済」は発券が完了していることを示す。フラグ「未済」は発券が完了していないことを示す。
この例で、領域ID「0001」で特定される記憶領域には、サービスID「A社マネー」で特定されるサービスに関するデータが記憶されている。また、A社マネーの起動モードはアプリモードであることが示されている。領域ID「0002」で特定される記憶領域には、サービスID「B社マネー」で特定されるサービスに関するデータが記憶されている。また、B社マネーの起動モードはブラウザモードであることが示されている。さらに、このスクリプトの所在が「http://www.b-money.com/」であることが示されている。なおこの例で、ブラウザモードのサービスについては、発券済みと未発券の区別はなく、レコードは空欄になっている。
図18は、ICカード一覧に従って表示部107に表示される画面を例示する図である。図18は、図17のICカード一覧に従って表示される画面を示している。文字列601、602、603および604は、サービスIDを示す文字列である。アイコン605は、起動モードがアプリモードであることを示す画像である。アイコン606は、起動モードがブラウザモードであることを示す画像である。アイコン607は、対応するサービスが発券済みであることを示す画像である。アイコン608は、対応するサービスが未発券であることを示す画像である。図18に示される画像の表示は、一覧管理プログラムによって行われる。この例で、ブラウザモードに発券済みと未発券の区別はないが、便宜上アイコン607が表示されている。アプリモードのサービスについては、発券済みと未発券が区別されるので、発券状態に応じたアイコンが表示される。
アイコン610、612、613および614は、それぞれ、ロゴマーク等、サービスに固有の画像である。アイコン610、612、613および614は、ICカード500にアクセスするアプリケーションプログラムまたはスクリプトの付加情報の一例である。付加情報の詳細は後述する。なお、図18に例示される画面において、サービスを示すアイコン610、612、613および614は、発券/未発券を示すアイコン607および608と統合されて表示されてもよい。すなわち、サービスを特定する画像と、発券/未発券を示す画像とが統合された単一の画像がアイコンとして用いられてもよい。
2−2−2.ICカード一覧への登録(ブラウザモード)
図19は、ICカード一覧への新たなサービス(ブラウザモード)の登録処理を示すシーケンス図である。この例で、ICカード一覧への新たなサービスの登録は、図12のステップS106の発券処理に伴って行われる。この例で、図12のステップS101でダウンロードされる登録スクリプトは、ICカード一覧にサービスを登録するためのデータ、例えば、領域ID、サービスIDおよびURLを含む。
ステップS501において、スクリプト処理エンジン131は、リモート発行サーバ40から発券情報を取得する。発券情報を取得すると、スクリプト処理エンジン131は、ICカード500に対し発券を指示する(ステップS502)。スクリプト処理エンジン131から指示を受けると、ICカード500のプロセッサ503は、メモリ504に領域を設定し、設定した領域に初期データを書き込む(ステップS503)。初期データの書き込みが完了すると、プロセッサ503は、その旨をスクリプト処理エンジン131に通知する。
発券処理が完了すると、スクリプト処理エンジン131は、ICカード一覧へのサービスの登録を一覧管理プログラム150に指示する(ステップS504)。スクリプト処理エンジン131から一覧管理プログラム150への指示は、ICカード一覧への登録に用いられる情報、この例では、領域ID、サービスIDおよびURLを含む。
スクリプト処理エンジン131からサービスの登録を指示されると、一覧管理プログラム150は、指示に含まれる情報を用いて、ICカード一覧を更新する(ステップS505)。サービスが新規に登録される場合、一覧管理プログラム150は、ステップS504の指示に含まれる領域IDを含むレコードをICカード一覧内に新たに作成し、このレコードにサービスIDを登録する。この例では、「起動モード」は「ブラウザ」に設定される。ICカード一覧の更新が完了すると、一覧管理プログラム150は、ICカード一覧の更新が完了したことをスクリプト処理エンジン131に通知する(ステップS506)。一覧管理プログラム150から更新の完了を通知されると、スクリプト処理エンジン131は、発券処理が完了したことをリモート発行サーバ40に通知する(ステップS507)。この処理は、図12のステップS107の処理に相当する。上記のステップS501−S506の処理が、図12のステップS106の処理に伴って行われる。この後、図12に示される処理が行われる。
2−2−3.ICカード一覧への登録(アプリモード)
図20は、ICカード一覧への新たなサービス(アプリモード)の登録処理を示すシーケンス図である。この例で、ICカード一覧への新たなサービスの登録は、専用アプリ140のインストールに伴って行われる。
所定のイベント(例えば、ブラウザが表示している画面上で、アプリモードのサービスの新規登録を開始させるボタンが押されるというイベント)が発生すると、ブラウザ130は、ネットワーク70に接続されたサーバから専用アプリ140をダウンロードする(ステップS601)。
この例で、専用アプリ140のインストールには、ADF(Application Descriptor File)、SDF(Security Descriptor File)およびJar(Java ARchive)ファイルの3つのファイルが用いられる。ADFは、アプリケーションプログラムの属性を定義するファイルである。ADFは、SDFのURLおよびJarファイルを特定する情報を含んでいる。SDFは、Jarファイルを特定する情報を含むファイルである。Jarファイルは、アプリケーションプログラムの実体ファイルである。ステップS601においては、ADFがダウンロードされる。ADFをダウンロードすると、ブラウザ130は、このADFを用いた専用アプリ140のインストールをJAM119に指示する。指示を受けると、JAM119は、ADFを用いて専用アプリ140をインストールする。
ステップS602における専用アプリ140のインストールは、例えば以下のように行われる。JAM119は、取得されたADFに記述されたURLで特定されるリソースから、SDFを取得する。JAM119は、ADFに記述された情報で特定されるJarファイルおよびSDFに記述された情報で特定されるJarファイルが同一であることを確認する。ADFおよびSDFにより特定されるJarファイルが同一であると確認されると、JAM119は、Jarファイルを取得する。JarファイルのURLは、ADFに記述されている。
Jarファイルを取得すると、JAM119は、専用アプリ140をインストールする。インストールとは、アプリケーションプログラムの起動に用いられる情報およびアプリケーションプログラムの実体ファイルを、記憶部105に記憶することをいう。
インストールが完了すると、JAM119は、一覧管理プログラム150に対し、ICカード一覧へのサービスの登録を指示する(ステップS603)。JAM119から一覧管理プログラム150への指示は、ICカード一覧への登録に用いられる情報、この例では、領域IDおよびサービスIDを含む。
JAM119からサービスの登録を指示されると、一覧管理プログラム150は、指示に含まれる情報を用いて、ICカード一覧を更新する(ステップS604)。サービスが新規に登録される場合、一覧管理プログラム150は、ステップS603の指示に含まれる領域IDを含むレコードをICカード一覧内に新たに作成し、このレコードにサービスIDを登録する。この例では、「起動モード」は「アプリ」に設定される。また、この時点では、「発券済み」フラグは「未済」に設定される。ICカード一覧の更新が完了すると、一覧管理プログラム150は、ICカード一覧の更新が完了したことをJAM119に通知する(ステップS605)。
ICカード一覧の更新完了を通知されると、JAM119は、発券処理を行うために専用アプリ140を起動する(ステップS606)。あるいは、専用アプリ140は、ユーザにより手動で起動されてもよい。この場合は、JAM119またはOS111が、ユーザに専用アプリ140の起動を促す表示をする。起動されると、専用アプリ140は、発券処理を行う。発券処理の主体がスクリプト処理エンジン131ではなく専用アプリ140であるが、発券処理の内容は図12のステップS103−S106で説明したものと同様である。すなわち、専用アプリ140は、リモート発行サーバ140と通信し、発券情報を取得する(ステップS607)。発券情報を取得すると、専用アプリ140は、ICカード500に対し、発券の指示をする(ステップS608)。発券の指示を受けると、ICカード500のプロセッサ503は、メモリ504に領域を設定し、初期データを書き込む(ステップS609)。
発券処理が完了すると、専用アプリ140は、発券処理が完了したことを一覧管理プログラム150に通知する。専用アプリ140から一覧管理プログラム150への通知は、ICカード一覧への登録に用いられる情報、この例では、領域IDおよびサービスIDを含む。
専用アプリ140から発券処理の完了を通知されると、一覧管理プログラム150は、通知に含まれる情報を用いて、ICカード一覧を更新する(ステップS610)。ここでは、フラグ「発券済み」の値が「済」に設定される。ICカード一覧の更新が完了すると、一覧管理プログラム150は、ICカード一覧の更新が完了したことを専用アプリ140に通知する(ステップS611)。一覧管理プログラム150から更新の完了を通知されると、専用アプリ140は、発券処理が完了したことをリモート発行サーバ40に通知する(ステップS612)。以下、専用アプリ140の動作に従った処理が行われる。
2−2−4.ブラウザモードからアプリモードへの切り替え
図21は、ブラウザモードからアプリモードへの切り替え処理を示す図である。ここでは、B社のサービスがブラウザモードからアプリモードに切り替えられる場合を例に説明する。ブラウザモードからアプリモードへの切り替えは、切り替えをトリガするHTMLデータをブラウザ130が受信したことを契機として行われる。詳細には以下のとおりである。
ステップS701において、ブラウザ130は、サービスサーバ50(B社のサービスサーバ)からHTMLデータを受信する。このHTMLデータは、アプリモードへの切り替えをトリガする情報、例えば、B社の専用アプリ(以下「専用アプリ140B」という)をダウンロードさせる命令へのリンクを含んでいる。このリンクは、ダウンロードしようとするアプリケーションプログラムがICカード500にアクセスするためのアプリケーションプログラムであることを示す識別子を含んでいる。この識別子は、例えばアプリケーションプログラムのファイル名に含まれている。あるいは、この識別子は、リンクのHTMLタグに含まれていてもよい。さらにあるいは、この識別子は、ADFまたはSDFに含まれていてもよい。
専用アプリ140Bのダウンロードを要求されると、ブラウザ130は、一覧管理プログラム150にその旨を通知する(ステップS702)。ブラウザ130から通知を受けると、一覧管理プログラム150は、ダウンロードしようとする専用アプリに対応するサービスが、ブラウザモードおよびアプリモードのいずれかで既にICカード一覧に登録されているか確認する(ステップS703)。すなわち、一覧管理プログラム150は、記憶部105からICカード一覧を読み出し、さらに、読み出したICカード一覧の中に、専用アプリ140Bに対応するサービスID(この例では「B社マネー」)が既に登録されているか判断する。
ダウンロードしようとする専用アプリのサービスIDは、例えば、リンク、ファイル名またはHTMLタグに含まれている。あるいは、サービスIDは、ADFまたはSDFに含まれていてもよい。この場合、ブラウザ130は、ステップS703の判断に先立ち、ADFまたはSDFをダウンロードする。
ダウンロードしようとする専用アプリに対応するサービスが、ICカード一覧に既にアプリモードで登録されている場合(S703:アプリモード)、一覧管理プログラム150は、その旨を表示してダウンロードを中止するよう、ブラウザ130に指示をする(ステップS704)。この指示を受けて、ブラウザ130は、サービスが既にアプリモードで登録されている旨を表示し、ダウンロードを中止する(ステップS705)。こうして、専用アプリ140Bの二重登録が防止される。ダウンロードが中止されると、ブラウザ130またはOS111は、専用アプリ140Bを起動する。
ダウンロードしようとする専用アプリに対応するサービスが、ICカード一覧に既にブラウザモードで登録されている場合(S703:ブラウザモード)、一覧管理プログラム
150は、ブラウザ130に起動モード変更の指示をする(ステップS706)。この指示を受けて、ブラウザ130は、起動モードをアプリモードに切り替える旨の表示をする(ステップS707)。さらに、ブラウザ130は、専用アプリ140Bをダウンロードする(ステップS708)。なお、ステップS707の処理は省略されてもよい。あるいは、ステップS707において、ブラウザ130は、起動モード変更の承認をユーザに要求し、承認された場合に処理をステップS708に移行してもよい。
ステップS708において専用アプリ140Bをダウンロードした後は、図20のフローと同様に、専用アプリ140Bのインストールが行われる。ただしこの場合、サービス(この例ではサービスID「B社マネー」のサービス)は新規に登録されるわけではなく、既にICカード一覧に登録されている。サービスの新規登録ではない場合、既にICカード500内に領域が設定され初期データは書き込まれているので、ステップS605、606、607、608、および609の処理は行われない。すなわち、ステップS603においてICカード一覧への登録を指示されると、一覧管理プログラム150は、登録の指示が新規登録によるものか起動モード切り替えによるものか判断する。新規登録の場合、一覧管理プログラム150は、既に図20のフローで説明したとおり動作する。起動モード切り替えの場合、一覧管理プログラムは、ステップS604においてICカード一覧の起動モードの書き替えを行った後、ステップS605−S609の処理をスキップし、処理をステップS610に移行する。
ダウンロードしようとする専用アプリに対応するサービスがICカード一覧にまだ登録されていないと判断された場合(S703:未登録)、一覧管理プログラム150は、専用アプリ140をダウンロードするようブラウザ130に指示をする(ステップS709)。この指示を受けて、ブラウザ130は、専用アプリ140Bをダウンロードする(ステップS710)。
ステップS710において専用アプリ140Bをダウンロードした後は、図20のフローに従って専用アプリ140Bのインストールが行われる。また、インストールに伴って、ICカード一覧へのサービスの新規登録が行われる。なお、JAM119またはOS111は、専用アプリ140Bのインストールが完了した後、専用アプリ140Bを起動してもよい。
2−2−5.アプリモードからブラウザモードへの切り替え
図22は、アプリモードからブラウザモードへの切り替え処理を示す図である。アプリモードからブラウザモードへの切り替えは、切り替えをトリガするHTMLデータをブラウザ130が受信したことを契機として行われる。詳細には以下のとおりである。なお、図22においては、ブラウザ130およびスクリプト処理エンジン131による処理をブラウザの処理として記載している。ここでは、A社のサービスがアプリモードからブラウザモードに切り替えられる場合を例に説明する。
ステップS801において、ブラウザ130は、サービスサーバ30(A社のサービスサーバ)からHTMLデータを受信する。このHTMLデータは、ブラウザモードへの切り替えをトリガする情報、例えば、A社のサービスにアクセスするためのスクリプト(以下単に「A社のスクリプト」という)を含んでいる。このHTMLデータは、起動しようとするスクリプトがICカード500にアクセスするためのスクリプトであることを示す識別子を含んでいる。この識別子は、例えばスクリプトのファイル名に含まれている。あるいは、この識別子は、リンクのHTMLタグに含まれていてもよい。さらにあるいは、この識別子は、スクリプト自身に含まれていてもよい。ユーザがこのリンクを選択する操作を行うと、ブラウザ130は、この命令に従って、A社のスクリプトを起動するようスクリプト処理エンジン131に要求する。A社のスクリプトの起動を要求されると、スク
リプト処理エンジン131は、起動モードの変更が必要であるか判断するよう一覧管理プログラム150に指示をする(ステップS802)。
スクリプト処理エンジン131から指示を受けると、一覧管理プログラム150は、起動しようとしているスクリプトに対応するサービスが、ブラウザモードおよびアプリモードのいずれかで既にICカード一覧に登録されているか確認する(ステップS803)。すなわち、一覧管理プログラム150は、記憶部105からICカード一覧を読み出し、さらに、読み出したICカード一覧の中に、A社のスクリプトに対応するサービスID(この例では「A社マネー」)が既に登録されているか判断する。起動しようとするスクリプトのサービスIDは、例えば、スクリプト自身、スクリプトのファイル名またはHTMLタグに含まれている。
起動しようとしているスクリプトに対応するサービスがICカード一覧にまだ登録されていないと判断された場合(S803:未登録)、または起動しようとしているスクリプトに対応するサービスがICカード一覧に既にブラウザモードで登録されている場合(S803:ブラウザモード)、一覧管理プログラム150は、スクリプトを実行するようブラウザ130に指示をする(ステップS804)。この指示を受けて、ブラウザ130は、スクリプトをスクリプト処理エンジン131に引き渡す。以後、スクリプトの種類に応じて図12のステップS103以降の処理および図14、15、16のステップS203、S303、S403以降の処理のいずれかのフローに従ってスクリプトが実行される。また、サービスがICカード一覧にまだ登録されていなかった場合は、図19のフローに従ってICカード一覧への登録が行われる。なお、ICカード一覧に既にブラウザモードで登録されている場合、登録スクリプトを実行すると二重登録となり不具合を生じる可能性があるので、一覧管理プログラム150は、登録スクリプトの実行を禁止してもよい。
起動しようとしているスクリプトに対応するサービスが、ICカード一覧に既にアプリモードで登録されている場合(S803:アプリモード)、一覧管理プログラム150は、起動モードを変更するようブラウザ130に指示をする(ステップS805)。この指示を受けて、ブラウザ130は、起動モードをブラウザモードに切り替える旨の表示をする(ステップS806)。また、一覧管理プログラム150は、処理をステップS807に移行する。なお、ブラウザ130は、ユーザの指示などに応じて、モード切り替えを拒否してもよい。この場合、ブラウザ130は、ステップS807の処理の前に、一覧管理プログラム150に対して、モード切り替えが拒否されたことを通知する。また、ブラウザ130(スクリプト処理エンジン131)は、可能な範囲でスクリプトを実行する(例えば、登録スクリプトは実行されないが、読み出しスクリプトは実行される)。あるいは、ブラウザ130は、スクリプトの実行エラーが発生した旨の表示をしてもよい。
ステップS807において、一覧管理プログラム150は、ICカード一覧を書き替える)。すなわち、一覧管理プログラム150は、ICカード一覧において、A社マネーの起動モードを「ブラウザ」に設定し、「URL」のレコードに、A社のスクリプトのURLを記録する。A社のスクリプトのURLは、例えば、ステップS802における指示に含まれている。あるいは、この段階で、一覧管理プログラム150がブラウザ130からA社のスクリプトのURLを取得してもよい。ICカード一覧を更新すると、一覧管理プログラム150は、処理をステップS804に移行する。以後、既に説明したように、スクリプトの種類に応じて図12、14−16の処理が行われる。
なお、一覧管理プログラム150は、ステップS807のICカード一覧の書き替えが完了した後で、起動モードがブラウザモードに書き替えられた専用アプリ140のアンインストールを、JAM119に指示をしてもよい。この指示を受けると、JAM119は、対応する専用アプリ140をアンインストールする。
2−2−6.ICカード一覧からの起動
図23は、ICカード一覧からブラウザまたはアプリケーションプログラムを起動する処理を示すフローチャートである。ここでは、一覧管理プログラム150により、図18の画面が表示された状態を例として説明する。
ステップS901において、一覧管理プログラム150は、ユーザの操作に応じて、ICカード一覧の中から一のアイテム(サービス)を選択する。一覧表示アプリは、選択されたアイテムに対応するソフトウェアを起動する。
ソフトウェアの起動をする際、一覧管理プログラム150は、起動しようとするソフトウェアの種類に応じて次の処理を決定する(ステップS902)。スクリプトの起動が要求されている場合(ステップS902:スクリプト)、一覧管理プログラム150は、処理をステップS903に移行する。アプリケーションプログラムの起動が要求されている場合(ステップS902:アプリ)、一覧管理プログラム150は、処理をステップS905に移行する。
ステップS903において、一覧管理プログラム150は、スクリプトを取得し、取得したスクリプトを実行するようブラウザ130に要求する。この要求は、スクリプトのURLを含んでいる。ブラウザ130は、要求に含まれるURLから、スクリプトを取得する。スクリプト処理エンジン131は、取得したスクリプトを起動、実行する(ステップS904)。
ステップS905において、一覧管理プログラム150は、要求された専用アプリ140を起動、実行する。
2−2−7.ICカード一覧における付加情報の管理
この例で、一覧管理プログラム150は、ICカード一覧に従った画面(以下「一覧画面」という。例えば図18)を表示する際、付加情報を用いる。付加情報とは、一覧管理プログラム150において、一覧画面表示の際に用いられる、各ソフトウェアに固有の画像、音声、文字列、パラメータその他の情報をいう。ここでは、付加情報として画像(アイコン)が用いられる例を説明する。また、この例で付加情報は、そのサービスの起動モードを示す情報を含む。
図24は、携帯電話機10における記憶内容を例示する図である。この例で、ICカード500(正確にはメモリ504)には、サービスID「A社マネー」、「B社マネー」、「D社ポイントカード」および「E社会員証」で識別される4つのサービスが設定されている。既に説明したように、各サービスの記憶領域には、サービスIDおよびサービスデータが記憶されている。
記憶部105は、アプリケーション保存領域1051および一覧保存領域1052の2つの記憶領域を含む。アプリケーション保存領域1051は、アプリケーションプログラムを記憶するための記憶領域である(図6の第1ストレージ115に相当)。この例では特に、ICカード500にアクセスするためのアプリケーションプログラムが図示されている。サービスID「A社マネー」および「D社ポイントカード」に対応するアプリケーションプログラムが、サービスIDと対応して記憶されている。一覧保存領域1052は、ICカード一覧を記憶するための記憶領域である。この例では、ICカード一覧は、図17に例示された情報に加え、サービスに対応する付加情報を含んでいる。図24では、ICカード一覧に含まれる情報のうち、特に、付加情報と起動モードが図示されている。ICカード一覧において、サービスID「A社マネー」、「B社マネー」および「D社ポイントカード」に対応する付加情報が、サービスIDと対応して記憶されている。なお、図24においては、付加情報と起動モードとが別々に示されているが、前述のとおり起動モードは付加情報に含まれる。
この例で、ICカード500にアクセスするソフトウェアがアプリケーションプログラムである場合、ICカード一覧に記録される付加情報は、アプリケーションプログラムのインストールに伴って取得される。例えば、付加情報はアプリケーションプログラムの実体ファイルの一部として含まれており、JAM119は、実体ファイルから付加情報を抽出し、抽出した付加情報を一覧保存領域1052に記憶する。一方、ICカード500にアクセスするソフトウェアが(ブラウザ上で動作する)スクリプトである場合、付加情報は、ICカード一覧へのサービス登録時に取得され、ICカード一覧に書き込まれる。または、ICカード500にアクセスするソフトウェアがブラウザの場合、ICチップ500に対する登録、読み出し、書き込み、削除といった処理は、ICチップ500とリモート発行サーバとの間で、暗号化された状態で(すなわち秘匿されて)行われる場合がある。このような場合、帯電話機10のCPU102が実行するソフトウェアは、ICチップ500に対して実行されている処理の内容(コマンドの内容)を知ることができない場合がある。このような場合、ICチップ500に対して実行されている処理を、付加情報取得の契機とすることはできない。その場合、一覧管理プログラムが起動されたことを、付加情報取得の契機としてもよい。
図25は、付加情報の取得処理を示すフローチャートである。ステップS1001において、一覧管理プログラム150は、サーバに一覧照会を行う条件が満たされたか判断する。一覧照会を行う条件としては、例えば以下の(1)〜(4)のいずれかのものが用いられる。(1)前回照会時と現在時刻とが所定の条件を満たした場合、例えば、前回照会時から一定時間が経過した場合。例えば、その月に初めて一覧管理プログラム150を起動したとき。この場合は、一覧管理プログラム150が前回照会時の時刻(または年、月、日など)を記憶しており、記憶している時刻と現在時刻とを比較することにより条件の成立を判断する。(2)前回照会時から一定回数一覧管理プログラム150を起動した場合。例えば、前回照会時から20回一覧管理プログラム150を起動した後、21回目に。一覧管理プログラム150を起動したとき。この場合は、一覧管理プログラム150が前回照会時後の知覧プログラム150の起動回数を記憶しており、記憶している回数とあらかじめ決められたしきい値とを比較することにより条件の成立を判断する。(3)携帯電話機10が外部装置から指示を受信した場合。例えば、SMS(Short Message Service)のメッセージがプッシュ配信されたとき。この場合OS111等のプログラムが、SMSメッセージに応じてアプリケーションプログラムを起動する機能を有しており、OS111が条件の成立を判断し、一覧管理プログラム150を起動する。(4)ユーザが一覧照会の指示を入力した場合。
一覧照会を行う条件が満たされていないと判断された場合(S1001:NO)、一覧管理プログラム150は、条件が満たされるまで待機する。一覧照会を行う条件が満たされたと判断された場合(S1001:YES)、一覧管理プログラム150は、ICカード500に登録されているサービスと、一覧保存領域1052に記憶されているICカード一覧とをマッチング(照合)する(ステップS1002)。詳細には以下のとおりである。一覧管理プログラム150は、ICカード500に設定されているすべてのサービスに対応する付加情報が、記憶部105に記憶されているか判断する。詳細には以下のとおりである。一覧管理プログラム150は、ICカード500に対し、設定されているすべてのサービスのサービスIDを送信するように要求する。この要求を受けると、ICカード500のプロセッサ503は、メモリ504の各記憶領域からサービスIDを読み出し、読み出したサービスIDを要求元である一覧管理プログラム150に送信する。一覧管理プログラム150は、ICカード500から取得したサービスIDを記憶する。また、一覧管理プログラム150は、一覧保存領域1052から、記憶されている付加情報に対応するサービスIDを読み出し、読み出したサービスIDを現状情報として記憶する。現状情報とは、ICカード一覧の現状を示す情報をいう。現状情報は、サービスIDと、そのサービスIDに対応する起動モードとを含む。仮に、対応する付加情報が記憶されていないサービスIDがあった場合、一覧管理プログラム150は、そのサービスIDを現状情報として記憶しない。一覧管理プログラム150は、ICカード500から取得したサービスIDと、一覧保存領域1052から読み出したサービスIDとを比較する。この比較は、対処となるサービスIDを所定のアルゴリズム(例えば、ICカード一覧の上から順番に特定するアルゴリズム)に従って順番に一つずつ特定して行われる。ICカード500から取得したサービスIDのうち、一覧保存領域1052に記憶されていないものがあった場合、一覧管理プログラム150は、付加情報が記憶されていないサービスが存在すると判断する。一覧管理プログラム150は、付加情報が記憶されていないサービスのサービスIDを、差分情報として記憶する。差分情報とは、ICカード500に登録されているサービスに関する情報と、一覧保存領域1052に記憶されているICカード一覧に含まれている情報との差分を示す情報をいう。具体的には、差分情報は、付加情報が記憶されていないと判断されたサービスのサービスIDを含む。ICカード500から取得したサービスIDがすべて一覧保存領域1052にも記憶されていた場合、一覧管理プログラム150は、ICカード500に設定されているすべてのサービスの付加情報が記憶部105に記憶されていると判断する。この場合、差分情報の内容は空である。
ステップS1003において、一覧管理プログラム150は、管理サーバ20に対し、ICカード一覧の照会の要求を送信する。この要求は、現状情報および差分情報を含む。
ICカード一覧の照会の要求を受信すると、管理サーバ20は、ICカード一覧において起動モードを変更すべきサービスが存在するか否か判断する(ステップS1004)。この判断は、例えば以下のように行われる。管理サーバ20は、携帯電話機10が利用可能なサービスについて、サービスIDと、起動モードとを対応させた管理テーブルを記憶している。
図26は、管理サーバ20が記憶している管理テーブルを例示する図である。この例では、管理テーブルに記憶されている情報により、サービスID「A社マネー」の起動モードが「ブラウザ」であることが示されている。これは、「A社マネー」の起動モードをブラウザモードにしたいという、A社または通信事業者の意向を示している。同様に、この例では、サービスID「E社会員証」の起動モードが「ブラウザ」であることが示されている。また、サービスID「B社マネー」および「D社ポイントカード」の起動モードは指定されていないことが示されている。
再び図25を参照する。管理サーバ20は、受信した要求に含まれる現状情報と、管理テーブルに記憶されている内容とを比較する。ここでは特に、起動モードについて比較が行われる。この比較は、所定のアルゴリズムに従って、要求に含まれる現状情報に含まれるサービスIDの中から、対象となるサービスIDを1つずつ順番に特定し、対象となるサービスIDについて、現状情報に含まれる起動モードと管理テーブルに含まれる起動モードとが一致するか判断する。要求に含まれる情報と管理テーブルに記憶されている内容とに異なっている部分があった場合、管理サーバ20は、起動モードの変更が必要であると判断する(S1004:YES)。起動モードの変更が必要であると判断された場合、管理サーバ20は、処理をステップS1005に移行する。要求に含まれる情報と管理テーブルに記憶されている内容とに異なっている部分が無かった場合、管理サーバ20は、ICカード一覧の更新が必要でないと判断する(S1004:NO)。起動モードの変更が必要でないと判断された場合、管理サーバ20は、処理をステップS1008に移行する。この例で、携帯電話機10から受信した要求は、サービスID「A社マネー」の起動モードがアプリモードであること示す情報を含んでいる。一方、管理テーブルによれば、「A社マネー」の起動モードはブラウザモードである。両者は一致しないので、管理サーバ20は、起動モードの変更が必要であると判断する。なお、この例で、管理テーブルにおいて、サービスID「B社マネー」および「D社ポイントカード」について起動モードの指定がないことが示されているので、これらについては変更要否の判断の対象とならない。また、サービスID「E社会員証」については、ICカード一覧にサービスが登録されていないので、変更要否の判断は行われない。
ステップS1005において、管理サーバ20は、起動モード変更の指示を、要求の送信元である携帯電話機10に送信する。この指示は、少なくとも、サービスIDと、そのサービスIDに対応する起動モードを示す情報とを含む。
管理サーバ20から指示を受信すると、一覧管理プログラム150は、指示の内容に応じてICカード一覧の更新を行う(ステップS1006)。
図27は、ステップS1006におけるICカード一覧の更新処理の詳細を示すフローチャートである。ステップS1101において、一覧管理プログラムは、所定のアルゴリズム(例えば、応答の先頭から順番にサービスIDを特定するアルゴリズム)に従って、処理の対象となるサービスIDを特定する。
ステップS1102において、一覧管理プログラム150は、処理の対象となるサービスIDについて、指示に含まれる情報に基づいて、アプリモードからブラウザモードに変更するのか、ブラウザモードからアプリモードに変更するのか判断する。アプリモードからブラウザモードに変更する場合(S1102:B)、一覧管理プログラム150は、処理をステップS1103に移行する。ブラウザモードからアプリモードに変更する場合(S1102:A)、一覧管理プログラム150は、処理をステップS1106に移行する。
ステップS1103において、一覧管理プログラム150は、変更の対象となるサービスに対応するアプリケーションプログラムの付加情報を一覧保存領域1052のICカード一覧から削除する。また、一覧管理プログラム150は、このサービスの新たな付加情報を、ICカード一覧に追加する(ステップS1104)。詳細には以下のとおりである。一覧管理プログラム150は、管理サーバ20に対し、付加情報の送信をするように要求する。この要求は、付加情報が記憶されていないサービスのサービスID(この例では、サービスID「A社マネー」)を含む。この要求を受信すると、管理サーバ20は、データベースにおいて、要求に含まれるサービスIDに対応する付加情報を検索する。データベース内に所望の付加情報が含まれていた場合、管理サーバ20は、データベースから付加情報を抽出する。管理サーバ20は、抽出した付加情報および対応するサービスIDを含む応答を、要求の送信元である携帯電話機10に送信する。データベース内に所望の付加情報が含まれていなかった場合、管理サーバ20は、サービスIDと、そのサービスIDに対応する付加情報は無い旨を含む応答を、携帯電話機10に送信する。この応答を受信すると、一覧管理プログラム150は、受信した応答から付加情報およびサービスIDを抽出し、抽出した付加情報を一覧保存領域1052に記憶する。こうして、一覧管理プログラムは、ICカード一覧において欠落していた付加情報を取得する。要求された付加情報が無い旨を含む応答を受信した場合、一覧管理プログラムは、そのサービスIDについて付加情報が取得できなかった旨を一覧保存領域1052に記憶する。
一覧管理プログラム150は、付加情報を取得する際、スクリプトのURLもあわせて取得する。一覧管理プログラム150は、取得した付加情報およびスクリプトのURLを、ICカード一覧に追加する。ICカード一覧の書き換えが完了すると、一覧管理プログラム150は、このサービスに対応するアプリケーションプログラムをアンインストールするように、JAM119に要求する。この要求を受けると、JAM119は対象となるアプリケーションプログラムをアンインストールする(ステップS1105)。
ステップS1106において、一覧管理プログラム150は、変更の対象となるサービスに対応するアプリケーションプログラムをインストールするように、JAM119に要求する。JAM119への要求には、インストールされるアプリケーションプログラムのADFのURLが含まれる。このURLは、例えば、この段階で管理サーバ20と通信を行うことにより取得される。あるいは、このURLは、ステップS1005における指示に含まれていてもよい。この要求を受けると、JAM119は対象となるアプリケーションプログラムをインストールする。ステップS1107において、一覧管理プログラムは、このサービスの付加情報をICカード一覧から削除する。ステップS1108において、一覧管理プログラム150は、アプリケーションプログラムのインストールに伴って取得された付加情報を、ICカード一覧に追加する。なお、ICカード500と管理サーバ20との間の処理が一覧管理プログラム150に対して秘匿されている場合、ステップS1107の処理は行われない。
ステップS1109において、一覧管理プログラム150は、応答に含まれていたすべてのサービスIDについて処理が完了したか判断する。まだ処理が済んでいないサービスIDがあれば(S1109:NO)、一覧管理プログラムは、処理を再びステップS1101に移行する。すべてのサービスIDについて処理が完了すると(S1109:YES)、一覧管理プログラムは、図27の処理を終了する。
この例では、サービスID「A社マネー」の起動モードが、アプリからブラウザに変更される。すなわち、ICカード一覧において、サービスID「A社マネー」に対応する起動モードは「ブラウザ」に書き換えられ、「URL」のフィールドには管理サーバ20からの応答に含まれていたURLが書き込まれる。サービスID「B社マネー」および「D社ポイントカード」についての情報は変更されていない。
図28は、ステップS1006において図24の一覧が更新された後の状態を示す図である。図24と比較すると、サービスID「A社マネー」に対応するアプリケーションプログラムがアプリケーション保存領域から、サービスID「A社マネー」に対応する付加情報が一覧保存領域1052から、それぞれ削除されている。
再び図25を参照する。ステップS1007において、一覧管理プログラム150は、一覧の更新が完了した旨の応答を、管理サーバ20に送信する。
ステップS1104において起動モードの変更が必要ないと判断された場合、または一覧管理プログラム150から更新完了の応答を受信した場合、管理サーバ20は、ICカード500とICカード一覧とにアンマッチがあるか、すなわち、ICカード500に設定されているサービスのうち、ICカード一覧に情報が記録されていないサービスがあるか判断する(ステップS1008)。この判断は、ステップS1003の要求に含まれる差分情報を用いて行われる。アンマッチがあると判断された場合(S1008:YES)、管理サーバ20は、処理をステップS1009に移行する。アンマッチが無いと判断された場合(S1008:NO)、管理サーバ20は、図25の処理を終了する。
ステップS1009において、管理サーバ20は、ICカード一覧において不足している情報を携帯電話機10に送信する。管理サーバ20は、通信システムにおいて利用可能なICカードサービスに関するデータベースを記憶している。管理サーバ20は、このデータベースから、ICカード一覧において不足している情報を抽出し、抽出した情報を携帯電話機10に送信する。対象となるサービスが図26の管理テーブルにおいてアプリモードとして記録されている場合、携帯電話機10に送信される情報は、専用アプリ140のADFのURL、または、専用アプリ140のADFへのリンクが記載されたページのURLを含む。対象となるサービスが管理テーブルにおいてブラウザモードとして記録されている場合、携帯電話機10に送信される情報は、スクリプトのURLを含む。対象となるサービスが管理テーブルにおいて起動モードの指定なしとして記録されている場合、携帯電話機10に送信される情報は、アプリモード場合およびブラウザモードの場合のいずれかの情報を含む。
この例において、差分情報にはサービスID「E社会員証」が含まれ、管理テーブルにおいて「E社会員証」の起動モードはブラウザモードであることが示されている。したがって、管理サーバ20は、サービスID「E社会員証」に係るサービスをブラウザモードで登録するための情報を含むデータを、携帯電話機10に送信する。
ステップS1010において、一覧管理プログラム150は、ICカード一覧を更新する。更新は、図27のフローと同様に行われる。ブラウザモードのサービスが新たに追加される場合にはステップS1103−S1105の処理が、アプリモードのサービスが新たに追加される場合にはステップS1106−S1108の処理が行われる。一覧の更新が完了すると、一覧管理プログラム150は、更新が完了した旨の応答を管理サーバ20に送信する(ステップS1011)。
更新完了の応答を受信すると、管理サーバ20は、ICカード一覧の最終チェックを行う(ステップS1012)。最終チェックは、例えば、差分情報に含まれる全てのサービスIDに関する情報が、ICカード一覧に追加されたか否かの確認を含む。管理サーバ20のデータベースに情報が記録されていない等の理由でICカード一覧に追加できなかったサービスがある場合、管理サーバ20は、ICカード一覧に不備があると判断する(S1012:NG)。ICカード一覧に不備があると判断された場合、管理サーバ20は、携帯電話機10に対してエラー通知を送信する(ステップS1013)。管理サーバ20からエラー通知を受信すると、一覧管理プログラム150は、エラーが発生した旨を示す画面を表示部107に表示し(ステップS1013)、図25のフローを終了する。チェック項目をすべてパスした場合、管理サーバ20は、ICカード一覧に不備は無いと判断する(S1012:OK)。ICカード一覧に不備があると判断された場合、管理サーバ20は、図25のフローを終了する。
図29は、付加情報取得後の携帯電話機10における記憶内容を例示する図である。処理の前(図28)においてICカード一覧から欠落していた、サービスID「A社マネー」および「E社会員証」に対応する付加情報が取得され、欠落部分が補充されている。なお、サービスID「E社マネー」のサービスについては、処理の前においては、ICカード500に発券はされていたものの、ICカード一覧にサービスIDが記録されていなかった。また、サービスID「E社マネー」のサービスについては、管理テーブルにも記載がない。
付加情報の取得が完了すると、一覧管理プログラム150は、取得した付加情報を使用する。すなわち、一覧管理プログラム150は、一覧保存領域1052に記憶された付加情報を用いて一覧画面を表示する。
なお、ステップS1003やS1009のように、ネットワーク70を介した通信が発生する場合、一覧管理プログラム150は、通信をする前に、通信の許可をユーザに求めてもよい。ユーザが通信を許可した場合、一覧管理プログラム150は、通信を行う。ユーザが通信を許可した場合、一覧管理プログラム150は、通信を行わずに処理を進める。ユーザが通信を許可しなかった場合や、携帯電話機10が無線通信の圏外にあった場合など付加情報を取得できない場合がある。このような場合、一覧管理プログラム150は、付加情報を取得できなかった旨を示す情報を、対応するサービスIDとともに、一覧保存領域1052に記憶してもよい。付加情報を取得できなかった旨を示す情報が記憶されていた場合、一覧管理プログラム150は、特定できないサービスが設定されている旨(例えば「?不明のサービスあり?」という文字列または所定のアイコン)を一覧画面において表示する。
以上で説明したように、この処理によれば、管理サーバ20において、携帯電話機10のICカード500に登録されているサービスの動作モードを制御できる。また、ICカード500に登録されているサービスとICカード一覧にアンマッチが生じた場合でも、両者が整合するように自動的にリカバリーできる。
3.セキュリティ
次に、以上で説明したサービスのセキュリティについて説明する。これまで詳しい説明は省略したが、スクリプトによるICカード500へのアクセスにおいては、暗号化技術が用いられる。
図30は、通信システムにおいて用いられる暗号化技術の概要を示す図である。認証局CAは、所定の事業者(例えば携帯電話機10の回線事業者)により管理および運営される認証局である。認証局CAは、認証局の秘密鍵KprCAおよび公開鍵KpubCAを発行する。さらに、認証局CAは、携帯電話機10に対して電子証明書Smを発行する。電子証明書Smは、認証局CAの電子署名および公開鍵KpubCAを含んでいる。携帯電話機10は、電子証明書Dmを記憶している。
認証局CAは、サービス提供事業者に対して、秘密鍵KprCPおよび公開鍵KpubCPを発行する。図30では、サービスサーバ30を運営するA社がサービス提供事業者として例示されている。鍵の発行を受けているサービス提供事業者は、認証局CAに対し、ICカードサービスの利用申請をする。この利用申請は、公開鍵KpubCPを含む。認証局CAは、利用申請を受けて、電子証明書SCPおよびサービス提供事業者のIDを示すIDデータを発行する。電子証明書SCPは、認証局CAの電子署名および公開鍵KpubCPを含んでいる。認証局CAの電子署名は、ハッシュ関数による公開鍵KpubCPのメッセージダイジェストを秘密鍵KprCAで暗号化したものである。サービスサーバ30は、秘密鍵KprCP、公開鍵公開鍵KpubCP、電子証明書SCPおよびIDデータを記憶する。
サービスサーバ30が携帯電話機10に送信するスクリプトは、実行コード(スクリプト本体)と、電子証明書SCPと、IDデータとがパッケージされたものである。スクリプトを受信すると、携帯電話機10は、パッケージから電子証明書SCPを抽出する。携帯電話機10は、抽出した電子証明書SCPに含まれる電子署名を、電子証明書Dmに含まれる公開鍵KpubCAで復号化し、メッセージダイジェストを取得する。さらに、携帯電話機10は、電子証明書Dmに含まれる公開鍵KpubCAにハッシュ関数を適用し、メッセージダイジェストを生成する。携帯電話機10は、生成したメッセージダイジェストと、復号化により取得したメッセージダイジェストとを比較する。両者が一致した場合、携帯電話機10は、スクリプトが正当なものであると判断し、実行コードを実行する。両者が一致しなかった場合、携帯電話機10は、スクリプトが不正なものであると判断し、実行コードを実行しない。携帯電話機10においてこれらの処理は、ソフトウェアにより行われる。
以上はサービスサーバ30から受信したスクリプトの正当性を確認する技術であるが、ICカード500とリモート発行サーバ40との間においても、同様に暗号化技術を用いた通信が行われる。ICカード500は、暗号化通信のためのソフトウェアを記憶しており、これを用いてリモート発行サーバ40と暗号化通信を行う。なお、上記で説明した暗号化通信の具体的処理はあくまで一例であり、通信相手の正当性を確認できるものであれば、これ以外の暗号化技術が用いられてもよい。
4.他の実施形態
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
4−1.変形例1
管理サーバ20が携帯電話機10に対し起動モード変更の指示をするタイミングおよび新たな付加情報を送信するタイミングは、実施形態で説明したものに限定されない。実施形態では、起動モード変更の指示(図25:ステップS1005)と新たな付加情報の指示(図27:ステップS1104およびS1108)とは異なるタイミングで行われた。しかし、新たな付加情報が、起動モード変更の指示に含まれていてもよい。すなわち、携帯電話機10は、起動モード変更の指示と付加情報とを同時に取得してもよい。
4−2.変形例2
ICカード一覧の更新が必要であるかの判断を行う主体は、実施形態で説明したものに限定されない。例えば、携帯電話機10が、ICカード一覧の更新が必要であるかの判断を行ってもよい。この場合、携帯電話機10は、管理サーバ20から、一覧の照会に用いられる情報、例えば、要求に含まれていたサービスIDに対応する起動モードを特定する情報を含む応答を受信する。一覧管理プログラム150は、受信した応答から起動モードを特定する情報を記憶し、ICカード一覧の内容と対比する。両者が異なっていた場合、一覧管理プログラム150は、更新が必要であると判断する。
4−3.変形例3
実施形態において、ICカード一覧の照会と付加情報の管理は、ともに管理サーバ20が行っていた。しかし、これらの処理は、それぞれ別のサーバ装置により行われてもよい。
4−4.変形例4
実施形態において、ICカード500に設定されているサービスと、記憶部105に記憶されている付加情報との対比はサービスIDを用いて行われた。しかし、サービスID以外の別の識別子が、この対比に用いられてもよい。
4−5.変形例5
実施形態において、付加情報がICカード一覧の情報の一部である例を説明した。しかし、付加情報は、ICカード一覧とは別の記憶領域に記憶された、ICカード一覧とは別のデータであってもよい。
4−6.変形例6
実施形態において、ICカード一覧の更新要否の判定に用いられるテーブル(図26の管理テーブル)と、付加情報の検索に用いられるデータベースとが別である例を説明した。しかし、付加情報の検索に用いられるデータベースが、管理テーブルに相当する情報を含んでいてもよい。この場合、管理サーバ20は、データベースを参照してICカード一覧の更新要否を判定する。
4−7.変形例7
付加情報の取得が行われるタイミングは、図27で例示したものに限定されない。一覧管理プログラム150は、前回更新時から所定時間が経過したものなど、ステップS1001の一覧更新の条件と同様の条件を満たした付加情報について、管理サーバ20に更新を要求してもよい。この場合、管理サーバ20は、携帯電話機10からの要求に応じて、付加情報を送信する。この構成によれば、最新の付加情報を用いることができる可能性が高められる。
4−8.変形例8
付加情報を取得できなかった場合のエラー処理は、実施形態で説明したものに限定されない。付加情報を取得できないということは、管理サーバ20で管理されていない不正なサービスがICカード500に設定されている可能性がある。したがって、このような場合に、管理サーバ20は、SMS等を用いた遠隔制御により、携帯電話機10(の機能の一部)をロックしたり、強制的にリセットしたり、使用不能にしたりする処理を行ってもよい。
4−9.変形例9
図12、14−16において、各スクリプトの動作を、スクリプト自体の機能と、スクリプトから呼び出されるAPIやデバイスドライバの機能とに分けて説明したが、機能の分配は実施形態で説明したものに限定されない。例えば、実施形態でAPIの機能として説明された機能を実現するための命令群が、スクリプト本体に記述されていてもよい。すなわち、スクリプト本体がその機能を有していてもよい。あるいは、実施形態でスクリプトの機能として説明された機能を実現するための命令群が、スクリプト本体以外のAPI、モジュール、他のスクリプト、関数等に記述されていてもよい。要は、スクリプト本体に直接または間接的に記述されている命令群により、図12、14−16の処理が実現されるのであれば、ソフトウェア間の役割分担はどのようなものでもよい。
4−10.変形例10
スクリプトを記述するプログラミング言語はJavaスクリプトに限定されない。C++など、他のオブジェクト指向プログラミング言語や、Flashなどブラウザ上のコンテンツが用いられてもよい。あるいは、非オブジェクト指向プログラミング言語が用いられてもよい。
4−11.変形例11
スクリプトの所在を示す所在情報は、URLに限定されない。スクリプトの所在を特定できるのであれば、どのような情報が用いられてもよい。
4−12.変形例12
本稿でいう「ICカード」は、必ずしもカード型の形状を有していなくてもよい。「カード」とはICカード500の機能を象徴する語であって、形状を特定するものではない。ICカードは、アンテナと、個別にアクセス制限を設定可能な複数の記憶領域を有するメモリと、アンテナからの信号または第1の制御手段(実施形態ではCPU102)からの信号に応じてメモリにアクセスする第2の制御手段(実施形態ではプロセッサ503)とを有するものであれば、その形状はどのようなものであってもよい。また、ICカード500のメモリ504の記憶領域の構成は、図5に示したものに限定されない。メモリ504は、自由領域を有していなくてもよい。あるいは、メモリ504は、自由領域に加えてさらに別の第3の領域を有していてもよい。
4−13.変形例13
携帯電話機10のハードウェア構成は、図3で説明したものに限定されない。必要な機能を実現できるのであれば、携帯電話機10はどのようなハードウェア構成を有していてもよい。特に、複数のプログラムによる並列処理を可能とする構成として、携帯電話機10がマルチプロセッサ(複数のプロセッサ)を有する場合、これら複数のプロセッサが全体として本稿の「第1の制御手段」に相当する。この場合において、各プロセッサがそれぞれ異なるプログラムを実行してもよい。例えば、第1のプロセッサがJAMを実行し、第2のプロセッサがブラウザ等のアプリケーションプログラムを実行してもよい。この例では、JAMを実行している第1のプロセッサが「管理手段」として機能し、ブラウザを実行している第2のプロセッサが「第1のアプリケーション手段」として機能する。「第1のアプリケーション手段が管理手段にデータを送る」とは、第1のプロセッサと第2のプロセッサの間で信号のやりとりをすることをいう。
4−14.変形例14
アプリケーションプログラムを記述するプログラミング言語はJava(登録商標)に限定されない。C++など、他のオブジェクト指向プログラミング言語が用いられてもよい。あるいは、非オブジェクト指向プログラミング言語が用いられてもよい。また、ステップS601−602において説明した、アプリケーションプログラムをインストールする処理はあくまで例示であり、アプリケーションプログラムのファイル構成およびインストールする手順はこれに限定されない。
4−15.変形例15
上述の実施形態においてCPU102によって実行されるプログラムは、磁気記録媒体(磁気テープ、磁気ディスク(HDD(Hard Disk Drive)、FD(Flexible Disk))など)、光記録媒体(光ディスク(CD(Compact Disk)、DVD(Digital Versatile Disk))など)、光磁気記録媒体、半導体メモリ(フラッシュROMなど)などのコンピュータ読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。