"コンピューティング環境であって、オペレーティングシステムと、前記オペレーティングシステム上で動作するバーチャルマシンと、前記バーチャルマシン上で動作する第1のアプリケーションと、前記バーチャルマシン上で動作する第2のアプリケーションと、第1のファイヤウォール制御ブロックと、を備え、前記第1のファイヤウォール制御ブロックは、前記第2のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義する、コンピューティング環境。請求項1記載のコンピューティング環境であって、前記コンピューティング環境は、さらに、第2のファイヤウォール制御ブロックを備え、前記第2のファイヤウォール制御ブロックは、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義する、コンピューティング環境。請求項1記載のコンピューティング環境であって、前記第1のファイヤウォール制御ブロックは、前記コンピューティング環境内の他の任意のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記他の任意のアプリケーションのアクセス権を定義する、コンピューティング環境。請求項3記載のコンピューティング環境であって、前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、コンピューティング環境。先行する請求項のいずれかに記載のコンピューティング環境であって、前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、コンピューティング環境。先行する請求項のいずれかに記載のコンピューティング環境であって、前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、前記第1のファイヤウォール制御値は、RIDを含む、コンピューティング環境。請求項4記載のコンピューティング環境であって、前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、前記第1のファイヤウォール制御ブロックは、AIDを含む、コンピューティング環境。請求項4記載のコンピューティング環境であって、前記コンピューティング環境は、JavaTMカード対応コンピューティング環境であり、前記第1のファイヤウォール制御ブロックは、ランタイム環境として実装される、コンピューティング環境。携帯コンピューティング機器であって、オペレーティングシステムと、前記オペレーティングシステム上で動作するJavaTM対応バーチャルマシンと、前記JavaTM対応バーチャルマシン上で動作する第1のJavaTM対応アプレットと、前記JavaTM対応バーチャルマシン上で動作するJavaTM対応アプレットと、第1のファイヤウォール制御ブロックと、を備え、前記第1のファイヤウォール制御ブロックは、前記JavaTM対応バーチャルマシン上で動作する少なくとも1つの他のJavaTM対応アプレットに対する前記第1のJavaTM対応アプレットのアクセス権を定義し、さらに、前記第1のJavaTM対応アプレットに対する前記少なくとも1つの他のJavaTM対応アプレットのアクセス権を定義する、携帯コンピューティング機器。請求項9記載の携帯コンピューティング機器であって、前記携帯機器は、JavaTM対応スマートカードである、携帯コンピューティング機器。請求項10記載の携帯コンピューティング機器であって、前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、携帯コンピューティング機器。請求項10記載の携帯コンピューティング機器であって、前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、携帯コンピューティング機器。請求項10記載の携帯コンピューティング機器であって、前記第1のファイヤウォール制御ブロックは、RIDを含む、携帯コンピューティング機器。請求項10記載の携帯コンピューティング機器であって、前記第1のファイヤウォール制御ブロックは、PIDを含む、携帯コンピューティング機器。請求項10記載の携帯コンピューティング機器であって、ファイヤウォール制御ブロックは、JavaTM対応アプレット毎に定義される、携帯コンピューティング機器。JavaTMバーチャルマシンと、前記JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含むJavaTM対応コンピューティング環境にセキュリティを提供する方法であって、JavaTMバーチャルマシン上で動作する第1のJavaTM対応アプレットから、第2のJavaTM対応アプレットにアクセスするための要求を受領する工程と、前記第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックを読み出す工程と、前記ファイヤウォール制御ブロックに基づいて、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する工程と、前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可する工程と、を備える方法。請求項16記載の方法であって、さらに、前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットに対する参照に、前記第2のJavaTM対応アプレットに対する参照を提供する工程を備える方法。請求項16記載の方法であって、前記参照を提供する工程は、JavaTM管理またはシステム環境の一部として実装される第1のメソッドを呼び出す工程と、第2のメソッドを呼び出す工程の結果としてアプレットクラスとして実装される、前記第2のメソッドを呼び出す工程と、を備える方法。先行する請求項のいずれかに記載の方法であって、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、ファイヤウォール制御値を読み出す工程と、ファイヤウォール制御インジケータを読み出す工程と、を備える方法。先行する請求項のいずれかに記載の方法であって、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出す工程と、前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出す工程と、前記第1のPIDが前記第2のPIDに一致するかを判定する工程と、前記判定する工程により、前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可する工程と、を備える方法。先行する請求項のいずれかに記載の方法であって、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出す工程と、前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出す工程と、前記第1のAIDが前記第2のAIDに一致するかを判定する工程と、前記判定する工程により、前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可する工程と、を備える方法。コンピューティング環境にセキュリティを提供するためのコンピュータプログラムコードを含むコンピュータ読み取り可能な媒体であり、第1のアプリケーションから、第2のアプリケーションにアクセスするための要求を受領するためのコンピュータプログラムコードと、前記第2のアプリケーションに関連するファイヤウォール制御ブロックを読み出すためのコンピュータプログラムコードと、前記ファイヤウォール制御ブロックに基づいて、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するべきかを判定するステップと、前記判定するステップによりアクセスを許可するべきであると判定された場合、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するステップと、を備える、コンピュータ読み取り可能な媒体。請求項22記載のコンピュータ読み取り可能な媒体であって、さらに前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出すためのコンピュータプログラムコードと、前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出すためのコンピュータプログラムコードと、前記第1のPIDが前記第2のPIDに一致するかを判定するためのコンピュータプログラムコードと、前記判定により前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、を備えるコンピュータ読み取り可能な媒体。請求項22記載のコンピュータ読み取り可能な媒体であって、さらに前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出すためのコンピュータプログラムコードと、前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出すためのコンピュータプログラムコードと、前記第1のAIDが前記第2のAIDに一致するかを判定するためのコンピュータプログラムコードと、前記判定により前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、を備えるコンピュータ読み取り可能な媒体。現在の携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、何よりも、安全であるべきである。上述のように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース処理能力および/またはメモリでの動作、および/または、高度に特化した機能の提供を行う。プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境例えば、インターネットでの使用に適したプログラミング言語である。C言語の外観および感じを有するように設計されているが、Cよりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいは、ネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。JavaTMプラットフォームは、JavaCardTM技術を含む。JavaCardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。JavaSmartCardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。JavaSmartCardTMに格納された情報は、携帯可能である。JavaCardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となるJavaCardTM技術は、スマートボタンおよびUSBトークン図1Cおよび1Dに例示のように、スマートカード以外の形態でも存在する。スマートカードと同様に、スマートボタンおよびUSBトークンも、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を内蔵可能で、通常は接触に基づき、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。いずれの場合も、こうした他の形態は、スマートカードと同様のプログラミング能力を提供可能であり、不正改変防止特性を有する。JavaTMプログラミング環境が提供する保護に加え、JavaTMカード技術は、追加されたランタイム実行の保護手段として、アプリケーションまたはアプレットファイヤウォールを提供する。ファイヤウォールは、基本的には、JavaTMカードプラットフォームを別個の保護オブジェクト空間またはコンテキストに区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間またはコンテキストは、互いにアクセスできない場合がある。アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、個々のアプレットに基づいてファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある例えば、JCSystem.getAppletShareableInterfaceObjectメソッド。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、JavaTMカードランタイム環境JCREは、メソッド例えば、getSharableInterfaceObjectメソッドを呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として使用可能な制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ある構成要素が別の構成要素にアクセス可能かを判定するために使用できる。一例として、制御ブロックは、本発明の一実施形態によるJavaTMカードコンピューティング環境内の各JavaTMアプリケーションまたはアプレットに対して提供できる。これにより、ファイヤウォール境界を個別のアプレット毎に選択的に構成および定義できる柔軟な環境が可能となる。これにより、各アプレットが所定のアプレットセットに対するアクセスを許可できると共に、その逆も可能となるような形でファイヤウォール境界を定義できる、柔軟な環境が提供される。加えて、異なるシステム要件例えば、処理速度、メモリに対して適切となり得る様々な手法を使用して、ファイヤウォール制御ブロックを実装可能であることが例示される。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの例えば、スマートカードに対してセキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックにおいて、様々な手法を使用してセキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。本発明は、システム、装置、方法、またはコンピュータ読み取り可能な媒体を含む、多数の方法として実装できる。本発明のいくつかの実施形態について、下で説明する。コンピューティング環境として、本発明の一実施形態は、オペレーティングシステムと、オペレーティングシステム上で動作するバーチャルマシンと、バーチャルマシン上で動作する第1および第2のアプリケーションとを含む。加えて、ファイヤウォール制御ブロックが、コンピューティング環境に提供される。ファイヤウォール制御ブロックは、第2のアプリケーションに対する第1のアプリケーションのアクセス権を定義し、さらに、第1のアプリケーションに対する第2のアプリケーションのアクセス権を定義する。このファイヤウォール制御ブロックは、例えば、携帯機器用に実装できる。一例として、JavaTMスマートカードは、本発明によるファイヤウォール制御ブロックを使用して実装可能である。さらに別の実施形態では、JavaTM対応コンピューティング環境にセキュリティを提供する方法として実装できる。JavaTM対応コンピューティング環境は、JavaTMバーチャルマシンと、JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含む。最初に、第1のJavaTM対応アプレットからの要求が受領される。この要求は、第2のJavaTM対応アプレットにアクセスするための要求である。次に、第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックが読み出される。その後、ファイヤウォール制御ブロックに基づいて、第1のJavaTM対応アプレットが第2のJavaTM対応アプレットにアクセスするのを許可するべきかが決定される。以下で説明するように、この決定は、様々な異なる基準に基づくものにできる。したがって、第1のJavaTM対応アプレットは、アクセスを許可するべきであると決定された場合のみ、アクセスを認められる。同様に、コンピュータプログラムコードを含むコンピュータ読み取り可能な媒体も実装可能である。背景の節で説明したように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース処理能力および/またはメモリでの動作、および/または、高度に特化した機能の提供を行う。プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境例えば、インターネットでの使用に適したプログラミング言語である。C言語の見た目を有するように設計されているが、Cよりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいはネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される、小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。JavaTMプラットフォームは、JavaCardTM技術を含む。JavaCardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて、厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。JavaSmartCardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。JavaSmartCardTMに格納された情報は、携帯可能である。JavaCardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となる。JavaCardTM技術は、スマートボタンおよびUSBトークン図2Aおよび2Bに例示のように、スマートカード以外の形態でも存在する。これらも、スマートカードと同様に、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を含み、接触に基づいており、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。両方とも、スマートカードと同様のプログラミング能力を提供し、不正改変防止特性を有する。JavaTMプログラミング環境が提供する保護に加え、JavaCardTM技術は、追加されたランタイムの実行保護手段として、アプリケーションまたはアプレットファイヤウォールを提供する。ファイヤウォールは、基本的には、JavaCardTMプラットフォームを別個の保護オブジェクト空間またはコンテキストに区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間またはコンテキストは、互いにアクセスできない場合がある。アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、アプレット毎にファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある例えば、JCSystem.getAppletShareableInterfaceObjectメソッド。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、Javaカードランタイム環境JCREは、メソッド例えば、getSharableInterfaceObjectメソッドを呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として、制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ファイヤウォール制御ブロックにおいて定義されたアクセス権に基づいて、ある構成要素が別の構成要素にアクセス可能かを決定するために使用できる。一例として、制御ブロックは、本発明の一実施形態によるJavaCardTMコンピューティング環境内の各JavaTMアプリケーションまたはアプレットに対して提供できる。これにより、各アプレットが所望のアプレットセットにアクセスできるように、ファイヤウォール境界を各アプレットの周囲に構成できる。加えて、例示されるように、ファイヤウォール制御ブロックは、異なるシステム要件例えば、処理速度、メモリにおいて適切となり得る様々な手法を使用して実装できる。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの例えば、スマートカードにおいて、セキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックを、互いに連動させて、あるいは組み合わせて、セキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。本発明の実施形態について、図1ないし図5を参照して下で説明する。しかしながら、これらの図に関して本明細書に記載する詳細な説明が例示的な目的のみを有し、こうした限定された実施形態の範囲を本発明が超えることは、当業者に容易に理解されよう。図2は、本発明の一実施形態による、例示的なコンピューティング環境200を示している。コンピューティング環境200は、カード側202と、リーダ側204と、バックエンドアプリケーションおよびシステム206とを含む。説明する実施形態において、カード側202は、多重アプリケーション環境を提供するJavaCardTMプラットフォーム202として実装される。図2に示したように、複数のJavaCardTMアプリケーションまたはアプレットA、B、C、D、E、F、およびGが、JavaCardTMプラットフォーム202またはJavaCardTMに常駐してよい。こうしたJavaCardTMアプリケーションまたはアプレットは、Javaカードランタイム環境JCRE208によってサポートされる。Javaカードランタイム環境JCRE208は、JavaCardTMフレームワーク、アプリケーションプログラムインタフェースAPI、およびセキュリティ210を含む。Javaカードランタイム環境JCRE208は、カードオペレーティングシステムOS214がサポートするJavaTMバーチャルマシン212上で動作する。JavaCardTMアプレットA、B、C、D、E、F、G、およびHは、ロード時にインスタンス化可能であり、電源をオフにした時も存在し続ける。そのため、カードのアプレットは、サーバと同じように振る舞い、受動状態を維持できる。言い換えると、カードプラットフォーム202の電源を入れた後、アプレットは、選択されるまで非アクティブを維持し、選択時に初期化を行ってもよい。リーダ側204は、ホストアプリケーション220と、カードアクセプタンスデバイスCAD224とを含む。ホストアプリケーション220は、例えば、PC、電子決済端末、携帯電話、またはセキュリティサブシステム等のデスクトップまたは端末に常駐可能である。いずれの場合も、ホストアプリケーション220は、バックエンドアプリケーションおよびシステム206とJavaCardTMアプレットA、B、C、D、E、F、およびGとの間の通信を円滑化できる。カードアクセプタンスデバイスCAD224は、例えば、ホストアプリケーション220とJavaCardTMプラットフォーム202との間に位置するインタフェースデバイスにすることができる。加えて、カードアクセプタンスデバイスCAD224は、カードへ電力を提供し、および/または、カード側202との電気または高周波RF通信の円滑化を行うことができる。CAD224は、例えば、シリアルポートを使用してデスクトップコンピュータに取り付けたカードリーダにすることが可能であり、レストランまたはガソリンスタンドの電子決済端末等の端末に統合してもよい。さらに、CAD224は、例えば、ホストアプリケーション220からJavaCardTMプラットフォーム202へアプリケーションプロトコルデータユニットAPDUコマンドを転送できることに留意されたい。さらに、アプリケーションプロトコルデータユニットAPDUを使用して、JavaCardTMプラットフォーム202からホストアプリケーション220へ応答を転送することもできる。したがって、リーダ側204により、JavaCardTMプラットフォーム202のユーザは、ホストアプリケーション220および/またはバックエンドアプリケーションおよびシステム206によって提供されるサービスにアクセスできる。バックエンドアプリケーションおよびシステム206は、JavaTMアプレットA、B、C、D、E、F、およびGをサポートするサービスを提供する。例えば、バックエンドアプリケーション206は、電子決済システムとの接続を提供する。そのため、バックエンドアプリケーションおよびシステム206は、例えば、クレジットカードおよび/またはその他の支払い情報へのアクセスを提供できる。理解されるように、Javaカードランタイム環境JCRE208は、JavaTMアプレットA、B、C、D、E、F、およびGにファイヤウォール保護を提供できる。さらに、ランタイム環境JCRE208によって提供されるファイヤウォール保護は、コンフィギュラブルである。これは、特に、1個以上のJavaTMアプレットを含むパッケージ境界に基づいてファイヤウォール保護を定義する必要がないことを意味する。言い換えると、ファイヤウォール保護は、パッケージ230、232、324に基づいて定義する必要がない。ファイヤウォール保護は、さらに説明するファイヤウォール制御ブロック例えば、図3参照を使用して構成可能だが、最初に、コンフィギュラブルファイヤウォールについてさらに説明する。図2に示したように、パッケージ230は、JavaTMアプレットAおよびBを含む。同様に、パッケージ232は、JavaTMアプレットCおよびDを含む。パッケージ234は、JavaTMアプレットE、F、およびGを含む。しかしながら、ファイヤウォール境界は、JavaTMアプレット毎に独立して定義できる。言い換えると、JavaTMアプレットA、B、C、D、E、F、およびGのそれぞれについて、JavaTMアプレットを含むパッケージに依存せずにファイヤウォール境界を定義できる。一例として、パッケージ230のJavaTMアプレットAには、ファイヤウォール境界部240を介して、パッケージ232のJavaTMアプレットCへのアクセスを許可できる。しかしながら、ファイヤウォール部240は、パッケージ230のJavaTMアプレットBがパッケージ232のJavaTMアプレットCへのアクセスを試みた時には、そのアクセスを拒否し得る。更なる説明のために、図2では、JavaTMアプレットDの周囲にファイヤウォール境界部242を示している。ファイヤウォール境界部242は、例えば、同じパッケージ232内に含まれるJavaTMアプレットCを含む他の全てのJavaTMアプレットによるアクセスを拒否できる。しかしながら、JavaTMアプレットDは、他のアプレット例えば、JavaTMアプレットBへのアクセスが可能であってもよいことに留意されたい。さらに、ファイヤウォールは、パッケージ境界に関係なく1個以上のJavaTMアプレットおよび/またはパッケージによってアクセス可能なライブラリを実装するために使用できることに留意されたい。一例として、JavaTMアプレットEおよびFは、ライブラリ250として実装できる。ライブラリ250は、JavaTMアプレットA、B、C、およびDのいずれかによってアクセスできる。上記のように、ファイヤウォール境界は、ファイヤウォール制御ブロックを使用して実装できる。このファイヤウォール制御ブロックは、本発明の一態様により、JavaTMアプレットおよび/またはJavaTMパッケージ毎に定義できる。ファイヤウォール制御は、JavaTMアプレットに別のJavaTMアプレットおよび/またはJavaTMパッケージへのアクセスを認めるべきかを決定するのに使用できる。図3は、本発明の一実施形態によるファイヤウォール制御ブロック300を示している。ファイヤウォール制御ブロック300は、ファイヤウォール制御値302およびファイヤウォール制御インジケータ304を含む。ファイヤウォール制御値302は、アクセス権の定義を提供する。ファイヤウォール制御インジケータ304は、ある構成要素が別の構成要素にアクセスするべきかを決定するために、定義をどのように解釈するべきかを示す。ファイヤウォール制御値302は、例えば、JavaTMアプレットに対するファイヤウォールアクセス値を定義するために使用できる。言い換えると、制御値302は、第1のJavaTMアプレットおよび/またはパッケージに対するアクセス権を定義できる。ファイヤウォール制御インジケータ304は、他のJavaTMアプレットが第1のJavaTMアプレットおよび/またはJavaTMパッケージにアクセスできるかを決定するために使用できる。理解されるように、ファイヤウォール制御値302および304は、例えば、それぞれバイトの配列即ち、1バイト以上の配列として実装できる。図3Bは、ファイヤウォール制御ブロック310の実装を例示している。ファイヤウォール制御ブロック310は、M個のバイトの配列として表されるファイヤウォール制御値を含む。N個のバイトの配列は、ファイヤウォール制御インジケータを表す。Nは、通常Mより小さい即ち、通常、ファイヤウォール制御インジケータに必要なバイト数は少ないことに留意されたい。更なる説明のために、図4は、図2のアプレットA、B、C、D、E、F、およびGに対してそれぞれ実装可能な、簡略化ファイヤウォール制御ブロックA、B、C、D、E、F、およびGを示している。そのため、ファイヤウォール制御ブロックAは、例えば、どのJavaTMアプレットがJavaTMアプレットAによってアクセス可能かを決定するために使用できる。加えて、ファイヤウォール制御ブロックAは、別のアプレットがJavaTMアプレットAにアクセス可能かを決定するために使用できる。図4に示したように、ファイヤウォール制御ブロックAは、ファイヤウォール制御値402およびファイヤウォール制御インジケータ404を含む。ファイヤウォール制御値402は、一連の数値例えば、バイト値{1,2,3,4,5,6}として表現される。ファイヤウォール制御値402{1,2,3,4,5,6}は、例えば、JavaTMアプレットAがJavaTMアプレットCにアクセス可能かを決定するために使用できる。この決定を行うために、ファイヤウォール制御ブロックCのファイヤウォール制御インジケータ408を使用できる。ファイヤウォール制御インジケータ408は{3}の値を示す。このインジケータ値は、例えば、ファイヤウォール制御ブロックCのファイヤウォール制御値406{1,2,3,7,8,9}の最初の3個の値に一致するJavaTMアプレットまたはパッケージへのアクセスを可能にするものと解釈できる。これは、ファイヤウォール制御値402{1,2,3,4,5,6}の最初の3個の値を、ファイヤウォール制御値406{1,2,3,7,8,9}の最初の3個の値と比較できることを意味する。ファイヤウォール制御値402{1,2,3,4,5,6}の最初の3個の値は、ファイヤウォール制御値406{1,2,3,7,8,9}の最初の3個の値と一致することに留意されたい。したがって、アプレットAについて、アプレットCへのアクセスを許可できる。一方、アプレットCは、アプレットAにアクセスできず、これはファイヤウォール制御値406{1,2,3,7,8,9}の最初の4個の値がファイヤウォール制御値402{1,2,3,4,5,6}と一致するべきであることをファイヤウォール制御インジケータ404{4}が示しているためである。しかしながら、第4の値は、一致していない即ち、7は、4と等しくない。したがって、アプレットCは、アプレットAへのアクセスを拒否される。同様に、ファイヤウォール制御値410{1,9,4,3,5,6}の第2の値または第3の値がファイヤウォール制御値406{1,2,3,7,8,9}の第2の値または第3の値と一致しないため、JavaTMアプレットBは、JavaTMアプレットCへのアクセスを許可されない。ファイヤウォール制御ブロックDのファイヤウォール制御インジケータ412は、{40}の値を示す。{40}の値は、例えば、他の全てのJavaTMアプレットがJavaTMアプレットDにアクセスできないJavaCardTM管理システムのみがJavaTMアプレットDにアクセスできることを示し得る。しかしながら、JavaTMアプレットDは、他のJavaTMアプレット例えば、JavaTMアプレットBにアクセス可能であってよい。一方、JavaTMアプレットEおよびFにそれぞれ提供されたファイヤウォール制御インジケータ414および416は、例えば、最初のファイヤウォール制御値が値{1}に等しい全てのJavaTMアプレット例えば、アプレットA、B、C、D、およびGとのアクセスを可能にするものと解釈可能な{1}の値を示し得る。そのため、アプレットEおよびFは、例えば、別の選択されたアプレットに対して提供可能なライブラリを表現できる。図3Cは、本発明の別の実施形態による制御ブロック320を示している。図3Cに示したように、単一のバイトを使用してファイヤウォール制御値302を実装し、ファイヤウォール制御値300をバイトの配列として実装できる。さらに、本発明の別の実施形態により、追加の単一バイトを使用して、ファイヤウォール制御ブロックを実装できることに留意されたい。この単一バイトは、通常既に利用可能なデータに対して追加できる。説明のため、図3Dは、本発明の別の実施形態による、ファイヤウォールコンテキストの実装330を表している。ファイヤウォールコンテキストの実装330は、通常JavaCardTM環境に提供される、コンテキスト識別情報ID332およびアプリケーション識別子データAIDを含む。これらに加え、AIDのバイトインジケータ336が提供される。AIDのバイトインジケータ336は、ファイヤウォール制御インジケータ例えば、図4に示した404、408と同様に使用可能であり、一方、アプリケーション識別子データAIDは、ファイヤウォール制御値例えば、図4に示した402、406として使用できる。理解されるように、既存のJavaCardTM環境と同様に、アプリケーション識別子データAIDは、ISO7816規格に基づいて定義できる。ISO7816は、スマートカードシステムを構築するための広範な技術について記述したマルチパート規格である。ISO7816-5は、カードアプリケーションおよびカードファイルシステム内の特定の種類のファイルを一意に識別するために使用するべきAIDアプリケーション識別子データ形式を定義している。JavaCardTMプラットフォームは、AIDデータ形式を使用して、アプレットおよびパッケージを特定する。AIDは、国際標準化機構ISOによって管理されているため、一意の識別子として使用できる。図3Eに示したように、JavaCardTMプラットフォームで使用するAID形式は、2つの別個の部分として解釈されるバイトの配列にすることができる。第1の部分は、RIDリソース識別子として知られる5バイトの値である。第2の部分は、PIX固有アプリケーション識別子拡張として知られる可変長の値である。PIXは、0ないし11バイトの長さにできる。したがって、AIDは、全長5ないし16バイトにできる。ISOは、企業へのRIDの割り当てを制御しており、各企業はISOから固有のRIDを取得している。企業は、独自のRIDを使用して、AIDに対するPIXの割り当てを管理している。JavaTMプラットフォームにおいて、パッケージは、Unicode文字列と、インターネットドメイン名に基づく命名体系とを使用して一意に特定される。JavaCardTMプラットフォームにおいて、パッケージおよびアプレットは、AIDを使用して特定できる。そのため、JavaCardTM技術に対応した装置にインストールされる各アプレットは、一意のAIDを有する。このAIDは、パッケージAIDと同様に構築される。通常は、アプレットプロバイダのRIDと、そのアプレットのPIXとの連結である。図3Fは、本発明のさらに別の実施形態による、ファイヤウォール制御ブロック350の実装を示している。ファイヤウォール制御ブロック350は、例えば、図3Dの制御ブロック330の実装に相当する。いずれの場合も、既存のJavaCardTM環境と同様に、バイト配列を使用して、AIDを表現し、短い値を使用して、コンテキストまたはオブジェクト空間を表現するのに一般的に使用されるコンテキストIDを表現する。理解されるように、AIDバイトインジケータは、単一のバイト値として実装される。そのため、制御ブロック350は、ファイヤウォールの実装によるオーバヘッドを最小化する必要がない状況に適したものとなり得る。しかしながら、上記と同様の形で、AIDバイトインジケータは、ファイヤウォール制御インジケータとして使用可能であり、AIDは、ファイヤウォール制御値として使用できる。図3Gは、本発明のさらに別の実施形態による、制御ブロック360を示している。説明する実施形態において、制御ブロック360は、RID値を意味する単一のバイト配列を使用して実装される。これは、JavaTMアプレットまたはパッケージが別のJavaTMアプレットまたはパッケージにアクセス可能かを決定するために、RID値のみが使用されることを意味する。一例として、RID値が一致する場合にアクセスを許可できる。RID値は、JavaCardTM環境において一般的に提供される。したがって、制御ブロック360も、ファイヤウォール制御ブロック情報を格納および処理するための大量のオーバヘッドを必要とすることなく実装できる。RID値と同様に、AID値を使用して、ファイヤウォール制御ブロックを実装できる。上記に基づき、本発明において、多数の異なるファイヤウォール制御ブロックの実施形態が考えられることは明らかであろう。こうした実施形態の一つ以上は、特定のシステム要件例えば、メモリストレージ、速度、その他に適したものになり得る。例えば、図3Gの制御ブロック360は、ファイヤウォールに指定されたメモリおよびオーバヘッドを最小化するべき環境に適したものになり得る。さらに、様々な実施形態を組み合わせてよいことにも留意されたい。一例として、図3Hは、本発明のさらに別の実施形態による、制御ブロック370を示している。制御ブロック370は、例えば、制御ブロック320および350の組み合わせを表現できる。説明する実施形態では、AID、ファイヤウォール制御値、およびファイヤウォール制御インジケータが提供される。下で例示するように、制御ブロック370は、JavaTMカード環境においてコンフィギュラブルファイヤウォールを実装するために様々な手法を使用する柔軟性を提供する。加えて、制御ブロック370は、こうした手法のいくつかを例示するのに有用なツールの役割を果たしうる。したがって、図5は、本発明の一実施形態による、JavaTMカード環境においてファイヤウォールを提供する方法500を示している。方法500は、例えば、AID、ファイヤウォール制御値、およびファイヤウォール制御インジケータが全て提供された図3Hの制御ブロック370と共に使用できる。最初に、ステップ502において、第1のJavaTMアプレットの第1のバイトコード命令を読み出す。次に、ステップ504において、第1のJavaTMアプレットのバイトコードが別のまたは第2のJavaTMアプレット内のオブジェクトにアクセスを試みているかについて判定する。ステップ504において、第1のJavaTMアプレットのバイトコードが第2のJavaTMアプレット内のオブジェクトにアクセスを試みていないと判定された場合、方法500は、ステップ506へ進み、最後のバイトコード命令に到達したかを判定する。そうである場合、方法500は終了する。しかしながら、ステップ506において、最後のバイトコード命令に到達していないと判定された場合、方法500は、ステップ508へ進み、第1のJavaTMアプレットの次のバイトコード命令を読み出す。その後、方法500は、ステップ504へ進み、第1のJavaTMアプレットのバイトコードが第2のJavaTMアプレット内のオブジェクトにアクセスを試みているかを判定する。ステップ504において、第1のJavaTMアプレットのバイトコードが第2のJavaTMアプレット内のオブジェクトにアクセスを試みていると判定された場合、方法500は、ステップ510へ進み、第2のJavaTMアプレットのファイヤウォール制御インジケータを読み出す。これに応じて、ステップ512では、第2のJavaTMアプレットのファイヤウォール制御インジケータが第1の値例えば、0x80に等しいかを判定する。ステップ512において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第1の値に等しいと判定された場合、方法500は、ステップ514へ進み、制御ブロックのファイヤウォール保護を迂回できる例えば、パッケージ境界に基づいて、ファイヤウォール保護を提供できる。方法500は、ステップ514の後で終了する。しかしながら、ステップ512において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第1の値に等しくないと判定された場合、方法500は、ステップ516へ進み、第2のJavaTMアプレットのファイヤウォール制御インジケータが第2の値に等しいかを判定する。第2の値は、第1および第2のJavaTMアプレットのPIX値例えば、図3E参照が一致するか比較するべきであることを示唆できる。したがって、第2のJavaTMアプレットのファイヤウォール制御インジケータが第2の値に等しい場合、ステップ518において、第1および第2のアプレットのPIX値を比較できる。その後、方法500は、ステップ520へ進み、これらの値が一致するかを判定する。これらの値が一致しない場合、方法500は、ステップ522へ進み、アクセスが拒否される。加えて、ステップ524において、エラーを出力できる例えば、Java.lang.SecurityExceptionをスローできる。方法500は、ステップ524の後で終了する。一方、ステップ520において、一致すると判定された場合、方法500は、ステップ526へ進み、第1のJavaTMアプレットは、第2のJavaTMアプレットへのアクセスを許可される。理解されるように、このアクセスは、共有可能なインタフェースを実装する必要なく提供できる。一実施形態において、呼び出し可能なメソッドによって、第2のアプレットに対する参照が提供される。このメソッドは、例えば、JavaTMカード管理またはシステム環境の一部として実装された比較的単純な参照取得メソッドにできる例えば、getAppletReferenceメソッド。当業者が理解するように、この参照取得メソッドに対して、パートナーメソッドを提供することもできる。このパートナーメソッドは、例えば、JavaTMアプレットクラスとして実装されるメソッドにできる。図5を再び参照すると、ステップ516において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第2の値に等しくないと判定された場合、方法500は、ステップ528へ進み、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しいかを判定する。そうである場合、方法500は、ステップ530へ進み、第1および第2のアプレットのAID例えば、図3E参照値を比較する。その後、方法500は、上記と同様の形でステップ520へ進む。しかしながら、ステップ528において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しくないと判定された場合、方法500は、ステップ532へ進み、第4の値に等しいかを判定する。第4の値は、JavaCardTM管理のみに対してアクセスが確保されることを示めすことができる。したがって、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しい場合、方法500は、ステップ534へ進み、JavaCardTM管理コンテキストの下で、バイトコードが実行されているかを判定する例えば、コンテキストIDがJavaCardTM管理のものかを判定する。この判定に応じて、方法500は、上記と同様に、アクセスが拒否されるステップ522か、あるいはアクセスが許可されるステップ526へ進む。最後に、ステップ532において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しくないと判定された場合、方法500は、ステップ536へ進み、ファイヤウォール制御インジケータが解釈される。一例として、ファイヤウォール制御インジケータは、図4に例示したものと同様の形で解釈可能であり、第1および第2のアプレットにそれぞれ割り当てられたファイヤウォール制御値の1バイト以上を、ファイヤウォール制御インジケータの値に基づいて比較する。いずれの場合も、解釈に基づいて、ステップ538で、適切な制御値を決定し、一致するかを比較できる。したがって、方法500は、ステップ520へ進み、値が一致するかを判定する。方法500は、上記と同様な形で進み、ステップ526においてアクセスを許可し、あるいはステップ522において拒否する。方法500は、エラーが出力されるステップ524、あるいは第1のJavaTMアプレットが第2のJavaTMアプレットへのアクセスを許可されるステップ526の何れかに続いて終了する。本発明の多くの特徴および利点について、記載の説明から明らかであり、したがって、付記した請求項は、こうした本発明の全ての特徴および利点を網羅するものである。さらに、多数の変形例および変更例が当業者によって容易に発案されるため、本発明を例示および説明された厳密な構成および動作に限定することは望ましくない。したがって、全ての適切な変形例および等価物は、本発明の範囲に含まれるものとして分類し得る。"