以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した情報処理システムの全体の構成例を示す図である。
端末SAM(Secure Application Module)クライアント(端末装置)11−1乃至11−3は、それぞれネットワーク12に接続されている。また、ネットワーク12には、サーバ14−1乃至14−3が接続されている。
サーバ14−1はサービス提供者Aが運営しており、サーバ14−2はサービス提供者Bが運営しており、サーバ14−3はサービス提供者Cが運営している。すなわち、サーバ14−1乃至14−3は、それぞれ異なるサービス提供者により運営されている。ネットワーク12は、例えば、LAN(Local Area Network)である。
なお、以下において、端末SAMクライアント11−1乃至11−3を個々に区別する必要がない場合、端末SAMクライアント11と称し、サーバ14−1乃至14−3を個々に区別する必要がない場合、サーバ14と称する。また、サービス提供者A、B、およびCを個々に区別する必要がない場合、サービス提供者と称する。なお、各サービス提供者には、それぞれ異なるドメインが対応付けられている。
サービス提供者(サーバ14)は、端末SAMクライアント11からの要求に基づいて、端末SAMクライアント11に鍵(共通鍵)やスクリプトを送信する(配信する)。
端末SAMクライアント11は、複数のスクリプトを記憶することができ、スクリプトを実行して図示せぬICカードにアクセスする。例えば、端末SAMクライアント11は、スクリプトを実行し、ICカード内のデータを更新する。そして、端末SAMクライアント11は、スクリプトの実行結果や問い合せなどを、ネットワーク12を介して、対応するサービスを提供しているサーバ14に送信する。なお、ネットワーク12がオフラインである場合、端末SAMクライアント11は、スクリプトの実行結果を保持しておき、オンラインになったとき、その実行結果を、ネットワーク12を介してサーバ14に送信する。また、ICカードと端末SAMクライアント11の間の情報の授受には、共通鍵が用いられる。
次に、端末SAMクライアント11の機能的構成例を説明する。図2は、図1の端末SAMクライアント11の機能的構成例を示すブロック図である。
端末SAMクライアント11は、制御端末41、端末SAM42、およびICカードリーダライタアンテナ43の機能的構成を有する。
制御端末41は、例えばPOS(Point Of Sales)端末である。制御端末41は、ICカード51に対してデータを更新する指令を出したり、ICカード51から読み出されたデータを、ネットワーク12(図1)を介してサーバ14に送信する。
ICカードリーダライタアンテナ43は、外部のICカード51と非接触により通信を行い、ICカードに記憶されている各種のデータの読み出しや、データの書き込みを行なう。例えば、ICカードリーダライタアンテナ43は、ICカード51に記憶されているICカード51に固有の識別番号やICカード51に蓄積されている金額などのデータを読み出す。またICカードリーダライタアンテナ43は、ICカード51と非接触により通信を行い、ICカード51に蓄積されている金額などのデータを書き換える(更新する)。このとき、ICカード51とICカードリーダライタアンテナ43を介するアプリケーション(端末SAM42)との間で授受される情報は、共通鍵(以下においては、鍵とも称する)を用いて暗号化されている。なお、本実施の形態では、ICカード51とICカードリーダライタアンテナ43とが非接触式であるとして説明したが、ICカードとICカードリーダライタとが接触式であってもよい。
端末SAM42は、ICカードリーダライタアンテナ43から供給されたデータに対して、処理の処理を実行したり、制御端末41を介して入力される指令に基づいてスクリプトを実行する。また、端末SAM42は、スクリプトを実行した結果を制御端末41に出力する。端末SAM42は、端末SAMクライアント11内のデータをセキュアに管理する端末装置である。
図3は、図2の端末SAM42の機能的構成例を示すブロック図である。
端末SAM42には、主制御部71、ドメイン管理部72、スクリプト制御部73、フラッシュメモリ74、RAM(Random Access Memory)75、およびカード制御部76が設けられている。
主制御部71は、ドメイン管理部72とスクリプト制御部73を制御する。例えば、主制御部71は、ドメイン管理部72に所定のスクリプトを読み出すよう指令したり、スクリプト制御部73に、スクリプトを実行するように指令する。主制御部71はまた、制御端末41から供給されるデータや指令を受け付けたり、制御端末41にデータや指令を出力する。例えば、主制御部71は、サービス提供者を識別するドメインIDとスクリプトを識別するスクリプトIDとともに、制御端末41から供給されてきた、スクリプトの実行要求とパラメータの入力を受け付ける。ここで、ドメインIDは、サービス提供者を識別する識別情報である。また、スクリプトIDは、サービス提供者から提供されたスクリプトを識別する識別情報である。
なお、本実施の形態においては、ドメインIDが、サービス提供者に対応するようにしたが、サービス提供者が提供するサービス毎に異なるドメインIDを設定するようにしてもよい。例えば、サービス提供者Aが同じ種類のICカードに対して3つのサービスを提供する場合に、3つの異なるドメインIDを有するようにしてもよい。
ドメイン管理部72は、フラッシュメモリ74に記憶されるスクリプトや鍵を、ドメイン毎に分けて読み出したり、書き込む制御を行なう。またドメイン管理部72は、実行されるスクリプトを保持する(格納する)RAM75を更新する。さらにドメイン管理部72は、主制御部71から実行が指令されたドメインIDに対応するドメインを、実行ドメインとして把握する。また、例えば、ドメイン管理部72は、RAM75の実行領域83に格納してあるスクリプトIDを把握する。なお、以下においては、実行が指令されたドメインIDに対応するドメインであって、RAM75に保持されているスクリプトに対応するドメインを、実行ドメインと称する。また、ドメイン管理部72は、フラッシュメモリ74にデータを格納する場合にそのデータを暗号化し、逆に、フラッシュメモリ74からデータを読み出す場合に暗号化されているデータを復号する。
例えば、主制御部71からスクリプトの実行の指令とともに、ドメインIDとスクリプトIDが供給されてきた場合、ドメイン管理部72は、ドメインIDで特定されるドメイン(例えば、ドメイン81)が記憶されている記憶領域(フラッシュメモリ74内の記憶領域81A)から、スクリプトIDで特定されるスクリプト(例えば、スクリプト91)を読み出す。読み出されたスクリプトは暗号化されているので、ドメイン管理部72は、読み出したスクリプト(暗号化されているスクリプト)を復号し、復号したスクリプトを、RAM75に配置(展開)する。また例えば、ドメイン管理部72は、フラッシュメモリ74から鍵を読み出し、RAM75に配置する。
なお、以下においては、ドメイン管理部72が実行ドメインだけでなく、RAM75の実行領域83に格納されているスクリプトIDをも把握するようにして説明するが、ドメイン管理部72が、単に実行ドメインのみを把握し、スクリプト制御部73が、RAM75の実行領域83に記憶されているスクリプトIDを把握するようにしてもよい。この場合の例については、後述する。
スクリプト制御部73は、RAM75に保持(格納)されているスクリプトを実行する。スクリプトは中間言語形式であるので、スクリプト制御部73は、中間言語形式のスクリプトを実行コードに変換し、実行コードに基づいて処理を実行する(スクリプトを実行する)。また、スクリプト制御部73は、RAM75に保持されているスクリプトを確認し、そのスクリプトに必要なアクセス鍵がRAM75に保持されているか否かを確認する。例えば、RAM75に必要なアクセス鍵が保持されていない場合には、これを主制御部71に報告する。さらに、スクリプト制御部73は、カード制御部74およびICカードリーダライタアンテナ43を介して、ICカード51との間でデータを授受する。
フラッシュメモリ74は、ドメイン毎にスクリプトや鍵を記憶することができるように、複数の領域に区分されている記憶領域を有する。図3の例の場合、第1のドメインID(例えば、サービス提供者Aに対応するドメインID)に対応するドメイン81用の記憶領域を、記憶領域81Aと称し、第2のドメインID(例えば、サービス提供者Bに対応するドメインID)に対応するドメイン82用の記憶領域を、記憶領域82Aとする。すなわち、フラッシュメモリ74の記憶領域が、記憶領域81Aと記憶領域82Aとに分割されている。換言すれば、記憶領域81Aは、例えば、ドメイン81に対応するサービス提供者Aが提供するスクリプトや鍵を記憶するための領域であり、記憶領域82Aは、ドメイン82に対応するサービス提供者Bが提供するスクリプトや鍵を記憶するための領域である。このように、フラッシュメモリ74の記憶領域は、ドメイン毎(サービス提供者毎)に記憶領域が分割されている。また、フラッシュメモリ74は、ドメイン毎にスクリプトを記憶して管理する。
フラッシュメモリ74の記憶領域81A(ドメイン81用の記憶領域)には、スクリプト91−1乃至91−3、並びに鍵92−1および92−2が記憶されている。スクリプト91−1乃至91−3は、ドメインIDに対応するサービス提供者により提供される、所定の処理を実行するための記述がされている。鍵92−1および92−2は、スクリプトを実行する上で必要となる鍵であり、ICカード51(図2)との間のデータ授受において、共通鍵となるものである。これらの鍵92−1と92−2は、1つのスクリプトに対して1つとは定められておらず、同じドメインであれば共用されることもある。例えば、スクリプト91−1とスクリプト91−2を実行する上で鍵92−1が利用され、スクリプト91−3を実行する上で鍵92−2が利用される。
フラッシュメモリ74の記憶領域82A(ドメイン82用の記憶領域)には、スクリプト93−1および93−2、並びに鍵94が記憶されている。スクリプト93−1および93−2は、ドメインIDに対応するサービス提供者により提供される、所定の処理を実行するための記述がされている。鍵94は、スクリプトを実行する上で必要となる鍵であり、ICカード51(図2)との間のデータ授受において、共通鍵となるものである。
鍵94も、鍵92−1および92−2と同様に、1つのスクリプトに対して1つとは定められておらず、同じドメインであれば共用されることもある。この例の場合、例えば、スクリプト93−1とスクリプト93−2を実行する上で鍵94が利用される。
なお、以下において、スクリプト91−1乃至91−3を個々に区別する必要がない場合、スクリプト91と称し、鍵92−1および92−2を個々に区別する必要がない場合、鍵92と称する。また、スクリプト93−1および93−2を個々に区別する必要がない場合、スクリプト93と称する。
RAM75の記憶領域には、実行するスクリプトや鍵を保持する領域である実行領域83が設けられている。RAM75の実行領域83には、複数のスクリプトや鍵を記憶させることはできるが、ただ1つのドメインに関するスクリプトや鍵しか記憶させることができない。この1つのドメインが実行ドメインである。すなわち、RAM75の実行領域83は、1つのドメインに対応する1つまたは複数のスクリプトを実行させるために保持するメモリの領域である。また、実行領域83に記憶される複数のスクリプトや鍵は、いずれも、同じドメインIDを有している。換言すれば、実行領域83に記憶される複数のスクリプトや鍵は、いずれも、同じサービス提供者により提供されたものである。
例えば、ドメインIDおよびスクリプトIDとともにスクリプトの実行が指令された場合、ドメイン管理部72からの制御に基づいて、スクリプトIDで特定されるスクリプトが、RAM75の実行領域83に記憶される。ドメイン管理部72は、RAM75の実行領域83に記憶されているスクリプトに対応する(ドメインIDに対応する)ドメインを、実行ドメインとして把握するとともに、RAM75の実行領域83に格納したスクリプトに対応するスクリプトIDを把握する(例えば図示せぬ内部のメモリに保持する)。図3の例の場合、実行領域83にはスクリプト91−1と鍵92−1が記憶されており、ドメイン管理部72は、ドメイン81を実行ドメインとして把握するとともに、スクリプト91−1に対応するスクリプトIDを把握する。
カード制御部76は、スクリプト制御部73からの制御に基づいて、ICカードリーダライタアンテナ43を介して、ICカード51との間でデータを授受する。例えば、カード制御部76は、スクリプト制御部73からの制御に基づいて、ICカードリーダライタアンテナ43を介してICカード51から供給されてきたデータを受信する。また例えば、カード制御部76は、スクリプト制御部73からの制御に基づいて、ICカードリーダライタアンテナ43を介してICカード51にデータを送信させるよう制御する。
図3においては、ドメイン管理部72とスクリプト制御部73とが、互いにデータを授受し合うことがない構成となっており、ドメイン管理部72への指令は主制御部71が行い、スクリプト制御部73への指令も主制御部71が行なう。このようにすることで、ドメイン管理部72が実行する処理と、スクリプト制御部73が実行する処理とを独立させることができる。すなわち、ドメイン管理部72とスクリプト制御部73は、互いに干渉することがない。
次に、図4を参照して、図3の端末SAM42の特徴について説明する。
最初に端末SAM42の全体の特徴について説明する。
端末SAM42は、第1に、スクリプト制御部73と独立したドメイン管理部72を有する。このことは、スクリプト制御部73とドメイン管理部72とが、それぞれ主制御部71からの指令のみによって処理を実行しているからである。スクリプト制御部73とドメイン管理部72を独立させたことで、スクリプト制御部73とドメイン管理部72とが、それぞれ独立して処理を行なうことができる。例えば、スクリプト制御部73とドメイン管理部72とが異なるドメインに対する処理を行なうことができる。
第2に端末SAM42は、独立した実行領域を有する。具体的には、端末SAM42は、スクリプトや鍵を記憶するための記憶領域81Aや記憶領域82A(フラッシュメモリ74)とは独立して、実行されるスクリプトや鍵を保持するための実行領域83(RAM75)を有している。これにより、スクリプト制御部73がスクリプトを実行するために読み出しを行なう実行領域83が、フラッシュメモリ74とは異なる領域であるので、スクリプト制御部73が誤って他のドメインのスクリプトを実行することがない。また、実行領域83に複数のドメインのスクリプトが記憶されることもなく、ドメイン毎にスクリプトを安全に管理することができる。
第3に、端末SAM42は、スクリプトを中間言語形式で扱う。これにより、スクリプト制御部73は、端末SAM42の(スクリプト制御部73の)バージョンや種類が異なる場合においても、中間言語形式であれば、スクリプトを実行することができきる。
第4に、端末SAM42は、ドメイン内における鍵を共有する。具体的には、端末SAM42は、図3のドメイン81内において鍵92−1と92−2を共有し、ドメイン82において鍵94を共有している。また、スクリプト91内に鍵は格納されない。これにより、鍵92を共通して利用することができる。また、鍵のみを更新する場合に、スクリプト91まで更新する必要がないので、容易に鍵を更新することができる。さらに、スクリプト91が盗まれても鍵が盗まれないこともあるため、より、安全性を向上させることができる。
次に、ドメイン管理部72の特徴について説明する。
ドメイン管理部72は、第1に、異なるドメインからのアクセスを保護する。例えば、ドメイン管理部72は、実行ドメインとして設定されているドメインと、次に実行が指定されたドメインとが異なる場合、RAM75の実行領域83に記憶されている情報を全て消去する。これにより、RAM75の実行領域83に、異なるドメインのスクリプトが混在するのを防ぐことができる。
第2にドメイン管理部72は、ドメインの記憶領域へのデータの格納時に暗号化を行なう。例えば、ドメイン管理部72は、フラッシュメモリ74のドメイン81の記憶領域81Aへスクリプト91−1を格納する場合、スクリプト91−1を暗号化して格納する。これにより、たとえフラッシュメモリ74の中身が、悪意のあるサービス提供者によって読み出された場合においても、スクリプトや鍵を守ることができる。
第3にドメイン管理部72は、ドメインの記憶領域からのデータの読み出し時に復号を行なう。例えば、ドメイン管理部72は、フラッシュメモリ74のドメイン81の記憶領域81Aからスクリプト91−1を読み出す場合、読み出したスクリプト91−1を復号する。これにより、復号されたスクリプト91−1が実行領域83に格納されることになるので、スクリプト制御部73は、スクリプト91−1を実行することができる。
第4にドメイン管理部72は、実行ドメインを管理(把握)する。例えば、ドメイン管理部72は、スクリプトの実行要求とともに指定されたスクリプトIDとドメインIDとに基づいて、実行ドメインを切り替える(把握する実行ドメインを変更する)。また、ドメイン管理部72は、フラッシュメモリ74に記憶されているドメインを管理する。実行ドメインは、常に、ただ1つのドメインであるので、実行ドメインの混在を防ぐことができる。
次に、スクリプト制御部73の特徴について説明する。
スクリプト制御部73は、第1に、中間言語を実行コードに変更する機能を有する。これにより、端末SAM42のバージョンや種類が異なる場合であっても、サービス提供者は、それぞれのバージョンや種類に合わせたスクリプトを生成する必要はなく、中間言語のスクリプトを作成するだけでよいので、スクリプト生成の処理コストを抑えることができる。
第2にスクリプト制御部73は、RAM75でスクリプトを実行する。すなわち、スクリプト制御部73は、スクリプトや鍵が記憶されるフラッシュメモリ74とは異なるメモリであるRAM75においてスクリプトを実行するようにしたので、データの混在を防ぐことができる。また、RAM75は、データの読み出し、書き込み速度が不揮発性メモリ(フラッシュメモリ74)より速いため、スクリプトを迅速に実行することができる。
第3にスクリプト制御部73は、実行領域83に格納されているデータを再利用する。例えば、実行領域83にスクリプト91−1が格納されている状態で、主制御部71からの制御に基づいてスクリプト91−1を実行した後、再び連続して主制御部71からスクリプト91−1の実行が指令された場合に、既に格納されているスクリプト91−1を再利用して実行する。これにより、1つの実行ドメインに関する処理であれば、同じスクリプトを連続してドメイン管理部72が読み出す必要がないため、処理の負担を減らすことができる。また、この場合においては、端末SAM42が専用端末機と同程度の処理速度を保つことができる。
次に、図5のフローチャートを参照して、図3の端末SAM42がスクリプトを実行する場合の処理の例を説明する。なお、この処理は、図2の制御端末41からスクリプトの実行要求、ドメインID、スクリプトID、およびパラメータが供給されたとき開始される。例えば、端末SAMクライアント11の管理者(端末SAMクライアント11を設置している店舗の店員)が、制御端末41に対して、所定のICカード51(図2)の利用と、そのパラメータが指令したとき開始される。
ステップS31において、主制御部71は、制御端末41から供給されてきたスクリプト実行要求、ドメインID、スクリプトID、およびパラメータの入力を受け付ける。パラメータとしては、例えば、ICカードに貯められている金額から100円を減額するというデータなどがある。例えば、ドメイン81を特定するドメインIDと、スクリプト91−1を特定するスクリプトIDが受け付けられる。
なお、本実施の形態では、主制御部71が制御端末41から供給される指令に基づいて処理を開始するようにしたが、例えば、図2のICカードリーダライタアンテナ43を介して供給されるようなデータに基づいて処理を開始するようにしてもよい。また、一部の指令を制御端末41から受け付け、他の一部の指令を、ICカードリーダライタアンテナ43を介して受け付けるようにしてもよい。例えば、パラメータとスクリプト実行要求が制御端末41を介して供給され、ドメインIDとスクリプトIDは、ICカードリーダライタアンテナ43を介して(ICカード51から)供給されるようにしてもよい。
ステップS32において、主制御部71は、ドメイン管理部72に対して、ステップS31の処理で受け付けられたドメインIDおよびスクリプトIDとともにスクリプトの読み出しを指令する。
これに対して、ドメイン管理部72は、ステップS51において、ドメインIDおよびスクリプトIDとともに、スクリプトの読み出しの指令を受け付ける。例えば、ドメイン81を特定するドメインIDと、スクリプト91−1を特定するスクリプトIDとともに、そのスクリプト(スクリプト91−1)の読み出しの指令を受け付ける。
ステップS52において、ドメイン管理部72は、実行ドメインと同じドメイン内の読み出しであるか否かを判定する。ドメイン管理部72は、RAM75の実行領域83に格納されているスクリプトに対応するドメインを、実行ドメインとして把握しているので、ドメイン管理部72は、ステップS51の処理で受け付けたドメインIDと、実行ドメインに対応するドメインIDが一致するか否かによりこれを判定する。ステップS51の処理で受け付けたドメインIDと、実行ドメインに対応するドメインIDが一致する場合には、実行ドメインと同じドメイン内の読み出しであると判定し、一致しない場合には、実行ドメインと同じドメイン内の読み出しではない(すなわち、実行ドメインとは異なるドメイン内の読み出しである)と判定する。この例の場合、受け付けられたドメインIDはドメイン81を特定するドメインIDであるので、実行ドメインがドメイン81である場合にはYESと判定され、実行ドメインがドメイン82である場合には、NOと判定される。
ステップS52において、実行ドメインと同じドメイン内の読み出しではないと判定された場合、ステップS53において、ドメイン管理部72は、RAM53の内容を全て消去する。具体的には、ドメイン管理部72は、RAM53の実行領域83に記憶されているデータを全て消去する。
ステップS53において、ドメイン管理部72は、実行ドメインを切り替える。すなわち、ステップS51の処理で受け付けられたドメインIDに対応するドメインに、実行ドメインを切り替える。この例の場合、ドメイン管理部72は、実行ドメインをドメイン81に切り替える。
ステップS53およびステップS54の処理により、読み出しが指令されたドメインが実行ドメインとは異なる場合に、RAM75の実行領域83のデータが全て削除されるので、RAM75の実行領域83には、ステップS51の時点において実行ドメインとして設定されていたドメインのデータが何もないことになる。
ステップS52において、実行ドメインと同じドメイン内の読み出してあると判定された場合、またはステップS54の処理の後、実行ドメインがステップS51の処理で指定されたドメインIDに対応するドメインに設定されることになり、その後、処理はステップS55に進む。
ステップS55において、ドメイン管理部72は、ステップS51の処理で指定されたスクリプトIDに対応するスクリプトが、既にRAM75の実行領域83に記憶されているか否かを判定する。ドメイン管理部72は、実行ドメインとともに、RAM75の実行領域83に記憶されているスクリプトに対応するスクリプトIDを把握しているので、指定されたスクリプトIDと同じスクリプトIDが、把握しているスクリプトIDの中にあるか否かを判定する。指定されたスクリプトが、まだRAM75の実行領域83に記憶されていないと判定された場合、処理は、ステップS56に進む。なお、この処理がステップS54の処理の後であった場合には、実行ドメインが切り替えられたばかりであるので、RAM75の実行領域83には何もスクリプトが記憶されていないので、ステップS56に進む。
ステップS56において、ドメイン管理部72は、フラッシュメモリ74からドメインIDおよびスクリプトIDに対応するスクリプトを読み出す。具体的には、ドメイン管理部72は、まず、ドメインID(現在の実行ドメインに対応するドメインID、すなわち、ステップS51の処理で指令されたドメインID)に対応するドメインを特定し、そのドメイン用の記憶領域の中から、スクリプトIDに対応するスクリプトを特定し、読み出す。ドメイン管理部72は、例えば、ドメインIDに対応するドメイン81を特定し、ドメイン81用の記憶領域81Aの中から、スクリプトIDに対応するスクリプト91−1を特定し、読み出す。なお、上述したように、読み出されたスクリプト91−1は暗号化されている。
ステップS57において、ドメイン管理部72は、ステップS55の処理で読み出したスクリプト(この例の場合、スクリプト91−1)を復号する。
ステップS58において、ドメイン管理部72は、復号したスクリプト(すなわち、暗号化されていないスクリプト)を、RAM75の実行領域83に格納する。ドメイン管理部72は、このときRAM75の実行領域83に格納したスクリプトに対応するスクリプトIDを把握する(図示せぬ内部のメモリに保持する)。
ステップS55において、指定されたスクリプトが既にRAM75の実行領域83に記憶されていると判定された場合、またはステップS58の処理の後の時点においては、指定されたスクリプトIDに対応するスクリプトがRAM75の実行領域83に記憶されたことになるので、その後、処理はステップS59に進む。
ステップS59において、ドメイン管理部72は、スクリプト格納の完了を、主制御部71に通知する。具体的には、ドメイン管理部72は、読み出しが指令されたスクリプトIDに対応するスクリプトのRAM75の実行領域83への格納が完了したことを、主制御部71に通知する。
これに対して、主制御部71は、ステップS33において、スクリプト格納の完了の通知を受け付ける。これにより、主制御部71は、ステップS32の処理の指令に対して、ドメイン管理部72がスクリプトをRAM75の実行領域83に格納したことを確認することができる。
ステップS34において、主制御部71は、パラメータ(ステップS31で受け付けたパラメータ)とスクリプトIDを指定し、スクリプトIDで特定される(スクリプトIDに対応する)スクリプト(RAM75の実行領域83に格納されているスクリプト)の実行をスクリプト制御部73に指令する。なお、この処理では、主制御部71がスクリプトIDを指定するようにしているが、指定しなくてもスクリプトが特定できるような場合、例えば、RAM75の実行領域83にスクリプトが1つしか記憶されていない状況においては、スクリプトIDを指定しないようにしてもよい。
これに対して、スクリプト制御部73は、ステップS71において、パラメータと、スクリプトIDで特定されるスクリプトの実行の指令とを受け付ける。
ステップS72において、スクリプト制御部73は、RAM75の実行領域83からスクリプトIDに対応するスクリプトを読み出す。主制御部71から実行が指令されるスクリプトIDに対応するスクリプトは、ステップS51乃至ステップS58の処理によりドメイン管理部72によってRAM75の実行領域83に記憶されるので、スクリプト制御部73は、RAM75の実行領域83からスクリプトIDにより特定されるスクリプトを読み出すことができる。例えば、スクリプト制御部73は、RAM75の実行領域83からスクリプトIDにより特定されるスクリプト91−1を読み出す。
ステップS73において、スクリプト制御部73は、読み出したスクリプトを実行コードに変換する。ステップS72の処理で読み出されたスクリプトは、中間言語形式であるので、スクリプト制御部73は、中間言語形式のスクリプトを、実行コードに変換する。例えば、スクリプト制御部73は、読み出した中間言語形式のスクリプト91−1を、実行コードに変換する。
ステップS74において、スクリプト制御部73は、実行コードに変換されたスクリプトに基づいて、スクリプトに対応する鍵がRAM75の実行領域83に記憶されているか否かを判定する。例えば、スクリプト制御部73は、実行コードに変換されたスクリプト91−1を実行する場合に、ICカード51(図2)との間のデータの授受に利用される鍵92−1(共通鍵)があるか否かを判定する。ステップS74において、スクリプトに対応する鍵がRAM75の実行領域83に記憶されていないと判定された場合、ステップS75において、スクリプト制御部73は、主制御部71に鍵を要求する。例えば、スクリプト制御部73は、鍵を識別する情報とともに鍵の読み出し要求を主制御部71に送信する。
これに対して主制御部71は、ステップS35において、スクリプト制御部73からの鍵の要求を受け付け、ステップS36において、鍵の読み出しをドメイン管理部72に指令する。
この指令に対してドメイン管理部72は、ステップS60において、鍵の読み出しの指令を受け付ける。この鍵の読み出しの指令には、鍵を識別する情報(特定する情報)が含まれているので、ドメイン管理部72は、ステップS61において、鍵をフラッシュメモリ74の記憶領域から読み出す。例えば、スクリプト91−1に対応する鍵92−1を識別する情報に基づいて、ドメイン管理部72は、ドメイン81の記憶領域81Aから、鍵92−1を読み出す。勿論、読み出される鍵のドメインは、ステップS71乃至ステップS73の処理の対象となるスクリプトと同じドメインである(例えば、ドメイン81)。読み出された鍵(例えば、鍵92−1)は暗号化されているので、ステップS62において、スクリプト制御部73は、暗号化されている鍵(例えば、鍵92−1)を復号し、ステップS63において、復号した鍵を、RAM75の実行領域83に格納する。
ステップS64において、ドメイン管理部72は、鍵格納の完了を主制御部71に通知する。ステップS60乃至ステップS64の処理により、読み出しが指令された鍵が読み出され、RAM75の実行領域83への記憶が行なわれる。
ドメイン管理部72によるステップS64の通知に対して、主制御部71は、ステップS37において、鍵格納の完了の通知を受け付け、ステップS38において、スクリプトの実行をスクリプト制御部73に指令する。この指令は、ステップS34の処理と同様の指令である。
これに対して、スクリプト制御部73は、ステップS76において、スクリプトの実行の指令を受け付ける(ステップS71の処理と同様)。
ここまでの処理により、RAM75の実行領域83に、実行が要求されたスクリプトIDに対応するスクリプトと、スクリプトを実行する上で必要となる鍵が記憶(格納)されたことになる。例えば、図3に示されるように、RAM75の実行領域83にスクリプト91−1と鍵92−1とが記憶されたことになる。
ステップS74においてスクリプトに対応する鍵がRAM75の実行領域83に記憶されていると判定された場合、またはステップS76の処理の後、ステップS77において、スクリプト制御部73は、RAM75の実行領域83から鍵を読み出し、ステップS78において、パラメータに基づいてスクリプトを実行する。例えば、スクリプト制御部73は、RAM75の実行領域83から鍵92−1を読み出し、これと、パラメータを用いて、ステップS73において実行コードに変換されたスクリプト91−1を実行する。例えば、スクリプトにICカード51へのアクセスが記述されていた場合には、スクリプト制御部73は、カード制御部76を介して、ICカードリーダライタアンテナ43に所定のデータを送信させ、ICカード51との間でデータを授受する(スクリプトの実行に関する処理を実行する)。なお、鍵92−1が実行コードに変換する必要があるようなデータであれば、スクリプト制御部73は、これを実行コードに変換するようにすればよい。
ステップS79において、スクリプト制御部73は、スクリプト実行結果を主制御部71に通知する。例えば、スクリプト制御部73は、パラメータに基づいて実行した結果を、主制御部71に通知する。
これに対して、主制御部71は、ステップS39において、スクリプト実行結果を受け付け、ステップS40において、スクリプト実行結果を、制御端末41に通知する。
図5と図6の処理により、制御端末41からの指令に基づいて、スクリプトを実行することができる。また、実行が要求されたスクリプトIDに対応するスクリプトが既にRAM75の実行領域83に記憶されている場合には、フラッシュメモリ74から再度読み出したりせず、既にRAM75の実行領域83に記憶されているスクリプトを実行させるようにしたので、無駄な読み出しを避けることができる。このことは、スクリプトに対応する鍵がRAM75の実行領域83に記憶されている場合についても同様の効果を奏する。
なお、ステップS72の処理で、RAM75の実行領域83からスクリプトが読み出され、また、ステップS77の処理で、RAM75の実行領域83から鍵が読み出されているが、読み出されたスクリプトと鍵はそのままRAM75の実行領域83に残ることになる。すなわち、RAM75の実行領域83に一度記憶されたデータは、ドメイン管理部72によって消去されるか(例えば、ステップS53)、端末SAM42の電源がオフされるまで消去されることがない。このようにすることで、図5と図6の処理が実行された後、再び図5と図6の処理が実行された場合に、前回RAM75の実行領域83に記憶されたスクリプトを再利用することができる。これにより、スクリプトの初期動作(スクリプトをフラッシュメモリ74の記憶領域から読み出し、RAM75の実行領域83に格納するまでの時間)を短縮することができる。ただし、実行ドメインが切り替えられた場合には、RAM75の実行領域83に記憶されているデータは消去(フラッシュ)されるので、再びスクリプトの読み出しが行なわれる。これにより、実行ドメインが切り替えられた後のドメイン内のスクリプトにどのような記述がされていたとしても、スクリプト制御部73は、前の実行スクリプトの結果を参照したり、読み出したりすることができないため、安全にスクリプトや鍵を守ることができる。
また、以上の例では、ドメイン管理部72が実行ドメインだけでなく、RAM75の実行領域83に格納されているスクリプトIDをも把握するようにしたが、ドメイン管理部72は、単に実行ドメインのみを把握し、RAM75の実行領域83に記憶されているスクリプトIDの把握は、スクリプト制御部73が行なうようにしてもよい。また、ドメイン管理部72が実行ドメインのみを把握するだけとし、スクリプト制御部73もRAM75の実行領域83に格納されているスクリプトIDの把握をしていなくてもよい。この場合、スクリプト制御部73は、ステップS74乃至ステップS77のように鍵の確認および要求を行なう処理を、スクリプトに対して実行するようにすればよい。具体的には、ステップS54のドメイン管理部72による処理の後、主制御部71がスクリプト制御部73にスクリプトIDに対応するスクリプトの実行を指令し、スクリプト制御部73は、この指令に基づいてRAM75の実行領域83にスクリプトが記憶(格納)されているか否かを判定する。そして、スクリプトが記憶されていないと判定された場合には、主制御部71に対してスクリプトを要求する。これに対して、主制御部71は、スクリプトIDに対応するスクリプトの読み出しをドメイン管理部72に対して指令し、ドメイン管理部72は、この指令に基づいて、ステップS56乃至ステップS59の処理を実行する。このように、ドメイン管理部72がスクリプトIDを把握しない構成とすることもできる。
次に、図7のフローチャートを参照して、スクリプト制御部73によりスクリプトが実行されている間に、スクリプトの更新が制御端末41によって要求された場合における処理を説明する。なお、この処理は、図6のステップS78の処理を、スクリプト制御部73が実行している間に実行される処理である。
ステップS91において、主制御部71は、スクリプト更新要求、ドメインID、スクリプトID、および更新データの入力を受け付ける。例えば、主制御部71は、制御端末41から供給される、スクリプト更新要求、ドメインID(例えば、ドメイン82に対応するドメイン)、スクリプトID(例えば、スクリプト93−1に対応するスクリプトID)、および更新データ(例えば、スクリプト93−1を更新するためのスクリプト、以下においては、スクリプト93−1'と称する)を受け付ける。
このとき、スクリプト制御部73は、ステップS131において、スクリプトが実行されている。また、ステップS131の処理は、ドメイン管理部72の処理と並行して実行されている。例えば、ステップS131の処理は、ドメイン管理部72によるステップS111乃至ステップS115の処理が終了するまで実行される。
ステップS92において、主制御部71は、ドメインID、スクリプトID、更新データとともにスクリプトの更新をドメイン管理部72に指令する。
これに対してドメイン管理部72は、ステップS111において、ドメインID、スクリプトID、更新データとともにスクリプトの更新の指令を受け付ける。例えば、ドメイン管理部72は、ドメイン82に対応するドメインID、スクリプト93−1に対応するスクリプトID、更新データとしてのスクリプト93−1'、およびスクリプト更新の指令を受け付ける。
ステップS112において、ドメイン管理部72は、実行ドメインと、ステップS111の処理で受け付けたドメインIDに対応するドメイン(更新が指令されたドメイン)が同じであるか否かを判定する。例えば、ドメイン管理部72は、実行ドメインとしてドメイン81を把握しており、受け付けたドメインIDに対応するドメインが82である場合には、異なるドメインであると判定し、実行ドメインとしてドメイン82を把握しており、受け付けたドメインIDに対応するドメインが82である場合には、同じドメインであると判定する。ステップS112において、実行ドメインと更新が指令されたドメインが同じであると判定された場合、ステップS113に進み、ドメイン管理部72は、更新が指令されたドメインが使用中であることを主制御部71に通知し、処理を終了する。この通知を主制御部71が受け取った場合、主制御部71は、制御端末41にこれを通知し、処理を終了する(図7のフローチャート上には記載していないが、ドメインが使用中であることを示す通知を主制御部71が受け取った場合には、主制御部71は、その旨を制御端末41に通知し、処理を終了する)。
ステップS112において実行ドメインと同じドメインの更新ではないと判定された場合、ステップS114において、ドメイン管理部72は、更新データに基づいて、スクリプトを暗号化し、更新する。例えば、ドメイン管理部72は、更新データであるスクリプト93−1'を暗号化し、これをスクリプト93−1として更新(上書き)する。
ステップS115において、ドメイン管理部72は、スクリプトの更新完了を、主制御部71に対して通知する。
これに対して主制御部71は、ステップS93において、スクリプトの更新完了の通知を受け付ける。すなわち、主制御部71は、ステップS92で指令した更新が完了したことを、ステップS93の処理で確認する。
ステップS94において、主制御部71は、スクリプトの更新結果(例えば、更新に成功したことを示す結果)を、制御端末41に通知する。その後、処理は終了される。
図7の処理により、現在スクリプトが実行されている場合であっても、実行ドメインと、更新が要求されたスクリプトが異なるドメインであれば、スクリプトを更新することができる。
すなわち、端末SAM42は、スクリプト制御部73によりスクリプトが実行されているドメイン以外の処理要求であれば、受け付け、処理を実行することができる。換言すれば、停止状態のドメイン(スクリプトが実行されているドメイン以外のドメイン)内のスクリプトに対して、参照や更新の指令がなされた場合、端末SAM42は実行中のドメインの処理の空いた時間を使って、その処理を受け付け、制御端末41(サービス提供者)からの要求を受け付ける。これにより、端末SAM42を停止することなくスクリプトの更新を行なうことができる。
また、スクリプト制御部73によりスクリプトが実行されている場合であっても、サービスの更新(スクリプトや鍵の更新)が可能となり、メンテナンスによる他のサービス提供者によるスクリプトの実行停止(サービス停止)の損失を避けることができる。
なお、図7の例では、スクリプトを更新するようにしたが、鍵を更新するようにしてもよい。また、図7の例では、スクリプトの更新要求に対する処理としたが、スクリプト読み出し要求(制御端末41を介するサービス提供者への読み出し要求)に対しても、同様の処理が実行される。
次に、端末SAM42の電源がオフとされた場合のフラッシュメモリ74とRAM75の状態について、図8を参照して説明する。なお、図8において横軸は時刻tを示している。
時刻t0において、フラッシュメモリ74とRAM75のそれぞれにデータが保持されている。例えば、フラッシュメモリ74には、図3に示されるように、記憶領域81Aと82Aにそれぞれ対応するスクリプトと鍵が記憶されており、RAM75にも実行領域83に、スクリプト91−1と鍵92−1が記憶されている。
時刻t1は、端末SAM42の電源がオフされた時刻を示している。時刻t0から時刻t1までの間に、フラッシュメモリ74とRAM75について、ともにデータの更新がない場合、フラッシュメモリ74では、時刻t0から保持していたデータがそのまま保持されるが、RAM75では、時刻t0から保持していたデータが消去される。このことは、RAM75が、揮発性メモリであり、電力の供給がなくなると、データが保持できなくなる特性があるからである。
これにより、悪意のあるサービス提供者や、何らかの事故によって、端末SAM42の電源がオフされ、RAM75の実行領域83が盗まれるようなことがあったとしても、RAM75には何も記憶されていないため、スクリプトや鍵のデータが盗まれることがない。ここで、フラッシュメモリ74は、スクリプトや鍵のデータを保持しているが、ドメイン管理部72により暗号化が行なわれているので、データそのものが盗まれたとしても、盗んだユーザは、そのデータを解析することが非常に困難であり、多大なコストと時間を必要とさせることによって、データを安全に保持することができる。
以上のように、端末SAM42が、サービスを提供するために実行されるスクリプト(例えば、プログラム)を、スクリプトが対応するドメイン毎(例えば、サービス毎)に記憶するフラッシュメモリ74と、1つのドメインに対応する1つまたは複数のスクリプトを実行させるために保持するRAM75と、プログラムの実行指示を取得する主制御部71と、主制御部71により取得された実行指示により指定されたサービスに対応する方法によって、実行指示により指定された、フラッシュメモリ74に記憶されているプログラムを用いて、RAM75に保持されている情報を更新するドメイン管理部72と、主制御部71からの実行指示に基づいて、ドメイン管理部72により情報が更新されたRAM75に保持されている、実行指示により指定されたスクリプトを実行するスクリプト制御部73とを備えるようにしたので、複数のサービス提供者からのスクリプトや鍵などの情報を、互いに干渉することなく、格納し、実行することができる。また、ICカードに関する情報を、安全、かつ迅速に管理することができる。
すなわち、ドメイン管理部72とスクリプト制御部73とを独立して動作させることにより、複数のサービス提供者からのスクリプトや鍵などの情報を、互いに干渉することなく、格納し、実行することができる。
また、端末SAM42は、スクリプトや鍵を格納しているサービス提供者(例えばサービス提供者A)とは異なるサービス提供者(例えばサービス提供者B)がスクリプトや鍵を格納したり、実行する場合に、他のサービス提供者が格納している情報の流出を守ることができる。すなわち、複数のサービス提供者が提供するスクリプトや鍵を、安全、かつ、迅速に管理し、実行することができる。
さらに、サービス提供者が提供するスクリプトや鍵の格納場所(図3のフラッシュメモリ74)と、スクリプトを実行する場所(図3のRAM75)とを独立させたことで、異なるサービス提供者に対して互いに干渉することなく、処理を実行することができる。
また、スクリプトや鍵の格納(記憶)場所(図3のフラッシュメモリ74の記憶領域)において、スクリプトと鍵を分けて管理するようにしたので(スクリプト内に鍵を埋め込まないため)、ドメイン内において複数のスクリプトにより鍵を共通利用することが可能となり、スクリプトの利便性を向上させることができる。なお、スクリプトと鍵を一緒に管理するようにしてもよい。この場合、例えば、スクリプトのヘッダ部に鍵が格納される。
さらに、スクリプトを中間言語形式で扱うようにし、フラッシュメモリ74にスクリプトを格納する場合には暗号化し(例えば、図7のステップS114)、スクリプトを実行する場合に、復号してRAM75に展開(配置)するようにしたので(例えば、図5のステップS57)、スクリプトを安全に保持することができる。また、電源がオフされた場合(電源断時)においても、復号されたスクリプト(RAM75の実行領域83に配置されたスクリプト)を消去するため、安全にスクリプトを保持することができる。また、実行するスクリプトは、書き込みや読み出し速度の速いRAM(揮発性メモリ)に格納するようにしたので、スクリプトの実行速度を早くすることができる。
さらに、前回最後にスクリプトが実行されたスクリプトを提供したサービス提供者とは異なるサービス提供者により提供されたスクリプトを実行する場合には、RAM75の実行領域83を消去して切り替え、同一のサービス提供者により提供されたスクリプトが連続して実行される場合には、RAM75の実行領域83に格納されているスクリプトを再利用できるようにしたので、より、効率よく処理を実行することができる。また、連続して同じサービス提供者により提供されたスクリプトが実行される場合には、専用端末と同等の処理速度を保つことができる。
また、サービス提供者(独立系サービスプロバイダ)は、安全にスクリプトを供給し、サービスを提供することができる。
さらに、1台の端末SAM42に、複数のサービス提供者から提供されるスクリプトや鍵を格納することができるので、サービス提供者は、端末の設置コストを削減することができる。また、端末を設置する店舗は、1台の端末SAM42で複数のサービス提供者からのサービスを受けることができる。
さらに、端末の複数台が併設されることを抑制し、サービス提供者の管理コストと利用者の混乱を抑えることができる。
また、ICカード側でスクリプトの実行を行なわず、ICカードより処理能力のある端末SAM42内でスクリプトを実行するようにしたので、サービス提供者は、より高速で安定したサービスを提供することができる。
さらに、スクリプトが設定される端末SAM42は制御端末41を介してネットワーク12に接続可能であるので(オンラインになるので)、サービス提供者は、スクリプトの提供や更新をネットワーク12を介して、短期間に行なうことができる。
また、ドメイン管理部72とスクリプト制御部73が独立しているので、安定して端末の運用を行なうことができる。
さらに、中間言語形式のスクリプトを利用するようにしたので、サービス提供者は端末の機種に依存しないスクリプトを作成することができる。
なお、以上の例では、フラッシュメモリ74とRAM75を例にして説明したが、フラッシュメモリ74とRAM75に限らず、不揮発性メモリと揮発性メモリであれば、どのようなメモリであってもよい。
さらに、端末SAMクライアント11は、情報を処理する情報処理装置であれば、他のものにも適用することができる。例えば、パーソナルコンピュータにICカードリーダライタを設けたものを端末SAMクライアント11としてもよい。
また、以上の例では、スクリプトの実行について記載したが、各種の処理を実行するプログラムと読み替えることもできる。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。この場合、上述した一連の処理は、図9に示されるようなパーソナルコンピュータ250により実行される。
図9において、CPU251は、ROM252に記憶されているプログラム、または、記憶部258からRAM253にロードされたプログラムに従って各種の処理を実行する。RAM253にはまた、CPU251が各種の処理を実行する上において必要なデータなどが適宜記憶される。
CPU251、ROM252、およびRAM253は、内部バス254を介して相互に接続されている。この内部バス254にはまた、入出力インターフェース205も接続されている。
入出力インターフェース255には、キーボード、マウスなどよりなる入力部256、CRT,LCDなどよりなるディスプレイ、スピーカなどよりなる出力部257、ハードディスクなどより構成される記憶部258、並びに、モデム、ターミナルアダプタなどより構成される通信部259が接続されている。通信部259は、電話回線やCATVを含む各種のネットワークを介しての通信処理を行なう。
入出力インターフェース255にはまた、必要に応じてドライブ261が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどによりなるリムーバブルメディア271が適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部258にインストールされる。
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、図9に示されるように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されているリムーバブルメディア221よりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM252や記憶部258が含まれるハードディスクなどで構成される。
なお、本明細書において、コンピュータプログラムを記述するステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
1 情報処理システム, 11 端末SAMクライアント, 14 サーバ, 41 制御端末, 42 端末SAM, 43 ICカードリーダライタアンテナ, 71 主制御部, 72 ドメイン管理部, 73 スクリプト制御部, 74 フラッシュメモリ, 75 RAM, 81 ドメイン, 81A 記憶領域, 82 ドメイン, 82A 実行領域83 実行領域, 91 スクリプト, 92 鍵, 93 スクリプト, 94 鍵