(57)【要約】      （修正有）【課題】保護ドメインに基づいたセキュリティ用の方法及び装置を提供する。【解決手段】実行された場合にアプリケーションインスタンスを発生する１組のアプリケーションコードと関連するクリデンシャル（例えば、署名済証明書）に基づいて、第一アプリケーションインスタンスを保護ドメインと関連付け、第一実行コンテキスト内において実行する。第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークしていることの表示を受取ることに応答して、第一アプリケーションインスタンスが該保護されている機能性へアクセスするためのパーミッションを有しているか否かの決定が行われる。【選択図】図１Ａ
2007183969.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティを与えるためのマシンにより実現される方法において、
実行された場合にアプリケーションインスタンスを発生する１組のアプリケーションコードと関連しているクリデンシャルに基づいて第一アプリケーションインスタンスを保護ドメインと関連付け、
該第一アプリケーションインスタンスを第一実行コンテキストにおいて実行し、該第一実行コンテキストはファイアウォールによってその他の実行コンテキストから分離されており、
該第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークしていることの表示を受取り、尚該保護されている機能性へのアクセスは、そのアクセスをシークしている実体が１組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属している場合に許可されるものであり、
該表示を受取ることに応答して、
該第一アプリケーションインスタンスが関連している保護ドメインを決定し、且つ
該第一アプリケーションインスタンスが関連している該保護ドメインが該１組の１つ又はそれ以上の保護ドメイン内のものであるか否かを決定する、
ことにより該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定する、
ことを包含している方法。
【請求項２】
請求項１において、該保護されている機能性が該第二コンテキストにおいて実行している第二アプリケーションインスタンスにより露呈されることを特徴とする方法。
【請求項３】
請求項２において、該第二アプリケーションインスタンスが、該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定させることを特徴とする方法。
【請求項４】
請求項２において、該第二アプリケーションインスタンスが該１組の１つ又はそれ以上の保護ドメインを特定することを特徴とする方法。
【請求項５】
請求項２において、更に、
該第二アプリケーションインスタンスが第三実行コンテキストと関連している別の保護されている機能性へのアクセスをシークすることの表示を受取り、尚該その他の保護されている機能性へのアクセスは、そのアクセスをシークする実体が別の組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属するものである場合に許可されるものであり、
該第二アプリケーションインスタンスが該その他の保護されている機能性へのアクセスに対するパーミッションを有しているか否かを、
該第二アプリケーションインスタンスが関連している保護ドメインを決定し、且つ
該第二アプリケーションインスタンスが関連している該保護ドメインが該その他の組の１つ又は以上の保護ドメイン内のものであるか否かを決定する、
ことにより決定する、
ことを包含していることを特徴とする方法。
【請求項６】
請求項１において、更に、
該第一アプリケーションインスタンスが実行している実行コンテキストを決定する、
ことを包含しており、且つ該第一アプリケーションインスタンスが関連している保護ドメインを決定することが該第一アプリケーションインスタンスが実行している実行コンテキストに基づいている、ことを特徴とする方法。
【請求項７】
請求項１において、該第二コンテキストと関連しているファイアウォールが、該第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークしていることの表示を受取ることに応答して該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かの決定を行わせることを特徴とする方法。
【請求項８】
請求項１において、該保護されている機能性が拡張ライブラリと関連しており、且つ該拡張ライブラリは、該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定させることを特徴とする方法。
【請求項９】
請求項１において、該クリデンシャルが署名済証明書を有していることを特徴とする方法。
【請求項１０】
請求項１において、該保護されている機能性が、保護されているデータ及び保護されているオブジェクトのうちの少なくとも１つと関連していることを特徴とする方法。
【請求項１１】
１つ又はそれ以上のプロセッサにより実行される場合に、該１つ又はそれ以上のプロセッサをして以下のオペレーション、即ち
実行された場合にアプリケーションインスタンスを発生させる１組のアプリケーションコードと関連しているクリデンシャルに基づいて第一アプリケーションインスタンスを保護ドメインと関連付け、
該第一アプリケーションインスタンスを第一実行コンテキストにおいて実行し、尚該第一実行コンテキストはファイアウォールによってその他の実行コンテキストから分離されており、
該第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークしていることの表示を受取り、尚該保護されている機能性へのアクセスは、そのアクセスをシークしている実体が１組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属する場合に許可されるものであり、且つ
該表示を受取ることに応答して、該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを、
該第一アプリケーションインスタンスが関連している保護ドメインを決定し、且つ
該第一アプリケーションインスタンスが関連している保護ドメインが該１組の１つ又はそれ以上の保護ドメイン内にあるか否かを決定する、
ことにより決定する、
を実行させる１組の命令がその上に格納されているマシンにより読取可能な媒体。
【請求項１２】
請求項１１において、該保護されている機能性が該第二コンテキストにおいて実行する第二アプリケーションインスタンスにより露呈されることを特徴とするマシンにより読取可能な媒体。
【請求項１３】
請求項１２において、該１組の命令が、該第二アプリケーションインスタンスの一部であり且つ、１つ又はそれ以上のプロセッサにより実行された場合に、該１つ又はそれ以上のプロセッサをして以下の更なるオペレーション、即ち、
該オペレーションをして該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定させる、
を実施させる命令を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１４】
請求項１２において、該１組の命令が、該第二アプリケーションインスタンスの一部であり且つ、１つ又はそれ以上のプロセッサにより実行された場合に、該１つ又はそれ以上のプロセッサをして以下の更なるオペレーション、即ち、
該１組の１つ又はそれ以上の保護ドメインを特定する、
ことを実施させる命令を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１５】
請求項１２において、該１組の命令が、１つ又はそれ以上のプロセッサにより実行される場合に、該１つ又はそれ以上のプロセッサをして以下の更なるオペレーション、即ち、
該第二アプリケーションインスタンスが第三実行コンテキストと関連している別の保護されている機能性へのアクセスをシークしていることの表示を受取り、尚該その他の保護されている機能性へのアクセスは、そのアクセスをシークする実体が別の組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属するものである場合に許可され、
該第二アプリケーションインスタンスが該その他の保護されている機能性へのアクセスに対するパーミッションを有しているか否かを、
該第二アプリケーションインスタンスが関連している保護ドメインを決定し、且つ
該第二アプリケーションインスタンスと関連している該保護ドメインが該その他の組の１つ又はそれ以上の保護ドメイン内にあるか否かを決定する、
ことにより決定する、
を実施させる命令を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１６】
請求項１１において、該１組の命令が、１つ又はそれ以上のプロセッサにより実行される場合に、該１つ又はそれ以上のプロセッサをして以下の更なるオペレーション、即ち、
該第一アプリケーションインスタンスが実行している実行コンテキストを決定し、且つ該第一アプリケーションインスタンスが関連している保護ドメインを決定するための該オペレーションが該第一アプリケーションインスタンスが実行している実行コンテキストに基づいている、
を実行させる命令を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１７】
請求項１１において、該保護されている機能性が拡張ライブラリと関連しており、且つ該１組の命令が、該拡張ライブラリの一部であり、且つ、１つ又はそれ以上のプロセッサにより実行される場合に、該１つ又はそれ以上のプロセッサをして、以下の更なるオペレーション、即ち、
該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定する、
ことを実施させる命令を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１８】
請求項１１において、該クリデンシャルが署名済証明書を有していることを特徴とするマシンにより読取可能な媒体。
【請求項１９】
請求項１１において、該保護されている機能性が保護されているデータと関連していることを特徴とするマシンにより読取可能な媒体。
【請求項２０】
請求項１１において、該保護されている機能性が保護されているオブジェクトを有していることを特徴とするマシンにより読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はセキュリティ技術に関するものであって、更に詳細には、保護ドメインに基づいてセキュリティを提供する方法及び装置に関するものである。
【背景技術】
【０００２】
互いに及びライブラリ及びランタイム環境等のその他のソフトウエアとインタラクト即ち相互作用することを必要とする複数のソフトウエアアプリケーションを有する多数の計算環境が存在している。ファイアウォール等は該アプリケーション又はその他のソフトウエアを保護するための１つの技術である。ファイアウォールの１つのタイプは、それ自身の実行コンテキストにおいて各アプリケーション（又はアプリケーションの束）を実行する。例えば、幾つかの計算環境は、アプリケーション実行コンテキストの分離をサポートしている。
【０００３】
アプリケーション実行コンテキストの分離とは、その他のアプリケーションが明示的にアクセス用のインターフェースを提供するものでない限り、１つのアプリケーションが別のコンテキストにおけるアプリケーションにより所有されているオブジェクト又はデータへアクセスすることができないことを意味している。コンテキスト分離は、ファイアウォールにより実施することが可能である。例えば、オブジェクトのインスタンスへのアクセスは、そのオブジェクトインスタンスが作成された同一のコンテキスト（所有コンテキスト）において実行するアプリケーションに対してのみ許可される。アプリケーションは、ファイアウォールをバイパスする共有可能なインターフェースオブジェクト（ＳＩＯ）の形態でその他のアプリケーションがアクセスするためのインターフェースを提供することが可能である。オブジェクト所有制御に加えて、オブジェクトがアクセスされる場合に、その他の言語アクセス制御を実施することが可能である。
【０００４】
コンテキスト分離は、保護されているデータ又はオブジェクトに対して粗粒度アクセス制御を可能とする。例えば、保護されているオブジェクト又はデータは、スマートカード等のプラットフォームと関連付けることが可能である。スマートカードは、クレジットカードに類似しており且つ埋設されている集積回路（ＩＣ）を包含しているカードである。スマートカードは、設計上高度に安全であり、且つ不正変更した場合にはそれが包含する情報を破壊することとなる。スマートカードは、典型的に、安全な処理及び格納のためにマイクロプロセッサ及びメモリを具備している。スマートカードに類似しているがスマートカード以外のフォームファクタにある技術も存在している。このような関連技術の例はスマートボタン（ｓｍａｒｔ  ｂｕｔｔｏｎ）及びＵＳＢトークンである。これらのその他の技術は、スマートカードと同様の機能に対して使用することが可能である。ＵＳＢトークンは、ＰＣのＵＳＢポート内に直接プラグインすることが可能である。スマートカード及びＵＳＢトークンは、スマートカードと同様のプログラミング能力を提供し且つ耐不正変更特性を有している。
【０００５】
従って、プラットフォーム機能性又は別のアプリケーションにより提供される機能性又はサービスへのアクセスは、コールを行うアプリケーションのコンテキストに基づいてのみ許可される。例えば、ランタイム環境（ＲＥ）機能性又は別のアプリケーションにより提供される機能性又はサービスへのアクセスは、コールを行うアプリケーションのコンテキストに基づいてのみ許可される。然しながら、コンテキスト分離は、細粒度プラットフォーム保護又は該プラットフォームにより実施されるアプリケーション機能保護を許容するものではない。
【０００６】
制限された環境下において、セキュリティのより精細な粒度の制御が可能である場合がある。例えば、アプリケーションのアイデンティフィケーション即ち識別を検査することによりより精細な粒度制御が可能な場合がある。特定の例として、スマートカードアプリケーションクライエントがそのサーバーが許可するものであるか否かをサーバーアプリケーションがプログラムにより検査することが可能である。然しながら、この検査は、それが、典型的に、アプリケーションクライエントの識別にのみ基づいているという点において制限されている。
【０００７】
ポリシーベースアクセス制御はランタイム環境（ＲＥ）、アプリケーション又はライブラリにより提供される機能性を保護することを許容する。該保護されている機能性は、その保護されている機能性をインプリメントするコードからなるブロック、オブジェクト指向プログラミングの意味における保護されているオブジェクト、又は保護されているデータとすることが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、セキュリティを提供する改善された技術を提供することを目的とする。尚、このセクションにおいて記載する手法は追求することが可能であるが、必ずしも、以前に着想されたか又は追及された手法ではない。従って、本明細書において特にそうでない旨が表示されない限り、このセクションにおいて記載される手法は本願特許請求の範囲に対する従来技術ではなくこのセクションにおいて包含されることにより従来技術であることを認めるものではない。
【課題を解決するための手段】
【０００９】
本明細書においては、セキュリティを提供する手法を記載する。１実施例によれば、実行された場合に、アプリケーションインスタンスを発生する１組のアプリケーションコードと関連しているクリデンシャル（ｃｒｅｄｅｎｔｉａｌ）（例えば、証明書）に基づいて第一アプリケーションインスタンスが保護ドメインと関連付けられる。該第一アプリケーションインスタンスは第一実行コンテキストにおいて実行し、尚、該第一実行コンテキストはファイアウォールによりその他の実行コンテキストから分離されている。該第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークすることの表示が受取られる。該保護されている機能性へのアクセスは、そのアクセスをシークする実体が１組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属するものである場合に許可される（上述した保護されている機能性へのアクセスに対するパーミッション（ｐｅｒｍｉｓｓｉｏｎ）を許可する）。該表示を受取ることに応答して、該第一アプリケーションインスタンスが該保護されている機能性へアクセスするためのパーミッションを有しているか否かの決定がなされる。その決定は、該第一アプリケーションインスタンスが関連している保護ドメインを決定し、且つ該第一アプリケーションインスタンスが関連している該保護ドメインが該１組の１つ又はそれ以上の保護ドメイン内にあるか否かを決定することにより行われる（上述した保護されている機能性へのアクセスに対するパーミッションを許可する）。
【発明を実施するための最良の形態】
【００１０】
ここに記載するシステム及び方法は、コンテキスト分離を使用した保護ドメインに基づいたセキュリティに関するものである。説明の便宜上、種々のシステム及び方法の完全なる理解を与えるために多数の特定の詳細について説明する。然しながら、ここに記載するシステム及び方法はこれらの特定の詳細なしで実現することが可能であることは明かである。従って、本明細書及び図面は制限的な意味ではなく例示的なものとみなすべきである。
【００１１】
セキュリティモデル外観
本発明の１実施例に基づくセキュリティモデルは、コンテキスト分離に基づいたセキュリティモデルと共に保護ドメインに基づいたセキュリティモデルを提供する。該セキュリティモデルは、スマートカードプラットフォームに対して提供することが可能である。然しながら、該セキュリティモデルはスマートカードプラットフォームに制限されるものではない。スマートカードプラットフォームの１例はジャバ（Ｊａｖａ）（登録商標）カードプラットフォームであるが、本発明はそのように制限されるものではない。
【００１２】
１実施例において、成功裡にインストールされたアプリケーションは保護ドメイン及び実行コンテキストに束縛されている。従って、保護ドメインは間接的に実行コンテキストと関連している。従って、本発明の１実施例によって、保護ドメインに基づいたセキュリティモデルとコンテキスト分離に基づいたセキュリティモデルとのシームレスな統合が提供される。
【００１３】
１実施例において、保護ドメインに基づいたセキュリティモデルは、プラットフォーム機能性を包含するプラットフォームオブジェクト用のパーミッションを包含している。例えば、該パーミッションはランタイム環境（ＲＥ）に関連することが可能である。然しながら、該パーミッションはその他の環境に対して適用可能である場合がある。特定の例として、パーミッションは、スレッド、共用可能なインターフェースオブジェクト（ＳＩＯ）ルックアップ等のプラットフォーム機能性、及びライブラリ機能性に関して提供される。パーミッションターゲット及びパーミッションアクションでの細粒度のパーミッション検査をサポートする向上されたセキュリティモデルが本発明の１実施例に基づいて提供される。
【００１４】
本発明の１実施例は、アプリケーション毎に基づいて、プラットフォーム保護機能性、ライブラリ保護機能性、及びサーバーアプリケーション保護機能性に対するアクセスを許可する方法である。１つの側面において、パーミッション検査はコンテキストスイッチ時にＳＩＯに関してトランスペアレントに実施される。例えば、コンテキストスイッチは、第一実行コンテキストと関連するオブジェクトが第二実行コンテキストと関連するオブジェクトへのアクセスをシークする場合に発生する。ファイアウォールは、コンテキストスイッチを検知すると自動的にパーミッション検査を起生させ、それによりトランスペアレントなパーミッション検査を起生させる。
【００１５】
別の側面においては、ＳＩＯに関してのパーミッション検査が、保護されている機能性を所有するアプリケーションにより明示的に（プログラム的に）実施される。このことは、該アプリケーションが付加的なパーミッション検査を要求することを許容する。プログラマチック（ｐｒｏｇｒａｍｍａｔｉｃ）即ちプログラムによるパーミッション検査は細粒度を可能とさせる。該パーミッション検査は、又、ライブラリ保護機能性に関して明示的に（プログラム的に）実施することが可能である。
【００１６】
プログラム的なパーミッション検査は、１つの側面において、メソッドを呼出す保護されている機能性を所有するアプリケーションにより開始される。別の側面においては、プログラム的パーミッション検査は保護されている機能性を所有するアプリケーションにおける開発者が提供するメタデータに基づいて開始される。トランスペアレントであるか又はプログラム的であるかに拘わらず、パーミッション検査は、認証を検査する場合等の多くのタイプのセキュリティ制約検査を可能とさせる。
【００１７】
保護ドメイン及びコンテキスト分離外観
図１Ａは本発明の１実施例に基づいてコンテキスト分離と共に使用される保護ドメインに関連する要素間の関連性を例示したブロック図である。保護ドメイン１１０はアプリケーション束１０４に対して許可することが可能な１組のパーミッション１１６を定義する。保護ドメイン１１０はポリシーコンフィギュレーション１３１により記載される。例えば、保護ドメイン１１０におけるパーミッション１１６は、セキュリティポリシーを実現するためにＧＵＩ等により特定することが可能である。保護ドメイン１１０は保護ドメインクリデンシャル（例えば、証明書）１１４と関連している。保護ドメインクリデンシャル（例えば、ルート証明書）はアプリケーション束１０４を検証し且つ認証することが必要な場合がある装置により暗示的に信用される保護ドメインと関連しているクリデンシャルである。
【００１８】
アプリケーション束１０４からロードされたアプリケーションインスタンス１０８が保護されている機能性（例えば、保護されているオブジェクト）へのアクセスに対するパーミッションを有しているか否かを検査する場合に、そのパーミッション検査は、アプリケーション束１０４が属する保護ドメインに基づいて決定することが可能である。例えば、１組の保護ドメインにおける保護ドメインのうちの１つに属するアプリケーションはそのオブジェクトへアクセスすることが許容される。
【００１９】
アプリケーション束１０４はアプリケーション署名者のクリデンシャル（例えば、証明書）１１２に基づいて保護ドメイン１１０へ束縛されている。アプリケーション束１０４は保護ドメインクリデンシャル１１４のうちの１つに対して認証することが可能なクリデンシャル１１２で署名すべきである。
【００２０】
アプリケーション束をインストールするために、該アプリケーション束は信用を確立するために認証されるべきである。これは、アプリケーション実行期間中に成功裡にインストールされたアプリケーションのパーミッションを検査することとは別の初期的プロセスである。署名済アプリケーション束は、該アプリケーション束の署名者を認証し且つ該アプリケーション束を該保護ドメインにおいて許容されるパーミッションを許可することにより該アプリケーション束が保護されている機能性を実施することを承認する保護ドメインへ束縛することにより信用されることが可能となる。１実施例においては、署名済アプリケーション束は、署名者証明書から／を包含する保護ドメインルート証明書のうちの１つへの証明書経路を見つけることが可能である場合に認証することが可能である。認証されると、アプリケーション束が要求したパーミッションが保護ドメインパーミッションと比較される。該アプリケーション束は、該１組のパーミッションが保護ドメインパーミッションのサブセットである場合にのみ、インストールされ且つ該保護ドメインへ束縛される。
【００２１】
各アプリケーション束１０４に対して実行コンテキスト１０２（「コンテキスト（ｃｏｎｔｅｘｔ）」）が作成される。実行コンテキストを作成する１つの技術は、該実行コンテキストにおいてインスタンス化される各オブジェクトに対し同一のコンテキスト識別子を割当てることであり、その場合に、該コンテキスト識別子は他の全ての実行コンテキストから異なるものである。実行コンテキスト１０２は、実行コンテキスト１０２におけるオブジェクトへのアクセスをシークするアプリケーションのコンテキスト識別子が実行コンテキスト１０２に対するコンテキスト識別子と一致することを検証することにより保護することが可能である。１実施例においては、この検証をインプリメントするためにファイアウォールが使用される。アプリケーション束１０４は１つ又はそれ以上のアプリケーションモジュール１０６を有することが可能である。１実施例において、アプリケーション束１０４における１組のアプリケーションモジュール１０６（最大で全てのモジュール１０６を包含する）全てが共通コンテキスト１０２において実行する。アプリケーションモジュール（アプリケーションインスタンス）１０８のランタイムインスタンス１０８は実行コンテキスト１０２において実行する。注意すべきことであるが、アプリケーション束１０６と関連する多くのアプリケーションインスタンス１０８は１つの実行コンテキスト１０２において実行することが可能である。
【００２２】
注意すべきことであるが、保護ドメイン１１０は、アプリケーション束１０４の保護ドメイン１１０と実行コンテキスト１０２との両方への関連性の結果として、実行コンテキスト１０２と関連している。更に注意すべきことであるが、アプリケーション束１０４と実行コンテキスト１０２との間には１対１の関係が存在している。然しながら、保護ドメイン１１０と実行コンテキスト１０２との間には１対多数の関係がある。従って、特定の保護ドメイン１１０は多くの異なるアプリケーション束１０４と関連することが可能である。
【００２３】
従って、保護ドメインは、どのアプリケーションが保護されている機能性（例えば、オブジェクト）へのアクセスをシークするかに基づいて保護することが可能である。即ち、アプリケーションの夫々の保護ドメインに基づいて、１つのアプリケーションは保護されている機能性（例えば、オブジェクト）へのアクセスが許容されるが、別のアプリケーションは許容されないものとすることが可能である。更に、保護ドメインは、「パーミッションターゲット及びアクション」という表題のセクションの下で以下に説明するように、シークされるアクセスのタイプに基づいて保護することが可能である。
【００２４】
１実施例において、アプリケーションが保護されている機能性へのアクセスをシークする場合に、そのアプリケーションのパーミッション１１６が、ファイアウォール１０３、アプリケーションインスタンス１０８、ランタイム環境（ＲＥ）１２３、又はその他のコードにより呼出すことが可能なアクセスコントローラ１０５により検査される。
【００２５】
次に図１Ｂを参照すると、アプリケーション１０８はアプリケーションクリデンシャル１１１を具備するその他のものに対し認証を行う。個別的なアプリケーションモジュールとしてパッケージ化されているアプリケーション束１０４における各アプリケーションは、別個のアプリケーション実行コンテキストへ束縛させることが可能であり、アプリケーションインスタンス１０８間での直接的なコールを阻止する。アプリケーション実行コンテキストについては後述する。アプリケーション束１０４における全てのアプリケーションは共通の保護ドメイン１１０へ束縛されている。アプリケーション束１０４における全てのアプリケーションは共通コンテキスト１０２において実行することが可能である。
【００２６】
未だに図１Ｂを参照すると、アクセスコントローラ１０５はアプリケーション記述子１２１により記述されるセキュリティ制約１１９を実施する。アクセスコントローラ１０５は、アプリケーション１０８、ファイアウォール１０３、又はランタイム環境／システムライブラリ／コンテナコード（ｃｏｎｔａｉｎｅｒ  ｃｏｄｅ）１２５により呼出すことが可能である。図１Ｂは、アプリケーションインスタンス１０８がＵＲＩ１３３により識別され且つアプリケーション束１０４がＵＲＩ１３３の下にデプロイされることを図示している。
【００２７】
パーミッション外観
パーミッションは、１実施例に基づいて、トランスペアレントに検査される。例えば、より詳細に以下に説明するように、パーミッションは、実行コンテキストにおける変化によって自動的に検査させることが可能である。ファイアウォール１０３は、１つの側面においては、保護されている機能性の実行コンテキスト外部からの保護されている機能性へのアクセスがシークされる場合にはいつでもトランスペアレントにパーミッションを検査する。特定の例として、１つのコンテキストにおいて実行している第一アプリケーションインスタンスが別のコンテキストにおいて実行している第二アプリケーションインスタンスのＳＩＯにより露呈されているオブジェクトへのアクセスをしようとする場合には、第二コンテキストを保護するファイアウォールが第一アプリケーションに対してのパーミッション検査を自動的に喚起する。
【００２８】
パーミッションはプログラム的に検査することが可能であり、そのことはより詳細に以下に説明するように細粒度制御を提供することが可能である。例えば、アプリケーションインスタンス１０８、ランタイム環境１２３、ライブラリ、又はその他のコードは、プログラム的にパーミッションを検査することが可能である。特定の例として、前述した第二アプリケーションインスタンスは第一アプリケーションインスタンスに対するパーミッションを検査させるためのメソッドを喚起即ち呼出すことが可能である。１実施例によれば、プログラムによってパーミッション検査を要求するソフトウエアメソッドは３つの引き数、即ち、パーミッションの名前又はタイプ、オプションのパーミッションターゲット、及びオプションのパーミッションアクションを有している。パーミッションターゲット及びアクションについては次のセクションで説明する。１実施例によれば、第二アプリケーションは、第二アプリケーションにより露呈されている機能性（例えば、オブジェクト）へアクセスするためには、第一アプリケーションが属さねばならないドメインを特定することが可能である。１実施例によれば、該第二アプリケーションは、第二アプリケーションにより露呈されている機能性（例えば、オブジェクト）へアクセスするために、第一アプリケーションのＵＲＩが一致せねばならないＵＲＩ又はＵＲＩパターンを特定することが可能である。１実施例によれば、第二アプリケーションは、第二アプリケーションにより露呈されている機能性（例えば、オブジェクト）へアクセスするために第一アプリケーションのクリデンシャルが有効なものとされねばならない認証スキーム及びクリデンシャルを特定することが可能である。
【００２９】
パーミッションターゲット及びアクション
１実施例に基づいて、保護ドメインに基づいたパーミッション検査はパーミッションターゲットの検査をサポートしている。パーミッションターゲットの１例は特定のホストに対するＨＴＴＰＳ接続を開くことのパーミッションである。特定の例として、ＨＴＴＰＳ接続を開くことのパーミッションは、ｕｎ．ｃｏｍ等の特定のターゲットに対してのみ許可することが可能である。従って、その保護は、そのアプリケーションがその接続を開くために必要な機能性（例えば、オブジェクト）への一般的なアクセスを有しているか否かに基づくものではなく、そのアプリケーションがその接続を開くことをシークするターゲットに基づいている。
【００３０】
１実施例においては、保護ドメインに基づいたパーミッション検査はパーミッションアクションを検査することをサポートしている。パーミッションアクションの１例はＧＥＴ又はＰＯＳＴ  ＨＴＴＰメソッドを使用してＨＴＴＰＳ接続を開くためのパーミッションである。従って、その保護は、そのアプリケーションが保護されているＧＥＴ又はＰＯＳＴメソッドへの一般的なアクセスを有しているか否かに基づくものではなく、そのアプリケーションがその保護されているメソッドを使用してとるアクションに基づいている。
【００３１】
アプリケーション、プラットフォーム、及びライブラリにより定義されるパーミッション
１実施例に基づいて、保護ドメインに基づくパーミッション検査はアプリケーションにより定義されるパーミッションをサポートする。例えば、第一アプリケーションが露呈するＳＩＯへ第二アプリケーションがアクセスせんとする場合に第一アプリケーションがパーミッションを検査することが可能である。アプリケーションにより定義される非ＳＩＯパーミッションが存在する場合もある。
【００３２】
保護ドメインに基づいたパーミッション検査は、１実施例に基づいて、プラットフォームにより定義されたパーミッションを可能とする。保護されているプラットフォーム機能性の１例は「ｊａｖａｃａｒｄｘ．ｃｒｙｐｔｏ．Ｃｉｐｈｅｒ」等の強度の高い暗号技術に対するパーミッションである。別の保護されているプラットフォーム機能性は共用可能なインターフェースオブジェクト（ＳＩＯ）ルックアップに関するパーミッションである。
【００３３】
本発明の１実施例に基づいて、保護ドメインに基づいたパーミッション検査はライブラリにより定義されたパーミッションをサポートする。保護されているライブラリ機能性に関するパーミッション検査はプログラムにより要求することが可能である。本発明の１実施例によれば、ライブラリは保護ドメインと関連しているものではない。然しながら、１実施例においては、ライブラリを保護ドメインと束縛即ち結合させるためにラッパーサービス（ｗｒａｐｐｅｒ  ｓｅｒｖｉｃｅ）が使用される。ライブラリのインストールにおいて署名者のクリデンシャル（例えば、証明書）を使用することを可能とするためにライブラリを署名済とすることが可能である。保護されているライブラリ機能性の１例は「ｊａｖａｃａｒｄｘ．ｃｒｙｐｔｏ．Ｃｉｐｈｅｒ．ｅｎｃｒｙｐｔ」等の暗号技術に関連しているパーミッションである。
【００３４】
アプリケーション実行コンテキスト
図２は本発明の１実施例に基づいて、関連する実行コンテキストを具備するアプリケーション束を有するプラットフォーム２００を例示した模式図である。この模式図は、又、アプリケーションのコードを分離するコード分離階層を例示している。コールは矢印で図示した如くにのみ実行することが可能であり、且つ新たなアプリケーションは、それらがコアライブラリ２２３、拡張ライブラリ２２０、及びＳＩ  Ｂ  ２２２等のアプリケーション間通信用の共用可能なインターフェース等の共通に見ることが可能なクラスのみをコールすることが可能であるようにインストールされる。アプリケーション束ＡはアプリケーションＡ１  ２０４、アプリケーションＡ２  ２０３、ライブラリＡ  ２０７を有している。アプリケーション束Ａはプラットフォーム２００上において１つのユニットとしてデプロイされており且つアプリケーションコンテキストＡ  ２０６Ａ内において実行する。アプリケーションコンテキストＡ  ２０６Ａ内において、アプリケーションＡ１  ２０４は、アプリケーションＡ２  ２０３がアプリケーションＡ１  ２０１のＳＩＯ  Ａ１  ２０８をコールするためのインターフェースＳＩ  Ａ１  ２０９を露呈させる。イントラＳＩ（Ａ１）２０９はイントラアプリケーション通信又は通常の非共用可能インターフェース用に降格された共用可能なインターフェースである。該アプリケーション束が実行するコンテキスト２０６Ａはコンテキスト分離を提供する。コンテキスト分離は、１実施例においては、ファイアウォールで実現される。
【００３５】
アプリケーション束ＢはアプリケーションＢ  ２０５を有しており且つ単一のユニットとしてプラットフォーム上にデプロイされ且つアプリケーションコンテキストＢ  ２０６Ｂ内において実行する。アプリケーションＢは、他のコンテキストにおいて実行するアプリケーションが保護されている機能性ＳＩＯ  Ｂ  ２１３へアクセスするためのインターフェースＳＩ  Ｂ  ２２２を露呈させる。
【００３６】
別のランタイム環境（ＲＥ）コンテキスト２０６Ｃが存在している。ＲＥコンテキスト２０６ＣはＲＥ及びコアライブラリ２２３と関連している。従って、該プラットフォームはコンテキスト分離を有しており、その場合に、各アプリケーション束は他のコンテキストから分離されているコンテキストにおいて実行する。該コンテキスト分離は、１実施例に基づいて、ファイアウォールにより実施される。
【００３７】
図２においては、拡張ライブラリ２２０も図示されており、それは全てのアプリケーションによりアクセス可能であり且つプラットフォーム上の特定の実行コンテキストへ結合されているものではない。このライブラリからクラスをインスタンス化することによりオブジェクトを作成する場合にのみその作成されるオブジェクトは特定のコンテキスト（例えば、コールを行うアプリケーションのコンテキスト）へ関連付けられる。
【００３８】
図２においては、共用可能なインターフェースＳＩｓ  Ｂ  ２２２も図示されており、それらはそれらがアプリケーション間通信のためにＳＩＯ  Ｂ  ２１３をコールすることを可能とするために共通にみることが可能なレベルにおいてその他のアプリケーションに対しアプリケーションＢ  ２０５により露呈されている。
【００３９】
コンテキスト変化に基づくパーミッション検査
１つのコンテキストにおいて実行しているアプリケーションが別のコンテキストにより保護されている機能性（例えば、オブジェクト）へのアクセスをシークする場合にパーミッションを検査することが可能である。例えば、該保護されている機能性はプラットフォーム又はライブラリ機能性又は保護されている共用可能なインターフェースオブジェクト機能性である場合がある。パーミッション（ＳＩＯ又はライブラリ機能性に対して）はコールを行うアプリケーションのコンテキストに基づいて検査することが可能である。前述したように、コールを行うアプリケーションは、ターゲット又はターゲットのカテゴリに関するパーミッションを許可される場合がある。前述したように、コールを行うアプリケーションはアクション又はアクションのカテゴリに対するパーミッションを許可される場合がある。
【００４０】
図３は本発明の１実施例に基づいて、図２に図示したアプリケーション及びコンテキストに対するコンテキスト変化及びセキュリティ検査を例示した模式図である。従って、図３において示されている３つの異なるコンテキストが存在している。これら３つのコンテキストはコンテキストＡ  ２０６Ａ、コンテキストＢ  ２０６Ｂ、及びＲＥコンテキスト２０６Ｃである。特に、図３は、コンテキストが侵入されることに起因してコンテキストスイッチが発生する場合に行われるセキュリティ検査を図示している。
【００４１】
アプリケーション束Ａ内において完全にパスされるメッセージ（コール）はコンテキストスイッチを発生することはない。従って、セキュリティ検査が必要とされることはない。例えば、アプリケーションＡ２がＳＩＯ  Ａ１（メッセージ３０２及び３０４）を介してアプリケーションＡ１をコールする。注意すべきことであるが、これらのメッセージ（３０２及び３０４）はアプリケーションＡのコンテキスト内をパスされる。従って、これらのメッセージ（３０２及び３０４）に関連するコンテキストスイッチは存在しない。従って、この点においてセキュリティに関する問題は存在しない。メッセージ３０６において、アプリケーションＡ１はライブラリ関数Ａをコールする。更に、メッセージ３０８において、アプリケーションＡ２はライブラリＡをコールする。ライブラリＡ機能性は同一のコンテキストＡ  ２０６Ａ内において実行するので、ライブラリＡに対するコールに対するセキュリティ検査は必要ではない。注意すべきことであるが、ライブラリＡはコンテキストＡ  ２０６Ａ内にあるものと考えられ、従って、アプリケーションＡ２がライブラリＡをコールする場合にコンテキストスイッチが発生することはない。
【００４２】
然しながら、１つのコンテキストと関連するアプリケーションが別のコンテキストと関連する機能性（例えば、オブジェクト）へアクセスしようとする場合に、コンテキスト変化がトリガされ且つセキュリティ検査が実施される。更に図３を参照すると、アプリケーションＡ２が、メッセージ３１０において、ＳＩＯ  Ｂをコールする。このコールはコンテキストスイッチを発生させ、その場合に、コンテキストＢ  ２０６Ｂを表わす値（例えば、コンテキスト識別子）３１１がスタック３１２へ押し込まれる。コンテキストＡ  ２０６Ａを表わす値３１３は既にスタック３１２上に存在している。コンテキスト変化が存在するので、１つ又はそれ以上のパーミッション検査が実施される。そのパーミッション検査はトランスペアレントであるか又はより精細な制御のためにプログラム的なものとすることが可能である。
【００４３】
トランスペアレントなパーミッション検査はコンテキストスイッチによって自動的に実施させることが可能である。例えば、トランスペアレントなパーミッション検査は、アプリケーションクライエントが異なるコンテキストからのアプリケーションのＳＩＯメソッドを喚起即ち呼出す場合に自動的に実施される。このトランスペアレントなパーミッション検査は、１実施例においては、コンテキストスイッチを実施する前にコールを行うクライエントに対してのアプリケーションの代わりにファイアウォールにより要求される。例えば、アプリケーションＡ２がＳＩＯ  Ｂをコールする場合に、アプリケーションＢの代わりにファイアウォールがパーミッション検査を要求する。１実施例においては、トランスペアレントなパーミッション検査を実施するためにアクセスコントローラがファイアウォールにより喚起即ち呼出される。１つの側面において、このトランスペアレントなパーミッション検査は、パーミッションターゲット又はアクションを特定することはないので粗粒度ＳＩＯアクセス制御を可能とさせる。
【００４４】
パーミッション検査のより精細な粒度の制御を可能とするために、アプリケーションはプログラム的にパーミッションを検査することが可能である。例えば、矢印３１４は、アプリケーションＢがアプリケーションＡのパーミッションを検査することを表わしている。プログラム的なパーミッション検査は、開発者がメソッド又はコードブロック等へのアクセスを保護することを可能とすることにより、細粒度プログラム的ＳＩＯパーミッション検査を可能とさせる。１実施例に基づいて、ＳＩＯメソッドが喚起即ち呼出される場合にコールを行うコード（クライエント）に対するパーミッション検査をアプリケーションがプログラム的に要求することを可能とするためにソフトウエアメソッドが提供される。このメソッドは、１つの側面において、３つの引き数、即ちパーミッションの名前又はタイプ、オプションのパーミッションターゲット及びオプションのパーミッションアクションを受付ける。パーミッションの名前又はタイプは、ＳＩＯにより暗示的に定義することが可能である（例えば、それはＳＩＯクラスの名前自身から派生することが可能である）。何等かの開発者が提供したメタデータ（例えば、アノテーション）に基づいてのこれらのプログラム的なパーミッション検査を実現する保護プロキシーは、ツールにより発生させ且つアプリケーションと共にインストールすることが可能である。従って、１実施例においては、そのアプリケーションの開発者はそのアプリケーション内へ何等かのパーミッション検査要求をコード化することは必要ではなく、そのアプリケーションと関連するメタデータを介して等価な命令を提供することが可能である。
【００４５】
従って、図３における場合を参照すると、アプリケーションＡ２がＳＩＯ  Ｂをコールする場合に、ＳＩＯ  Ｂはそのコールを行うアプリケーション、即ちアプリケーションＡ２がパーミッションを有しているか否かをプログラム的に決定することが可能である。この決定を行うために、ＳＩＯ  Ｂはそのコールを行うアプリケーション（Ａ２）のコンテキストを決定するためにスタック３１２を検査する。次いで、アプリケーションＡ２の保護ドメインに基づいて、アプリケーションＡ２がＳＩＯ  Ｂへアクセスするためのパーミッションが許可されているか否かをＳＩＯ  Ｂが決定する。１実施例においては、そのパーミッション検査を実施するためのプログラム的検査（例えば、ＳＩＯ  Ｂ）を所望するアプリケーションによりアクセスコントローラが喚起即ち呼出される。
【００４６】
更に図３を参照すると、ＳＩＯ  Ｂは、メッセージ３１６において、アプリケーションＢをコールする。次いで、アプリケーションＢは、メッセージ３１８において、拡張ライブラリをコールする。該拡張ライブラリは、３４１により表わされるように、パーミッション検査を喚起する。この場合において、パーミッション検査はアプリケーションＢに対するものである。従って、アプリケーションＢが関連する保護ドメインがそのライブラリへアクセスするためのパーミッションを有している場合には、アクセスが許可される。
【００４７】
該拡張ライブラリは、メッセージ３２０において、コアライブラリをコールする。コアライブラリに対するコールは、ＲＥコンテキスト２０６Ｃを表わす値３１５をスタック３１２へ押し込ませる。然しながら、注意すべきことであるが、セキュリティは、必ずしも、即時のコールを行うコール（アプリケーション又はライブラリ）に対して検査されるものではない。例えば、アプリケーションＢのパーミッションは、拡張ライブラリがコアライブラリへアクセスことが可能であるか否かを決定するために検査される。その他のパーミッション検査の場合におけるように、このことは、アクティブなコンテキスト（例えば、コンテキストＢ  ２０６Ｂ）と関連している保護ドメインを決定することにより実施される。１実施例においては、コアライブラリはこのパーミッション検査を実施するためにアクセスコントローラを喚起即ち呼出す。従って、ＲＥ保護機能性に関するパーミッション検査は、ＲＥ自身により要求され且つコールを行うクライエントに対して検査することが可能である。
【００４８】
アプリケーションＡ２が拡張ライブラリをコールする場合には（メッセージ３２６）、該拡張ライブラリは３５１により表わされるようにパーミッション検査を喚起する。この場合において、パーミッション検査はアプリケーションＡ２に対するものである。従って、アプリケーションＡが関連している保護ドメインがそのライブラリへアクセスするためのパーミッションを有している場合には、アクセスが許可される。
【００４９】
該拡張ライブラリが、次いで、コアライブラリをコールに場合には（メッセージ３２８）、そのパーミッションは、アプリケーションＡ２と関連する保護ドメインに対して尚且つ検査される。というのは、それが、メッセージ３２８が受取られた場合のアクティブなコンテキストだからである。このパーミッション検査は３１６により表わしている。メッセージ３２８を受取った後に該コンテキストはＲＥに対するコンテキストへスイッチさせることが可能である。
【００５０】
最後に、アプリケーションＡ２が直接的にコアライブラリをコールする場合には（メッセージ３３０）、アプリケーションＡ２  ３７１と関連している保護ドメインに対してパーミッションが検査される。
【００５１】
従って、パーミッション検査はコード自身に基づくものではなく、誰がそのコードのインスタンスを署名したか又は何等かのその他のアプリケーション認証スキームに基づいている。再度図１Ａを参照すると、アプリケーション束１０４は保護ドメインクリデンシャル（例えば、保護ドメインのルート証明書）１１４に対して認証されているクリデンシャル（例えば、証明書１１２）で署名されている。従って、同一の拡張ライブラリコードの２つの異なるインスタンスのパーミッションの検査は、そのオブジェクトが作成されたコンテキスト（所有コンテキスト）に基づいて、異なる結果を有する場合がある。
【００５２】
処理の流れ
図４は本発明の１実施例に基づいて、コンテキスト分離を使用した保護ドメインに基づいたセキュリティのプロセス４００を例示したフローチャートである。ステップ４０２は、実行された場合に、アプリケーションインスタンスを発生する１組のアプリケーションコードと関連しているクリデンシャル（例えば、証明書）に基づいて第一アプリケーションインスタンスを保護ドメインと関連付ける。
【００５３】
ステップ４０４はプラットフォーム上の第一実行コンテキストにおいて第一アプリケーションインスタンスを実行し、その場合に、第一実行コンテキストはプラットフォーム上の他の実行コンテキストからファイアウォールにより分離されている。
【００５４】
ステップ４０６は、第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークすることの表示を受取り、その場合に、該保護されている機能性へのアクセスは、そのアクセスをシークする実体が１組の１つ又はそれ以上の保護ドメインにおける１つの保護ドメインに属している場合に許容される（上述した保護されている機能性へのアクセスに対するパーミッションが許可される）。該保護されている機能性は、第二コンテキストにおいて実行している第二アプリケーションインスタンスにより露呈させることが可能である。該保護されている機能性はＲＥコンテキストと関連することが可能である。例えば、該保護されている機能性はコアライブラリ又はプラットフォーム関数とすることが可能である。該保護されている機能性は、又、第一アプリケーションと同一のコンテキストにおいて実行している拡張ライブラリにおけるものとすることが可能である。
【００５５】
ステップ４０８は、第一アプリケーションインスタンスがステップ４０６における表示を受取ることに応答して保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定する。ステップ４０８は、第一アプリケーションインスタンスが関連している保護ドメインを決定すること、及び第一アプリケーションインスタンスが関連している保護ドメインが該１組の１つ又はそれ以上の保護ドメイン内のものであるか否かを決定することを包含している。該保護ドメインを決定することは、第一アプリケーションインスタンスが実行する実行コンテキストに基づくものとすることが可能である。例えば、該プラットフォームは実行コンテキストと保護ドメインとの間の関連性を格納することが可能である。
【００５６】
１実施例においては、第二アプリケーションインスタンスが、第一アプリケーションインスタンスが保護されている機能性へのアクセスに対するパーミッションを有しているか否かの決定を行わせる。該第二アプリケーションインスタンスは１組の１つ又はそれ以上の保護ドメインを特定することが可能であり、その場合に、コールを行うアプリケーションは該保護されている機能性へアクセスするためには該保護されているドメインのうちの少なくとも１つに属するものでなければならない。
【００５７】
１実施例において、第二コンテキストと関連するファイアウォールは、第一アプリケーションインスタンスが第二実行コンテキストと関連している保護されている機能性へのアクセスをシークすることの表示を受取ることに応答して該保護されている機能性へのアクセスに対するパーミッションを第一アプリケーションインスタンスが有しているか否かを決定させる。
【００５８】
１つの側面において、拡張ライブラリが、第一アプリケーションインスタンスが保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定させる。更に別の側面においては、該プラットフォームが該第一アプリケーションインスタンスが該保護されている機能性へのアクセスに対するパーミッションを有しているか否かを決定させる。
【００５９】
ハードウエア外観
１実施例において、図４のプロセス４００のステップの少なくとも幾つかは１つ又はそれ以上のプロセッサにより実行される複数組の命令の形態をとる。１実施例においては、図３におけるアクションのうちの少なくとも幾つかは１つ又はそれ以上のプロセッサにより実行される複数組の命令の形態をとる。図５は該命令を実行するためのプラットフォームの１つの可能な実施例を示している。コンピュータシステム５００は、情報交換を容易化するためのバス５０２、及び情報を処理するためにバス５０２と結合されている１つ又はそれ以上のプロセッサ５０４を包含している。コンピュータシステム５００は、又、ランダムアクセスメモリ（ＲＡＭ）又はその他のダイナミック格納装置等のメインメモリ５０６を包含しており、それは情報及びプロセッサ５０４により実行されるべき命令を格納するためにバス５０２へ結合されている。メインメモリ５０６は、又、プロセッサ５０４による命令の実行期間中に一時的な変数又はその他の中間情報を格納するために使用することが可能である。コンピュータシステム５００は、更に、プロセッサ５０４に対するスタチックな情報及び命令を格納するためにバス５０２へ結合されているリードオンリメモリ（ＲＯＭ）５０８又はその他のスタチック格納装置を包含することが可能である。磁気ディスク又は光学ディスク等の格納装置５１０が情報及び命令を格納するために設けられており且つバス５０２へ結合されている。
【００６０】
コンピュータシステム５００は、バス５０２を介して、コンピュータユーザに対し情報を表示するためにディスプレイ５１２へ結合することが可能である。英文字及びその他のキーを包含する入力装置５１５がプロセッサ５０４に対し情報及びコマンド選択を通信するためにバス５０２へ結合されている。別のタイプのユーザ入力装置は、マウス、トラックボール、又はカーソル方向器等の方向情報及びコマンド選択をプロセッサ５０４へ通信し且つディスプレイ５１２上のカーソルの動きを制御するためのカーソル制御５１６である。この入力装置は、典型的に、２つの軸、即ち第一軸（例えば、ｘ）及び第二軸（例えば、ｙ）等の２つの自由度を有しており、それは該装置が面内における位置を特定することを可能とする。
【００６１】
コンピュータシステム５００において、バス５０２は情報、信号、データ等を種々のコンポーネント間において交換することを可能とする任意のメカニズム及び／又は媒体とすることが可能である。例えば、バス５０２は電気的信号を担持する１組の導体とすることが可能である。バス５０２は、又、１つ又はそれ以上のコンポーネント間においてワイヤレス信号を担持するワイヤレス媒体（例えば、空気）とすることが可能である。バス５０２は、更に、１つ又はそれ以上のコンポーネントを接続するネットワーク接続することが可能である。情報、信号、データ等を種々のコンポーネント間において交換することを可能とする任意のメカニズム及び／又は媒体は、バス５０２として使用することが可能である。
【００６２】
バス５０２は、又、これらのメカニズム／媒体の結合とすることが可能である。例えば、プロセッサ５０４は、ワイヤレスにより格納装置５１０と通信することが可能である。このような場合には、バス５０２は、プロセッサ５０４及び格納装置５１０の観点からは、空気等のワイヤレス媒体である。更に、プロセッサ５０４は容量的にＲＯＭ５０８と通信することが可能である。更に、プロセッサ５０４はネットワーク接続を介してメインメモリ５０６と通信することが可能である。この場合には、バス５０２はネットワーク接続である。更に、プロセッサ５０４は１組の導体を介してディスプレイ５１２と通信することが可能である。この場合には、バス５０２は１組の導体である。従って、どのようにして種々のコンポーネントが互いに通信するかに依存して、バス５０２は異なる形態をとることが可能である。図５に示したように、バス５０２は、種々のコンポーネント間において情報、信号、データ等を交換することを可能とする全てのメカニズム及び／又は媒体を機能的に表わしている。
【００６３】
本発明は本明細書に記載した技術を実現するためのコンピュータシステム５００の使用に関連している。本発明の１実施例によれば、これらの技術はメインメモリ５０６内に包含される１つ又はそれ以上の命令からなる１つ又はそれ以上のシーケンスを実行するプロセッサ５０４に応答してコンピュータシステム５００により実施される。このような命令は、格納装置５１０等の別のマシンにより読取可能な媒体からメインメモリ５０６内に読取ることが可能である。メインメモリ５０６内に包含されている命令からなるシーケンスの実行は、プロセッサ５０４をして本明細書に記載した処理ステップを実施させる。別の実施例においては、本発明を実現するためにソフトウエア命令の代わりに又はそれと結合してハードワイヤード回路を使用することが可能である。従って、本発明の実施例はハードウエア回路及びソフトウエアの何等かの特定の結合に制限されるものではない。
【００６４】
本明細書において使用される「マシンにより読取可能な媒体」という用語は、マシンをして特定の態様で動作させるデータを提供する場合に参画する任意の媒体のことを意味している。コンピュータシステム５００を使用して実現される１実施例においては、種々のマシンにより読取可能な媒体は、例えば、実行のためにプロセッサ５０４へ命令を供給する場合に関与する。このような媒体は、これらに制限されるものではないが、非揮発性媒体、揮発性媒体、及び伝送媒体を包含する多くの形態をとることが可能である。非揮発性媒体は、例えば、格納装置５１０等の光学的又は磁気的ディスクを包含している。揮発性媒体は、メインメモリ５０６等のダイナミックメモリを包含している。伝送媒体は、バス５０２を構成するワイヤを包含して、同軸ケーブル、銅ワイヤ及びオプチカルファイバを包含している。伝送媒体は、又、無線及び赤外線データ通信期間中に発生されるもののような音波又は光波の形態をとることが可能である。
【００６５】
マシンにより読取可能な媒体の一般的な形態は、例えば、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープ、又は何等かのその他の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、又は何等かのその他の光学的格納媒体、パンチカード、ペーパーテープ、孔のパターンを具備する何等かのその他の物理的媒体、ＲＡＭ、ＰＲＯＭ，ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、何等かのその他のメモリチップ又はカートリッジ、後に記載するような搬送波、又はそれからコンピュータが読取ることが可能な何らかのその他の媒体を包含している。
【００６６】
種々の形態のマシンにより読取可能な媒体は、実行のためにプロセッサ５０４に対しての１つ又はそれ以上の命令からなる１つ又はそれ以上のシーケンスを担持することに関与することが可能である。例えば、命令は初期的には遠隔コンピュータの磁気ディスク上に担持されている場合がある。該遠隔コンピュータは、該命令をダイナミックメモリ内にロードさせ且つ該命令をモデムを使用して電話線を介して送信することが可能である。コンピュータシステム５００に対してローカルなモデムが電話線を介してのデータを受信し且つ赤外線送信器を使用して該データを赤外線信号へ変換することが可能である。赤外線検知器が該赤外線信号内に担持されるデータを受取ることが可能であり且つ適宜の回路が該データをバス５０２上に配置させることが可能である。バス５０２は該データをメインメモリ５０６へ担持し、それから、プロセッサ５０４が該命令を検索し且つ実行する。メインメモリ５０６により受取られる命令は、オプションとして、プロセッサ５０４による実行の前又は後のいずれかにおいて格納装置５１０へ格納させることが可能である。
【００６７】
コンピュータシステム５００は、又、バス５０２へ結合されている通信インターフェース５１８を包含している。通信インターフェース５１８は、ローカルネットワーク５２２へ接続されているネットワークリンク５２０に対する二方向データ通信結合を提供する。例えば、通信インターフェース５１８は対応するタイプの電話線に対するデータ通信接続を提供するための統合サービスデジタルネットワーク（ＩＳＤＮ）カード又はモデムとすることが可能である。別の例として、通信インターフェース５１８は、互換性のあるＬＡＮに対するデータ通信接続を提供するためのローカルエリアネットワーク（ＬＡＮ）カードとすることが可能である。ワイヤレスリンクを実現することも可能である。いずれかのこのようなインプリメンテーションにおいて、通信インターフェース５１８は種々のタイプの情報を表わすデジタルデータストリームを担持する電気的、電磁的又は光学的信号を送信し且つ受信する。
【００６８】
ネットワークリンク５２０は、典型的に、他のデータ装置に対して１つ又はそれ以上のネットワークを介してのデータ通信を提供する。例えば、ネットワークリンク５２０は、ローカルネットワーク５２２を介してホストコンピュータ５２４に対して又はインターネットサービスプロバイダ（ＩＳＰ）５２６により運用されるデータ装置への接続を提供することが可能である。ＩＳＰ５２６は、現在一般的に「インターネット」５２８と呼称されるワールドワイドパケットデータ通信ネットワークを介してのデータ通信サービスを提供する。ローカルネットワーク５２２及びインターネット５２８は、両方共、デジタルデータストリームを担持する電気的、電磁的又は光学的信号を使用する。種々のネットワークを介しての信号およびネットワークリンク５２０上及び通信インターフェース５１８を介しての信号はコンピュータシステム５００への及びそれからのデジタルデータを担持しており、情報を輸送するための搬送波の例示的な形態である。
【００６９】
コンピュータシステム５００はネットワーク、ネットワークリンク５２０及び通信インターフェース５１８を介して、メッセージを送信し且つプログラムコードを包含するデータを受信することが可能である。インターフェースの例においては、サーバー５３０がインターネット５２８、ＩＳＰ５２６、ローカルネットワーク５２２及び通信インターフェース５１８を介して、アプリケーションプログラムに対する要求されたコードを送信する場合がある。
【００７０】
受信されたコードは、それが受信された状態で、プロセッサ５０４により実行することが可能であり、及び／又は後の実行のために格納装置５１０又はその他の非揮発性格納部内に格納することが可能である。このように、コンピュータシステム５００は搬送波の形態でアプリケーションコードを得ることが可能である。
【００７１】
この点において、注意すべきことであるが、本発明の特定の実施例を参照して説明したが、そのように制限されるものとして解釈されるべきではない。本発明の精神を逸脱することなしにこの開示に基づいて当業者が種々の修正を行うことが可能である。従って、本発明は例示するために使用した特定の実施例に制限されるべきものではなく、特許請求の範囲及びその均等物によってのみ制限されるべきものである。
【００７２】
以上、本発明の具体的実施の態様について説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【００７３】
【図１Ａ】本発明の１実施例に基づいてコンテキスト分離と共に使用される保護ドメインに関連する要素間の関係を例示したブロック図。
【図１Ｂ】本発明の別の実施例に基づいてコンテキスト分離と共に使用される保護ドメインに関連する要素間の関係を例示したブロック図。
【図２】本発明の１実施例に基づくアプリケーション束及び関連するコンテキストを例示した概略図。
【図３】本発明の１実施例に基づいて図２に図示したアプリケーション及びコンテキストに対するコンテキスト変化及びセキュリティ検査を例示した概略図。
【図４】本発明の１実施例に基づいてコンテキスト分離を使用する保護ドメインに基づいたセキュリティのプロセスを例示したフローチャート。
【図５】本発明の１実施例を実現することが可能なコンピュータシステムを例示したブロック図。
【符号の説明】
【００７４】
１０２  実行コンテキスト
１０３  ファイアウォール
１０４  アプリケーション束
１０５  アクセスコントローラ
１０６  アプリケーションモジュール
１０８  アプリケーションインスタンス
１１０  共通保護ドメイン
１１２  アプリケーション署名者クリデンシャル（証明書）
１１４  保護ドメインクリデンシャル（証明書）
１１６  パーミッション
１１９  セキュリティ制約
１２１  アプリケーション記述子
１２３  ランタイム環境（ＲＥ）
【図１Ａ】
2007183969.tif 000003
【図１Ｂ】
2007183969.tif 000004
【図２】
2007183969.tif 000005
【図３】
2007183969.tif 000006
【図４】
2007183969.tif 000007
【図５】
2007183969.tif 000008