【文献】
山幡 為佐久,詳説KVMの最新仮想化技術,日経Linux 第12巻 第11号 NIKKEI Linux,日本,日経BP社 Nikkei Business Publications,Inc.,2010年10月 8日,第12巻,pp.126-132
【文献】
中井 悦司,Linuxコンテナー最新ツール Dockerを支える技術,日経Linux 第16巻 第10号 NIKKEI Linux,日本,日経BP社 Nikkei Business Publications,Inc.,2014年 9月 8日,第16巻,pp.139-144
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
本発明について図面を参照しながら以下に説明する。図面では、同様の参照符号は同様の要素を指す。慣行により、図面の様々な特徴は必ずしも一定の縮尺で描かれていないことを強調しておく。逆に、様々な特徴の寸法は、わかりやすいように任意に拡大または縮小されている場合がある。以下に、例示を目的として実施形態の例を示すが、これらの例示の実施形態は特許請求の範囲を限定しない。
【0017】
本開示の発明は、一般には、暗号化メモリのないセキュア・オブジェクトの実施形態に関し、より詳細には、複数の仮想マシンの並行実行をサポートするシステムにおける仮想マシンを保護するためのセキュア・オブジェクトの使用と、仮想マシン内の他のソフトウェアを含む他のソフトウェアから仮想マシン内の個別のアプリケーションを保護するためのセキュア・オブジェクトの使用とに関するが、これらには限定されない。
【0018】
暗号化メモリのないセキュア・オブジェクトのサポート
前述の先願において、および
図1に示すように、セキュア・オブジェクトのプライベート情報は、CPU(中央処理装置)チップ10の外部にある場合に暗号により保護され、暗号はこの情報の機密性と保全性の両方を外部ソフトウェアから保護する。プライベート情報は、CPUチップ10内の汎用レジスタまたはオンチップ・キャッシュ内にある場合、「暗号化されていない」が、CPUは他のソフトウェアがこのプライベート情報にアクセスすることができないように保証する。CPUは、割り込みまたはコンテキスト・スイッチ時に汎用レジスタの内容を含めてセキュア・オブジェクトの状態を安全に保存および復元するとともに、CPUは、所定のオンチップ・キャッシュ・ラインを「所有」するソフトウェアを追跡し、「他のソフトウェア」がオンチップ・キャッシュ・ライン内のプライベート情報にアクセスするのを防止する。
【0019】
本願は、類似の保護を提供する設計上の変形に関する。先願と同様に、本発明は、セキュア・オブジェクトのプライベート情報の機密性と保全性とを、オペレーティング・システム、デバイス・ドライバまたは特権的アプリケーションなどの特権的ソフトウェア、または特権的ソフトウェアを「感染」させ、ルート特権を奪うマルウェアを含む、他のソフトウェアから保護する。しかし、本発明は、パフォーマンス・オーバーヘッドがより少なく、スペース・オーバーヘッドがより少ない方法でこれを行う。
【0020】
元のセキュア・オブジェクト設計では、セキュア・オブジェクトのプライベート情報は、CPUチップ内部にあるときにのみ暗号化されていない。
【0021】
本願の変更された設計では、セキュア・オブジェクトのプライベート情報は、CPUチップ110内にあるときと、
図2に示すようにシステム・メモリ120内にあるときに暗号化されておらず、アクセス制御モニタ(ACM)がメモリ内プライベート情報を他のソフトウェアから保護する。ACMは完全にハードウェアで実装することができるが、当業者は、ACMの一部をマイクロコード、ファームウェアまたはソフトウェアでも実装可能であることがわかるであろう。
【0022】
先願と同様、セキュア・オブジェクトは暗号で保護された情報と、保全性情報と、セキュア・モードに移行するために使用される「esm命令」とから成る。(なお、「esm命令」は、実際のCPU命令であってよく、またはACMに対する呼び出しまたはソフトウェア割り込みとして実装されてもよい。)
【0023】
先願と同様、「esm命令」は、セキュア・オブジェクトのプライベート情報を保護する暗号鍵を含むセキュア・オブジェクトに関する何らかの情報を取得するためにオペランドを処理する。また、「esm命令」は、セキュア・オブジェクトにID(識別情報)を割り当てる。先願と同様、このIDは、CPUが情報の「所有者」を示すためにその情報にラベル付けすることができるようにするCPUレジスタにロードされる。
【0024】
上述のように、本発明では、セキュア・オブジェクトのプライベート情報はメモリ内において暗号化されていない。このプライベート情報は、ディスクなどのページング・デバイスにページアウトされるときに暗号化され、ページインされるときに復号される。
【0025】
セキュア・オブジェクトがページ・フォールトを生じさせた場合、暗号化されたページがページインされ、ACMはセキュア・オブジェクトが実行を再開する前にそのページを復号する。プライベート情報を含むページがページアウトされる場合、ACMはそのページがページング・デバイスに書き出される前にそのページを暗号化する。(先願に記載されているように、この暗号化および復号に使用される鍵は、他のソフトウェアには入手不能である。)
【0026】
適切なハードウェアのサポートにより、ACMは、既存のオペレーティング・システム・ソフトウェアには透過な方法でこの暗号化および復号を実行することができる。一実施形態では、物理メモリのページにラベル付けするために、IBM(R)System z(R)サーバで使用されるもののようなストレージ保護キーが使用される(IBMおよびSystem zは、世界の多くの管轄区で登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)。この場合、ページのストレージ保護キーは、そのページを所有するセキュア・オブジェクトのIDを含むことになる。上述のように、セキュア・オブジェクトのIDは「esm命令」の一部として割り当てられる。オペレーティング・システムがディスクからページを取り込むとき、そのページのストレージ保護キーにはオペレーティング・システムのIDが含まれる。ページがページインされた後でセキュア・オブジェクトがそのページに最初にアクセスを試みるとき、セキュア・オブジェクトのIDはメモリ・ページのIDと一致せず、「所有権不一致」割り込みが発生することになる。ACMは、この割り込みを処理し、ページの所有権をセキュア・オブジェクトに変更した後、ページを復号し、セキュア・オブジェクトの実行を再開する。その後、オペレーティング・システムがセキュア・オブジェクトによって所有されているページのページアウトを試みると、さらに所有権不一致割り込みが発生する。この場合、ACMがその割り込みを捕捉し、ページを暗号化した後、そのページの所有権をオペレーティング・システムに変更し、オペレーティング・システムの実行を再開する。(または、オペレーティング・システムがDMAを開始することによってディスクへのページアウトを開始する場合、DMA動作を中断または一時停止しなくてもACMがそのページを暗号化することができるように、オペレーティング・システムはDMAを開始する前にまずページアウトをスワップしようとしていることをACMに通知してもよい)。
【0027】
上述の例示の実施形態は、メモリ・ページにラベル付けするためにストレージ保護キーを使用するが、当業者は、本発明が他の機構を使用して、例えば、プロセッサのアドレス変換ハードウェア内のページ・テーブル・エントリ(PTE)または変換索引バッファ(TLB)あるいはその両方に所有権ラベルを付加することによって、実施することもできることがわかるであろう。
【0028】
前述のように、本願に記載の本発明は、先願セキュア・オブジェクトに類似した保護を提供するが、いくつかの有利な点がある。本発明では、メモリとストレージ・デバイスとの間で情報のページが移動するときにのみ暗号および保全性処理が行われるため、パフォーマンス・オーバーヘッドがより少ない。以前の設計では、CPUと外部メモリとの間でキャッシュ・ラインが移動するたびに暗号および保全性処理が行われる。さらに、本発明では、設計が、先願に記載されているようにキャッシュ・ラインごとに1個の保全性値(特定のCPUアーキテクチャに応じて128バイトまたは64バイトまたはその他の比較的少ないバイト数となる場合がある)ではなく、メモリ・ページごとに1個の保全性値(例えば4Kバイト当たり1個の値)を必要とするだけで済むため、スペース・オーバーヘッドが大幅に削減される。
【0029】
仮想マシンおよび仮想マシン内のアプリケーションを保護するためのセキュア・オブジェクトの使用
先願に記載され、
図3に示されているように、個別のアプリケーション220、222、224をシステム上の他のソフトウェアから保護するためにセキュア・オブジェクト210を使用することができる。
図4に示すように、複数の仮想マシンの並行実行をサポートするシステム330において仮想マシン310、312および314を保護するために、セキュア・オブジェクト300も使用することができる。これは、例えば顧客の仮想マシンを、クラウド・サービス・プロバイダのソフトウェアと他の顧客の仮想マシンとから保護するために、クラウド・コンピューティング環境において有用であると考えられる。セキュア・オブジェクト300は、仮想マシン内の個別のアプリケーションを仮想マシン内の他のソフトウェアから保護するためにも使用することができる。
【0030】
一実施形態では、セキュア・オブジェクト300は、Linux/KVM環境320(Linuxは米国またはその他の国々あるいはその両方におけるリーナス・トーバルズの登録商標である)において仮想マシンを保護するために使用することができる。KVM(カーネル仮想マシン)は、Linuxシステム320に仮想マシン・モニタ(またはハイパーバイザ)を加えるLinuxサブシステムである。Linux/KVMシステムでは、仮想マシンは通常のLinuxプロセスとして実装され、したがって、これらの仮想マシンは、本願または先願において通常のアプリケーションが保護されるように保護することができる。仮想マシンは、先願においてアプリケーションがセキュア・オブジェクト化されるのと同様にして、セキュア仮想マシン(SVM)化され得る。一実施形態では、仮想マシンのコード(例えばOSイメージ)の先頭にesm命令が追加され、仮想マシン外部の通信のために(先願に記載のラッパーと同様の)ラッパーが追加され、先願に記載されているように仮想マシンが保全性保護される(および任意により暗号化される)。これにより、SVMは、本願または先願に記載のセキュア・オブジェクトのサポートとともにCPU上のLinux/KVMで動作することができる。セキュア・オブジェクト保護は、SVM内の情報を保護するが、(例えばトランスポート層セキュリティ(TLS)またはIPsecを使用して)リモート・システムに送信されるパケットおよび(dm−cryptなどの機構を使用して)ファイル・システムに書き込まれるデータなど、SVM外部に出力される情報を保護するのはSVMの役割である。なお、先願と同様、セキュア・オブジェクト保護は、この場合セキュア仮想マシンに対応する、セキュア・オブジェクトの状態を安全に保存および復元する役割を担う。
【0031】
先願のうちの1つの先願(米国特許出願第13/226,079号)に記載されているように、セキュア・オブジェクト保護は、情報の機密性と保全性の両方、または情報の保全性のみを保護するように構成することができる。当該出願に記載されているように、セキュア・オブジェクトの異なる部分ごとに異なる方式で保護することができる。セキュア・オブジェクト保護は、セキュア仮想マシン内ではカーネル・コードの保全性を保護するが機密性は保護せず、SVM内では他の情報の機密性と保全性の両方を保護するように構成することもできる。これによって、Linux/KVMなどのハイパーバイザは、例えば「カーネル・セームページ・マージング(Kernel Samepage Merging)を実行することが可能になり、それによって、同じカーネル・コード・ページを異なる仮想マシンのために使用することができるとともに、それらの仮想マシン内の他の情報の機密性と保全性の両方の保護が依然として提供される。
【0032】
本明細書に記載の実施形態は、Linux/KVMシステム用であるが、当業者は、仮想マシンをサポートする他の環境でも本発明を実施可能であることがわかるであろう。
【0033】
セキュア・オブジェクト保護は、セキュアまたは通常型/非セキュア仮想マシンにおける個別のアプリケーションを保護するためにも使用可能である。いずれの場合も、仮想マシンはファイル・システムを有し、ファイル・システムは、セキュア・オブジェクトとして作成されたアプリケーションを含み得る。一実施形態では、現在、米国特許第8,954,752号となっている米国特許出願第13/033,455号に記載されているように、セキュア・アプリケーションは、暗号により保護された領域と、esm命令と、システム・コール・ラッパーとを有し、セキュア・オブジェクトとして構築される。この実施形態では、セキュア・アプリケーションは、(セキュアまたは非セキュア)仮想マシン内の他のアプリと同様に開始した後、セキュア・モードに移行するためのesm命令を実行する。セキュア・アプリケーションの実行は、各先願に記載されているように進行するが、この場合、セキュア・オブジェクトのサポートは、コンテキスト・スイッチが発生したときにセキュア・アプリケーションの状態を安全に保存および復元することができるように、仮想マシン内のコンテキスト・スイッチも認識している必要がある。
【0034】
同様にして、「ベア・メタル」ハードウェア上で実行する、セキュア仮想マシンまたは通常の非セキュア仮想マシンまたはオペレーティング・システムにおいて動作する「コンテナ」(Linuxコンテナなど)を保護するために、セキュア・オブジェクト保護を使用することができる。
【0035】
Linuxコンテナには、LXCおよびDocker(Dockerは世界の多くの管轄区において登録されたDocker社の商標である)を含む、いくつかの例がある。ハイパーバイザは、ハードウェア抽象化層において仮想化を提供するが、コンテナはオペレーティング・システム層における仮想化を提供する。ハイパーバイザ・ゲストがそれ自体の専用ハードウェア上で実行しているかのように実行するのと同様に、コンテナは、それ自体の専用のオペレーティング・システム上で実行しているかのように実行する。コンテナは、ネーム空間と、cgroupと、各コンテナを専用オペレーティング・システム・カーネルのように見せかける機能とを含む、カーネル機能を使用する。コンテナは、ある意味で、単一のネイティブ・アプリケーションと多くのアプリケーションを実行させる仮想マシンとの中間にある。セキュア・オブジェクトは、セキュア・オブジェクトがアプリケーションおよび仮想マシンを保護するために使用されるのと同様にして、コンテナを保護するために使用することができる。イメージ・キーを復号するために使用されるesmを使用して、仮想マシン・イメージと同様にコンテナ・イメージ・ファイルを保護することができる。アプリケーション・レベルの保護の当初の説明のように、コンテナ内の個別のプロセスを保護することができる。セキュア・アプリケーションおよびセキュアVMの場合と同様に、セキュア・コンテナ内のソフトウェアは、コンテナ外部に出力される情報をセキュリティ保護する役割を担う。さらに、セキュア・アプリケーションの場合と同様に、オペレーティング・システムの呼び出しのためにシステム・コール・ラッパーを使用してもよい。システム呼び出し時にセキュア・アプリケーションまたはセキュア・コンテナの外部に出力される情報または外部から入力される情報を保護するために要すると思われるオーバーヘッドをできるだけなくすために、必要であれば、セキュア・アプリケーションまたはセキュア・コンテナ内部にある「ライブラリOS」にいくつかのシステム・コール(例えばファイル・システム・プリミティブ)を組み込むことができる。
【0036】
本開示の発明は、アプリケーション内のセキュア領域もサポートする。上記の先願のうちの1つ(現在、米国特許第8,819,446号である、2009年6月26日出願の米国特許出願第12/492,738号)に記載されているように、アプリケーションは、アプリケーションの特に機密度の高い部分を、そのアプリケーション内の他のソフトウェアを含む「他のソフトウェア」から保護するために、esm命令およびlsm命令を使用することができる。
【0037】
アクセス制御モニタ(ACM)
上述のように、本発明はいくつかの点で先願を拡張する。
【0038】
本発明は、メモリ・ページを保護するためのラベルの使用をサポートする。
【0039】
本発明は、共用される情報のためにラベルを使用する、セキュア・オブジェクト間のデータの共用もサポートする。これらのラベルは、上記の先願のようにキャッシュ・ラインにラベル付けされる実装形態では、キャッシュ・ラインに付与するか、または本願でより詳細に説明するように、メモリ・ページに付与することができる。ラベルは、「色」とも呼び、特定のセキュリティ・ドメイン450
nを示し(nは整数である)、所定の色でラベル付けされた情報は、「カラー・パレット」にその色を含むソフトウェアがアクセスすることができる。メモリ・ページが複数のセキュア・オブジェクト間で共用される場合、そのメモリ・ページの色がこれらのセキュア・オブジェクトのそれぞれのパレットに表示される。例えば、450
1の色は赤であり、450
2は緑であり、450
3は青である。
【0040】
本開示の発明は、セキュア仮想マシン内のセキュア・アプリケーションまたはセキュア・コンテナのように他のセキュア・オブジェクト内にあるセキュア・オブジェクトもサポートする。
【0041】
一実施形態は、メモリ410へのアクセスを監視し、制御するアクセス制御モニタ(ACM)470を含む。ACM470の概要を
図5に示す。左下に、プロセッサ420が、ロード・ストア・ユニット480を介したレジスタ434およびメモリ410との接続とともに示されている。プロセッサ420は、「従来型」プロセッサであってよい。本開示の発明では、プロセッサ420は、ACMハードウェア(ACM−HW)432と呼ぶ追加のロジックで増強されている。ACMハードウェア432は、ロード命令およびストア命令を捕捉し、特殊なACMトラップ命令を処理する。ACMハードウェア432は、ロード命令およびストア命令に対してある種の検査を行い、さらに、ロード命令およびストア命令をロード・ストア・ユニット480に渡す前に何らかの追加の処理を行ってもよい。
【0042】
図5において、ACMシステム470上で実行するソフトウェアが図の上部にドメイン450
nの集合として図示されている。各ドメイン450
nは、同じセキュリティ特権を有するソフトウェア・モジュールの集合を含む。第1のドメイン450
0はOS(オペレーティング・システム)コードと、OS上で実行されるすべての通常の非セキュア処理とを含む。(別の例では、第1のドメインは、ハイパーバイザ512(
図6)と、そのハイパーバイザ上で実行する通常の非セキュア仮想マシンとを含み得る)。第2のドメインは、ソフトウェアにおける何らかのACM機能を実行することができるセキュア・ドメインACM−SW450
1である。前述のように、ACMはハードウェア、またはハードウェアとソフトウェアとの何らかの組合せで実装可能である。
図5に示す境界は、ハードウェア432とソフトウェア450
1との間で変更可能である。メモリ・ページの暗号化または復号、または保全性値の生成または検証などの「複雑な機能」は、ACM−SW450
1で実装してもよい。他のドメイン450
2および450
3は、セキュア・アプリケーションまたはセキュア仮想マシンまたはセキュア・コンテナとすることができるセキュア・オブジェクトである。
図5のACM、432と450
1の組合せの役割は、これらのセキュア・オブジェクトのそれぞれにおける情報の機密性および保全性を、OS/ハイパーバイザを含むシステム上の他のすべてのソフトウェアから保護することである。
【0043】
図5に示すように、ACM−HW432は、要求に応答し、応答を返す状態マシンとして構成される。ACM−HWの上部に示す「クラウド」494は、各種信号をACM要求に変換し、プロセッサ420に対して適切なACM応答を返す「グルー・ロジック」494である。
【0044】
ACMの一実施形態において備えられる機能と、この実施形態を実装するために使用されるデータ構造について以下に説明する。
【0045】
本実施形態では、ACM−HW432は、ACM−HW432がCPUハードウェア420によって使用されるアドレス変換機構の詳細を扱う必要なしにセキュリティ制約を実施するために使用する、OSによってマップされるページのカタログを維持する。別の変形態様では、ACM−HW432は、CPU(中央処理装置)またはプロセッサ420によって使用されるテーブルを管理し、OSがこれらのテーブルを更新するためにACM−HW432に対して呼び出しを行う。セキュリティの観点から見ると、この2つの方式は等価であり、一方の場合はOSによって加えられた変更をACM−HW432が追跡する必要があり、他方の場合はハードウェア・テーブルを管理する必要がある点が異なる。
【0046】
ACM−HW432は、ロジック回路であってよく、または、非一時的記録媒体に格納され、プロセッサにより実行可能なソフトウェアであってもよい。
【0047】
本実施形態において備えられる機能の1つは、新しいACM、例えば
図6のACM1を作成する。このプリミティブを使用して、
図6に示すような保護ドメインの階層を作成することができる。
図6において、532における新たに作成された各ACM、ACM1ないしACM4は、それぞれの1組の色を有し、それぞれの1組のドメインを管理する。任意の時点において、プロセッサ520は、532内の関連付けられたACMによって制御される1つのドメインのために動作している。割り込みベクトルにより、割り込みの対象となる532内のACMが追跡される。最初に、すべての割り込みが当初のACM、すなわち532内のACM0によって所有されるが、1つのACM、すなわち532内のACM0ないしACM4が割り込みを他のドメインに委ねることができる。一実施形態では、新しい色を有する新規セキュア・ドメインを作成するためにOS510がNewDomainを呼び出す。
【0048】
例えば、アプリケーションApp1は緑であり、App2は青である。
【0049】
新規セキュア・ドメインの作成後、OS、例えば510が、作成されたばかりのドメインを新規ACMのターゲット・ドメインとして使用して、NewACMを呼び出すことができる。作成される新規ACM、例えば532内のACMは、最終的に分離の責任を負うACM−HW530に接続された仮想ACMであり、仮想ACMである532内のACM1ないしACM4はそれぞれの要求をACM−HW530に再帰的に渡す。
【0050】
図5のACM432および450
1の一実施形態は、以下に挙げるデータ構造を使用して以下に述べる機能を提供する。なお、本実施形態のテーブルのサイズおよび(例えば色の)フィールド幅に使用される値およびその他の詳細は、例示を目的とするに過ぎない。本発明は、この厳密な実施形態には限定されず、本発明の範囲から逸脱することなく当業者によって様々な変形および変更を加えることができるものと理解すべきである。
【0051】
データ構造
1.色、カラー・フィールドおよびフリー・カラー・ビット・ベクトル(Free Color Bit Vector(FCBV))。セキュリティ・ドメインに対応する色。フリー・カラー・ビット・ベクトルは、最大1024色をサポートする1Kビットのベクトルである。新しい色を割り当てるには、最初のゼロ・ビットを探し、その色が割り当てられたことを示すために1に設定する。索引は、他のデータ構造のカラー・フィールドとして使用される10ビット値に変換される。各セキュア・オブジェクト300が少なくとも1つの色(そのセキュア・オブジェクトIDと等しい「プライマリ」・カラー)を有することになる。セキュア・オブジェクトは、他のソフトウェアと共用されるページのための追加の色も有することができる。最後にどのセキュア・オブジェクトの一部でもないすべてのソフトウェアによって、1つの色が使用される。メモリ・ページも色を有する。プライベート(非共用)メモリ・ページの色は、そのページの現在の所有者の色である。
2.パレット:パレットは、セキュア・オブジェクト300がアクセス可能な色のセットである。1Kビット・ベクトルとして実装することができる。各セキュア・オブジェクト300は、そのプライベート・ページの固有色を有する。セキュア・オブジェクト300は、他のセキュア・オブジェクトと共用する用意があるページと、他のセキュア・オブジェクト300がそのセキュア・オブジェクト300と共用する容易があるページのための追加の色を有することができる。実行プログラムがページへのアクセスを試みたが、そのプログラムのパレット内にそのページの色がない場合、色不一致(所有権不一致の一般化されたもの)割り込みが生成される。上述のように、ACM432および450
1は、この割り込みを処理し、ページの所有権(色)を変更し、前述のようにページを暗号化または復号する。
3.状態テーブル:最大1Kのセキュア・オブジェクトの状態を安全に記憶する1Kのエントリ・テーブル。セキュア・オブジェクト300に割り込みが行われると、ACM432および450
1は、適切な割り込みハンドラに制御を渡す前にそのセキュア・オブジェクト300の状態をこのテーブルのエントリに安全に保存する。ID(またはプライマリ・カラー)iを有するセキュア・オブジェクトのためにテーブルのi番目のエントリが使用される。セキュア・オブジェクトは、OSがACMに対して「再開」呼び出しを行い、再開するセキュア・オブジェクトの索引を指定すると安全に再開される。このテーブルのエントリは、以下のフィールドを含む。
a. ST[i].pc。 セキュア・オブジェクト300が実行を再開するプログラム・カウンタ。
b. ST[i].state。 セキュア・オブジェクト300のレジスタ状態。
c. ST[i].palette。 セキュア・オブジェクト300のパレット。
d. ST[i].color。 セキュア・オブジェクトのプライマリ・カラー(すなわちID)。
4.現在の状態(CS)のレジスタおよび現在のパレット(CP)のレジスタ。CSは、現在実行中のセキュア・オブジェクトのID/プライマリ・カラーを含む10ビット・レジスタである。状態テーブルに対する索引としても使用される。CPは、現在実行中のセキュア・オブジェクトのパレットを含む1Kビット・ベクトル・レジスタである。このパレットは、メモリ・メモリ・アクセス時にメモリ・ページの色と比較される。ページの色がパレットにある場合、アクセスが許可される。ない場合は、色不一致割り込みが生成される。
5.ページ・テーブル・エントリ(PTE)およびTLBエントリ(TLBE)に付加されるカラー・フィールド。各ページ・テーブル・エントリ(PTE)および各TLBエントリ(TLBE)は、アクセス中のメモリ・ページの色が現在実行中のソフトウェアのパレットにあるか否かを判断するために使用される10ビット・カラー・フィールドによって拡張される。
6.カラー・テーブル(CT):各色に1つずつの1Kエントリを有するテーブル。エントリには、色の以下の情報が含まれる。
a. CT[i].key。 指定された場合、色不一致割り込み時にページを暗号化または復号するために使用される、任意選択の暗号鍵。
b. CT[i].handle。 指定された場合、共用ページに色が使用されることを示す、任意選択のハンドル。
c. CT[i].class。 共用ページの所有者のセキュリティ・クラスを示す任意選択のセキュリティ・クラス。
d. CT[i].rwxBits。 共用ページの所有者が他者に利用可能にしたアクセス権を示す、任意選択のフィールド。
【0052】
基本機能
新規セキュア・オブジェクトの作成。アプリケーションまたはコンテナまたは仮想マシンが「セキュア・モード移行(Enter Secure Mode:esm)」呼び出しを呼び出すと、ACM432および450
1は、
a.新たに作成されたセキュア・オブジェクト300のために状態テーブルに新たなエントリを作成し、
b.その新規セキュア・オブジェクト300にID/プライマリ・カラーを割り当て、
c.他のソフトウェアには利用不能なシステム鍵を使用してesm「命令」のオペランドを復号することによって、セキュア・オブジェクト300を復号するために使用される対称鍵を含む新規セキュア・オブジェクトに関する特定の情報を入手する。(オペランドは、米国特許第8,578,175号で説明されているように復号してもよい。)復号されたオペランドからセキュア実行の開始アドレスも入手する。
d.上述のFCBV、状態テーブル、カラー・テーブル、CSおよびCPに適切な情報を記憶し、
e.新たに作成されたセキュア・オブジェクト300の実行を、上記のセキュア実行の開始アドレスでセキュア・モードにおいて再開する。
【0053】
割り込みの前処理。セキュア・オブジェクト300が実行中に割り込みが発生した場合、ACM432および450
1は、適切な割り込みハンドラに制御を渡す前に、上述の状態テーブルにセキュア・オブジェクト300の状態を安全に保存する。
【0054】
安全な再開。OS510またはハイパーバイザ512が、前に割り込みされたセキュア・オブジェクト300を再開しようとするとき、OS510またはハイパーバイザ512は、532内のその制御ACM、例えばACM1に対して「再開」呼び出しを行い、そのACMが、前に割り込みされたセキュア・オブジェクトの状態を安全に復元し、その実行を再開する。
【0055】
色不一致割り込みの処理。色不一致は、ACMによって処理される。非セキュア・ソフトウェアの実行中に割り込みが発生した場合、ACM530はそのページを暗号化する。セキュア・オブジェクト300の実行中に割り込みが発生した場合、ACM530はそのページを復号する。前者の場合を「ページアウトのための暗号化」割り込みと呼ぶことがある。この「ページアウトのための暗号化」ACM530コードは、OS510またはハイパーバイザ512から直接呼び出すこともでき、それによりACM530は上述のようにDMA動作の最中に割り込む必要がなくなる。後者の場合を「安全な実行のための復号」割り込みと呼ぶことがある。
【0056】
メモリ・セグメントの安全な共用のための追加機能
Linuxシステムおよびその他のシステムは、異なるアプリケーション間での共用メモリをサポートする。ACMは、オペレーティング・システムおよびハイパーバイザ・ソフトウェアを含むシステム上の他のソフトウェアから保護された共用メモリ・セグメントをサポートすることによって、これを補完する。
【0057】
セキュア・オブジェクトは、共用したいメモリ・セグメントのために新しい色と新しい暗号鍵とを作成し、この新しい色を1つまたは複数のパーティと共用することができる。共用は、協調するパーティ間で受け渡し可能なハンドルの使用によって行われる。メモリ・セグメントの所有者は、ACMに対してメモリ・セグメントのハンドルを作成するよう要求することができ、ACMはそのメモリ・セグメントに新しい色と新しい暗号鍵とを割り当てる。次に、ACMはその新しい色を所有者のパレットに追加し、所有者が他のパーティと共用することができる、メモリ・セグメントのハンドルを所有者に返す。次に、別のパーティがそのハンドルをACMに渡すことができ、ACMは関連付けられた色をそのパレットに追加する。この色が関連付けられたメモリ・ページには、その後、所有者と、所有者がハンドルを共用させたパーティとがアクセス可能になる。また、これらのメモリ・ページには、他のソフトウェアはアクセスすることができない。セキュリティを確保するために、ハンドルは、例えば128ビットのランダムな列や256ビットのランダムな列のような推測困難なものにする。(別の設計では、共用メモリ・セグメントの所有者がそのセグメントのハンドルを作成してもよい。)
【0058】
メモリ・セグメントの所有者は、別のパーティがそのセグメントに対して行うことができるアクセスの種類を指定することもできる。所有者は、(例えば、他のパーティに、共用セグメントから命令をそれぞれ、読み取り、書き込み、または実行する許可を与えるためのrwxビットの組によって)他のセキュア・オブジェクトが利用できるようにしたいアクセス権を指定することによって、ハンドルを要求する場合に、この指定を行う。
【0059】
必須アクセス制御による共用
ACMは、1組のセキュリティ・クラス間での必須アクセス制御もサポートする。セキュア・オブジェクトは、始動時にそのesmオペランド内の情報に基づいてセキュリティ・クラスに割り当てられる。ACMは、クラス間での必須アクセス制御を実施するために正方制限行列(Constraint Matrix:CM)を使用する。CMは各セキュリティ・クラスのための1行と、各クラスのための1列を含む。エントリCM[i,j]は、例えばrwxビットによって、クラスiのセキュア・オブジェクトがクラスiが所有するメモリ・セグメントに対する読み出し許可、書き込み許可または実行許可をクラスjの別のセキュア・オブジェクトに与えることができるか否かを示す。この制約行列は、ACMに「ハード・コーディング」するか、または、デジタル署名などの標準セキュリティ機構を介して、またはセキュア・トランスポート・プロトコルを介して、または当業者に知られているその他のセキュリティ機構を介して供給することができる。(なお、セキュア・オブジェクトのクラスは、IBMリサーチ・レポートRC21673、Multi-Organizational Mandatory Access Controls for CommercialApplications、Paul Karger、(2000年2月22日)およびIBMリサーチ・レポートRC21717、A New Mandatory Security Policy Combining Secrecy and Integrity、Paul Karger、Vernon AustelおよびDavid Toll(2000年3月15日)で定義されている「ユニバーサル・アクセス・クラス」であってもよい。)
【0060】
一実施形態におけるACMプリミティブ
上述の機能は、以下のACMプリミティブによって提供することができる。
1.NewAc r,c
制約:OSドメイン(最初を除く)が発行することができる。rは現在のドメインがアクセス可能な、有効なマップされたページである。cは新しいacmに変更されるセキュア・ドメインの有効な色である。
動作:この新規acmのacmSwコードとしてrが読み取られ、測定され、復号され、導入される。このacmのためにデフォルトのドメインであるOsDomain(0)およびacmSw(1)が設定され、呼び出し側OSに制御が返されて、成功または失敗が示される。
2.NewDomain r
制約:rは現在のドメインがアクセス可能な有効なマップされたページである。
動作:新しいドメインが作成される。rは新しいドメインのソフトウェアとして読み取られ、測定され、復号され、導入される。これは時間を要するため、ただちに「処理中」応答が与えられる。完了時、OS割り込みが挙げられ、成功または失敗が示される。成功の場合、その新規ドメインの新しい色を返す。
3.Resume c
制約:OSのみがこのプリミティブを呼び出すことができる。c(c>1)は有効な実行可能セキュア・ドメインの色である。
動作:セキュア・ドメインが現在実行中である場合、その状態が保存される。pcが、示されたドメインに設定され、そこで実行が継続する。再開されたドメインが別のacmである場合、その現在のドメインが(再帰的に)再開される。
4. Map r,c
制約:OSのみがこのプリミティブを呼び出すことができる。rは現在マップされていない実アドレスである。cはこのACMの下での有効な色でなければならない。
動作:ページrが消去され、色cにマップされる。これは時間を要するため、ただちに「処理中」応答が与えられる。完了時、OS割り込みが挙げられ、成功または失敗が示される。
5.Unmap r,c
制約:OSのみがこのプリミティブを呼び出すことができる。rは現在、色cにマップされていなければならない実アドレスである。
動作:ページrがマップ解除され、消去され、後でいずれかのドメインに再割り当てすることができる。rがたまたま共有されている場合は、すべての共有者がそのページへのアクセス権を失う。これには時間を要するため、ただちに「処理中」応答が与えられる。完了時、OS割り込みが挙げられ、成功または失敗が示される。
6.Move r,c,c’,dir
制約:rはcにマップされていなければならない。c’は有効色でなければならず、dirは0または1である。
動作:dirが0の場合、cは(鍵kを有する)セキュア・ドメインでなければならない。rはkを使用して暗号化され、c’に再マップされる。dirが1の場合、c’は(鍵kを有する)セキュア・ドメインでなければならない。rはkを使用して復号され、c’に渡される。これには時間を要するため、ただちに「処理中」応答が与えられる。完了時、OS割り込みが挙げられ、成功または失敗が示される。
7.SwResp op,other params
制約:acmSWのみがこのプリミティブを呼び出すことができる。これは動作opが完了したことを示す。成功または失敗が通知される。
動作:残りのパラメータは、acmHwテーブルに記憶するためのacm内部パラメータである。
8.DirectExtInt intNum,c
制約:acmSwのみがこのプリミティブを呼び出すことができる。割り込みベクトルは、割り込み番号からacm番号へのマップである。現在、intNumの割り込みが実行acmにマップされていなければならない。実行acmでは、cは別のacmであるドメインを表す有効な色でなければならない。
動作:intNumのマッピングがcに対応するacmに変更される。
9.ExtInt intNum,other params
制約:いずれかのドメインの実行中に外部デバイスによって発行される。
動作:セキュア・ドメインが現在実行中の場合、その状態が保存される。事前設定されたextIntAddressにおいて制御がOSに渡される。対応するドメインにおいて、(デバイスから)他のパラメータが割り込みサービス・ルーチンに渡される。
10.Access r,rwx
制約:いずれかのドメインによって発行され、ページrへの(rwxによって示される)アクセスを示す。rは何らかの色cにマップされた有効なページでなければならない。現在のパレットに色cの対応するrwx許可を有するエントリがなければならない。
動作:上記の検査に適切に合格した場合に操作が許可され、それ以外はOS割り込みが挙げられ、アクセス障害が示される。
11.SysCall params
制約:いずれかのドメインによって発行され、該当するパラメータとともにサービス呼び出しを示す。
動作:非OS処理によって発行された場合、OS割り込みが挙げられ、パラメータが渡される。OSによって発行された場合、より下位のacm(ある場合)に反映される。
12.OwnerHandle r,rwx
制約:1つまたは複数のメモリ・ページを共用したいセキュア・ドメインによって発行される。呼び出し側は、共用者に与えたいアクセスの種類(rwx)を指定する。
動作:acmがメモリ・ページの新しい色と新しい鍵を作成し、呼び出し側のパレットにその新しい色を追加し、呼び出し側が別のセキュア・ドメインと共用することができるメモリのハンドルを返す。
13.SharerHandle handle
制約:セキュア・ドメインによって、そのセキュア・ドメインのパレットに共用メモリ・セグメントの色を追加するために発行される。
動作:制約行列内の制約に違反していない場合、呼び出し側のパレットに色を追加する。
【0061】
本発明についていくつかの例示の実施形態を用いて説明したが、当業者は、本発明が添付の特許請求の範囲の範囲内で変更を加えて実施することができることがわかるであろう。
【0062】
また、本出願人の意図は、後に審査中に修正が加えられた場合であっても、すべての請求要素の均等物を包含することであることを注記しておきたい。
【0063】
別のハードウェア実装例
図7に、本発明による情報処理/コンピュータ・システム600であって、ソフトウェア・プログラムの形態で本発明の技術を実装可能な少なくとも1つのプロセッサまたは中央処理装置(CPU)610を有することが好ましい、情報処理/コンピュータ・システム600の別のハードウェア構成を示す。
【0064】
CPU610は、システム・バス612を介して、ランダム・アクセス・メモリ(RAM)614と、読取り専用メモリ(ROM)616と、(ディスク・ユニット621およびテープ・ドライブなどの周辺装置をバス612に接続するための)入出力(I/O)アダプタ618と、(キーボード624、マウス626、スピーカ628、マイクロフォン632またはその他のユーザ・インターフェース・デバイスあるいはこれらの組合せをバス612に接続するための)ユーザ・インターフェース・アダプタ622と、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク(PAN)などに接続するための通信アダプタ634と、バス612をディスプレイ・デバイス638またはプリンタ639(例えばデジタル・プリンタなど)あるいはその両方に接続するためのディスプレイ・アダプタ636とに相互に接続される。
【0065】
上述のハードウェア/ソフトウェア環境に加えて、本発明の異なる態様は、上述の方法を実行するコンピュータ実装方法を含む。一例として、この方法は上述の特定の環境において実装され得る。
【0066】
そのような方法は、例えば、一連の機械可読命令を実行するためにデジタル・データ処理装置によって具現化されるようにコンピュータを動作させることによって実装され得る。これらの命令は、様々な種類の信号担持媒体に格納され得る。
【0067】
したがって、本発明の本態様は、本発明の方法を実行するために、CPU610および上述のハードウェアが組み込まれたデジタル・データ・プロセッサによって実行可能な、機械可読命令のプログラムを有形に具現化する信号担持記憶媒体を含む、プログラム製品を対象とする。
【0068】
この信号担持記憶媒体は、例えば、例えば高速アクセス・ストレージに代表される、CPU610内に含まれるRAMを含み得る。
【0069】
あるいは、命令は、CPU610が直接または間接的にアクセス可能な、磁気データ記憶ディスケット710または光記憶ディスケット720(
図8)などの別の信号担持記憶媒体700に格納されてもよい。
【0070】
ディスケット710、光ディスク720、コンピュータ/CPU610または他の場所のいずれに格納されるかを問わず、命令は、DASDストレージ(例えば従来の「ハード・ドライブ」またはRAIDアレイ)、磁気テープ、電子読取り専用メモリ(例えばROM、EPROMまたはEEPROM)、光記憶デバイス(例えばCD−ROM、WORM、DVD、デジタル光テープなど)、紙製「パンチ」カード、または、通信リンクおよびワイヤレス・デバイスなどの伝送媒体におけるメモリ・デバイスを含むその他の適合する信号担持記憶媒体などの、様々な機械可読データ記憶媒体に、デジタルおよびアナログ形式などの様々な形式で記憶され得る。本発明の例示の一実施形態では、機械可読命令はソフトウェア・オブジェクト・コードを含み得る。
【0071】
したがって、本発明は、システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、本発明の各態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0072】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、またはこれらの任意の適合する組合せとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のものが含まれる。すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用するコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
【0073】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはこれらの組合せを介して、外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0074】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラム言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)行ってもよい。実施形態によっては、本発明の各態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路をコンピュータ可読プログラム命令の状態情報を使用してパーソナライズすることにより、その電子回路はコンピュータ可読プログラム命令を実行することができる。
【0075】
本発明の各態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロックおよび、フローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることが理解されるであろう。
【0076】
コンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを実現するものであってよい。
【0077】
コンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはそれらの組合せに特定の方式で機能するように指示することができるものであってもよい。
【0078】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装するように、コンピュータ実装プロセスを実現するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0079】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。また、代替実装形態によっては、ブロックに記載されている動作は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、規定されている機能または動作を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実装することもできることに留意されたい。
【0080】
本発明の多くの特徴および利点は、詳細な本明細書を読めば明らかであり、したがって、本発明のそのような特徴および利点はすべて添付の特許請求の範囲に含まれるものと意図される。さらに、当業者には多くの変更および変形が容易に考えつくため、本発明は、図示および記載されている厳密な構成および動作に限定することは求められておらず、したがって、適合するあらゆる変更および均等物を採用することができ、それらは本発明の範囲に含まれる。