コンフィギュラブルファイヤウォールを利用するシステム、方法、携帯コンピューティング機器、及びコンピュータ読み取り可能な媒体
【課題】コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として使用可能なコンフィギュラブルファイヤウォールを提供する。
【解決手段】ファイヤウォール制御ブロックは、コンピューティング環境200において、ある構成要素(例えば、アプレット)が別の構成要素にアクセス可能かを判定し、各アプレットが所定の他のアプレットセットに対するアクセスを許可できるような形でファイヤウォール境界240を構成する。ファイヤウォール制御ブロックは、異なるシステム要件(例えば、処理速度、メモリ)に対して実装できるため、相対的に限定された処理能力での動作、および/または高度に特化した機能性の提供を行うコンピューティングシステム(例えば、スマートカード)に対してコンフィギュラブルファイヤウォールを実装できる。
【解決手段】ファイヤウォール制御ブロックは、コンピューティング環境200において、ある構成要素(例えば、アプレット)が別の構成要素にアクセス可能かを判定し、各アプレットが所定の他のアプレットセットに対するアクセスを許可できるような形でファイヤウォール境界240を構成する。ファイヤウォール制御ブロックは、異なるシステム要件(例えば、処理速度、メモリ)に対して実装できるため、相対的に限定された処理能力での動作、および/または高度に特化した機能性の提供を行うコンピューティングシステム(例えば、スマートカード)に対してコンフィギュラブルファイヤウォールを実装できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューティングシステムに関し、特に、安全なコンピューティングシステムを提供する手法に関する。
【背景技術】
【0002】
通常のデスクトップと異なり、他のコンピューティング機器は携帯型であり、特定の用途に高度に特化しており、相対的に少ないメモリ、および/または処理制約と共に動作する。一例として、スマートカードは、特定の用途(例えば、セキュリティ)に高度に特化可能な携帯コンピューティング機器を代表するものである。スマートカードは、提供可能なメモリ量および処理能力が一般にデスクトップ(例えば、パーソナルコンピュータ)環境のものほど多くないコンピューティング環境の例でもある。そのため、スマートカードは、好例となり得るものであり、以下に説明する。
【0003】
スマートカードは、重要情報を格納するために使用されるメモリカード(例えば、フォンカード)の形態で約20年前に導入された。しかしながら、現在のスマートカードは、最初に導入されたものに比べ、遙かに高度化している。現在、スマートカードは、埋め込み集積回路(IC)を有することができる。スマートカードは、例えば、埋め込み集積回路(IC)を含むプラスチックカードである。スマートカードは、クレジットカードのようにすることができる。さらに、機密性の高い用途(例えば、バンキング、セキュリティ)にも使用できる。その結果として、安全なスマートカードを開発するために、多数の団体が広範な活動を行っている。
【0004】
スマートカードは、国際標準化機構(ISO)および国際電気標準会議(IEC)の第1合同技術委員会(JTC1)により定義および管理されている業界標準である。1987年に導入され、2003年に最新の更新が行われた一連の国際規格ISO/IEC7816では、スマートカードの様々な態様を定義しており、これには物理的特徴、物理的接触、電子信号および伝送プロトコル、コマンド、セキュリティアーキテクチャ、アプリケーション識別子、共通データ要素が含まれる。
【0005】
一部の使用領域において、スマートカードは、単に保護された不揮発性ストレージを提供するメモリカードに過ぎない。しかしながら、さらに進んだスマートカードは、マイクロプロセッサとメモリとの両方を有し、安全な処理およびストレージのために使用できる。スマートカードは、電池なしで動作できる(即ち、カードリーダに接続された時のみアクティブとなる)。接続時、リセットシーケンスの後、カードは、受動状態を維持し、クライアント(ホスト)アプリケーションからのコマンド要求受領のため待機する。名称が示すとおり、接触スマートカードは、カードリーダとスマートカードの8ピン接点との間の物理的接触を介して通信することで機能し、一方、非接触スマートカードは、通常2フィート未満の範囲で高周波信号を用いて通信する。非接触スマートカードの無線通信は、盗難防止および在庫追跡のために店舗で使用される高周波ID(RFID)タグに類似する技術に基づいている。図1は、接触および非接触スマートカードを表している。図1Aおよび1Bは、それぞれ、接触および非接触スマートカードを表している。
【発明の概要】
【発明が解決しようとする課題】
【0006】
現在の携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、何よりも、安全であるべきである。
【0007】
上述のように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース(処理能力および/またはメモリ)での動作、および/または、高度に特化した機能の提供を行う。
【0008】
プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境(例えば、インターネット)での使用に適したプログラミング言語である。C++言語の「外観および感じ」を有するように設計されているが、C++よりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいは、ネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。
【0009】
JavaTMプラットフォームは、Java CardTM技術を含む。Java CardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。Java Smart CardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。Java Smart CardTMに格納された情報は、携帯可能である。Java CardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となる
【0010】
Java CardTM技術は、スマートボタンおよびUSBトークン(図1Cおよび1Dに例示)のように、スマートカード以外の形態でも存在する。スマートカードと同様に、スマートボタンおよびUSBトークンも、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を内蔵可能で、通常は接触に基づき、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。いずれの場合も、こうした他の形態は、スマートカードと同様のプログラミング能力を提供可能であり、不正改変防止特性を有する。
【0011】
JavaTMプログラミング環境が提供する保護に加え、JavaTMカード技術は、追加されたランタイム実行の保護手段として、アプリケーション(またはアプレット)ファイヤウォールを提供する。ファイヤウォールは、基本的には、JavaTMカードプラットフォームを別個の保護オブジェクト空間(または「コンテキスト」)に区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間(またはコンテキスト)は、互いにアクセスできない場合がある。
【0012】
アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、個々のアプレットに基づいてファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。
【0013】
パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある(例えば、JCSystem.getAppletShareableInterfaceObject()メソッド)。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、JavaTMカードランタイム環境(JCRE)は、メソッド(例えば、getSharableInterfaceObject()メソッド)を呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。
【課題を解決するための手段】
【0014】
上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として使用可能な制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ある構成要素が別の構成要素にアクセス可能かを判定するために使用できる。
【0015】
一例として、制御ブロックは、本発明の一実施形態によるJavaTMカードコンピューティング環境内の各JavaTMアプリケーション(またはアプレット)に対して提供できる。これにより、ファイヤウォール境界を個別のアプレット毎に選択的に構成および定義できる柔軟な環境が可能となる。これにより、各アプレットが所定のアプレットセットに対するアクセスを許可できると共に、その逆も可能となるような形でファイヤウォール境界を定義できる、柔軟な環境が提供される。
【0016】
加えて、異なるシステム要件(例えば、処理速度、メモリ)に対して適切となり得る様々な手法を使用して、ファイヤウォール制御ブロックを実装可能であることが例示される。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの(例えば、スマートカード)に対してセキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックにおいて、様々な手法を使用してセキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。
【0017】
本発明は、システム、装置、方法、またはコンピュータ読み取り可能な媒体を含む、多数の方法として実装できる。本発明のいくつかの実施形態について、下で説明する。
【0018】
コンピューティング環境として、本発明の一実施形態は、オペレーティングシステムと、オペレーティングシステム上で動作するバーチャルマシンと、バーチャルマシン上で動作する第1および第2のアプリケーションとを含む。加えて、ファイヤウォール制御ブロックが、コンピューティング環境に提供される。
【0019】
ファイヤウォール制御ブロックは、第2のアプリケーションに対する第1のアプリケーションのアクセス権を定義し、さらに、第1のアプリケーションに対する第2のアプリケーションのアクセス権を定義する。このファイヤウォール制御ブロックは、例えば、携帯機器用に実装できる。一例として、JavaTMスマートカードは、本発明によるファイヤウォール制御ブロックを使用して実装可能である。
【0020】
さらに別の実施形態では、JavaTM対応コンピューティング環境にセキュリティを提供する方法として実装できる。JavaTM対応コンピューティング環境は、JavaTMバーチャルマシンと、JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含む。最初に、第1のJavaTM対応アプレットからの要求が受領される。この要求は、第2のJavaTM対応アプレットにアクセスするための要求である。次に、第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックが読み出される。その後、ファイヤウォール制御ブロックに基づいて、第1のJavaTM対応アプレットが第2のJavaTM対応アプレットにアクセスするのを許可するべきかが決定される。以下で説明するように、この決定は、様々な異なる基準に基づくものにできる。したがって、第1のJavaTM対応アプレットは、アクセスを許可するべきであると決定された場合のみ、アクセスを認められる。同様に、コンピュータプログラムコードを含むコンピュータ読み取り可能な媒体も実装可能である。
【図面の簡単な説明】
【0021】
本発明は、同様の参照符号が同様の構成要素を示す添付図面と併せて、以下の詳細な説明から容易に理解されよう。
【図1A】携帯コンピューティング機器を表す図である。
【図1B】携帯コンピューティング機器を表す図である。
【図1C】携帯コンピューティング機器を表す図である。
【図1D】携帯コンピューティング機器を表す図である。
【図2】本発明の一実施形態による、例示的なコンピューティング環境を示す図である。
【図3A】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3B】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3C】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3D】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3E】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3F】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3G】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3H】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図4】Javaアプレットとして実装可能な簡略化ファイヤウォール制御ブロックを示す図である。
【図5】本発明の一実施形態による、JavaTMカード環境において、ファイヤウォールを提供する方法を例示する図である。
【発明を実施するための形態】
【0022】
背景の節で説明したように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース(処理能力および/またはメモリ)での動作、および/または、高度に特化した機能の提供を行う。
【0023】
プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境(例えば、インターネット)での使用に適したプログラミング言語である。C++言語の「見た目(look and feel)」を有するように設計されているが、C++よりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいはネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される、小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。
【0024】
JavaTMプラットフォームは、Java CardTM技術を含む。Java CardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて、厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。Java Smart CardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。Java Smart CardTMに格納された情報は、携帯可能である。Java CardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となる。
【0025】
Java CardTM技術は、スマートボタンおよびUSBトークン(図2Aおよび2Bに例示)のように、スマートカード以外の形態でも存在する。これらも、スマートカードと同様に、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を含み、接触に基づいており、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。両方とも、スマートカードと同様のプログラミング能力を提供し、不正改変防止特性を有する。
【0026】
JavaTMプログラミング環境が提供する保護に加え、Java CardTM技術は、追加されたランタイムの実行保護手段として、アプリケーション(またはアプレット)ファイヤウォールを提供する。ファイヤウォールは、基本的には、Java CardTMプラットフォームを別個の保護オブジェクト空間(または「コンテキスト」)に区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間(またはコンテキスト)は、互いにアクセスできない場合がある。
【0027】
アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、アプレット毎にファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。
【0028】
パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある(例えば、JCSystem.getAppletShareableInterfaceObject()メソッド)。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、Javaカードランタイム環境(JCRE)は、メソッド(例えば、getSharableInterfaceObject()メソッド)を呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。
【0029】
上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として、制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ファイヤウォール制御ブロックにおいて定義されたアクセス権に基づいて、ある構成要素が別の構成要素にアクセス可能かを決定するために使用できる。
【0030】
一例として、制御ブロックは、本発明の一実施形態によるJava CardTMコンピューティング環境内の各JavaTMアプリケーション(またはアプレット)に対して提供できる。これにより、各アプレットが所望のアプレットセットにアクセスできるように、ファイヤウォール境界を各アプレットの周囲に構成できる。加えて、例示されるように、ファイヤウォール制御ブロックは、異なるシステム要件(例えば、処理速度、メモリ)において適切となり得る様々な手法を使用して実装できる。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの(例えば、スマートカード)において、セキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックを、互いに連動させて、あるいは組み合わせて、セキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。
【0031】
本発明の実施形態について、図1ないし図5を参照して下で説明する。しかしながら、これらの図に関して本明細書に記載する詳細な説明が例示的な目的のみを有し、こうした限定された実施形態の範囲を本発明が超えることは、当業者に容易に理解されよう。
【0032】
図2は、本発明の一実施形態による、例示的なコンピューティング環境200を示している。コンピューティング環境200は、カード側202と、リーダ側204と、バックエンドアプリケーションおよびシステム206とを含む。
【0033】
説明する実施形態において、カード側202は、多重アプリケーション環境を提供するJava CardTMプラットフォーム202として実装される。図2に示したように、複数のJava CardTMアプリケーション(またはアプレット)A、B、C、D、E、F、およびGが、Java CardTMプラットフォーム202(またはJava CardTM)に常駐してよい。こうしたJava CardTMアプリケーション(またはアプレット)は、Javaカードランタイム環境(JCRE)208によってサポートされる。Javaカードランタイム環境(JCRE)208は、Java CardTMフレームワーク、アプリケーションプログラムインタフェース(API)、およびセキュリティ210を含む。Javaカードランタイム環境(JCRE)208は、カードオペレーティングシステム(OS)214がサポートするJavaTMバーチャルマシン212上で動作する。Java CardTMアプレットA、B、C、D、E、F、G、およびHは、ロード時にインスタンス化可能であり、電源をオフにした時も存在し続ける。そのため、カードのアプレットは、サーバと同じように振る舞い、受動状態を維持できる。言い換えると、カードプラットフォーム202の電源を入れた後、アプレットは、選択されるまで非アクティブを維持し、選択時に初期化を行ってもよい。
【0034】
リーダ側204は、ホストアプリケーション220と、カードアクセプタンスデバイス(CAD)224とを含む。ホストアプリケーション220は、例えば、PC、電子決済端末、携帯電話、またはセキュリティサブシステム等のデスクトップまたは端末に常駐可能である。いずれの場合も、ホストアプリケーション220は、バックエンドアプリケーションおよびシステム206とJava CardTMアプレットA、B、C、D、E、F、およびGとの間の通信を円滑化できる。カードアクセプタンスデバイス(CAD)224は、例えば、ホストアプリケーション220とJava CardTMプラットフォーム202との間に位置するインタフェースデバイスにすることができる。加えて、カードアクセプタンスデバイス(CAD)224は、カードへ電力を提供し、および/または、カード側202との電気または(高周波)RF通信の円滑化を行うことができる。CAD224は、例えば、シリアルポートを使用してデスクトップコンピュータに取り付けたカードリーダにすることが可能であり、レストランまたはガソリンスタンドの電子決済端末等の端末に統合してもよい。さらに、CAD224は、例えば、ホストアプリケーション220からJava CardTMプラットフォーム202へアプリケーションプロトコルデータユニット(APDU)コマンドを転送できることに留意されたい。さらに、アプリケーションプロトコルデータユニット(APDU)を使用して、Java CardTMプラットフォーム202からホストアプリケーション220へ応答を転送することもできる。
【0035】
したがって、リーダ側204により、Java CardTMプラットフォーム202のユーザは、ホストアプリケーション220および/またはバックエンドアプリケーションおよびシステム206によって提供されるサービスにアクセスできる。バックエンドアプリケーションおよびシステム206は、JavaTMアプレットA、B、C、D、E、F、およびGをサポートするサービスを提供する。例えば、バックエンドアプリケーション206は、電子決済システムとの接続を提供する。そのため、バックエンドアプリケーションおよびシステム206は、例えば、クレジットカードおよび/またはその他の支払い情報へのアクセスを提供できる。
【0036】
理解されるように、Javaカードランタイム環境(JCRE208)は、JavaTMアプレットA、B、C、D、E、F、およびGにファイヤウォール保護を提供できる。さらに、ランタイム環境(JCRE208)によって提供されるファイヤウォール保護は、コンフィギュラブルである。これは、特に、1個以上のJavaTMアプレットを含むパッケージ境界に基づいてファイヤウォール保護を定義する必要がないことを意味する。言い換えると、ファイヤウォール保護は、パッケージ230、232、324に基づいて定義する必要がない。ファイヤウォール保護は、さらに説明するファイヤウォール制御ブロック(例えば、図3参照)を使用して構成可能だが、最初に、コンフィギュラブルファイヤウォールについてさらに説明する。
【0037】
図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へのアクセスを試みた時には、そのアクセスを拒否し得る。
【0038】
更なる説明のために、図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のいずれかによってアクセスできる。
【0039】
上記のように、ファイヤウォール境界は、ファイヤウォール制御ブロックを使用して実装できる。このファイヤウォール制御ブロックは、本発明の一態様により、JavaTMアプレットおよび/またはJavaTMパッケージ毎に定義できる。ファイヤウォール制御は、JavaTMアプレットに別のJavaTMアプレットおよび/またはJavaTMパッケージへのアクセスを認めるべきかを決定するのに使用できる。
【0040】
図3は、本発明の一実施形態によるファイヤウォール制御ブロック300を示している。ファイヤウォール制御ブロック300は、ファイヤウォール制御値302およびファイヤウォール制御インジケータ304を含む。ファイヤウォール制御値302は、アクセス権の定義を提供する。ファイヤウォール制御インジケータ304は、ある構成要素が別の構成要素にアクセスするべきかを決定するために、定義をどのように解釈するべきかを示す。
【0041】
ファイヤウォール制御値302は、例えば、JavaTMアプレットに対するファイヤウォールアクセス値を定義するために使用できる。言い換えると、制御値302は、第1のJavaTMアプレットおよび/またはパッケージに対するアクセス権を定義できる。ファイヤウォール制御インジケータ304は、他のJavaTMアプレットが第1のJavaTMアプレットおよび/またはJavaTMパッケージにアクセスできるかを決定するために使用できる。理解されるように、ファイヤウォール制御値302および304は、例えば、それぞれバイトの配列(即ち、1バイト以上の配列)として実装できる。図3Bは、ファイヤウォール制御ブロック310の実装を例示している。ファイヤウォール制御ブロック310は、M個のバイトの配列として表されるファイヤウォール制御値を含む。N個のバイトの配列は、ファイヤウォール制御インジケータを表す。Nは、通常Mより小さい(即ち、通常、ファイヤウォール制御インジケータに必要なバイト数は少ない)ことに留意されたい。
【0042】
更なる説明のために、図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})として表現される。
【0043】
ファイヤウォール制御値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アプレット(またはパッケージ)へのアクセスを可能にするものと解釈できる。
【0044】
これは、ファイヤウォール制御値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へのアクセスを許可できる。
【0045】
一方、アプレットCは、アプレットAにアクセスできず、これはファイヤウォール制御値406({1,2,3,7,8,9})の最初の4個の値がファイヤウォール制御値402({1,2,3,4,5,6})と一致するべきであることをファイヤウォール制御インジケータ404{4}が示しているためである。しかしながら、第4の値は、一致していない(即ち、7は、4と等しくない)。したがって、アプレットCは、アプレットAへのアクセスを拒否される。
【0046】
同様に、ファイヤウォール制御値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にアクセスできない(Java CardTM管理システムのみがJavaTMアプレットDにアクセスできる)ことを示し得る。しかしながら、JavaTMアプレットDは、他のJavaTMアプレット(例えば、JavaTMアプレットB)にアクセス可能であってよい。一方、JavaTMアプレットEおよびFにそれぞれ提供されたファイヤウォール制御インジケータ414および416は、例えば、最初のファイヤウォール制御値が値{1}に等しい全てのJavaTMアプレット(例えば、アプレットA、B、C、D、およびG)とのアクセスを可能にするものと解釈可能な{1}の値を示し得る。そのため、アプレットEおよびFは、例えば、別の選択されたアプレットに対して提供可能なライブラリを表現できる。
【0047】
図3Cは、本発明の別の実施形態による制御ブロック320を示している。図3Cに示したように、単一のバイトを使用してファイヤウォール制御値302を実装し、ファイヤウォール制御値300をバイトの配列として実装できる。
【0048】
さらに、本発明の別の実施形態により、追加の単一バイトを使用して、ファイヤウォール制御ブロックを実装できることに留意されたい。この単一バイトは、通常既に利用可能なデータに対して追加できる。説明のため、図3Dは、本発明の別の実施形態による、ファイヤウォールコンテキストの実装330を表している。ファイヤウォールコンテキストの実装330は、通常Java CardTM環境に提供される、コンテキスト識別情報(ID)332およびアプリケーション識別子データ(AID)を含む。これらに加え、AIDのバイトインジケータ336が提供される。AIDのバイトインジケータ336は、ファイヤウォール制御インジケータ(例えば、図4に示した404、408)と同様に使用可能であり、一方、アプリケーション識別子データ(AID)は、ファイヤウォール制御値(例えば、図4に示した402、406)として使用できる。
【0049】
理解されるように、既存のJava CardTM環境と同様に、アプリケーション識別子データ(AID)は、ISO7816規格に基づいて定義できる。ISO7816は、スマートカードシステムを構築するための広範な技術について記述したマルチパート規格である。ISO7816−5は、カードアプリケーション(およびカードファイルシステム内の特定の種類のファイル)を一意に識別するために使用するべきAID(アプリケーション識別子)データ形式を定義している。Java CardTMプラットフォームは、AIDデータ形式を使用して、アプレットおよびパッケージを特定する。AIDは、国際標準化機構(ISO)によって管理されているため、一意の識別子として使用できる。
【0050】
図3Eに示したように、Java CardTMプラットフォームで使用するAID形式は、2つの別個の部分として解釈されるバイトの配列にすることができる。第1の部分は、RID(リソース識別子)として知られる5バイトの値である。第2の部分は、PIX(固有アプリケーション識別子拡張)として知られる可変長の値である。PIXは、0ないし11バイトの長さにできる。したがって、AIDは、全長5ないし16バイトにできる。ISOは、企業へのRIDの割り当てを制御しており、各企業はISOから固有のRIDを取得している。企業は、独自のRIDを使用して、AIDに対するPIXの割り当てを管理している。JavaTMプラットフォームにおいて、パッケージは、Unicode文字列と、インターネットドメイン名に基づく命名体系とを使用して一意に特定される。Java CardTMプラットフォームにおいて、パッケージおよびアプレットは、AIDを使用して特定できる。そのため、Java CardTM技術に対応した装置にインストールされる各アプレットは、一意のAIDを有する。このAIDは、パッケージAIDと同様に構築される。通常は、アプレットプロバイダのRIDと、そのアプレットのPIXとの連結である。
【0051】
図3Fは、本発明のさらに別の実施形態による、ファイヤウォール制御ブロック350の実装を示している。ファイヤウォール制御ブロック350は、例えば、図3Dの制御ブロック330の実装に相当する。いずれの場合も、既存のJava CardTM環境と同様に、バイト配列を使用して、AIDを表現し、短い値を使用して、コンテキスト(またはオブジェクト空間)を表現するのに一般的に使用されるコンテキストIDを表現する。理解されるように、AIDバイトインジケータは、単一のバイト値として実装される。そのため、制御ブロック350は、ファイヤウォールの実装によるオーバヘッドを最小化する必要がない状況に適したものとなり得る。しかしながら、上記と同様の形で、AIDバイトインジケータは、ファイヤウォール制御インジケータとして使用可能であり、AIDは、ファイヤウォール制御値として使用できる。
【0052】
図3Gは、本発明のさらに別の実施形態による、制御ブロック360を示している。説明する実施形態において、制御ブロック360は、RID値を意味する単一のバイト配列を使用して実装される。これは、JavaTMアプレット(またはパッケージ)が別のJavaTMアプレット(またはパッケージ)にアクセス可能かを決定するために、RID値のみが使用されることを意味する。一例として、RID値が一致する場合にアクセスを許可できる。RID値は、Java CardTM環境において一般的に提供される。したがって、制御ブロック360も、ファイヤウォール制御ブロック情報を格納および処理するための大量のオーバヘッドを必要とすることなく実装できる。RID値と同様に、AID値を使用して、ファイヤウォール制御ブロックを実装できる。
【0053】
上記に基づき、本発明において、多数の異なるファイヤウォール制御ブロックの実施形態が考えられることは明らかであろう。こうした実施形態の一つ以上は、特定のシステム要件(例えば、メモリストレージ、速度、その他)に適したものになり得る。例えば、図3Gの制御ブロック360は、ファイヤウォールに指定されたメモリおよびオーバヘッドを最小化するべき環境に適したものになり得る。
【0054】
さらに、様々な実施形態を組み合わせてよいことにも留意されたい。一例として、図3Hは、本発明のさらに別の実施形態による、制御ブロック370を示している。制御ブロック370は、例えば、制御ブロック320および350の組み合わせを表現できる。説明する実施形態では、AID、ファイヤウォール制御値、およびファイヤウォール制御インジケータが提供される。下で例示するように、制御ブロック370は、JavaTMカード環境においてコンフィギュラブルファイヤウォールを実装するために様々な手法を使用する柔軟性を提供する。加えて、制御ブロック370は、こうした手法のいくつかを例示するのに有用なツールの役割を果たしうる。
【0055】
したがって、図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アプレット内のオブジェクトにアクセスを試みているかを判定する。
【0056】
ステップ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の後で終了する。
【0057】
一方、ステップ520において、一致すると判定された場合、方法500は、ステップ526へ進み、第1のJavaTMアプレットは、第2のJavaTMアプレットへのアクセスを許可される。理解されるように、このアクセスは、共有可能なインタフェースを実装する必要なく提供できる。一実施形態において、呼び出し可能なメソッドによって、第2のアプレットに対する参照が提供される。このメソッドは、例えば、JavaTMカード管理(またはシステム)環境の一部として実装された比較的単純な参照取得メソッドにできる(例えば、getAppletReference()メソッド)。当業者が理解するように、この参照取得メソッドに対して、パートナーメソッドを提供することもできる。このパートナーメソッドは、例えば、JavaTMアプレットクラスとして実装されるメソッドにできる。
【0058】
図5を再び参照すると、ステップ516において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第2の値に等しくないと判定された場合、方法500は、ステップ528へ進み、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しいかを判定する。そうである場合、方法500は、ステップ530へ進み、第1および第2のアプレットのAID(例えば、図3E参照)値を比較する。その後、方法500は、上記と同様の形でステップ520へ進む。
【0059】
しかしながら、ステップ528において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しくないと判定された場合、方法500は、ステップ532へ進み、第4の値に等しいかを判定する。第4の値は、Java CardTM管理のみに対してアクセスが確保されることを示めすことができる。したがって、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しい場合、方法500は、ステップ534へ進み、Java CardTM管理コンテキストの下で、バイトコードが実行されているかを判定する(例えば、コンテキストIDがJava CardTM管理のものかを判定する)。この判定に応じて、方法500は、上記と同様に、アクセスが拒否されるステップ522か、あるいはアクセスが許可されるステップ526へ進む。
【0060】
最後に、ステップ532において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しくないと判定された場合、方法500は、ステップ536へ進み、ファイヤウォール制御インジケータが解釈される。一例として、ファイヤウォール制御インジケータは、図4に例示したものと同様の形で解釈可能であり、第1および第2のアプレットにそれぞれ割り当てられたファイヤウォール制御値の1バイト以上を、ファイヤウォール制御インジケータの値に基づいて比較する。いずれの場合も、解釈に基づいて、ステップ538で、適切な制御値を決定し、一致するかを比較できる。したがって、方法500は、ステップ520へ進み、値が一致するかを判定する。方法500は、上記と同様な形で進み、ステップ526においてアクセスを許可し、あるいはステップ522において拒否する。方法500は、エラーが出力されるステップ524、あるいは第1のJavaTMアプレットが第2のJavaTMアプレットへのアクセスを許可されるステップ526の何れかに続いて終了する。
【0061】
本発明の多くの特徴および利点について、記載の説明から明らかであり、したがって、付記した請求項は、こうした本発明の全ての特徴および利点を網羅するものである。さらに、多数の変形例および変更例が当業者によって容易に発案されるため、本発明を例示および説明された厳密な構成および動作に限定することは望ましくない。したがって、全ての適切な変形例および等価物は、本発明の範囲に含まれるものとして分類し得る。
【技術分野】
【0001】
本発明は、コンピューティングシステムに関し、特に、安全なコンピューティングシステムを提供する手法に関する。
【背景技術】
【0002】
通常のデスクトップと異なり、他のコンピューティング機器は携帯型であり、特定の用途に高度に特化しており、相対的に少ないメモリ、および/または処理制約と共に動作する。一例として、スマートカードは、特定の用途(例えば、セキュリティ)に高度に特化可能な携帯コンピューティング機器を代表するものである。スマートカードは、提供可能なメモリ量および処理能力が一般にデスクトップ(例えば、パーソナルコンピュータ)環境のものほど多くないコンピューティング環境の例でもある。そのため、スマートカードは、好例となり得るものであり、以下に説明する。
【0003】
スマートカードは、重要情報を格納するために使用されるメモリカード(例えば、フォンカード)の形態で約20年前に導入された。しかしながら、現在のスマートカードは、最初に導入されたものに比べ、遙かに高度化している。現在、スマートカードは、埋め込み集積回路(IC)を有することができる。スマートカードは、例えば、埋め込み集積回路(IC)を含むプラスチックカードである。スマートカードは、クレジットカードのようにすることができる。さらに、機密性の高い用途(例えば、バンキング、セキュリティ)にも使用できる。その結果として、安全なスマートカードを開発するために、多数の団体が広範な活動を行っている。
【0004】
スマートカードは、国際標準化機構(ISO)および国際電気標準会議(IEC)の第1合同技術委員会(JTC1)により定義および管理されている業界標準である。1987年に導入され、2003年に最新の更新が行われた一連の国際規格ISO/IEC7816では、スマートカードの様々な態様を定義しており、これには物理的特徴、物理的接触、電子信号および伝送プロトコル、コマンド、セキュリティアーキテクチャ、アプリケーション識別子、共通データ要素が含まれる。
【0005】
一部の使用領域において、スマートカードは、単に保護された不揮発性ストレージを提供するメモリカードに過ぎない。しかしながら、さらに進んだスマートカードは、マイクロプロセッサとメモリとの両方を有し、安全な処理およびストレージのために使用できる。スマートカードは、電池なしで動作できる(即ち、カードリーダに接続された時のみアクティブとなる)。接続時、リセットシーケンスの後、カードは、受動状態を維持し、クライアント(ホスト)アプリケーションからのコマンド要求受領のため待機する。名称が示すとおり、接触スマートカードは、カードリーダとスマートカードの8ピン接点との間の物理的接触を介して通信することで機能し、一方、非接触スマートカードは、通常2フィート未満の範囲で高周波信号を用いて通信する。非接触スマートカードの無線通信は、盗難防止および在庫追跡のために店舗で使用される高周波ID(RFID)タグに類似する技術に基づいている。図1は、接触および非接触スマートカードを表している。図1Aおよび1Bは、それぞれ、接触および非接触スマートカードを表している。
【発明の概要】
【発明が解決しようとする課題】
【0006】
現在の携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、何よりも、安全であるべきである。
【0007】
上述のように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース(処理能力および/またはメモリ)での動作、および/または、高度に特化した機能の提供を行う。
【0008】
プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境(例えば、インターネット)での使用に適したプログラミング言語である。C++言語の「外観および感じ」を有するように設計されているが、C++よりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいは、ネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。
【0009】
JavaTMプラットフォームは、Java CardTM技術を含む。Java CardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。Java Smart CardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。Java Smart CardTMに格納された情報は、携帯可能である。Java CardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となる
【0010】
Java CardTM技術は、スマートボタンおよびUSBトークン(図1Cおよび1Dに例示)のように、スマートカード以外の形態でも存在する。スマートカードと同様に、スマートボタンおよびUSBトークンも、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を内蔵可能で、通常は接触に基づき、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。いずれの場合も、こうした他の形態は、スマートカードと同様のプログラミング能力を提供可能であり、不正改変防止特性を有する。
【0011】
JavaTMプログラミング環境が提供する保護に加え、JavaTMカード技術は、追加されたランタイム実行の保護手段として、アプリケーション(またはアプレット)ファイヤウォールを提供する。ファイヤウォールは、基本的には、JavaTMカードプラットフォームを別個の保護オブジェクト空間(または「コンテキスト」)に区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間(またはコンテキスト)は、互いにアクセスできない場合がある。
【0012】
アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、個々のアプレットに基づいてファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。
【0013】
パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある(例えば、JCSystem.getAppletShareableInterfaceObject()メソッド)。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、JavaTMカードランタイム環境(JCRE)は、メソッド(例えば、getSharableInterfaceObject()メソッド)を呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。
【課題を解決するための手段】
【0014】
上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として使用可能な制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ある構成要素が別の構成要素にアクセス可能かを判定するために使用できる。
【0015】
一例として、制御ブロックは、本発明の一実施形態によるJavaTMカードコンピューティング環境内の各JavaTMアプリケーション(またはアプレット)に対して提供できる。これにより、ファイヤウォール境界を個別のアプレット毎に選択的に構成および定義できる柔軟な環境が可能となる。これにより、各アプレットが所定のアプレットセットに対するアクセスを許可できると共に、その逆も可能となるような形でファイヤウォール境界を定義できる、柔軟な環境が提供される。
【0016】
加えて、異なるシステム要件(例えば、処理速度、メモリ)に対して適切となり得る様々な手法を使用して、ファイヤウォール制御ブロックを実装可能であることが例示される。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの(例えば、スマートカード)に対してセキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックにおいて、様々な手法を使用してセキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。
【0017】
本発明は、システム、装置、方法、またはコンピュータ読み取り可能な媒体を含む、多数の方法として実装できる。本発明のいくつかの実施形態について、下で説明する。
【0018】
コンピューティング環境として、本発明の一実施形態は、オペレーティングシステムと、オペレーティングシステム上で動作するバーチャルマシンと、バーチャルマシン上で動作する第1および第2のアプリケーションとを含む。加えて、ファイヤウォール制御ブロックが、コンピューティング環境に提供される。
【0019】
ファイヤウォール制御ブロックは、第2のアプリケーションに対する第1のアプリケーションのアクセス権を定義し、さらに、第1のアプリケーションに対する第2のアプリケーションのアクセス権を定義する。このファイヤウォール制御ブロックは、例えば、携帯機器用に実装できる。一例として、JavaTMスマートカードは、本発明によるファイヤウォール制御ブロックを使用して実装可能である。
【0020】
さらに別の実施形態では、JavaTM対応コンピューティング環境にセキュリティを提供する方法として実装できる。JavaTM対応コンピューティング環境は、JavaTMバーチャルマシンと、JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含む。最初に、第1のJavaTM対応アプレットからの要求が受領される。この要求は、第2のJavaTM対応アプレットにアクセスするための要求である。次に、第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックが読み出される。その後、ファイヤウォール制御ブロックに基づいて、第1のJavaTM対応アプレットが第2のJavaTM対応アプレットにアクセスするのを許可するべきかが決定される。以下で説明するように、この決定は、様々な異なる基準に基づくものにできる。したがって、第1のJavaTM対応アプレットは、アクセスを許可するべきであると決定された場合のみ、アクセスを認められる。同様に、コンピュータプログラムコードを含むコンピュータ読み取り可能な媒体も実装可能である。
【図面の簡単な説明】
【0021】
本発明は、同様の参照符号が同様の構成要素を示す添付図面と併せて、以下の詳細な説明から容易に理解されよう。
【図1A】携帯コンピューティング機器を表す図である。
【図1B】携帯コンピューティング機器を表す図である。
【図1C】携帯コンピューティング機器を表す図である。
【図1D】携帯コンピューティング機器を表す図である。
【図2】本発明の一実施形態による、例示的なコンピューティング環境を示す図である。
【図3A】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3B】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3C】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3D】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3E】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3F】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3G】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図3H】本発明の一実施形態による、ファイヤウォール制御ブロックを示す図である。
【図4】Javaアプレットとして実装可能な簡略化ファイヤウォール制御ブロックを示す図である。
【図5】本発明の一実施形態による、JavaTMカード環境において、ファイヤウォールを提供する方法を例示する図である。
【発明を実施するための形態】
【0022】
背景の節で説明したように、携帯機器の普及を考慮すると、より携帯機器に適したプログラミング環境を開発することが望ましい。こうしたプログラミング環境は、通常、相対的に限定されたリソース(処理能力および/またはメモリ)での動作、および/または、高度に特化した機能の提供を行う。
【0023】
プラットフォーム非依存プログラミング環境として、特にJavaTM技術は、こうした環境に適している。JavaTMは、分散環境(例えば、インターネット)での使用に適したプログラミング言語である。C++言語の「見た目(look and feel)」を有するように設計されているが、C++よりも使用が容易であり、オブジェクト指向プログラミングモデルを実現する。JavaTMは、単一のコンピュータで実行し得る、あるいはネットワーク内のサーバおよびクライアント間で分散させ得る、完全なアプリケーションを作成するために使用できる。Webページの一部として使用される、小さなアプリケーションモジュールであるアプレットを構築するためにも使用できる。アプレットにより、Webページユーザは、ページとの情報のやりとりが可能となる。
【0024】
JavaTMプラットフォームは、Java CardTM技術を含む。Java CardTM技術により、JavaTMプログラミングプラットフォームは、高度に特化した環境、および/または、例えばデスクトップコンピューティング環境に比べて、厳しいメモリおよび/または処理制約で動作する環境を有するスマートカードその他の携帯機器での使用に適したものとなる。Java Smart CardTMは、数多くの異なる領域で有用となる。また、高レベルのセキュリティを必要とする情報システムに認証と安全なアクセスとを追加するために使用できる。Java Smart CardTMに格納された情報は、携帯可能である。Java CardTM技術により、病歴、クレジットカード番号、または電子マネー残高といった、重要かつ機密の個人情報を、コンパクトだが安全な媒体において持ち運ぶことが可能となる。
【0025】
Java CardTM技術は、スマートボタンおよびUSBトークン(図2Aおよび2Bに例示)のように、スマートカード以外の形態でも存在する。これらも、スマートカードと同様に、例えば、ユーザの認証または機密情報の持ち運びに使用できる。スマートボタンは、電池を含み、接触に基づいており、一方、USBトークンは、PCのUSBポートに直接差し込み可能で、接触または非接触リーダを必要としない。両方とも、スマートカードと同様のプログラミング能力を提供し、不正改変防止特性を有する。
【0026】
JavaTMプログラミング環境が提供する保護に加え、Java CardTM技術は、追加されたランタイムの実行保護手段として、アプリケーション(またはアプレット)ファイヤウォールを提供する。ファイヤウォールは、基本的には、Java CardTMプラットフォームを別個の保護オブジェクト空間(または「コンテキスト」)に区分する。言い換えると、ファイヤウォールは、あるコンテキストと別のコンテキストとの間に境界を提供する。この環境において、別個の保護空間(またはコンテキスト)は、互いにアクセスできない場合がある。
【0027】
アプレットは、通常、JavaTMパッケージと呼び得るものの中で、共にパッケージされることに留意されたい。さらに、単一のJavaTMパッケージ内の全アプレットは、同じコンテキストを共有することに留意されたい。これは、同じパッケージ内のアプレット間にファイヤウォールが存在しないことを意味する。さらに、ファイヤウォール境界は、アプレットがどのようにパッケージされるかに依存する。これは、アプレット毎にファイヤウォール境界を定義できない場合があることを意味する。こうしたファイヤウォールの実装は、パッケージに基づくファイヤウォール環境と呼ぶことができる。
【0028】
パッケージに基づくファイヤウォール環境において、同じパッケージ内に存在しないアプレット同士のアクセスを可能にするには、比較的複雑な手法が必要となる。一例として、他のアプレットによりアクセス可能なアプレットのために、共有可能なインタフェースを実装する必要がある(例えば、JCSystem.getAppletShareableInterfaceObject()メソッド)。その結果、第1のアプレットは、第2のアプレットの共有可能インタフェースへのアクセスを要求できる。次に、第1のアプレットの代わりに、Javaカードランタイム環境(JCRE)は、メソッド(例えば、getSharableInterfaceObject()メソッド)を呼び出すことで、第2のアプレットに、共有可能インタフェースを要求することができる。第2のアプレットによりアクセスが許可された場合、第1のアプレットは、第2のアプレットに対する参照を取得する必要がある。
【0029】
上記を考慮すると、安全なコンピューティング環境を提供するための代替手法は、有用である。本発明の上記その他の目的を達成するために、コンフィギュラブルファイヤウォールを提供するための枠組みを開示する。コンフィギュラブルファイヤウォールは、コンピューティング環境の様々な構成要素間でのアクセス権を実装および制御する機構として、制御ブロックを提供する。そのため、ファイヤウォール制御ブロックは、コンピューティング環境において、ファイヤウォール制御ブロックにおいて定義されたアクセス権に基づいて、ある構成要素が別の構成要素にアクセス可能かを決定するために使用できる。
【0030】
一例として、制御ブロックは、本発明の一実施形態によるJava CardTMコンピューティング環境内の各JavaTMアプリケーション(またはアプレット)に対して提供できる。これにより、各アプレットが所望のアプレットセットにアクセスできるように、ファイヤウォール境界を各アプレットの周囲に構成できる。加えて、例示されるように、ファイヤウォール制御ブロックは、異なるシステム要件(例えば、処理速度、メモリ)において適切となり得る様々な手法を使用して実装できる。そのため、コンフィギュラブルファイヤウォールは、様々なコンピューティングシステム、特に、相対的に限定された処理能力での動作、および/または高度に特化した機能の提供を行うもの(例えば、スマートカード)において、セキュリティを実装するのに有用である。さらに例示されるように、多数の形態のファイヤウォール制御ブロックを、互いに連動させて、あるいは組み合わせて、セキュリティを実装できる。本発明の他の態様は、様々なファイヤウォール制御ブロックを使用してセキュリティを実装するのに使用可能な手法を提供する。
【0031】
本発明の実施形態について、図1ないし図5を参照して下で説明する。しかしながら、これらの図に関して本明細書に記載する詳細な説明が例示的な目的のみを有し、こうした限定された実施形態の範囲を本発明が超えることは、当業者に容易に理解されよう。
【0032】
図2は、本発明の一実施形態による、例示的なコンピューティング環境200を示している。コンピューティング環境200は、カード側202と、リーダ側204と、バックエンドアプリケーションおよびシステム206とを含む。
【0033】
説明する実施形態において、カード側202は、多重アプリケーション環境を提供するJava CardTMプラットフォーム202として実装される。図2に示したように、複数のJava CardTMアプリケーション(またはアプレット)A、B、C、D、E、F、およびGが、Java CardTMプラットフォーム202(またはJava CardTM)に常駐してよい。こうしたJava CardTMアプリケーション(またはアプレット)は、Javaカードランタイム環境(JCRE)208によってサポートされる。Javaカードランタイム環境(JCRE)208は、Java CardTMフレームワーク、アプリケーションプログラムインタフェース(API)、およびセキュリティ210を含む。Javaカードランタイム環境(JCRE)208は、カードオペレーティングシステム(OS)214がサポートするJavaTMバーチャルマシン212上で動作する。Java CardTMアプレットA、B、C、D、E、F、G、およびHは、ロード時にインスタンス化可能であり、電源をオフにした時も存在し続ける。そのため、カードのアプレットは、サーバと同じように振る舞い、受動状態を維持できる。言い換えると、カードプラットフォーム202の電源を入れた後、アプレットは、選択されるまで非アクティブを維持し、選択時に初期化を行ってもよい。
【0034】
リーダ側204は、ホストアプリケーション220と、カードアクセプタンスデバイス(CAD)224とを含む。ホストアプリケーション220は、例えば、PC、電子決済端末、携帯電話、またはセキュリティサブシステム等のデスクトップまたは端末に常駐可能である。いずれの場合も、ホストアプリケーション220は、バックエンドアプリケーションおよびシステム206とJava CardTMアプレットA、B、C、D、E、F、およびGとの間の通信を円滑化できる。カードアクセプタンスデバイス(CAD)224は、例えば、ホストアプリケーション220とJava CardTMプラットフォーム202との間に位置するインタフェースデバイスにすることができる。加えて、カードアクセプタンスデバイス(CAD)224は、カードへ電力を提供し、および/または、カード側202との電気または(高周波)RF通信の円滑化を行うことができる。CAD224は、例えば、シリアルポートを使用してデスクトップコンピュータに取り付けたカードリーダにすることが可能であり、レストランまたはガソリンスタンドの電子決済端末等の端末に統合してもよい。さらに、CAD224は、例えば、ホストアプリケーション220からJava CardTMプラットフォーム202へアプリケーションプロトコルデータユニット(APDU)コマンドを転送できることに留意されたい。さらに、アプリケーションプロトコルデータユニット(APDU)を使用して、Java CardTMプラットフォーム202からホストアプリケーション220へ応答を転送することもできる。
【0035】
したがって、リーダ側204により、Java CardTMプラットフォーム202のユーザは、ホストアプリケーション220および/またはバックエンドアプリケーションおよびシステム206によって提供されるサービスにアクセスできる。バックエンドアプリケーションおよびシステム206は、JavaTMアプレットA、B、C、D、E、F、およびGをサポートするサービスを提供する。例えば、バックエンドアプリケーション206は、電子決済システムとの接続を提供する。そのため、バックエンドアプリケーションおよびシステム206は、例えば、クレジットカードおよび/またはその他の支払い情報へのアクセスを提供できる。
【0036】
理解されるように、Javaカードランタイム環境(JCRE208)は、JavaTMアプレットA、B、C、D、E、F、およびGにファイヤウォール保護を提供できる。さらに、ランタイム環境(JCRE208)によって提供されるファイヤウォール保護は、コンフィギュラブルである。これは、特に、1個以上のJavaTMアプレットを含むパッケージ境界に基づいてファイヤウォール保護を定義する必要がないことを意味する。言い換えると、ファイヤウォール保護は、パッケージ230、232、324に基づいて定義する必要がない。ファイヤウォール保護は、さらに説明するファイヤウォール制御ブロック(例えば、図3参照)を使用して構成可能だが、最初に、コンフィギュラブルファイヤウォールについてさらに説明する。
【0037】
図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へのアクセスを試みた時には、そのアクセスを拒否し得る。
【0038】
更なる説明のために、図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のいずれかによってアクセスできる。
【0039】
上記のように、ファイヤウォール境界は、ファイヤウォール制御ブロックを使用して実装できる。このファイヤウォール制御ブロックは、本発明の一態様により、JavaTMアプレットおよび/またはJavaTMパッケージ毎に定義できる。ファイヤウォール制御は、JavaTMアプレットに別のJavaTMアプレットおよび/またはJavaTMパッケージへのアクセスを認めるべきかを決定するのに使用できる。
【0040】
図3は、本発明の一実施形態によるファイヤウォール制御ブロック300を示している。ファイヤウォール制御ブロック300は、ファイヤウォール制御値302およびファイヤウォール制御インジケータ304を含む。ファイヤウォール制御値302は、アクセス権の定義を提供する。ファイヤウォール制御インジケータ304は、ある構成要素が別の構成要素にアクセスするべきかを決定するために、定義をどのように解釈するべきかを示す。
【0041】
ファイヤウォール制御値302は、例えば、JavaTMアプレットに対するファイヤウォールアクセス値を定義するために使用できる。言い換えると、制御値302は、第1のJavaTMアプレットおよび/またはパッケージに対するアクセス権を定義できる。ファイヤウォール制御インジケータ304は、他のJavaTMアプレットが第1のJavaTMアプレットおよび/またはJavaTMパッケージにアクセスできるかを決定するために使用できる。理解されるように、ファイヤウォール制御値302および304は、例えば、それぞれバイトの配列(即ち、1バイト以上の配列)として実装できる。図3Bは、ファイヤウォール制御ブロック310の実装を例示している。ファイヤウォール制御ブロック310は、M個のバイトの配列として表されるファイヤウォール制御値を含む。N個のバイトの配列は、ファイヤウォール制御インジケータを表す。Nは、通常Mより小さい(即ち、通常、ファイヤウォール制御インジケータに必要なバイト数は少ない)ことに留意されたい。
【0042】
更なる説明のために、図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})として表現される。
【0043】
ファイヤウォール制御値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アプレット(またはパッケージ)へのアクセスを可能にするものと解釈できる。
【0044】
これは、ファイヤウォール制御値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へのアクセスを許可できる。
【0045】
一方、アプレットCは、アプレットAにアクセスできず、これはファイヤウォール制御値406({1,2,3,7,8,9})の最初の4個の値がファイヤウォール制御値402({1,2,3,4,5,6})と一致するべきであることをファイヤウォール制御インジケータ404{4}が示しているためである。しかしながら、第4の値は、一致していない(即ち、7は、4と等しくない)。したがって、アプレットCは、アプレットAへのアクセスを拒否される。
【0046】
同様に、ファイヤウォール制御値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にアクセスできない(Java CardTM管理システムのみがJavaTMアプレットDにアクセスできる)ことを示し得る。しかしながら、JavaTMアプレットDは、他のJavaTMアプレット(例えば、JavaTMアプレットB)にアクセス可能であってよい。一方、JavaTMアプレットEおよびFにそれぞれ提供されたファイヤウォール制御インジケータ414および416は、例えば、最初のファイヤウォール制御値が値{1}に等しい全てのJavaTMアプレット(例えば、アプレットA、B、C、D、およびG)とのアクセスを可能にするものと解釈可能な{1}の値を示し得る。そのため、アプレットEおよびFは、例えば、別の選択されたアプレットに対して提供可能なライブラリを表現できる。
【0047】
図3Cは、本発明の別の実施形態による制御ブロック320を示している。図3Cに示したように、単一のバイトを使用してファイヤウォール制御値302を実装し、ファイヤウォール制御値300をバイトの配列として実装できる。
【0048】
さらに、本発明の別の実施形態により、追加の単一バイトを使用して、ファイヤウォール制御ブロックを実装できることに留意されたい。この単一バイトは、通常既に利用可能なデータに対して追加できる。説明のため、図3Dは、本発明の別の実施形態による、ファイヤウォールコンテキストの実装330を表している。ファイヤウォールコンテキストの実装330は、通常Java CardTM環境に提供される、コンテキスト識別情報(ID)332およびアプリケーション識別子データ(AID)を含む。これらに加え、AIDのバイトインジケータ336が提供される。AIDのバイトインジケータ336は、ファイヤウォール制御インジケータ(例えば、図4に示した404、408)と同様に使用可能であり、一方、アプリケーション識別子データ(AID)は、ファイヤウォール制御値(例えば、図4に示した402、406)として使用できる。
【0049】
理解されるように、既存のJava CardTM環境と同様に、アプリケーション識別子データ(AID)は、ISO7816規格に基づいて定義できる。ISO7816は、スマートカードシステムを構築するための広範な技術について記述したマルチパート規格である。ISO7816−5は、カードアプリケーション(およびカードファイルシステム内の特定の種類のファイル)を一意に識別するために使用するべきAID(アプリケーション識別子)データ形式を定義している。Java CardTMプラットフォームは、AIDデータ形式を使用して、アプレットおよびパッケージを特定する。AIDは、国際標準化機構(ISO)によって管理されているため、一意の識別子として使用できる。
【0050】
図3Eに示したように、Java CardTMプラットフォームで使用するAID形式は、2つの別個の部分として解釈されるバイトの配列にすることができる。第1の部分は、RID(リソース識別子)として知られる5バイトの値である。第2の部分は、PIX(固有アプリケーション識別子拡張)として知られる可変長の値である。PIXは、0ないし11バイトの長さにできる。したがって、AIDは、全長5ないし16バイトにできる。ISOは、企業へのRIDの割り当てを制御しており、各企業はISOから固有のRIDを取得している。企業は、独自のRIDを使用して、AIDに対するPIXの割り当てを管理している。JavaTMプラットフォームにおいて、パッケージは、Unicode文字列と、インターネットドメイン名に基づく命名体系とを使用して一意に特定される。Java CardTMプラットフォームにおいて、パッケージおよびアプレットは、AIDを使用して特定できる。そのため、Java CardTM技術に対応した装置にインストールされる各アプレットは、一意のAIDを有する。このAIDは、パッケージAIDと同様に構築される。通常は、アプレットプロバイダのRIDと、そのアプレットのPIXとの連結である。
【0051】
図3Fは、本発明のさらに別の実施形態による、ファイヤウォール制御ブロック350の実装を示している。ファイヤウォール制御ブロック350は、例えば、図3Dの制御ブロック330の実装に相当する。いずれの場合も、既存のJava CardTM環境と同様に、バイト配列を使用して、AIDを表現し、短い値を使用して、コンテキスト(またはオブジェクト空間)を表現するのに一般的に使用されるコンテキストIDを表現する。理解されるように、AIDバイトインジケータは、単一のバイト値として実装される。そのため、制御ブロック350は、ファイヤウォールの実装によるオーバヘッドを最小化する必要がない状況に適したものとなり得る。しかしながら、上記と同様の形で、AIDバイトインジケータは、ファイヤウォール制御インジケータとして使用可能であり、AIDは、ファイヤウォール制御値として使用できる。
【0052】
図3Gは、本発明のさらに別の実施形態による、制御ブロック360を示している。説明する実施形態において、制御ブロック360は、RID値を意味する単一のバイト配列を使用して実装される。これは、JavaTMアプレット(またはパッケージ)が別のJavaTMアプレット(またはパッケージ)にアクセス可能かを決定するために、RID値のみが使用されることを意味する。一例として、RID値が一致する場合にアクセスを許可できる。RID値は、Java CardTM環境において一般的に提供される。したがって、制御ブロック360も、ファイヤウォール制御ブロック情報を格納および処理するための大量のオーバヘッドを必要とすることなく実装できる。RID値と同様に、AID値を使用して、ファイヤウォール制御ブロックを実装できる。
【0053】
上記に基づき、本発明において、多数の異なるファイヤウォール制御ブロックの実施形態が考えられることは明らかであろう。こうした実施形態の一つ以上は、特定のシステム要件(例えば、メモリストレージ、速度、その他)に適したものになり得る。例えば、図3Gの制御ブロック360は、ファイヤウォールに指定されたメモリおよびオーバヘッドを最小化するべき環境に適したものになり得る。
【0054】
さらに、様々な実施形態を組み合わせてよいことにも留意されたい。一例として、図3Hは、本発明のさらに別の実施形態による、制御ブロック370を示している。制御ブロック370は、例えば、制御ブロック320および350の組み合わせを表現できる。説明する実施形態では、AID、ファイヤウォール制御値、およびファイヤウォール制御インジケータが提供される。下で例示するように、制御ブロック370は、JavaTMカード環境においてコンフィギュラブルファイヤウォールを実装するために様々な手法を使用する柔軟性を提供する。加えて、制御ブロック370は、こうした手法のいくつかを例示するのに有用なツールの役割を果たしうる。
【0055】
したがって、図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アプレット内のオブジェクトにアクセスを試みているかを判定する。
【0056】
ステップ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の後で終了する。
【0057】
一方、ステップ520において、一致すると判定された場合、方法500は、ステップ526へ進み、第1のJavaTMアプレットは、第2のJavaTMアプレットへのアクセスを許可される。理解されるように、このアクセスは、共有可能なインタフェースを実装する必要なく提供できる。一実施形態において、呼び出し可能なメソッドによって、第2のアプレットに対する参照が提供される。このメソッドは、例えば、JavaTMカード管理(またはシステム)環境の一部として実装された比較的単純な参照取得メソッドにできる(例えば、getAppletReference()メソッド)。当業者が理解するように、この参照取得メソッドに対して、パートナーメソッドを提供することもできる。このパートナーメソッドは、例えば、JavaTMアプレットクラスとして実装されるメソッドにできる。
【0058】
図5を再び参照すると、ステップ516において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第2の値に等しくないと判定された場合、方法500は、ステップ528へ進み、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しいかを判定する。そうである場合、方法500は、ステップ530へ進み、第1および第2のアプレットのAID(例えば、図3E参照)値を比較する。その後、方法500は、上記と同様の形でステップ520へ進む。
【0059】
しかしながら、ステップ528において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第3の値に等しくないと判定された場合、方法500は、ステップ532へ進み、第4の値に等しいかを判定する。第4の値は、Java CardTM管理のみに対してアクセスが確保されることを示めすことができる。したがって、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しい場合、方法500は、ステップ534へ進み、Java CardTM管理コンテキストの下で、バイトコードが実行されているかを判定する(例えば、コンテキストIDがJava CardTM管理のものかを判定する)。この判定に応じて、方法500は、上記と同様に、アクセスが拒否されるステップ522か、あるいはアクセスが許可されるステップ526へ進む。
【0060】
最後に、ステップ532において、第2のJavaTMアプレットのファイヤウォール制御インジケータが第4の値に等しくないと判定された場合、方法500は、ステップ536へ進み、ファイヤウォール制御インジケータが解釈される。一例として、ファイヤウォール制御インジケータは、図4に例示したものと同様の形で解釈可能であり、第1および第2のアプレットにそれぞれ割り当てられたファイヤウォール制御値の1バイト以上を、ファイヤウォール制御インジケータの値に基づいて比較する。いずれの場合も、解釈に基づいて、ステップ538で、適切な制御値を決定し、一致するかを比較できる。したがって、方法500は、ステップ520へ進み、値が一致するかを判定する。方法500は、上記と同様な形で進み、ステップ526においてアクセスを許可し、あるいはステップ522において拒否する。方法500は、エラーが出力されるステップ524、あるいは第1のJavaTMアプレットが第2のJavaTMアプレットへのアクセスを許可されるステップ526の何れかに続いて終了する。
【0061】
本発明の多くの特徴および利点について、記載の説明から明らかであり、したがって、付記した請求項は、こうした本発明の全ての特徴および利点を網羅するものである。さらに、多数の変形例および変更例が当業者によって容易に発案されるため、本発明を例示および説明された厳密な構成および動作に限定することは望ましくない。したがって、全ての適切な変形例および等価物は、本発明の範囲に含まれるものとして分類し得る。
【特許請求の範囲】
【請求項1】
コンピューティング環境であって、
オペレーティングシステムと、
前記オペレーティングシステム上で動作するバーチャルマシンと、
前記バーチャルマシン上で動作する第1のアプリケーションと、
前記バーチャルマシン上で動作する第2のアプリケーションと、
第1のファイヤウォール制御ブロックと、
を備え、
前記第1のファイヤウォール制御ブロックは、前記第2のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項2】
請求項1記載のコンピューティング環境であって、
前記コンピューティング環境は、さらに、第2のファイヤウォール制御ブロックを備え、
前記第2のファイヤウォール制御ブロックは、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項3】
請求項1記載のコンピューティング環境であって、
前記第1のファイヤウォール制御ブロックは、前記コンピューティング環境内の他の任意のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記他の任意のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項4】
請求項3記載のコンピューティング環境であって、
前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、コンピューティング環境。
【請求項5】
先行する請求項のいずれかに記載のコンピューティング環境であって、
前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、
前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、
コンピューティング環境。
【請求項6】
先行する請求項のいずれかに記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、
前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、
前記第1のファイヤウォール制御値は、RIDを含む、
コンピューティング環境。
【請求項7】
請求項4記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、
前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、
前記第1のファイヤウォール制御ブロックは、AIDを含む、
コンピューティング環境。
【請求項8】
請求項4記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTMカード対応コンピューティング環境であり、
前記第1のファイヤウォール制御ブロックは、ランタイム環境として実装される、
コンピューティング環境。
【請求項9】
携帯コンピューティング機器であって、
オペレーティングシステムと、
前記オペレーティングシステム上で動作するJavaTM対応バーチャルマシンと、
前記JavaTM対応バーチャルマシン上で動作する第1のJavaTM対応アプレットと、
前記JavaTM対応バーチャルマシン上で動作するJavaTM対応アプレットと、
第1のファイヤウォール制御ブロックと、
を備え、
前記第1のファイヤウォール制御ブロックは、前記JavaTM対応バーチャルマシン上で動作する少なくとも1つの他のJavaTM対応アプレットに対する前記第1のJavaTM対応アプレットのアクセス権を定義し、さらに、前記第1のJavaTM対応アプレットに対する前記少なくとも1つの他のJavaTM対応アプレットのアクセス権を定義する、
携帯コンピューティング機器。
【請求項10】
請求項9記載の携帯コンピューティング機器であって、
前記携帯機器は、JavaTM対応スマートカードである、
携帯コンピューティング機器。
【請求項11】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、携帯コンピューティング機器。
【請求項12】
請求項10記載の携帯コンピューティング機器であって、
前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、
前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、
携帯コンピューティング機器。
【請求項13】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、RIDを含む、携帯コンピューティング機器。
【請求項14】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、PIDを含む、携帯コンピューティング機器。
【請求項15】
請求項10記載の携帯コンピューティング機器であって、
ファイヤウォール制御ブロックは、JavaTM対応アプレット毎に定義される、携帯コンピューティング機器。
【請求項16】
JavaTMバーチャルマシンと、前記JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含むJavaTM対応コンピューティング環境にセキュリティを提供する方法であって、
JavaTMバーチャルマシン上で動作する第1のJavaTM対応アプレットから、第2のJavaTM対応アプレットにアクセスするための要求を受領する工程と、
前記第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックを読み出す工程と、
前記ファイヤウォール制御ブロックに基づいて、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する工程と、
前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可する工程と、
を備える方法。
【請求項17】
請求項16記載の方法であって、さらに、
前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットに対する参照に、前記第2のJavaTM対応アプレットに対する参照を提供する工程を備える方法。
【請求項18】
請求項16記載の方法であって、
前記参照を提供する工程は、
JavaTM管理(またはシステム)環境の一部として実装される第1のメソッドを呼び出す工程と、
第2のメソッドを呼び出す工程の結果としてアプレットクラスとして実装される、前記第2のメソッドを呼び出す工程と、
を備える方法。
【請求項19】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
ファイヤウォール制御値を読み出す工程と、
ファイヤウォール制御インジケータを読み出す工程と、
を備える方法。
【請求項20】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出す工程と、
前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出す工程と、
前記第1のPIDが前記第2のPIDに一致するかを判定する工程と、
前記判定する工程により、前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可する工程と、
を備える方法。
【請求項21】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出す工程と、
前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出す工程と、
前記第1のAIDが前記第2のAIDに一致するかを判定する工程と、
前記判定する工程により、前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可する工程と、
を備える方法。
【請求項22】
コンピューティング環境にセキュリティを提供するためのコンピュータプログラムコードを含むコンピュータ読み取り可能な媒体であり、
第1のアプリケーションから、第2のアプリケーションにアクセスするための要求を受領するためのコンピュータプログラムコードと、
前記第2のアプリケーションに関連するファイヤウォール制御ブロックを読み出すためのコンピュータプログラムコードと、
前記ファイヤウォール制御ブロックに基づいて、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するべきかを判定するステップと、
前記判定するステップによりアクセスを許可するべきであると判定された場合、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するステップと、
を備える、コンピュータ読み取り可能な媒体。
【請求項23】
請求項22記載のコンピュータ読み取り可能な媒体であって、さらに
前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出すためのコンピュータプログラムコードと、
前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出すためのコンピュータプログラムコードと、
前記第1のPIDが前記第2のPIDに一致するかを判定するためのコンピュータプログラムコードと、
前記判定により前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、
を備えるコンピュータ読み取り可能な媒体。
【請求項24】
請求項22記載のコンピュータ読み取り可能な媒体であって、さらに
前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出すためのコンピュータプログラムコードと、
前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出すためのコンピュータプログラムコードと、
前記第1のAIDが前記第2のAIDに一致するかを判定するためのコンピュータプログラムコードと、
前記判定により前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、
を備えるコンピュータ読み取り可能な媒体。
【請求項1】
コンピューティング環境であって、
オペレーティングシステムと、
前記オペレーティングシステム上で動作するバーチャルマシンと、
前記バーチャルマシン上で動作する第1のアプリケーションと、
前記バーチャルマシン上で動作する第2のアプリケーションと、
第1のファイヤウォール制御ブロックと、
を備え、
前記第1のファイヤウォール制御ブロックは、前記第2のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項2】
請求項1記載のコンピューティング環境であって、
前記コンピューティング環境は、さらに、第2のファイヤウォール制御ブロックを備え、
前記第2のファイヤウォール制御ブロックは、前記第1のアプリケーションに対する前記第2のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項3】
請求項1記載のコンピューティング環境であって、
前記第1のファイヤウォール制御ブロックは、前記コンピューティング環境内の他の任意のアプリケーションに対する前記第1のアプリケーションのアクセス権を定義し、さらに、前記第1のアプリケーションに対する前記他の任意のアプリケーションのアクセス権を定義する、
コンピューティング環境。
【請求項4】
請求項3記載のコンピューティング環境であって、
前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、コンピューティング環境。
【請求項5】
先行する請求項のいずれかに記載のコンピューティング環境であって、
前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、
前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、
コンピューティング環境。
【請求項6】
先行する請求項のいずれかに記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、
前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、
前記第1のファイヤウォール制御値は、RIDを含む、
コンピューティング環境。
【請求項7】
請求項4記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTM対応コンピューティング環境であり、
前記第1および第2のアプリケーションは、JavaTM対応アプレットであり、
前記第1のファイヤウォール制御ブロックは、AIDを含む、
コンピューティング環境。
【請求項8】
請求項4記載のコンピューティング環境であって、
前記コンピューティング環境は、JavaTMカード対応コンピューティング環境であり、
前記第1のファイヤウォール制御ブロックは、ランタイム環境として実装される、
コンピューティング環境。
【請求項9】
携帯コンピューティング機器であって、
オペレーティングシステムと、
前記オペレーティングシステム上で動作するJavaTM対応バーチャルマシンと、
前記JavaTM対応バーチャルマシン上で動作する第1のJavaTM対応アプレットと、
前記JavaTM対応バーチャルマシン上で動作するJavaTM対応アプレットと、
第1のファイヤウォール制御ブロックと、
を備え、
前記第1のファイヤウォール制御ブロックは、前記JavaTM対応バーチャルマシン上で動作する少なくとも1つの他のJavaTM対応アプレットに対する前記第1のJavaTM対応アプレットのアクセス権を定義し、さらに、前記第1のJavaTM対応アプレットに対する前記少なくとも1つの他のJavaTM対応アプレットのアクセス権を定義する、
携帯コンピューティング機器。
【請求項10】
請求項9記載の携帯コンピューティング機器であって、
前記携帯機器は、JavaTM対応スマートカードである、
携帯コンピューティング機器。
【請求項11】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、ファイヤウォール制御値と、ファイヤウォール制御インジケータとを含む、携帯コンピューティング機器。
【請求項12】
請求項10記載の携帯コンピューティング機器であって、
前記ファイヤウォール制御値は、1バイト以上で表現されたアクセス権制御値であり、
前記ファイヤウォール制御値は、他のアプリケーションのアクセス権に関してファイヤウォール制御値をどのように解釈するべきかを示す1バイト以上で表現されたインジケータ値である、
携帯コンピューティング機器。
【請求項13】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、RIDを含む、携帯コンピューティング機器。
【請求項14】
請求項10記載の携帯コンピューティング機器であって、
前記第1のファイヤウォール制御ブロックは、PIDを含む、携帯コンピューティング機器。
【請求項15】
請求項10記載の携帯コンピューティング機器であって、
ファイヤウォール制御ブロックは、JavaTM対応アプレット毎に定義される、携帯コンピューティング機器。
【請求項16】
JavaTMバーチャルマシンと、前記JavaTMバーチャルマシン上で動作する複数のJavaTM対応アプレットとを含むJavaTM対応コンピューティング環境にセキュリティを提供する方法であって、
JavaTMバーチャルマシン上で動作する第1のJavaTM対応アプレットから、第2のJavaTM対応アプレットにアクセスするための要求を受領する工程と、
前記第2のJavaTM対応アプレットに関連するファイヤウォール制御ブロックを読み出す工程と、
前記ファイヤウォール制御ブロックに基づいて、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する工程と、
前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可する工程と、
を備える方法。
【請求項17】
請求項16記載の方法であって、さらに、
前記判定する工程によりアクセスを許可するべきであると判定された場合、前記第1のJavaTM対応アプレットに対する参照に、前記第2のJavaTM対応アプレットに対する参照を提供する工程を備える方法。
【請求項18】
請求項16記載の方法であって、
前記参照を提供する工程は、
JavaTM管理(またはシステム)環境の一部として実装される第1のメソッドを呼び出す工程と、
第2のメソッドを呼び出す工程の結果としてアプレットクラスとして実装される、前記第2のメソッドを呼び出す工程と、
を備える方法。
【請求項19】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
ファイヤウォール制御値を読み出す工程と、
ファイヤウォール制御インジケータを読み出す工程と、
を備える方法。
【請求項20】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出す工程と、
前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出す工程と、
前記第1のPIDが前記第2のPIDに一致するかを判定する工程と、
前記判定する工程により、前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可する工程と、
を備える方法。
【請求項21】
先行する請求項のいずれかに記載の方法であって、
前記第1のJavaTM対応アプレットが前記第2のJavaTM対応アプレットにアクセスするのを許可するべきかを判定する前記工程は、
前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出す工程と、
前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出す工程と、
前記第1のAIDが前記第2のAIDに一致するかを判定する工程と、
前記判定する工程により、前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可する工程と、
を備える方法。
【請求項22】
コンピューティング環境にセキュリティを提供するためのコンピュータプログラムコードを含むコンピュータ読み取り可能な媒体であり、
第1のアプリケーションから、第2のアプリケーションにアクセスするための要求を受領するためのコンピュータプログラムコードと、
前記第2のアプリケーションに関連するファイヤウォール制御ブロックを読み出すためのコンピュータプログラムコードと、
前記ファイヤウォール制御ブロックに基づいて、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するべきかを判定するステップと、
前記判定するステップによりアクセスを許可するべきであると判定された場合、前記第1のアプリケーションが前記第2のアプリケーションにアクセスするのを許可するステップと、
を備える、コンピュータ読み取り可能な媒体。
【請求項23】
請求項22記載のコンピュータ読み取り可能な媒体であって、さらに
前記第1のJavaTM対応アプレットに関連する第1のPIDを読み出すためのコンピュータプログラムコードと、
前記第2のJavaTM対応アプレットに関連する第2のPIDを読み出すためのコンピュータプログラムコードと、
前記第1のPIDが前記第2のPIDに一致するかを判定するためのコンピュータプログラムコードと、
前記判定により前記第1のPIDが前記第2のPIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、
を備えるコンピュータ読み取り可能な媒体。
【請求項24】
請求項22記載のコンピュータ読み取り可能な媒体であって、さらに
前記第1のJavaTM対応アプレットに関連する第1のAIDを読み出すためのコンピュータプログラムコードと、
前記第2のJavaTM対応アプレットに関連する第2のAIDを読み出すためのコンピュータプログラムコードと、
前記第1のAIDが前記第2のAIDに一致するかを判定するためのコンピュータプログラムコードと、
前記判定により前記第1のAIDが前記第2のAIDに一致すると判定された場合のみ、アクセスを許可するためのコンピュータプログラムコードと、
を備えるコンピュータ読み取り可能な媒体。
【図1A】
【図1B】
【図1C】
【図1D】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図3F】
【図3G】
【図3H】
【図4】
【図5】
【図1B】
【図1C】
【図1D】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図3E】
【図3F】
【図3G】
【図3H】
【図4】
【図5】
【公開番号】特開2011−150709(P2011−150709A)
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【出願番号】特願2011−37000(P2011−37000)
【出願日】平成23年2月23日(2011.2.23)
【分割の表示】特願2006−547078(P2006−547078)の分割
【原出願日】平成16年12月9日(2004.12.9)
【出願人】(597004720)オラクル・アメリカ・インコーポレイテッド (23)
【Fターム(参考)】
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【出願日】平成23年2月23日(2011.2.23)
【分割の表示】特願2006−547078(P2006−547078)の分割
【原出願日】平成16年12月9日(2004.12.9)
【出願人】(597004720)オラクル・アメリカ・インコーポレイテッド (23)
【Fターム(参考)】
[ Back to top ]