(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムにおけるプロセッサであって、
保護された情報を含むセキュア・オブジェクトをサポートし、前記セキュア・オブジェクトの保護された情報（以下セキュア・オブジェクト情報）の機密性と保全性の両方を保護する機構であって、前記機構と関連しないソフトウェアが前記保護された情報にアクセスすることまたは検知不能に改ざんを加えることができないようにすることにより、前記セキュア・オブジェクト情報の機密性と保全性の両方を保護しながら、前記セキュア・オブジェクトの実行時に前記セキュア・オブジェクト自体には前記セキュア・オブジェクト情報を利用可能にする機構を含み、
前記機構は、
セキュア・オブジェクト情報が外部ストレージ・システムから前記コンピュータ・システムに移動する際に、前記セキュア・オブジェクト情報を復号し、保全性検査を行い、前記セキュア・オブジェクト情報が前記コンピュータ・システムから前記外部ストレージ・システムに移動する際に、前記セキュア・オブジェクト情報の保全性値を暗号化し、更新する暗号機構と、
前記コンピュータ・システムのメモリ内にセキュア・オブジェクト情報がある場合に前記保護された情報の機密性と保全性とを保護するメモリ保護機構とを含み、前記メモリ保護機構は、ストレージ保護キーをメモリ・ページの所有者を示すラベルとして使用する、
プロセッサ。
【請求項２】
前記メモリ保護機構は、メモリ・ページの所有者を示すためにラベルを使用する、請求項１に記載のプロセッサ。
【請求項３】
前記メモリ保護機構は、ＣＰＵ（中央処理装置）のアドレス変換機構に所有権ラベルを付加することに基づく、請求項１に記載のプロセッサ。
【請求項４】
仮想マシンと仮想マシン内の個別のアプリケーションとを保護するための機構を含み、さらに、
仮想マシンから構成されるセキュア・オブジェクトをサポートするための機構と、
仮想マシン内のセキュア・オブジェクトをサポートするための機構と
を含む、請求項１に記載のプロセッサ。
【請求項５】
２つ以上のセキュア・オブジェクト間での共用メモリをサポートし、前記共用メモリの機密性と保全性とが前記コンピュータ・システム上の前記機構と関連しないソフトウェアから保護される、請求項１に記載のプロセッサ。
【請求項６】
クラスと、必須アクセス制御と、制約行列とに基づいてセキュア・オブジェクト間の制御された共用をサポートする、請求項５に記載のプロセッサ。
【請求項７】
ユニバーサル・アクセス・クラスをサポートする、請求項６に記載のプロセッサ。
【請求項８】
前記共用メモリのページはアクセス制御モニタによって復号される、請求項５に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のソフトウェア・モジュール（「セキュア・オブジェクト」）内の情報がシステム上の他のソフトウェアから保護されたコンピュータ・システムのセキュリティに関する。
【背景技術】
【０００２】
現在、米国特許第８，８１９，４４６号として発行されている、２００９年６月２６日出願のリチャードＨ．ボイビーの「Support for Secure Objects in a Computer System」という名称の米国特許出願第１２／４９２，７３８号では、システム上の他のソフトウェアから暗号により保護されたコンピュータ・システムのためのコードおよびデータを含む「セキュア・オブジェクト」という概念と、そのようなセキュア・オブジェクトをサポートするためのコンピュータ・アーキテクチャとが公開されている。２０１０年９月９日出願のリチャードＨ．ボイビーの「Cache Structure for a Computer System Providing Support for SecureObjects」という名称の米国特許出願第１２／８７８，６９６号と、現在、米国特許第８，５７８，１７５号として発行されている２０１１年２月２３日出願のボイビーおよびウィリアムズの「Secure Object Having Protected Region, Integrity Tree andUnprotected Region」という名称の米国特許出願第１３／０３３，３６７号と、現在、米国特許第８，９５４，７５２号として発行されている２０１１年２月２３日出願のボイビーおよびウィリアムズの「Building and Distributing Secure Object Software」という名称の米国特許出願第１３／０３３，４５５号と、２０１１年９月６日出願のボイビーおよびペンダラキスの「Protecting Application Programs from Malicious Software or Malware」という名称の米国特許出願第１３／２２６，０７９号とでは、攻撃者がターゲットのコンピュータ・システムに侵入させることができる「マルウェア」を含む他のソフトウェアから、セキュア・オブジェクトの機密性と保全性とを保護するための追加の構造および機構が公開されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願第１２／４９２，７３８号
【特許文献２】米国特許出願第１２／８７８，６９６号
【特許文献３】米国特許出願第１３／０３３，３６７号
【特許文献４】米国特許出願第１３／０３３，４５５号
【特許文献５】米国特許出願第１３／２２６，０７９号
【非特許文献】
【０００４】
【非特許文献１】ＩＢＭリサーチ・レポートＲＣ２１６７３、Multi-Organizational Mandatory Access Controls for CommercialApplications、Paul Karger、（２０００年２月２２日）
【非特許文献２】ＢＭリサーチ・レポートＲＣ２１７１７、A New Mandatory Security Policy Combining Secrecy and Integrity、Paul Karger、Vernon AustelおよびDavid Toll（２０００年３月１５日）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、本発明はメモリ・アクセス制御モニタを使用してセキュア・オブジェクトをサポートするシステムおよび方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
前述の背景技術の上記およびその他の課題、短所、および欠点に鑑み、本開示の発明の態様の一例は、セキュア・オブジェクトのサポートを提供する新規なシステムおよび方法を提供する。
【０００７】
本発明は、ＣＰＵと外部メモリとの間でデータが移動するたびに暗号化または復号を必要としない方式で、セキュア・オブジェクトのサポートを提供し、したがって、より効率的で、より高パフォーマンスを実現可能な方式でセキュア・オブジェクトのサポートを提供する。
【０００８】
本発明の一態様は、コンピュータ・システムにおけるプロセッサであって、保護された情報を含むセキュア・オブジェクトをサポートし、それによって前記コンピュータ・システム上の他のソフトウェアが前記情報にアクセスすることまたは検知不能に改ざんを加えることができないようにすることにより、セキュア・オブジェクト情報の機密性と保全性の両方を保護しながら、セキュア・オブジェクトの実行時にセキュア・オブジェクト自体にはセキュア・オブジェクト情報を利用可能にする機構を含み、前記機構は、セキュア・オブジェクト情報が外部ストレージ・システムからコンピュータ・システムに移動する際に、前記セキュア・オブジェクト情報を復号し、保全性検査を行い、セキュア・オブジェクト情報がコンピュータ・システムから外部ストレージ・システムに移動する際に、前記セキュア・オブジェクト情報の保全性値を暗号化し、更新する暗号機構と、コンピュータ・システムのメモリ内にセキュア・オブジェクト情報がある場合に前記情報の機密性と保全性とを保護するメモリ保護機構とを含む、プロセッサを提供する。
【０００９】
本開示の発明の他の態様の例は、セキュア・オブジェクトにＩＤを割り当てるステップと、セキュア・オブジェクトによって所有されるメモリ・ページにセキュア・オブジェクトのＩＤでラベル付けするステップと、コンピュータ・システム上のメモリ・ページのためにアクセス制御モニタ（ＡＣＭ）テーブルを維持するステップと、ロード命令およびストア命令を監視し、ＡＣＭテーブル内の情報とこれらの命令を実行しているソフトウェアのＩＤとを比較することによって、メモリ・ページへのアクセスを制御するステップと、メモリ・ページへのアクセスをメモリ・ページの所有者にのみ制限するステップとによって、セキュア・オブジェクトによって所有されているメモリ・ページを保護することによりコンピュータ・システム上で実行するセキュア・オブジェクトの機密性と保全性とを保護するための方法を提供することである。
【００１０】
本開示の発明のさらに他の態様の例は、オペレーティング・システムまたはデバイス・ハンドラなどの他のソフトウェアがセキュア・オブジェクトの実行に割り込むときにセキュア・オブジェクトのＣＰＵ状態を保護することによって、ＣＰＵ上で実行するセキュア・オブジェクトの機密性と保全性とを保護する方法であって、割り込みソフトウェアの実行の前にアクセス制御モニタがセキュア・オブジェクトのＣＰＵ状態を安全に保存し、それによってセキュア・オブジェクトのＣＰＵ状態を他のソフトウェアから保護する方法を提供することである。
【００１１】
以上、本明細書に記載の本発明の実施形態の詳細な説明をよりよく理解することができるように、また、当技術への本貢献をよりよく理解することができるように、本発明の特定の実施形態について概要を概略的に説明した。当然ながら、以下に説明し、本明細書に添付の特許請求の範囲の主題を構成する、本発明のその他の実施形態も存在する。
【００１２】
本発明は、以下の説明または図面に記載されている構成の詳細および構成要素の構成への適用のみには限定されないものと理解すべきである。本発明は、記載されている実施形態の他の実施形態も可能であり、様々な方式で実施および実行することができる。また、本明細書および要約書で使用されている表現および用語は、説明を目的とするものであって、限定的であるものとみなされるべきではないことを理解されたい。
【００１３】
したがって、当業者は、本開示の基礎となる着想を、本発明のいくつかの目的を遂行するために他の構造体、方法およびシステムの設計のための基礎として容易に利用可能であることがわかるであろう。したがって、特許請求の範囲は、本発明の範囲を逸脱しない限りそのような同等の構成を含むものとみなされることが重要である。
【００１４】
本発明の例示の各態様は、図面を参照しながら以下の本発明の例示の実施形態の詳細な説明を読めばよりよく理解されるであろう。
【図面の簡単な説明】
【００１５】
【図１】先願におけるセキュア・オブジェクト内の情報の暗号による保護を示す図である。
【図２】本発明におけるセキュア・オブジェクト保護の説明で使用される図である。
【図３】アプリケーション・ソフトウェアに終端間セキュリティを提供するために、セキュア・オブジェクトをいかに使用可能であるかを示す図である。
【図４】仮想マシンおよび仮想マシン内のアプリケーションに終端間セキュリティを提供するためにセキュア・オブジェクトをいかに使用可能であるかを示す図である。
【図５】アクセス制御モニタ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｍｏｎｉｔｏｒ：ＡＣＭ）の例示の実施形態の概要を示す図である。
【図６】例示の実施形態の保護ドメインの階層を示す図である。
【図７】本発明の例示の実施形態を組み込むための例示のハードウェア／情報処理システムを示す図である。
【図８】本発明の例示の実施形態による方法を実装するプログラムの機械可読命令を記憶するための、非一時的信号担持記憶媒体を示す図である。
【発明を実施するための形態】
【００１６】
本発明について図面を参照しながら以下に説明する。図面では、同様の参照符号は同様の要素を指す。慣行により、図面の様々な特徴は必ずしも一定の縮尺で描かれていないことを強調しておく。逆に、様々な特徴の寸法は、わかりやすいように任意に拡大または縮小されている場合がある。以下に、例示を目的として実施形態の例を示すが、これらの例示の実施形態は特許請求の範囲を限定しない。
【００１７】
本開示の発明は、一般には、暗号化メモリのないセキュア・オブジェクトの実施形態に関し、より詳細には、複数の仮想マシンの並行実行をサポートするシステムにおける仮想マシンを保護するためのセキュア・オブジェクトの使用と、仮想マシン内の他のソフトウェアを含む他のソフトウェアから仮想マシン内の個別のアプリケーションを保護するためのセキュア・オブジェクトの使用とに関するが、これらには限定されない。
【００１８】
暗号化メモリのないセキュア・オブジェクトのサポート
前述の先願において、および図１に示すように、セキュア・オブジェクトのプライベート情報は、ＣＰＵ（中央処理装置）チップ１０の外部にある場合に暗号により保護され、暗号はこの情報の機密性と保全性の両方を外部ソフトウェアから保護する。プライベート情報は、ＣＰＵチップ１０内の汎用レジスタまたはオンチップ・キャッシュ内にある場合、「暗号化されていない」が、ＣＰＵは他のソフトウェアがこのプライベート情報にアクセスすることができないように保証する。ＣＰＵは、割り込みまたはコンテキスト・スイッチ時に汎用レジスタの内容を含めてセキュア・オブジェクトの状態を安全に保存および復元するとともに、ＣＰＵは、所定のオンチップ・キャッシュ・ラインを「所有」するソフトウェアを追跡し、「他のソフトウェア」がオンチップ・キャッシュ・ライン内のプライベート情報にアクセスするのを防止する。
【００１９】
本願は、類似の保護を提供する設計上の変形に関する。先願と同様に、本発明は、セキュア・オブジェクトのプライベート情報の機密性と保全性とを、オペレーティング・システム、デバイス・ドライバまたは特権的アプリケーションなどの特権的ソフトウェア、または特権的ソフトウェアを「感染」させ、ルート特権を奪うマルウェアを含む、他のソフトウェアから保護する。しかし、本発明は、パフォーマンス・オーバーヘッドがより少なく、スペース・オーバーヘッドがより少ない方法でこれを行う。
【００２０】
元のセキュア・オブジェクト設計では、セキュア・オブジェクトのプライベート情報は、ＣＰＵチップ内部にあるときにのみ暗号化されていない。
【００２１】
本願の変更された設計では、セキュア・オブジェクトのプライベート情報は、ＣＰＵチップ１１０内にあるときと、図２に示すようにシステム・メモリ１２０内にあるときに暗号化されておらず、アクセス制御モニタ（ＡＣＭ）がメモリ内プライベート情報を他のソフトウェアから保護する。ＡＣＭは完全にハードウェアで実装することができるが、当業者は、ＡＣＭの一部をマイクロコード、ファームウェアまたはソフトウェアでも実装可能であることがわかるであろう。
【００２２】
先願と同様、セキュア・オブジェクトは暗号で保護された情報と、保全性情報と、セキュア・モードに移行するために使用される「ｅｓｍ命令」とから成る。（なお、「ｅｓｍ命令」は、実際のＣＰＵ命令であってよく、またはＡＣＭに対する呼び出しまたはソフトウェア割り込みとして実装されてもよい。）
【００２３】
先願と同様、「ｅｓｍ命令」は、セキュア・オブジェクトのプライベート情報を保護する暗号鍵を含むセキュア・オブジェクトに関する何らかの情報を取得するためにオペランドを処理する。また、「ｅｓｍ命令」は、セキュア・オブジェクトにＩＤ（識別情報）を割り当てる。先願と同様、このＩＤは、ＣＰＵが情報の「所有者」を示すためにその情報にラベル付けすることができるようにするＣＰＵレジスタにロードされる。
【００２４】
上述のように、本発明では、セキュア・オブジェクトのプライベート情報はメモリ内において暗号化されていない。このプライベート情報は、ディスクなどのページング・デバイスにページアウトされるときに暗号化され、ページインされるときに復号される。
【００２５】
セキュア・オブジェクトがページ・フォールトを生じさせた場合、暗号化されたページがページインされ、ＡＣＭはセキュア・オブジェクトが実行を再開する前にそのページを復号する。プライベート情報を含むページがページアウトされる場合、ＡＣＭはそのページがページング・デバイスに書き出される前にそのページを暗号化する。（先願に記載されているように、この暗号化および復号に使用される鍵は、他のソフトウェアには入手不能である。）
【００２６】
適切なハードウェアのサポートにより、ＡＣＭは、既存のオペレーティング・システム・ソフトウェアには透過な方法でこの暗号化および復号を実行することができる。一実施形態では、物理メモリのページにラベル付けするために、ＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  ｚ（Ｒ）サーバで使用されるもののようなストレージ保護キーが使用される（ＩＢＭおよびＳｙｓｔｅｍ  ｚは、世界の多くの管轄区で登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である）。この場合、ページのストレージ保護キーは、そのページを所有するセキュア・オブジェクトのＩＤを含むことになる。上述のように、セキュア・オブジェクトのＩＤは「ｅｓｍ命令」の一部として割り当てられる。オペレーティング・システムがディスクからページを取り込むとき、そのページのストレージ保護キーにはオペレーティング・システムのＩＤが含まれる。ページがページインされた後でセキュア・オブジェクトがそのページに最初にアクセスを試みるとき、セキュア・オブジェクトのＩＤはメモリ・ページのＩＤと一致せず、「所有権不一致」割り込みが発生することになる。ＡＣＭは、この割り込みを処理し、ページの所有権をセキュア・オブジェクトに変更した後、ページを復号し、セキュア・オブジェクトの実行を再開する。その後、オペレーティング・システムがセキュア・オブジェクトによって所有されているページのページアウトを試みると、さらに所有権不一致割り込みが発生する。この場合、ＡＣＭがその割り込みを捕捉し、ページを暗号化した後、そのページの所有権をオペレーティング・システムに変更し、オペレーティング・システムの実行を再開する。（または、オペレーティング・システムがＤＭＡを開始することによってディスクへのページアウトを開始する場合、ＤＭＡ動作を中断または一時停止しなくてもＡＣＭがそのページを暗号化することができるように、オペレーティング・システムはＤＭＡを開始する前にまずページアウトをスワップしようとしていることをＡＣＭに通知してもよい）。
【００２７】
上述の例示の実施形態は、メモリ・ページにラベル付けするためにストレージ保護キーを使用するが、当業者は、本発明が他の機構を使用して、例えば、プロセッサのアドレス変換ハードウェア内のページ・テーブル・エントリ（ＰＴＥ）または変換索引バッファ（ＴＬＢ）あるいはその両方に所有権ラベルを付加することによって、実施することもできることがわかるであろう。
【００２８】
前述のように、本願に記載の本発明は、先願セキュア・オブジェクトに類似した保護を提供するが、いくつかの有利な点がある。本発明では、メモリとストレージ・デバイスとの間で情報のページが移動するときにのみ暗号および保全性処理が行われるため、パフォーマンス・オーバーヘッドがより少ない。以前の設計では、ＣＰＵと外部メモリとの間でキャッシュ・ラインが移動するたびに暗号および保全性処理が行われる。さらに、本発明では、設計が、先願に記載されているようにキャッシュ・ラインごとに１個の保全性値（特定のＣＰＵアーキテクチャに応じて１２８バイトまたは６４バイトまたはその他の比較的少ないバイト数となる場合がある）ではなく、メモリ・ページごとに１個の保全性値（例えば４Ｋバイト当たり１個の値）を必要とするだけで済むため、スペース・オーバーヘッドが大幅に削減される。
【００２９】
仮想マシンおよび仮想マシン内のアプリケーションを保護するためのセキュア・オブジェクトの使用
先願に記載され、図３に示されているように、個別のアプリケーション２２０、２２２、２２４をシステム上の他のソフトウェアから保護するためにセキュア・オブジェクト２１０を使用することができる。図４に示すように、複数の仮想マシンの並行実行をサポートするシステム３３０において仮想マシン３１０、３１２および３１４を保護するために、セキュア・オブジェクト３００も使用することができる。これは、例えば顧客の仮想マシンを、クラウド・サービス・プロバイダのソフトウェアと他の顧客の仮想マシンとから保護するために、クラウド・コンピューティング環境において有用であると考えられる。セキュア・オブジェクト３００は、仮想マシン内の個別のアプリケーションを仮想マシン内の他のソフトウェアから保護するためにも使用することができる。
【００３０】
一実施形態では、セキュア・オブジェクト３００は、Ｌｉｎｕｘ／ＫＶＭ環境３２０（Ｌｉｎｕｘは米国またはその他の国々あるいはその両方におけるリーナス・トーバルズの登録商標である）において仮想マシンを保護するために使用することができる。ＫＶＭ（カーネル仮想マシン）は、Ｌｉｎｕｘシステム３２０に仮想マシン・モニタ（またはハイパーバイザ）を加えるＬｉｎｕｘサブシステムである。Ｌｉｎｕｘ／ＫＶＭシステムでは、仮想マシンは通常のＬｉｎｕｘプロセスとして実装され、したがって、これらの仮想マシンは、本願または先願において通常のアプリケーションが保護されるように保護することができる。仮想マシンは、先願においてアプリケーションがセキュア・オブジェクト化されるのと同様にして、セキュア仮想マシン（ＳＶＭ）化され得る。一実施形態では、仮想マシンのコード（例えばＯＳイメージ）の先頭にｅｓｍ命令が追加され、仮想マシン外部の通信のために（先願に記載のラッパーと同様の）ラッパーが追加され、先願に記載されているように仮想マシンが保全性保護される（および任意により暗号化される）。これにより、ＳＶＭは、本願または先願に記載のセキュア・オブジェクトのサポートとともにＣＰＵ上のＬｉｎｕｘ／ＫＶＭで動作することができる。セキュア・オブジェクト保護は、ＳＶＭ内の情報を保護するが、（例えばトランスポート層セキュリティ（ＴＬＳ）またはＩＰｓｅｃを使用して）リモート・システムに送信されるパケットおよび（ｄｍ−ｃｒｙｐｔなどの機構を使用して）ファイル・システムに書き込まれるデータなど、ＳＶＭ外部に出力される情報を保護するのはＳＶＭの役割である。なお、先願と同様、セキュア・オブジェクト保護は、この場合セキュア仮想マシンに対応する、セキュア・オブジェクトの状態を安全に保存および復元する役割を担う。
【００３１】
先願のうちの１つの先願（米国特許出願第１３／２２６，０７９号）に記載されているように、セキュア・オブジェクト保護は、情報の機密性と保全性の両方、または情報の保全性のみを保護するように構成することができる。当該出願に記載されているように、セキュア・オブジェクトの異なる部分ごとに異なる方式で保護することができる。セキュア・オブジェクト保護は、セキュア仮想マシン内ではカーネル・コードの保全性を保護するが機密性は保護せず、ＳＶＭ内では他の情報の機密性と保全性の両方を保護するように構成することもできる。これによって、Ｌｉｎｕｘ／ＫＶＭなどのハイパーバイザは、例えば「カーネル・セームページ・マージング（Ｋｅｒｎｅｌ  Ｓａｍｅｐａｇｅ  Ｍｅｒｇｉｎｇ）を実行することが可能になり、それによって、同じカーネル・コード・ページを異なる仮想マシンのために使用することができるとともに、それらの仮想マシン内の他の情報の機密性と保全性の両方の保護が依然として提供される。
【００３２】
本明細書に記載の実施形態は、Ｌｉｎｕｘ／ＫＶＭシステム用であるが、当業者は、仮想マシンをサポートする他の環境でも本発明を実施可能であることがわかるであろう。
【００３３】
セキュア・オブジェクト保護は、セキュアまたは通常型／非セキュア仮想マシンにおける個別のアプリケーションを保護するためにも使用可能である。いずれの場合も、仮想マシンはファイル・システムを有し、ファイル・システムは、セキュア・オブジェクトとして作成されたアプリケーションを含み得る。一実施形態では、現在、米国特許第８，９５４，７５２号となっている米国特許出願第１３／０３３，４５５号に記載されているように、セキュア・アプリケーションは、暗号により保護された領域と、ｅｓｍ命令と、システム・コール・ラッパーとを有し、セキュア・オブジェクトとして構築される。この実施形態では、セキュア・アプリケーションは、（セキュアまたは非セキュア）仮想マシン内の他のアプリと同様に開始した後、セキュア・モードに移行するためのｅｓｍ命令を実行する。セキュア・アプリケーションの実行は、各先願に記載されているように進行するが、この場合、セキュア・オブジェクトのサポートは、コンテキスト・スイッチが発生したときにセキュア・アプリケーションの状態を安全に保存および復元することができるように、仮想マシン内のコンテキスト・スイッチも認識している必要がある。
【００３４】
同様にして、「ベア・メタル」ハードウェア上で実行する、セキュア仮想マシンまたは通常の非セキュア仮想マシンまたはオペレーティング・システムにおいて動作する「コンテナ」（Ｌｉｎｕｘコンテナなど）を保護するために、セキュア・オブジェクト保護を使用することができる。
【００３５】
Ｌｉｎｕｘコンテナには、ＬＸＣおよびＤｏｃｋｅｒ（Ｄｏｃｋｅｒは世界の多くの管轄区において登録されたＤｏｃｋｅｒ社の商標である）を含む、いくつかの例がある。ハイパーバイザは、ハードウェア抽象化層において仮想化を提供するが、コンテナはオペレーティング・システム層における仮想化を提供する。ハイパーバイザ・ゲストがそれ自体の専用ハードウェア上で実行しているかのように実行するのと同様に、コンテナは、それ自体の専用のオペレーティング・システム上で実行しているかのように実行する。コンテナは、ネーム空間と、ｃｇｒｏｕｐと、各コンテナを専用オペレーティング・システム・カーネルのように見せかける機能とを含む、カーネル機能を使用する。コンテナは、ある意味で、単一のネイティブ・アプリケーションと多くのアプリケーションを実行させる仮想マシンとの中間にある。セキュア・オブジェクトは、セキュア・オブジェクトがアプリケーションおよび仮想マシンを保護するために使用されるのと同様にして、コンテナを保護するために使用することができる。イメージ・キーを復号するために使用されるｅｓｍを使用して、仮想マシン・イメージと同様にコンテナ・イメージ・ファイルを保護することができる。アプリケーション・レベルの保護の当初の説明のように、コンテナ内の個別のプロセスを保護することができる。セキュア・アプリケーションおよびセキュアＶＭの場合と同様に、セキュア・コンテナ内のソフトウェアは、コンテナ外部に出力される情報をセキュリティ保護する役割を担う。さらに、セキュア・アプリケーションの場合と同様に、オペレーティング・システムの呼び出しのためにシステム・コール・ラッパーを使用してもよい。システム呼び出し時にセキュア・アプリケーションまたはセキュア・コンテナの外部に出力される情報または外部から入力される情報を保護するために要すると思われるオーバーヘッドをできるだけなくすために、必要であれば、セキュア・アプリケーションまたはセキュア・コンテナ内部にある「ライブラリＯＳ」にいくつかのシステム・コール（例えばファイル・システム・プリミティブ）を組み込むことができる。
【００３６】
本開示の発明は、アプリケーション内のセキュア領域もサポートする。上記の先願のうちの１つ（現在、米国特許第８，８１９，４４６号である、２００９年６月２６日出願の米国特許出願第１２／４９２，７３８号）に記載されているように、アプリケーションは、アプリケーションの特に機密度の高い部分を、そのアプリケーション内の他のソフトウェアを含む「他のソフトウェア」から保護するために、ｅｓｍ命令およびｌｓｍ命令を使用することができる。
【００３７】
アクセス制御モニタ（ＡＣＭ）
上述のように、本発明はいくつかの点で先願を拡張する。
【００３８】
本発明は、メモリ・ページを保護するためのラベルの使用をサポートする。
【００３９】
本発明は、共用される情報のためにラベルを使用する、セキュア・オブジェクト間のデータの共用もサポートする。これらのラベルは、上記の先願のようにキャッシュ・ラインにラベル付けされる実装形態では、キャッシュ・ラインに付与するか、または本願でより詳細に説明するように、メモリ・ページに付与することができる。ラベルは、「色」とも呼び、特定のセキュリティ・ドメイン４５０ｎを示し（ｎは整数である）、所定の色でラベル付けされた情報は、「カラー・パレット」にその色を含むソフトウェアがアクセスすることができる。メモリ・ページが複数のセキュア・オブジェクト間で共用される場合、そのメモリ・ページの色がこれらのセキュア・オブジェクトのそれぞれのパレットに表示される。例えば、４５０１の色は赤であり、４５０２は緑であり、４５０３は青である。
【００４０】
本開示の発明は、セキュア仮想マシン内のセキュア・アプリケーションまたはセキュア・コンテナのように他のセキュア・オブジェクト内にあるセキュア・オブジェクトもサポートする。
【００４１】
一実施形態は、メモリ４１０へのアクセスを監視し、制御するアクセス制御モニタ（ＡＣＭ）４７０を含む。ＡＣＭ４７０の概要を図５に示す。左下に、プロセッサ４２０が、ロード・ストア・ユニット４８０を介したレジスタ４３４およびメモリ４１０との接続とともに示されている。プロセッサ４２０は、「従来型」プロセッサであってよい。本開示の発明では、プロセッサ４２０は、ＡＣＭハードウェア（ＡＣＭ−ＨＷ）４３２と呼ぶ追加のロジックで増強されている。ＡＣＭハードウェア４３２は、ロード命令およびストア命令を捕捉し、特殊なＡＣＭトラップ命令を処理する。ＡＣＭハードウェア４３２は、ロード命令およびストア命令に対してある種の検査を行い、さらに、ロード命令およびストア命令をロード・ストア・ユニット４８０に渡す前に何らかの追加の処理を行ってもよい。
【００４２】
図５において、ＡＣＭシステム４７０上で実行するソフトウェアが図の上部にドメイン４５０ｎの集合として図示されている。各ドメイン４５０ｎは、同じセキュリティ特権を有するソフトウェア・モジュールの集合を含む。第１のドメイン４５００はＯＳ（オペレーティング・システム）コードと、ＯＳ上で実行されるすべての通常の非セキュア処理とを含む。（別の例では、第１のドメインは、ハイパーバイザ５１２（図６）と、そのハイパーバイザ上で実行する通常の非セキュア仮想マシンとを含み得る）。第２のドメインは、ソフトウェアにおける何らかのＡＣＭ機能を実行することができるセキュア・ドメインＡＣＭ−ＳＷ４５０１である。前述のように、ＡＣＭはハードウェア、またはハードウェアとソフトウェアとの何らかの組合せで実装可能である。図５に示す境界は、ハードウェア４３２とソフトウェア４５０１との間で変更可能である。メモリ・ページの暗号化または復号、または保全性値の生成または検証などの「複雑な機能」は、ＡＣＭ−ＳＷ４５０１で実装してもよい。他のドメイン４５０２および４５０３は、セキュア・アプリケーションまたはセキュア仮想マシンまたはセキュア・コンテナとすることができるセキュア・オブジェクトである。図５のＡＣＭ、４３２と４５０１の組合せの役割は、これらのセキュア・オブジェクトのそれぞれにおける情報の機密性および保全性を、ＯＳ／ハイパーバイザを含むシステム上の他のすべてのソフトウェアから保護することである。
【００４３】
図５に示すように、ＡＣＭ−ＨＷ４３２は、要求に応答し、応答を返す状態マシンとして構成される。ＡＣＭ−ＨＷの上部に示す「クラウド」４９４は、各種信号をＡＣＭ要求に変換し、プロセッサ４２０に対して適切なＡＣＭ応答を返す「グルー・ロジック」４９４である。
【００４４】
ＡＣＭの一実施形態において備えられる機能と、この実施形態を実装するために使用されるデータ構造について以下に説明する。
【００４５】
本実施形態では、ＡＣＭ−ＨＷ４３２は、ＡＣＭ−ＨＷ４３２がＣＰＵハードウェア４２０によって使用されるアドレス変換機構の詳細を扱う必要なしにセキュリティ制約を実施するために使用する、ＯＳによってマップされるページのカタログを維持する。別の変形態様では、ＡＣＭ−ＨＷ４３２は、ＣＰＵ（中央処理装置）またはプロセッサ４２０によって使用されるテーブルを管理し、ＯＳがこれらのテーブルを更新するためにＡＣＭ−ＨＷ４３２に対して呼び出しを行う。セキュリティの観点から見ると、この２つの方式は等価であり、一方の場合はＯＳによって加えられた変更をＡＣＭ−ＨＷ４３２が追跡する必要があり、他方の場合はハードウェア・テーブルを管理する必要がある点が異なる。
【００４６】
ＡＣＭ−ＨＷ４３２は、ロジック回路であってよく、または、非一時的記録媒体に格納され、プロセッサにより実行可能なソフトウェアであってもよい。
【００４７】
本実施形態において備えられる機能の１つは、新しいＡＣＭ、例えば図６のＡＣＭ１を作成する。このプリミティブを使用して、図６に示すような保護ドメインの階層を作成することができる。図６において、５３２における新たに作成された各ＡＣＭ、ＡＣＭ１ないしＡＣＭ４は、それぞれの１組の色を有し、それぞれの１組のドメインを管理する。任意の時点において、プロセッサ５２０は、５３２内の関連付けられたＡＣＭによって制御される１つのドメインのために動作している。割り込みベクトルにより、割り込みの対象となる５３２内のＡＣＭが追跡される。最初に、すべての割り込みが当初のＡＣＭ、すなわち５３２内のＡＣＭ０によって所有されるが、１つのＡＣＭ、すなわち５３２内のＡＣＭ０ないしＡＣＭ４が割り込みを他のドメインに委ねることができる。一実施形態では、新しい色を有する新規セキュア・ドメインを作成するためにＯＳ５１０がＮｅｗＤｏｍａｉｎを呼び出す。
【００４８】
例えば、アプリケーションＡｐｐ１は緑であり、Ａｐｐ２は青である。
【００４９】
新規セキュア・ドメインの作成後、ＯＳ、例えば５１０が、作成されたばかりのドメインを新規ＡＣＭのターゲット・ドメインとして使用して、ＮｅｗＡＣＭを呼び出すことができる。作成される新規ＡＣＭ、例えば５３２内のＡＣＭは、最終的に分離の責任を負うＡＣＭ−ＨＷ５３０に接続された仮想ＡＣＭであり、仮想ＡＣＭである５３２内のＡＣＭ１ないしＡＣＭ４はそれぞれの要求をＡＣＭ−ＨＷ５３０に再帰的に渡す。
【００５０】
図５のＡＣＭ４３２および４５０１の一実施形態は、以下に挙げるデータ構造を使用して以下に述べる機能を提供する。なお、本実施形態のテーブルのサイズおよび（例えば色の）フィールド幅に使用される値およびその他の詳細は、例示を目的とするに過ぎない。本発明は、この厳密な実施形態には限定されず、本発明の範囲から逸脱することなく当業者によって様々な変形および変更を加えることができるものと理解すべきである。
【００５１】
データ構造
１．色、カラー・フィールドおよびフリー・カラー・ビット・ベクトル（Ｆｒｅｅ  Ｃｏｌｏｒ  Ｂｉｔ  Ｖｅｃｔｏｒ（ＦＣＢＶ））。セキュリティ・ドメインに対応する色。フリー・カラー・ビット・ベクトルは、最大１０２４色をサポートする１Ｋビットのベクトルである。新しい色を割り当てるには、最初のゼロ・ビットを探し、その色が割り当てられたことを示すために１に設定する。索引は、他のデータ構造のカラー・フィールドとして使用される１０ビット値に変換される。各セキュア・オブジェクト３００が少なくとも１つの色（そのセキュア・オブジェクトＩＤと等しい「プライマリ」・カラー）を有することになる。セキュア・オブジェクトは、他のソフトウェアと共用されるページのための追加の色も有することができる。最後にどのセキュア・オブジェクトの一部でもないすべてのソフトウェアによって、１つの色が使用される。メモリ・ページも色を有する。プライベート（非共用）メモリ・ページの色は、そのページの現在の所有者の色である。
２．パレット：パレットは、セキュア・オブジェクト３００がアクセス可能な色のセットである。１Ｋビット・ベクトルとして実装することができる。各セキュア・オブジェクト３００は、そのプライベート・ページの固有色を有する。セキュア・オブジェクト３００は、他のセキュア・オブジェクトと共用する用意があるページと、他のセキュア・オブジェクト３００がそのセキュア・オブジェクト３００と共用する容易があるページのための追加の色を有することができる。実行プログラムがページへのアクセスを試みたが、そのプログラムのパレット内にそのページの色がない場合、色不一致（所有権不一致の一般化されたもの）割り込みが生成される。上述のように、ＡＣＭ４３２および４５０１は、この割り込みを処理し、ページの所有権（色）を変更し、前述のようにページを暗号化または復号する。
３．状態テーブル：最大１Ｋのセキュア・オブジェクトの状態を安全に記憶する１Ｋのエントリ・テーブル。セキュア・オブジェクト３００に割り込みが行われると、ＡＣＭ４３２および４５０１は、適切な割り込みハンドラに制御を渡す前にそのセキュア・オブジェクト３００の状態をこのテーブルのエントリに安全に保存する。ＩＤ（またはプライマリ・カラー）ｉを有するセキュア・オブジェクトのためにテーブルのｉ番目のエントリが使用される。セキュア・オブジェクトは、ＯＳがＡＣＭに対して「再開」呼び出しを行い、再開するセキュア・オブジェクトの索引を指定すると安全に再開される。このテーブルのエントリは、以下のフィールドを含む。
ａ．  ＳＴ［ｉ］．ｐｃ。  セキュア・オブジェクト３００が実行を再開するプログラム・カウンタ。
ｂ．  ＳＴ［ｉ］．ｓｔａｔｅ。  セキュア・オブジェクト３００のレジスタ状態。
ｃ．  ＳＴ［ｉ］．ｐａｌｅｔｔｅ。  セキュア・オブジェクト３００のパレット。
ｄ．  ＳＴ［ｉ］．ｃｏｌｏｒ。  セキュア・オブジェクトのプライマリ・カラー（すなわちＩＤ）。
４．現在の状態（ＣＳ）のレジスタおよび現在のパレット（ＣＰ）のレジスタ。ＣＳは、現在実行中のセキュア・オブジェクトのＩＤ／プライマリ・カラーを含む１０ビット・レジスタである。状態テーブルに対する索引としても使用される。ＣＰは、現在実行中のセキュア・オブジェクトのパレットを含む１Ｋビット・ベクトル・レジスタである。このパレットは、メモリ・メモリ・アクセス時にメモリ・ページの色と比較される。ページの色がパレットにある場合、アクセスが許可される。ない場合は、色不一致割り込みが生成される。
５．ページ・テーブル・エントリ（ＰＴＥ）およびＴＬＢエントリ（ＴＬＢＥ）に付加されるカラー・フィールド。各ページ・テーブル・エントリ（ＰＴＥ）および各ＴＬＢエントリ（ＴＬＢＥ）は、アクセス中のメモリ・ページの色が現在実行中のソフトウェアのパレットにあるか否かを判断するために使用される１０ビット・カラー・フィールドによって拡張される。
６．カラー・テーブル（ＣＴ）：各色に１つずつの１Ｋエントリを有するテーブル。エントリには、色の以下の情報が含まれる。
ａ．  ＣＴ［ｉ］．ｋｅｙ。  指定された場合、色不一致割り込み時にページを暗号化または復号するために使用される、任意選択の暗号鍵。
ｂ．  ＣＴ［ｉ］．ｈａｎｄｌｅ。  指定された場合、共用ページに色が使用されることを示す、任意選択のハンドル。
ｃ．  ＣＴ［ｉ］．ｃｌａｓｓ。  共用ページの所有者のセキュリティ・クラスを示す任意選択のセキュリティ・クラス。
ｄ．  ＣＴ［ｉ］．ｒｗｘＢｉｔｓ。  共用ページの所有者が他者に利用可能にしたアクセス権を示す、任意選択のフィールド。
【００５２】
基本機能
新規セキュア・オブジェクトの作成。アプリケーションまたはコンテナまたは仮想マシンが「セキュア・モード移行（Ｅｎｔｅｒ  Ｓｅｃｕｒｅ  Ｍｏｄｅ：ｅｓｍ）」呼び出しを呼び出すと、ＡＣＭ４３２および４５０１は、
ａ．新たに作成されたセキュア・オブジェクト３００のために状態テーブルに新たなエントリを作成し、
ｂ．その新規セキュア・オブジェクト３００にＩＤ／プライマリ・カラーを割り当て、
ｃ．他のソフトウェアには利用不能なシステム鍵を使用してｅｓｍ「命令」のオペランドを復号することによって、セキュア・オブジェクト３００を復号するために使用される対称鍵を含む新規セキュア・オブジェクトに関する特定の情報を入手する。（オペランドは、米国特許第８，５７８，１７５号で説明されているように復号してもよい。）復号されたオペランドからセキュア実行の開始アドレスも入手する。
ｄ．上述のＦＣＢＶ、状態テーブル、カラー・テーブル、ＣＳおよびＣＰに適切な情報を記憶し、
ｅ．新たに作成されたセキュア・オブジェクト３００の実行を、上記のセキュア実行の開始アドレスでセキュア・モードにおいて再開する。
【００５３】
割り込みの前処理。セキュア・オブジェクト３００が実行中に割り込みが発生した場合、ＡＣＭ４３２および４５０１は、適切な割り込みハンドラに制御を渡す前に、上述の状態テーブルにセキュア・オブジェクト３００の状態を安全に保存する。
【００５４】
安全な再開。ＯＳ５１０またはハイパーバイザ５１２が、前に割り込みされたセキュア・オブジェクト３００を再開しようとするとき、ＯＳ５１０またはハイパーバイザ５１２は、５３２内のその制御ＡＣＭ、例えばＡＣＭ１に対して「再開」呼び出しを行い、そのＡＣＭが、前に割り込みされたセキュア・オブジェクトの状態を安全に復元し、その実行を再開する。
【００５５】
色不一致割り込みの処理。色不一致は、ＡＣＭによって処理される。非セキュア・ソフトウェアの実行中に割り込みが発生した場合、ＡＣＭ５３０はそのページを暗号化する。セキュア・オブジェクト３００の実行中に割り込みが発生した場合、ＡＣＭ５３０はそのページを復号する。前者の場合を「ページアウトのための暗号化」割り込みと呼ぶことがある。この「ページアウトのための暗号化」ＡＣＭ５３０コードは、ＯＳ５１０またはハイパーバイザ５１２から直接呼び出すこともでき、それによりＡＣＭ５３０は上述のようにＤＭＡ動作の最中に割り込む必要がなくなる。後者の場合を「安全な実行のための復号」割り込みと呼ぶことがある。
【００５６】
メモリ・セグメントの安全な共用のための追加機能
Ｌｉｎｕｘシステムおよびその他のシステムは、異なるアプリケーション間での共用メモリをサポートする。ＡＣＭは、オペレーティング・システムおよびハイパーバイザ・ソフトウェアを含むシステム上の他のソフトウェアから保護された共用メモリ・セグメントをサポートすることによって、これを補完する。
【００５７】
セキュア・オブジェクトは、共用したいメモリ・セグメントのために新しい色と新しい暗号鍵とを作成し、この新しい色を１つまたは複数のパーティと共用することができる。共用は、協調するパーティ間で受け渡し可能なハンドルの使用によって行われる。メモリ・セグメントの所有者は、ＡＣＭに対してメモリ・セグメントのハンドルを作成するよう要求することができ、ＡＣＭはそのメモリ・セグメントに新しい色と新しい暗号鍵とを割り当てる。次に、ＡＣＭはその新しい色を所有者のパレットに追加し、所有者が他のパーティと共用することができる、メモリ・セグメントのハンドルを所有者に返す。次に、別のパーティがそのハンドルをＡＣＭに渡すことができ、ＡＣＭは関連付けられた色をそのパレットに追加する。この色が関連付けられたメモリ・ページには、その後、所有者と、所有者がハンドルを共用させたパーティとがアクセス可能になる。また、これらのメモリ・ページには、他のソフトウェアはアクセスすることができない。セキュリティを確保するために、ハンドルは、例えば１２８ビットのランダムな列や２５６ビットのランダムな列のような推測困難なものにする。（別の設計では、共用メモリ・セグメントの所有者がそのセグメントのハンドルを作成してもよい。）
【００５８】
メモリ・セグメントの所有者は、別のパーティがそのセグメントに対して行うことができるアクセスの種類を指定することもできる。所有者は、（例えば、他のパーティに、共用セグメントから命令をそれぞれ、読み取り、書き込み、または実行する許可を与えるためのｒｗｘビットの組によって）他のセキュア・オブジェクトが利用できるようにしたいアクセス権を指定することによって、ハンドルを要求する場合に、この指定を行う。
【００５９】
必須アクセス制御による共用
ＡＣＭは、１組のセキュリティ・クラス間での必須アクセス制御もサポートする。セキュア・オブジェクトは、始動時にそのｅｓｍオペランド内の情報に基づいてセキュリティ・クラスに割り当てられる。ＡＣＭは、クラス間での必須アクセス制御を実施するために正方制限行列（Ｃｏｎｓｔｒａｉｎｔ  Ｍａｔｒｉｘ：ＣＭ）を使用する。ＣＭは各セキュリティ・クラスのための１行と、各クラスのための１列を含む。エントリＣＭ［ｉ，ｊ］は、例えばｒｗｘビットによって、クラスｉのセキュア・オブジェクトがクラスｉが所有するメモリ・セグメントに対する読み出し許可、書き込み許可または実行許可をクラスｊの別のセキュア・オブジェクトに与えることができるか否かを示す。この制約行列は、ＡＣＭに「ハード・コーディング」するか、または、デジタル署名などの標準セキュリティ機構を介して、またはセキュア・トランスポート・プロトコルを介して、または当業者に知られているその他のセキュリティ機構を介して供給することができる。（なお、セキュア・オブジェクトのクラスは、ＩＢＭリサーチ・レポートＲＣ２１６７３、Multi-Organizational Mandatory Access Controls for CommercialApplications、Paul Karger、（２０００年２月２２日）およびＩＢＭリサーチ・レポートＲＣ２１７１７、A New Mandatory Security Policy Combining Secrecy and Integrity、Paul Karger、Vernon AustelおよびDavid Toll（２０００年３月１５日）で定義されている「ユニバーサル・アクセス・クラス」であってもよい。）
【００６０】
一実施形態におけるＡＣＭプリミティブ
上述の機能は、以下のＡＣＭプリミティブによって提供することができる。
１．ＮｅｗＡｃ  ｒ，ｃ
制約：ＯＳドメイン（最初を除く）が発行することができる。ｒは現在のドメインがアクセス可能な、有効なマップされたページである。ｃは新しいａｃｍに変更されるセキュア・ドメインの有効な色である。
動作：この新規ａｃｍのａｃｍＳｗコードとしてｒが読み取られ、測定され、復号され、導入される。このａｃｍのためにデフォルトのドメインであるＯｓＤｏｍａｉｎ（０）およびａｃｍＳｗ（１）が設定され、呼び出し側ＯＳに制御が返されて、成功または失敗が示される。
２．ＮｅｗＤｏｍａｉｎ  ｒ
制約：ｒは現在のドメインがアクセス可能な有効なマップされたページである。
動作：新しいドメインが作成される。ｒは新しいドメインのソフトウェアとして読み取られ、測定され、復号され、導入される。これは時間を要するため、ただちに「処理中」応答が与えられる。完了時、ＯＳ割り込みが挙げられ、成功または失敗が示される。成功の場合、その新規ドメインの新しい色を返す。
３．Ｒｅｓｕｍｅ  ｃ
制約：ＯＳのみがこのプリミティブを呼び出すことができる。ｃ（ｃ＞１）は有効な実行可能セキュア・ドメインの色である。
動作：セキュア・ドメインが現在実行中である場合、その状態が保存される。ｐｃが、示されたドメインに設定され、そこで実行が継続する。再開されたドメインが別のａｃｍである場合、その現在のドメインが（再帰的に）再開される。
４．  Ｍａｐ  ｒ，ｃ
制約：ＯＳのみがこのプリミティブを呼び出すことができる。ｒは現在マップされていない実アドレスである。ｃはこのＡＣＭの下での有効な色でなければならない。
動作：ページｒが消去され、色ｃにマップされる。これは時間を要するため、ただちに「処理中」応答が与えられる。完了時、ＯＳ割り込みが挙げられ、成功または失敗が示される。
５．Ｕｎｍａｐ  ｒ，ｃ
制約：ＯＳのみがこのプリミティブを呼び出すことができる。ｒは現在、色ｃにマップされていなければならない実アドレスである。
動作：ページｒがマップ解除され、消去され、後でいずれかのドメインに再割り当てすることができる。ｒがたまたま共有されている場合は、すべての共有者がそのページへのアクセス権を失う。これには時間を要するため、ただちに「処理中」応答が与えられる。完了時、ＯＳ割り込みが挙げられ、成功または失敗が示される。
６．Ｍｏｖｅ  ｒ，ｃ，ｃ’，ｄｉｒ
制約：ｒはｃにマップされていなければならない。ｃ’は有効色でなければならず、ｄｉｒは０または１である。
動作：ｄｉｒが０の場合、ｃは（鍵ｋを有する）セキュア・ドメインでなければならない。ｒはｋを使用して暗号化され、ｃ’に再マップされる。ｄｉｒが１の場合、ｃ’は（鍵ｋを有する）セキュア・ドメインでなければならない。ｒはｋを使用して復号され、ｃ’に渡される。これには時間を要するため、ただちに「処理中」応答が与えられる。完了時、ＯＳ割り込みが挙げられ、成功または失敗が示される。
７．ＳｗＲｅｓｐ  ｏｐ，ｏｔｈｅｒ  ｐａｒａｍｓ
制約：ａｃｍＳＷのみがこのプリミティブを呼び出すことができる。これは動作ｏｐが完了したことを示す。成功または失敗が通知される。
動作：残りのパラメータは、ａｃｍＨｗテーブルに記憶するためのａｃｍ内部パラメータである。
８．ＤｉｒｅｃｔＥｘｔＩｎｔ  ｉｎｔＮｕｍ，ｃ
制約：ａｃｍＳｗのみがこのプリミティブを呼び出すことができる。割り込みベクトルは、割り込み番号からａｃｍ番号へのマップである。現在、ｉｎｔＮｕｍの割り込みが実行ａｃｍにマップされていなければならない。実行ａｃｍでは、ｃは別のａｃｍであるドメインを表す有効な色でなければならない。
動作：ｉｎｔＮｕｍのマッピングがｃに対応するａｃｍに変更される。
９．ＥｘｔＩｎｔ  ｉｎｔＮｕｍ，ｏｔｈｅｒ  ｐａｒａｍｓ
制約：いずれかのドメインの実行中に外部デバイスによって発行される。
動作：セキュア・ドメインが現在実行中の場合、その状態が保存される。事前設定されたｅｘｔＩｎｔＡｄｄｒｅｓｓにおいて制御がＯＳに渡される。対応するドメインにおいて、（デバイスから）他のパラメータが割り込みサービス・ルーチンに渡される。
１０．Ａｃｃｅｓｓ  ｒ，ｒｗｘ
制約：いずれかのドメインによって発行され、ページｒへの（ｒｗｘによって示される）アクセスを示す。ｒは何らかの色ｃにマップされた有効なページでなければならない。現在のパレットに色ｃの対応するｒｗｘ許可を有するエントリがなければならない。
動作：上記の検査に適切に合格した場合に操作が許可され、それ以外はＯＳ割り込みが挙げられ、アクセス障害が示される。
１１．ＳｙｓＣａｌｌ  ｐａｒａｍｓ
制約：いずれかのドメインによって発行され、該当するパラメータとともにサービス呼び出しを示す。
動作：非ＯＳ処理によって発行された場合、ＯＳ割り込みが挙げられ、パラメータが渡される。ＯＳによって発行された場合、より下位のａｃｍ（ある場合）に反映される。
１２．ＯｗｎｅｒＨａｎｄｌｅ  ｒ，ｒｗｘ
制約：１つまたは複数のメモリ・ページを共用したいセキュア・ドメインによって発行される。呼び出し側は、共用者に与えたいアクセスの種類（ｒｗｘ）を指定する。
動作：ａｃｍがメモリ・ページの新しい色と新しい鍵を作成し、呼び出し側のパレットにその新しい色を追加し、呼び出し側が別のセキュア・ドメインと共用することができるメモリのハンドルを返す。
１３．ＳｈａｒｅｒＨａｎｄｌｅ  ｈａｎｄｌｅ
制約：セキュア・ドメインによって、そのセキュア・ドメインのパレットに共用メモリ・セグメントの色を追加するために発行される。
動作：制約行列内の制約に違反していない場合、呼び出し側のパレットに色を追加する。
【００６１】
本発明についていくつかの例示の実施形態を用いて説明したが、当業者は、本発明が添付の特許請求の範囲の範囲内で変更を加えて実施することができることがわかるであろう。
【００６２】
また、本出願人の意図は、後に審査中に修正が加えられた場合であっても、すべての請求要素の均等物を包含することであることを注記しておきたい。
【００６３】
別のハードウェア実装例
図７に、本発明による情報処理／コンピュータ・システム６００であって、ソフトウェア・プログラムの形態で本発明の技術を実装可能な少なくとも１つのプロセッサまたは中央処理装置（ＣＰＵ）６１０を有することが好ましい、情報処理／コンピュータ・システム６００の別のハードウェア構成を示す。
【００６４】
ＣＰＵ６１０は、システム・バス６１２を介して、ランダム・アクセス・メモリ（ＲＡＭ）６１４と、読取り専用メモリ（ＲＯＭ）６１６と、（ディスク・ユニット６２１およびテープ・ドライブなどの周辺装置をバス６１２に接続するための）入出力（Ｉ／Ｏ）アダプタ６１８と、（キーボード６２４、マウス６２６、スピーカ６２８、マイクロフォン６３２またはその他のユーザ・インターフェース・デバイスあるいはこれらの組合せをバス６１２に接続するための）ユーザ・インターフェース・アダプタ６２２と、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク（ＰＡＮ）などに接続するための通信アダプタ６３４と、バス６１２をディスプレイ・デバイス６３８またはプリンタ６３９（例えばデジタル・プリンタなど）あるいはその両方に接続するためのディスプレイ・アダプタ６３６とに相互に接続される。
【００６５】
上述のハードウェア／ソフトウェア環境に加えて、本発明の異なる態様は、上述の方法を実行するコンピュータ実装方法を含む。一例として、この方法は上述の特定の環境において実装され得る。
【００６６】
そのような方法は、例えば、一連の機械可読命令を実行するためにデジタル・データ処理装置によって具現化されるようにコンピュータを動作させることによって実装され得る。これらの命令は、様々な種類の信号担持媒体に格納され得る。
【００６７】
したがって、本発明の本態様は、本発明の方法を実行するために、ＣＰＵ６１０および上述のハードウェアが組み込まれたデジタル・データ・プロセッサによって実行可能な、機械可読命令のプログラムを有形に具現化する信号担持記憶媒体を含む、プログラム製品を対象とする。
【００６８】
この信号担持記憶媒体は、例えば、例えば高速アクセス・ストレージに代表される、ＣＰＵ６１０内に含まれるＲＡＭを含み得る。
【００６９】
あるいは、命令は、ＣＰＵ６１０が直接または間接的にアクセス可能な、磁気データ記憶ディスケット７１０または光記憶ディスケット７２０（図８）などの別の信号担持記憶媒体７００に格納されてもよい。
【００７０】
ディスケット７１０、光ディスク７２０、コンピュータ／ＣＰＵ６１０または他の場所のいずれに格納されるかを問わず、命令は、ＤＡＳＤストレージ（例えば従来の「ハード・ドライブ」またはＲＡＩＤアレイ）、磁気テープ、電子読取り専用メモリ（例えばＲＯＭ、ＥＰＲＯＭまたはＥＥＰＲＯＭ）、光記憶デバイス（例えばＣＤ−ＲＯＭ、ＷＯＲＭ、ＤＶＤ、デジタル光テープなど）、紙製「パンチ」カード、または、通信リンクおよびワイヤレス・デバイスなどの伝送媒体におけるメモリ・デバイスを含むその他の適合する信号担持記憶媒体などの、様々な機械可読データ記憶媒体に、デジタルおよびアナログ形式などの様々な形式で記憶され得る。本発明の例示の一実施形態では、機械可読命令はソフトウェア・オブジェクト・コードを含み得る。
【００７１】
したがって、本発明は、システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、本発明の各態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体（または複数の媒体）を含み得る。
【００７２】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、またはこれらの任意の適合する組合せとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のものが含まれる。すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯型コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用するコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波（例えば光ファイバ・ケーブルを通る光パルス）、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
【００７３】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはこれらの組合せを介して、外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよい。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【００７４】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラム言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行ってもよい。実施形態によっては、本発明の各態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路をコンピュータ可読プログラム命令の状態情報を使用してパーソナライズすることにより、その電子回路はコンピュータ可読プログラム命令を実行することができる。
【００７５】
本発明の各態様について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロックおよび、フローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解されるであろう。
【００７６】
コンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを実現するものであってよい。
【００７７】
コンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはそれらの組合せに特定の方式で機能するように指示することができるものであってもよい。
【００７８】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作を実装するように、コンピュータ実装プロセスを実現するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００７９】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。また、代替実装形態によっては、ブロックに記載されている動作は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている２つのブロックは、関与する機能に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、規定されている機能または動作を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実装することもできることに留意されたい。
【００８０】
本発明の多くの特徴および利点は、詳細な本明細書を読めば明らかであり、したがって、本発明のそのような特徴および利点はすべて添付の特許請求の範囲に含まれるものと意図される。さらに、当業者には多くの変更および変形が容易に考えつくため、本発明は、図示および記載されている厳密な構成および動作に限定することは求められておらず、したがって、適合するあらゆる変更および均等物を採用することができ、それらは本発明の範囲に含まれる。
【図１】
0006580138.tif 000002
【図２】
0006580138.tif 000003
【図３】
0006580138.tif 000004
【図４】
0006580138.tif 000005
【図５】
0006580138.tif 000006
【図６】
0006580138.tif 000007
【図７】
0006580138.tif 000008
【図８】
0006580138.tif 000009