(57)【要約】【課題】特定のインスタンスのクラス変数領域の特定部分に対するアクセスを制御するメモリ管理方法を提供することを目的とする。【解決手段】インスタンスがアクセス可能なクラス変数領域内の範囲を示す指定情報を設定しインスタンスを生成する段階と、生成されたインスタンスがインスタンス内に備えるインスタンス変数領域へ指定情報を格納する段階と、インスタンスが前記インスタンス変数領域へ格納した指定情報を参照して該指定情報により示されるクラス変数領域へアクセスする段階とを行うようにしたメモリ管理方法を提供する。【選択図】  図２
2004171160.tif 000002
【特許請求の範囲】
【請求項１】
スマートカード上で動作するオブジェクト指向プログラミング言語で作成したプログラムにおいて、実行時に生成されるインスタンスと呼ばれるプログラムが、クラスと呼ばれるインスタンスを生成する元となるプログラムがメモリ中に確保したクラス変数領域をアクセスする方法であって、
前記インスタンスがアクセス可能な前記クラス変数領域内の範囲を示す指定情報を設定し、インスタンスを生成する段階と、
生成された前記インスタンスが、インスタンス内に備えるインスタンス変数領域へ前記指定情報を格納する段階と、
前記インスタンスが、前記インスタンス変数領域へ格納した前記指定情報を参照し、該指定情報により示される前記クラス変数領域へアクセスする段階と、
を設けたことを特徴とするメモリ管理方法。
【請求項２】
請求項１記載のメモリ管理方法であって、
前記指定情報を指定する際に、
前記インスタンスが、該クラス変数領域に対する読み出し、または書き込み、または読み出し／書き込みの権限を有するか否かを指定する、
ことを特徴とするメモリ管理方法。
【請求項３】
請求項１または２記載のメモリ管理方法であって、
複数のインスタンスの実行において、各々のインスタンス毎に、前記指定情報の指定を行う、
ことを特徴とするメモリ管理方法。
【請求項４】
請求項１から３のいずれかに記載のメモリ管理方法であって、
前記クラスが予め認証に使用する鍵データを備え、
前記インスタンスの生成時に、前記鍵データによる認証を行い、前記認証が成功した場合にのみ、前記指定情報によるクラス変数領域の指定を有効にする、
ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＣカードのプログラム実行に関し、特に、複数のプログラムから共通にアクセス可能なメモリ領域に対するアクセス管理に関するものである。
【０００２】
【従来の技術】
ＪａｖａＣａｒｄ（登録商標）など、オブジェクト指向のプログラミング言語で作成されたプログラムを使用するスマートカードにおいては、オブジェクトの実体であるインスタンスを実行時に生成する。
【０００３】
インスタンスの生成などのＩＣカードにおけるコマンドの実行は、Ｇｌｏｂａｌ  Ｐｌａｔｆｏｒｍ（各種業界のビジネス・ニーズを反映する多機能スマートカードの標準化推進団体）により規定されている。
【０００４】
例えば、Ｊａｖａ（登録商標）言語で作成されたプログラムは、ＩＣカードのカードマネージャと呼ばれる管理ソフトに対してＬＯＡＤコマンドを発行し、アプレットのロジック部分およびクラス変数などをＩＣカードのメモリにロードする。この場合、クラスは、アプレットである。
【０００５】
アプレットは、メモリにロードされるだけでは使用できないため、アプレットと生成するインスタンス名を指定してＩＮＳＴＡＬＬコマンドを発行し、インストールを行う。
【０００６】
更に、インストールパラメタで利用可能な領域の情報などを与えることで、図１に示すように、インスタンス２やインスタンス３などのアプレット１のインスタンスが生成され、実行することが可能な状態になる。
【０００７】
メモリにロードされたアプレット１は、内部にクラス変数領域を備えており、該クラス変数領域の全ての領域は、インスタンス２、３のどちらからも任意にアクセスすることが可能である（例えば、非特許文献１参照。）。
【０００８】
【非特許文献１】
サン・マイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．），「ジャバカード２．２ＡＰＩ仕様書（Ｊａｖａ  Ｃａｒｄ  ２．２  ＡＰＩ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）」，（米国），２００２年９月
【０００９】
インスタンス２、インスタンス３は、ロードしたアプレット１のコード部分をそのまま使用し、各々のインスタンスは、当該インスタンスにおいてのみ使用可能なインスタンス変数領域を備えている。
【００１０】
インスタンス２を実行させる場合は、カードマネージャに対して、インスタンス２を指定してＳＥＬＥＣＴコマンドを発行し、インスタンス２を選択状態にする。ＩＣカードに対して発行されたコマンドは、現在選択されているアプリケーションが処理する仕組みになっている。
【００１１】
ＩＣカードに対してＲＥＡＤコマンドを発行した場合、上述の例においてはインスタンス２が選択されているので、インスタンス２に実装されているＲＥＡＤコマンドに対応する処理が実行され、クラス変数領域などから読み取ったデータがレスポンスとして返ることになる。
【００１２】
しかしながら、従来においては、以下の問題がある。すなわち、クラス変数領域は、各インスタンスから共通に利用できるため、クラス変数領域の特定の部分をアクセス可能なのは特定のインスタンスだけとか、クラス変数領域の特定の部分を特定のインスタンスにはアクセスさせない、などの制御を行うことができないという問題がある。
【００１３】
上述の問題は、一つのＩＣカードが複数の店舗のポイント管理ソフトを搭載する場合などにおいて、店舗毎のポイントおよび情報を保持する領域を他店舗の処理から保護しながら、ポイントの加減算や残高照会などの共通な機能を一つのソフトに共通化するなどの、少ないＩＣカードの資源を有効利用する手段が取れないことを示している。
【００１４】
【発明が解決しようとする課題】
本発明は上述の問題点に鑑みてなされたものであり、特定のインスタンスのクラス変数領域の特定部分に対するアクセスを制御するメモリ管理方法を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の態様は、スマートカード上で動作するオブジェクト指向プログラミング言語で作成したプログラムにおける、実行時に生成されるインスタンスと呼ばれるプログラムがクラスと呼ばれるインスタンスを生成する元となるプログラムがメモリ中に確保したクラス変数領域をアクセスする方法において、前記インスタンスがアクセス可能な前記クラス変数領域内の範囲を示す指定情報を設定しインスタンスを生成する段階と、生成された前記インスタンスが、インスタンス内に備えるインスタンス変数領域へ前記指定情報を格納する段階と、前記インスタンスが、前記インスタンス変数領域へ格納した前記指定情報を参照し該指定情報により示される前記クラス変数領域へアクセスする段階とを行うようにしたものである。
【００１６】
本発明の第２の態様は、上述の第１の態様に係るメモリ管理方法において、前記指定情報を指定する際に、前記インスタンスが該クラス変数領域に対する読み出し、または書き込み、または読み出し／書き込みの権限を有するか否かを指定するようにしたものである。
【００１７】
本発明の第３の態様は、上述の第１または２の態様に係るメモリ管理方法において、複数のインスタンスの実行において、各々のインスタンス毎に前記指定情報の指定を行うようにしたものである。
【００１８】
本発明の第４の態様は、上述の第１から３の態様に係るメモリ管理方法において、前記クラスが予め認証に使用する鍵データを備え、前記インスタンスの生成時に前記鍵データによる認証を行い、前記認証が成功した場合にのみ前記指定情報によるクラス変数領域の指定を有効にするようにしたものである。
【００１９】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。図２は、ＪａｖａＣａｒｄ（登録商標）のアプレット１（プログラム）が、インスタンス２、３の二つのインスタンスを生成して実行する場合の手順を示すフローチャートである。
【００２０】
図３に示す、インスタンス２は、クラス変数領域４の先頭から１ＫＢ（キロバイト）のクラス変数領域５を、インスタンス３は、クラス変数領域５の終了位置から２ＫＢのクラス変数領域６をアクセスする例により説明する。
【００２１】
上述したようにカードマネージャがインスタンスを生成するためには、ＩＮＳＴＡＬＬコマンドを発行する。ＩＮＳＴＡＬＬコマンドに与えるパラメータとして、アプレット１に対してインスタンス２がアクセス可能なクラス変数領域４内の特定領域を決定するパラメータを指定する。
【００２２】
インスタンス２がアクセス可能なクラス変数領域５は、クラス変数領域４のどの位置からアクセス可能であるかを示すオフセット値と、どれだけの領域を使用できるかのサイズ値で指定する。
【００２３】
例えば、インスタンス２を生成する場合は、「オフセット＝０、サイズ＝１ＫＢ」、インスタンス３を生成する場合は、「オフセット＝１（０＋１ＫＢ）、サイズ＝２ＫＢ」などの形式で、各々のインスタンスが使用するクラス領域４の先頭位置とサイズを指定する。
【００２４】
生成されたインスタンス２およびインスタンス３は、各々のインスタンスの内部に備えるインスタンス変数領域７およびインスタンス変数領域８に、オフセット値およびサイズ値を保持する。
【００２５】
インスタンス２の各コマンドを実行する場合は、上述したように、カードマネージャに対して、インスタンス２を指定したＳＥＬＥＣＴコマンドを発行する。カードマネージャは、インスタンス２を選択状態にし、インスタンス２へ制御を移す。
【００２６】
次に、読み出すメモリ領域のオフセットとサイズをパラメータとして指定したＲＥＡＤコマンドが、カードマネージャに対して発行された場合、選択されているインスタンス２に制御が移るので、インスタンス２がＲＥＡＤコマンドに対応する処理を実行する。
【００２７】
インスタンス２は、まず、ＲＥＡＤコマンドに指定されたパラメータが、クラス変数領域５を超えていないかどうかチェックを行う。クラス変数領域５を超えていない場合、インスタンス変数領域７に保持しているオフセット値０およびサイズ値１ＫＢを指定して、クラス変数領域４の先頭から１ＫＢのクラス変数領域５をアクセスする。
【００２８】
上述のクラス変数領域５を超えていないかどうかのチェックの後、クラス変数領域５をアクセスする手順は、説明のための一実施例であり、該インスタンスのＲＥＡＤコマンドに対する処理は、用途や運用に応じて任意である。
【００２９】
同様に、インスタンス３の各コマンドを実行する場合は、インスタンス変数領域８に保持しているオフセット値１およびサイズ値２ＫＢを指定して、クラス変数領域６をアクセスする。
【００３０】
インスタンスを生成する際に、各インスタンスがアクセスするクラス変数領域を指定し、各インスタンスが指定された範囲のクラス変数領域だけをアクセスすることにより、特定のクラス変数領域を特定のインスタンスだけがアクセスしたり、他のインスタンスからのアクセスを禁止するなどの制御を行うことが可能になる。
【００３１】
以上、本発明を実施の形態に基づいて詳細に説明してきたが、本発明によるメモリ管理方法は、上述の実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更が可能なことは当然のことである。
【００３２】
例えば、図４に示すように、ＩＮＳＴＡＬＬコマンドに与えるパラメータの一つとして、クラス変数領域に対する、読み出し、書き込み、読み出し／書き込みなどの権限を有するか否かを指定するように構成することにより、インスタンス３は、インスタンス２がアクセスするクラス変数領域５に対して、「参照は可能であるが、書き換えはできない」というような制御を行うことが可能になる。
【００３３】
また、アプレット１の内部に、認証用のデジタルの鍵データを格納しておき、この鍵データを用いて認証を行い、認証に成功しなければ、パラメータに指定されたクラス変数領域にアクセスできないようにすることも可能である。
【００３４】
また、予めクラス変数領域５およびクラス変数領域６の各々に同じデータの異なる値を格納しておくことで、インスタンス２およびインスタンス３から発行するコマンドは同一であるが、参照するデータの値が異なり、結果として異なる処理結果やサービス内容になる、とういうプログラムも作成することができる。
【００３５】
【発明の効果】
以上のとおり、本発明に係るメモリ管理方法によれば、インスタンス毎に、使用可能なクラス変数領域を分けることが可能になる。
【００３６】
また、インスタンス毎に、クラス変数領域に格納されたデータに対する読み出し、書き込みなどの制御を行うことができる。
【図面の簡単な説明】
【図１】従来のメモリ管理方法の説明図である。
【図２】本発明のメモリ管理方法の動作を示すフローチャートである。
【図３】本発明のメモリ管理方法の説明図である。
【図４】本発明のメモリの読み出し／書き込みの権限を付加した場合のメモリ管理方法の説明図である。
【符号の説明】
１  アプレット
２、３  インスタンス
４、５、６  クラス変数領域
７、８  インスタンス変数領域
【図１】
2004171160.tif 000003
【図２】
2004171160.tif 000004
【図３】
2004171160.tif 000005
【図４】
2004171160.tif 000006