(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】セキュア・コンテナの作成および実行
(51)【国際特許分類】
G06F 9/445 20180101AFI20231017BHJP
G06F 9/455 20180101ALI20231017BHJP
G06F 21/60 20130101ALI20231017BHJP
G06F 21/62 20130101ALI20231017BHJP
G06F 21/53 20130101ALI20231017BHJP
【FI】
G06F9/445
G06F9/455 150
G06F21/60 320
G06F21/62 309
G06F21/53
(21)【出願番号】P 2021537931
(86)(22)【出願日】2020-01-31
(86)【国際出願番号】 IB2020050789
(87)【国際公開番号】W WO2020161577
(87)【国際公開日】2020-08-13
【審査請求日】2022-06-22
(32)【優先日】2019-02-06
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】バッヒャー、ウッツ
(72)【発明者】
【氏名】ブエントゲン、ラインハルト
(72)【発明者】
【氏名】モルジャン、ピーター
(72)【発明者】
【氏名】フランク、ヤーノシュ
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2017-130192(JP,A)
【文献】米国特許出願公開第2017/0177860(US,A1)
【文献】西島 剛,はじめてのDocker,初版,株式会社工学社,2016年04月25日,pp.7-10, 20-23, 25-26, 34-37, 68-70
【文献】佐藤 寛文,OverlayFSを用いたコンテナに対するサービス妨害攻撃の防止,コンピュータセキュリティシンポジウム2018論文集,一般社団法人情報処理学会,2018年10月25日,pp.38-45
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 9/455
G06F 21/60
G06F 21/62
G06F 21/53
(57)【特許請求の範囲】
【請求項1】
セキュア・ソフトウェア・コンテナを作成するためのコンピュータ実施方法であって、
第1の階層化ソフトウェア・コンテナ・イメージを提供することと、
前記第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換することであり、前記ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、前記変換することと、
前記レイヤの一部分のブロックの前記セットの各ブロックを暗号化することと、
前記ブロックの各暗号化セットを、前記第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックの前記セットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶することであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、前記記憶することとを含む、コンピュータ実施方法。
【請求項2】
前記ブロックの各暗号化セットを前記記憶することはまた、
前記第1の階層化ソフトウェア・コンテナ・イメージのメタデータを記憶することも含む、請求項1に記載の方法。
【請求項3】
前記暗号化コンテナ・イメージに記憶されている前記レイヤの各々はシン・プロビジョニングを適用し、シン・プロビジョニング・メタデータも含む、請求項1または2に記載の方法。
【請求項4】
前記暗号化コンテナ・イメージの前記レイヤの各ファイルの名前は、前記ファイルの内容のハッシュ値である、請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
仮想機械オペレーティング・システム、開始プログラム、および復号キーを提供することも含み、前記復号キーは、ブロックの前記セットの各ブロックの前記暗号化に使用されている暗号化キーに対応する、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
前記仮想機械オペレーティング・システムによ
る仮想機械の開始に有効であるセキュア・コンテナ実行環境を提供することも含む、請求項5に記載の方法。
【請求項7】
前記仮想機械の前記開始は、
前記復号キーを使用して前記暗号化コンテナ・イメージのブロックのセットを復号することを含む、請求項6に記載の方法。
【請求項8】
前記第1の階層化ソフトウェア・コンテナ・イメージのレイヤのシーケンスにおいて前記第1の階層化ソフトウェア・コンテナ・イメージを再構築することも含む、請求項7に記載の方法。
【請求項9】
前記復号されているセキュア・コンテナ・イメージの上のレイヤが、リード/ライト・アクセスを可能にし、最上レイヤの下の前記レイヤが、リード・オンリー・アクセスを可能にする、請求項8に記載の方法。
【請求項10】
前記セキュア・コンテナ実行環境は、権限のあるユーザまたは他のプロセスあるいはその両方による前記仮想機械へのアクセスを妨げるセキュア・ファームウェアによって保護され、前記仮想機械オペレーティング・システム、前記開始プログラムおよび前記復号キーが各々暗号化される、請求項6に記載の方法。
【請求項11】
前記セキュア・ファームウェアは、ハードウェア・セキュリティ・モジュールと協働する、請求項10に記載の方法。
【請求項12】
セキュア・ソフトウェア・コンテナを作成するためのセキュア・コンテナ・システムであって、
第1の階層化ソフトウェア・コンテナ・イメージを受信するように適合されている受信ユニットと、
前記第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換するように適合されている変換ユニットであり、前記ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、前記変換ユニットと、
前記レイヤの一部分のブロックの前記セットの各ブロックを暗号化するように適合されている暗号化モジュールと、
前記ブロックの各暗号化セットを、前記第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックの前記セットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶するように適合されている記憶ユニットであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、前記記憶ユニットとを備える、セキュア・コンテナ・システム。
【請求項13】
セキュア・ソフトウェア・コンテナを作成するためのコンピュータ・プログラムであって、プロセッサに、
第1の階層化ソフトウェア・コンテナ・イメージを提供することと、
前記第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換することであり、前記ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、前記変換することと、
前記レイヤの一部分のブロックの前記セットの各ブロックを暗号化することと、
前記ブロックの各暗号化セットを、前記第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックの前記セットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶することであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、前記記憶することと、
を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的に、セキュア・コンピューティングに関し、より詳細には、セキュア・ソフトウェア・コンテナを作成するためのコンピュータ実施方法に関する。本発明はさらに、セキュア・ソフトウェア・コンテナを作成するための関連するセキュア・コンテナ・システム、および、コンピュータ・プログラム製品に関する。
【背景技術】
【0002】
今日、IT(情報技術)産業においてはクラウド・コンピューティングが引き続き最も話題を集める主題となっている。個人、ならびに、小規模および中規模の会社と大企業は、大規模なクラウド・コンピューティング・センターを運営するクラウド・コンピューティング提供者にコンピューティング・タスクを外部委託し続けている。他方、IT産業における最も大きい関心事の1つが、データ・セキュリティである。したがって、私的コンピューティング環境、すなわち、企業コンピューティング・センターにおいて、セキュリティは重要な主題であり、結果、クラウド・コンピューティング環境におけるデータおよびコンピュータ・セキュリティの適合が、大企業の経営幹部レベルまで推し進められている。
【0003】
特にGDPR(欧州連合による一般データ保護規則)などの新たな行政機関データ・セキュリティ規則に照らして、データ・セキュリティ課題の一部は、例えばインターネットなどの公衆ネットワークを介してデータを送信している間に、または、記憶デバイスにデータを記憶するときに、あるいはその両方において、関連データを暗号化することによって対処することができる。しかしながら、データを処理する必要がある場合、データおよびプログラムは、クラウド・コンピューティング・センターの管理者によって多かれ少なかれアクセス可能であり得る。これは、データ・セキュリティ侵害につながる糸口と考えることができる。
【0004】
一方の側におけるクラウド・コンピューティング・リソースのより高頻度の使用と、他方におけるより高いデータ・セキュリティおよびデータ・プライバシー要件との間の対立の可能性に対処するための1つの試みは、例えば、ハードウェア・セキュリティ・モジュール(HSM)を使用した信頼できるコンピューティング環境の形態の、安全確保されたコンピューティング・プラットフォーム上で安全確保された仮想機械を使用し、厳密に境界を区切ってデータならびにアプリケーションおよび仮想機械(VM)の暗号化を可能にすることである。
【0005】
他方、仮想機械技術も進歩しており、頻繁に使用される現行技術の1つは、各コンテナの各仮想機械内のオペレーティング・システムの全体的なオーバーヘッドを伴わない、オペレーティング・システムに基づくスコーピング・サンドボックス内の複数のアプリケーションと基本的に考えることができる「コンテナ・コンピューティング」である。したがって、典型的にはオペレーティング・システムおよび関連ミドルウェアによって提供される多くの一般的なサービスを、1つのオペレーティング・システム内の複数の異なるコンテナの間で共有することができる。しかしながら、この結果として、セキュリティの観点から、コンテナのデータおよびプログラムが、他のITリソース(仮想機械など)と同様に管理することができなくなる可能性がある。
【0006】
ソフトウェア・コンテナに最も頻繁に使用されるプラットフォームの1つが、Docker Inc.製のDocker engineである。Linux環境において、これは、瞬く間にマイクロサービス・アプリケーションをパッケージするための標準となっているが、この技術はマイクロサービスのみに限定されない。基本的には、これは、分離および可搬性の特性を提供するために、容易に入手可能な商用のモノリシック・アプリケーションをパッケージするために使用することができる。
【0007】
この文脈において、一連の刊行物が作成されている。米国特許出願公開第2018/0309747号明細書は、セキュリティ・モジュールと同時に作動するエージェント・エグゼクティブが、最初に実行されるときに、ユーザからエージェントAPIキーを取得する、コンピュータ・システムおよび方法を開示している。このキーは、グリッド・コンピューティング・システムに通信される。一般的に、APIキーが有効であるときの暗号トークン生成プロトコルによるエージェント識別トークンが、グリッドから受信され、エージェント・エグゼクティブと関連付けられるセキュア・データ・ストアに記憶される。エージェント・エグゼクティブの完全性を評価する情報が、エージェント自己検証ファクタを使用して収集される。
【0008】
他方、国際公開第2018/007213号パンフレットから、キーセットによって暗号化されているデータを記憶するセキュア記憶領域を含むDockerイメージを安全に管理する方法が知られている。Dockerイメージはセキュア・ドライバを含み、方法は、以下の一連のステップを含む。すなわち、(i)セキュア・ドライバに提供される入来する認証情報が目下の認証情報と一致する場合にのみ、セキュア・ドライバが信頼できるストアからキーセットを取り出す。(ii)セキュア・ドライバがセキュア記憶領域にアクセスし、キーセットを使用してデータを復号する。(iii)セキュア・ドライバがデータをDockerイメージの外部に送信する。
【0009】
しかしながら、一方におけるソフトウェア・コンテナの的確な管理と、他方におけるセキュリティ課題との間には、まだ隔たりが残っている。したがって、提案される概念の目的は、ソフトウェア・コンテナにおけるデータおよびアプリケーションのセキュリティを向上させることを可能にすることである。
【発明の概要】
【0010】
本発明の一態様によれば、セキュア・ソフトウェア・コンテナを作成するためのコンピュータ実施方法を提供することができる。方法は、第1の階層化ソフトウェア・コンテナ・イメージを提供することと、第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換することとを含むことができる。ボリュームは、ブロックのセットを含むことができ、各レイヤは、次により低いレイヤに対する漸進的な差を含むことができる。方法は、レイヤの一部分のブロックセットの各ブロックを暗号化することと、各暗号化ブロックセットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶することとをさらに含むことができる。それによって、セキュア暗号化ソフトウェア・コンテナを作成することができる。
【0011】
本発明の別の態様によれば、セキュア・ソフトウェア・コンテナを作成するためのセキュア・コンテナ・システムを提供することができる。セキュア・コンテナ・システムは、第1の階層化ソフトウェア・コンテナ・イメージを受信するように適合されている受信ユニットと、第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換するように適合されている変換ユニットであって、ボリュームは、ブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、変換ユニットと、レイヤの一部分のブロックセットの各ブロックを暗号化するように適合されている暗号化モジュールと、各暗号化ブロックセットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶するように適合されている記憶ユニットとを備えることができる。したがって、セキュア・コンテナ・システムは、セキュア暗号化ソフトウェア・コンテナを作成することを可能にされ得る。
【0012】
セキュア・ソフトウェア・コンテナを作成するための提案されているコンピュータ実施方法は、複数の利点および技術的効果を提供することができる。
【0013】
提案される概念は、少なくとも、3つの重要なデータおよびアプリケーションのセキュリティ要件を与える。第1に、それらのメモリを含む仮想機械の内容を権限のある管理者(ハイパーバイザ管理者であっても)から隠す技法を使用することによって、コンテナ・ホスト視点およびその権限のあるシステム管理者からは、何者もコンテナのイメージの内容、すなわち、ソフトウェア・コンテナ・ファイルを見て理解することができないことが達成される。また、メモリ内で実行するコンテナへのアクセスを防止することができ、結果として、コンテナが秘密裏に、かつセキュアに実行される。
【0014】
第2に、コンテナ・イメージおよびその管理者のいずれかを記憶するために使用されるレジストリは、コンテナ・イメージの内部で行われていることの理解から除外される。また、一般的に、制御不可能な多くの態様においてコンテナ・イメージにアクセスすることができる人のグループは、管理されているソフトウェア・コンテナの実際の内容の理解から除外され得る。例えば、それらの人々は、ファイルまたは実行可能コードまたはデータを理解し、見ることはできない。第3の中核的な利点として、階層化、使用される重複排除手法(例えば、CoW[コピー・オン・ライト]、シン・プロビジョニング)などのようなコンテナ・イメージ属性、および、ソフトウェア・コンテナの管理の典型的な態様などの典型的な処理を保存することができることが言及され得る。コンテナの不変の管理および処理によって、使用されているコンテナ・イメージの暗号化以外に全体的なソリューションに変更を加えることなく、既存のソリューションの機密レベルを向上させることが可能であり得る。
【0015】
したがって、提案される概念は、通常の権限を有する管理者がアクセスすることができる環境においてソフトウェア・コンテナ作業負荷を実行することを可能にし、ソフトウェア・コンテナ・イメージの内容の機密をセキュアなままにすることができる。したがって、例えば、システム管理者を信頼することができない、信頼できないコンピューティング環境も使用することができ、ソフトウェア・コンテナの作成者以外の何者も、実行中のその主記憶装置/RAMを含む、プログラム・コード、ファイルおよびデータを見ることができないことを依然として保証することができる。
【0016】
この概念は、そのセキュリティ・キーをソフトウェア・コンテナの動作上の利点のより多大な欠如および損失を代償にしてのみ増大し得る、仮想機械のセキュアな実行を超える。仮想機械の文脈において、セキュアな実行なしには、ソフトウェア・コンテナの内容の機密を保証することができないということが、今日までに認知されている。提案される概念は、この隔たりを埋め、単なる名前空間およびさらには保護されていない仮想機械の保護を明確に超えて、ソフトウェア・コンテナの隔離された作業空間を提供する。
【0017】
以下において、方法および関連システムに適用可能な、本発明の概念の追加の実施形態を説明する。
【0018】
方法の1つの好ましい実施形態によれば、各暗号化ブロックセットを記憶することはまた、第1の階層化ソフトウェア・コンテナ・イメージのメタデータを記憶することを含むこともできる。メタデータは、環境変数、コマンド、使用されるポートなどを含んでもよい。メタデータは、暗号化されてもよく、または、暗号化されなくてもよい。しかしながら、たとえメタデータが暗号化されなくとも、権限のない人間はセキュア・ソフトウェア・コンテナの実際の内容について何も言うことができない。
【0019】
方法の1つの有利な実施形態によれば、暗号化コンテナ・イメージ内に、すなわち、ファイルとして記憶されるレイヤの各々は、シン・プロビジョニングを適用することができ、また、例えば、それに関してブロックが有効なデータを有するシン・プロビジョニング・メタデータを含むこともできる。これによって、実際に有効なアクティブ・データを保持する記憶領域のみが実際に占有される、シン・プロビジョニングの利点をもたらすことができる。
【0020】
方法の1つの有用な実施形態によれば、暗号化コンテナ・イメージのレイヤの各ファイルの名前は、ファイルの内容のハッシュ値である。したがって、追加のメタデータは要求され得ない。ファイル上の内容のエントロピーによって、この提案されている方法ステップを使用して一意のファイル名を生成することができるとみなすことができる。
【0021】
有利な実施形態によれば、方法はまた、仮想機械オペレーティング・システム、特にセキュア・ソフトウェア・コンテナの開始プログラムおよび復号キーを提供することを含むこともできる。復号キーは、ブロックセットの各ブロックの暗号化に使用されている暗号化キーに対応することができる。したがって、セキュア・ソフトウェア・コンテナを解凍することができ、レイヤを元のシーケンスに戻すことができ、セキュア・ソフトウェア・コンテナに含まれるアプリケーションを開始することができる。
【0022】
別の有利な実施形態によれば、方法はまた、仮想機械オペレーティング・システムによる仮想機械の開始に有効であるセキュア・コンテナ実行環境を提供することを含むこともできる。このように、セキュア・ソフトウェア・コンテナにパッケージされているアプリケーションの実行を実際に開始させる構成要素のスタックを完成させることができる。その上、セキュア・コンテナ実行環境はまた、実質的に侵害することが不可能であり得るように、保護することもできる。
【0023】
完全を期すために、方法の1つの好ましい実施形態によれば、仮想機械の開始は、復号キーを使用して暗号化コンテナ・イメージのブロックセットを復号することを含むことができる。セキュア・ソフトウェア・コンテナの内部のアプリケーションの所有者のみが、キーにアクセスすることができる。したがって、セキュア・ソフトウェア・コンテナの復号バージョンを提供することと、必要な環境を見ることは、一度に自動的に実施することができる。
【0024】
1つの付加的に好ましい実施形態によれば、方法はまた、第1の階層化ソフトウェア・コンテナ・イメージのレイヤのシーケンスにおいて第1の階層化ソフトウェア・コンテナ・イメージを再構築することを含むこともできる。非暗号化ソフトウェア・コンテナのレイヤの元の順序を示す、同様に含まれるメタデータが、この方法ステップにとって有用であり得る。
【0025】
方法の1つの許容可能な実施形態によれば、復号されているセキュア・コンテナ・イメージの上の、すなわち、再構築されている第1の階層化ソフトウェア・コンテナ・イメージの上のレイヤが、リード/ライト・アクセスを可能にすることができ、この最上レイヤの下のレイヤが、リード・オンリー・アクセスを可能にする。したがって、シン・プロビジョニング・モデルによれば、コピー・オン・ライト・パラダイムにしたがって、書き込み動作はファイルの以前のバージョンに対する差分または差が記憶される最上レイヤにおいてのみ実施されればよい。上レイヤからすべての他のレイヤを通じて下レイヤに向かって、仮想的な意味において垂直に見ることによって、それぞれのファイルの最新バージョンを再構築するためのすべての情報が伝達される。
【0026】
請求項5に記載の、1つのさらなる先進的で有利な方法の実施形態によれば、セキュア・コンテナ実行環境は、典型的には、ハードウェア・セキュリティ・モジュール(HSM)、すなわち、暗号カードを使用して、権限のあるユーザまたは他のプロセスあるいはその両方による仮想機械へのアクセスを妨げるセキュア・ファームウェアによって保護され、仮想機械オペレーティング・システム、開始プログラムおよび復号キーも、各々暗号化される。
【0027】
したがって、方法の別の有利な実施形態によれば、セキュア・ファームウェアは、ハードウェア・セキュリティ・モジュールと協働する。この技法は、仮想機械ならびに関連するソフトウェア・コンテナ内のアプリケーションおよびデータの最もセキュアな実行環境をもたらすことができる。そのようなセキュリティ・モジュールは、セキュア・ファームウェアを実行するための必須の要件である。そのようなハードウェア・ベースのデバイスがなければ、セキュア・ファームウェアも、ハイパーバイザも、仮想機械も、ソフトウェア・コンテナのアプリケーションも、実行可能ではあり得ない。
【0028】
さらに、実施形態は、コンピュータまたは任意の命令実行システムによって、または、それらに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能な、関連するコンピュータ・プログラム製品の形態をとることができる。本明細書の目的のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用するための、またはそれらに関連するプログラムを記憶、通信、伝播、または輸送するための手段を含むことができる任意の装置とすることができる。
【0029】
本発明の実施形態は、複数の異なる主題を参照して説明されていることに留意されたい。特に、いくつかの実施形態は、方法タイプの請求項を参照して説明されており、一方、他の実施形態は、装置タイプの請求項を参照して説明されている。しかしながら、当業者には、上記および以下の説明から、別途注記されない限り、1つのタイプの主題に属する特徴の任意の組合せに加えて、異なる主題に関係する特徴間の、特に、方法タイプの請求項の特徴、および装置タイプの請求項の特徴の間の任意の組合せも、本明細書内に開示されていると考えられることが推測される。
【0030】
本発明の上記で規定された態様およびさらなる態様が、以下に記載される実施形態の例から明らかになり、実施形態の例を参照しながら説明されるが、本発明はそれらに限定されない。
【0031】
例としてのみ、添付の図面を参照して本発明の好ましい実施形態を説明する。
【図面の簡単な説明】
【0032】
【
図1】セキュア・ソフトウェア・コンテナを作成するための本発明のコンピュータ実施方法の一実施形態のブロック図である。
【
図2】非暗号化ソフトウェア・コンテナからコンテナ・ライブラリに記憶可能な暗号化ソフトウェア・コンテナへの変換プロセスのブロック図である。
【
図3】セキュア・ソフトウェア・コンテナを実行するための関連する要素の完全なスタックの一実施形態のブロック図である。
【
図4】セキュア・ソフトウェア・コンテナにおけるシン・プロビジョニングおよびブロックの連結を示す図である。
【
図5】セキュア・ソフトウェア・コンテナを形成するためのフローチャートの第1の部分の一実施形態を示す図である。
【
図6】セキュア・ソフトウェア・コンテナを形成するためのフローチャートの第2の部分の一実施形態を示す図である。
【
図7】セキュア・ソフトウェア・コンテナを実行するためのフローチャートの第1の部分の一実施形態を示す図である。
【
図8】セキュア・ソフトウェア・コンテナを実行するためのフローチャートの第2の部分の一実施形態を示す図である。
【
図9】セキュア・コンテナ・システムの一実施形態のブロック図である。
【
図10】セキュア・コンテナ・システムを備えるコンピューティング・システムのブロック図である。
【発明を実施するための形態】
【0033】
本明細書の文脈において、以下の慣例、用語または表現あるいはその組合せが使用され得る。
【0034】
「セキュア・ソフトウェア・コンテナ」という用語は、権限のない人員による許可されていないアクセスに対して安全確保されているソフトウェア・コンテナを示すことができる。したがって、ソフトウェア・コンテナの内容は、権限のない人員が、ソフトウェア・コンテナの内部に記憶されているものを判定することが可能でないように、暗号化することができる。基本的に、ソフトウェア・コンテナは、アプリケーションに使用されるオペレーティング・システム・スコーピング・メカニズムによって提供されるサンドボックスと考えることができる。これらのサンドボックス内のアプリケーションは、オペレーティング・システムの残りの部分または他のコンテナ・サンドボックスからは見えない。すべてのアプリケーション・サンドボックスは同じオペレーティング・システム・インスタンス上で作動するため、コンテナ・サンドボックス内でアプリケーションを作動するときに生成されるオーバーヘッドは、これらのアプリケーションをオペレーティング・システム下のアプリケーションとして直接的に作動させるときと比較して、最小限である。具体的には、仮想化オーバーヘッドは適用されない。したがって、ソフトウェア・コンテナは、最終的には関連するメタデータとともに、単にコンテナ・サンドボックス内で実行されるアプリケーション、すなわち、1つのコンテナ・サンドボックスを別のコンテナ・サンドボックスから区別する中核的な機能と考えることができる。コンテナ技術において、コンテナ・イメージは、コンテナ・インスタンスに提示されるすべてのファイルを含む、アプリケーションの変更不可能なパッケージングを表す。これは、コンテナ・インスタンスの間で共有することができ、また、他のコンテナ・ホストと交換することもできるアプリケーションの「青写真」である。コンテナ・インスタンスは、コンテナ・イメージをその(ルート)ファイル・システムの開始点として使用する、作動しているコンテナである。現在、Dockerが第一級のソフトウェア・コンテナ技術であると考えることができる。
【0035】
セキュア・ソフトウェア・コンテナのすべてのレイヤを暗号化する必要があり得るとは限らないことも留意され得る。例えばオペレーティング・システム(例えばUbuntu)の構成要素など、共通のソフトウェア構成要素を含むレイヤは暗号化されないままにすることができる。これらの構成要素は、複数のコンテナにとって共通であり得、結果、それらの機能はいずれにせよ知ることができるため、暗号化は不要とすることができる。しかしながら、中核的なアプリケーション・ブロックおよび関連するデータは、ソフトウェア・コンテナの特徴的な構成要素と考えることができる。したがって、これらの特徴的な構成要素は、セキュア・ソフトウェア・コンテナの一部として暗号化することができる。しかしながら、完全を期すために、無論、ソフトウェア・コンテナのすべてのレイヤが暗号化されてもよいことが留意され得る。複数のソフトウェア・コンテナに共通であり得る部分を、コンテナの中核的な部分、すなわち、アプリケーションと比較して別の暗号化方法(例えば別のキーのみ、または、まったく異なる暗号化方法も)を用いて暗号化することも可能であり得る。
【0036】
「第1の階層化ソフトウェア・コンテナ・イメージ」という用語は、それによってソフトウェア・コンテナを定義することができるレイヤのスタックを示すことができる。複数の異なるレイヤに使用されるストレージ技術は、シン・プロビジョニング/スペア・ストレージに基づくことができる。アプリケーションは最上レイヤへのライト・アクセス(およびリード・アクセス)のみが可能であり得る。最上レイヤの下のレイヤはリード・オンリーであり得る。
【0037】
「メタデータ」という用語は「データに関するデータ」を示すことができる。ここで、メタデータは、ブロックに基づくセキュア・ソフトウェア・コンテナを復号した後に初期ソフトウェア・コンテナを再構築するための、ソフトウェア・コンテナの複数の異なるレイヤに関する、特に複数の異なるレイヤの正確な順序に関する情報を含むこともできる。
【0038】
「ボリューム」という用語は、ここでは、仮想記憶デバイスの形態の記憶システムを示すことができる。これは、データ・ブロックの集合によって構成される。ボリュームが仮想である場合、そのデータのすべてが、その仮想ボリュームとして機能するファイルによって支援される。シン・プロビジョニング・メカニズムを使用するとき、それに従って未使用データ・ブロックをボリューム内でマークすることができ、その結果として、仮想ボリュームにサービスするファイルの空間消費を低減することができる。
【0039】
「ブロックセット」という用語は、例えば、記憶デバイスの連結されているブロックの連続的なシーケンスなど、記憶ブロックのグループを示すことができる。
【0040】
「漸進的な差」という用語は、セキュア・ソフトウェア・コンテナの2つの異なるレイヤの間の差分を示すことができる。この概念は、典型的には、シン・プロビジョニング概念において使用され得る。複数の異なるレイヤから成るシーケンスを新たなデータまたは更新されたデータあるいはその両方のシーケンスに反映することができる場合、情報全体(アプリケーションおよび関連するデータ)を再構築することができる。漸進的な差の概念を使用することによって、実際に必要な記憶容量のみを使用すること、すなわち、シン・プロビジョニングが可能になるが、レイヤあたりのブロックは実質的にはるかにより大きい空間(特定のレイヤまたはボリュームの記憶限界まで)を提供することができる。
【0041】
「レイヤの部分」という用語は、ソフトウェア・コンテナのレイヤの総数よりも小さいものであり得るいくつかの数のレイヤを示すことができる。上記で言及したように、ソフトウェア・コンテナのすべてのレイヤを暗号化することは不要であり得る。標準的なソフトウェア構成要素(例えば、オペレーティング・システムの一部)を含むいくつかのより低いレイヤは、暗号化されないままとすることができる。しかしながら、他の実施形態において、これらのレイヤもまた暗号化されてもよい。
【0042】
「暗号化コンテナ・イメージ」という用語は、暗号化形態の第1の階層化ソフトウェア・コンテナ・イメージの情報を含むことができるセキュア・ソフトウェア・コンテナのレイヤのシーケンスを示すことができる。
【0043】
「ブロックセットの順序」という用語は、セキュア・ソフトウェア・コンテナの複数の異なるレイヤを再構築するためのブロックのシーケンスを示すことができる。
【0044】
「セキュア暗号化ソフトウェア・コンテナ」という用語は、ここでは、セキュア・ソフトウェア・コンテナを示すことができる。セキュア・ソフトウェア・コンテナが暗号化レイヤを含むと言う事実は、本明細書内では当然のことと考えることができる。
【0045】
「シン・プロビジョニング」という用語は、実際に利用可能であるよりも多くの物理リソースを有するように見えるように仮想化技術を使用することを示すことができる。システムが仮想化リソースを常に最大限に支援する場合、すべての容量が最初に提供されなければならない。シン・プロビジョニングという用語は、ディスク・レイヤに適用することができるが、任意のリソースの配分方式を参照してもよい。例えば、コンピュータ内の現実のメモリは、典型的には、仮想化を行う何らかの形態のアドレス変換技術によってタスクを実行するためにシン・プロビジョニングすることができる。各タスクは、現実のメモリが配分されているかのように機能することができる。配分される仮想メモリの総和を、典型的には現実のメモリの合計を超えることができるタスクに割り当てることができる。これは、レイヤおよびソフトウェア・コンテナに適用することができる。シン・プロビジョニングはまた、文脈によっては、「スパース・ボリューム」と呼ばれる場合もある。
【0046】
「ハッシュ値」という用語は、任意のサイズのデータを固定サイズのデータにマッピングするのに使用することができるハッシュ関数の結果を示すことができる。ハッシュ関数によって返される値は、ハッシュ値、ハッシュ・コード、ダイジェスト、または単純にハッシュと呼ばれる。ハッシュ関数は、迅速なデータ検索のためにコンピュータ・ソフトウェアにおいて使用される一般的なデータ構造であるハッシュ・テーブルと組み合わせて使用されることが多い。ハッシュ関数は、大きいファイル内の重複するレコードを検出することによってテーブルまたはデータベースの検索を加速させる。1つのそのような用途は、DNA配列内の類似の区間を発見することである。ハッシュ値の計算は一方向的な手法であるため、ハッシュ値から元の値を一意に判定することはできない。しかしながら、この技法は、暗号学において広く使用されている。
【0047】
「仮想機械オペレーティング・システム」という用語は、ハイパーバイザ上で実行されている仮想サーバの仮想機械の構成要素であるオペレーティング・システムを示すことができる。異なる仮想機械オペレーティング・システムは、他の仮想機械オペレーティング・システムの機能に影響を及ぼし得ない。この技術は、Linuxに基づくオペレーティング・システムに広く使用することができる。しかしながら、メインフレームおよびミッドレンジのオペレーティング・システムも、この技術を使用することができる。
【0048】
「開始プログラム」という用語は、セキュア・ソフトウェア・コンテナの実行開始を始動することを可能にされているプログラムを示すことができる。開始プログラムはまた、復号化プロセスの始動、および、第1の階層化ソフトウェア・コンテナの元のレイヤを再構築するための復号されているブロックの並べ替えを引き継ぐこともできる。
【0049】
「復号キー」という用語は、いかなる復号機能もなしに読み出すことができるように、暗号化コンテキストをその元のコンテキストにリセットするのに有用なソフトウェア構成要素を示すことができる。したがって、これはクリア・テキストであり得る。
【0050】
「セキュア・コンテナ実行環境」という用語は、セキュア暗号化ソフトウェア・コンテナ、または同じくセキュア暗号化ソフトウェア・コンテナ・イメージを受け入れ、それに基づいてコンテナ・インスタンスを作動させることができるソフトウェア構成要素を示すことができる。コンテナを、ちょうどこのコンテナを作動させるように作成されている仮想機械において作動させることを選択することができる。仮想機械は、仮想機械を始動するとハイパーバイザにもなるセキュア・コンテナ実行環境の権限のある管理者が、コンテナを作動させている仮想機械の内部のデータにアクセスすることができなくなるように、安全確保することができる。セキュア暗号化ソフトウェア・コンテナ(イメージ)の復号を可能にするために、(仮想機械)オペレーティング・システムに提供することができる復号キーを使用し、コンテナ・インスタンスの立ち上げ中にプログラムを開始することができる。
【0051】
「ハードウェア・セキュリティ・モジュール」(HSM)という用語は、強力な認証のためのデジタル・キーを保護および管理し、暗号処理を提供することができる物理コンピューティング・デバイスを示すことができる。これらのモジュールは従来通り、コンピュータもしくはネットワーク・サーバ、または直接的にCPUに取り付けられるプラグイン・カードまたは外部デバイスの形態で実現することができる。
【0052】
「Dockerコンテナ」という用語は、コンテナ化としても知られる、オペレーティング・システム・レベルの仮想化の一例を示すことができる。これは、カーネルが複数の分離されたユーザ空間インスタンスの存在を可能にすることができるオペレーティング・システム機能を示すことができる。(ソフトウェア)コンテナ、パーティション、仮想環境(VE)またはジェイル(FreeBSDジェイルまたはchrootジェイル)と呼ばれる、そのようなインスタンスは、それらの中で作動しているプログラムの視点からは現実のコンピュータのように見え得る。通常のオペレーティング・システム上で作動しているコンピュータ・プログラムは、そのコンピュータのすべてのリソース(接続されているデバイス、ファイルおよびフォルダ、ネットワーク・シェア、CPU電力、量子化可能なハードウェア能力)を見ることができる。しかしながら、コンテナ内部で作動しているプログラムは、コンテナの内容およびコンテナに割り当てられているデバイスしか見ることができない。したがって、コンテナは、仮想機械の互いに対する分離と同様に、互いに対して分離することができる。ここで提案される概念は、有利にはDockerコンテナによって実施することができる。
【0053】
以下に、図面の詳細な説明を与える。図面内のすべての指示は概略である。最初に、セキュア・ソフトウェア・コンテナを作成するための本発明のコンピュータ実施方法の一実施形態のブロック図が与えられる。その後、さらなる実施形態、および、セキュア・ソフトウェア・コンテナを作成するためのセキュア・コンテナ・システムの実施形態を説明する。
【0054】
図1は、例えば、セキュアDockerコンテナなど、セキュア・ソフトウェア・コンテナを作成するためのコンピュータ実施方法100の一実施形態のブロック図を示す。方法は、特に「差分に基づく」、すなわち、シン・プロビジョニングに基づくレイヤを含むイメージなど、第1の階層化ソフトウェア・コンテナ・イメージを提供すること102を含むことができる。
【0055】
方法100は、さらに、第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルを、特にファイル・システムを含むボリュームなどのボリュームに変換すること104を含む。ボリュームは、特に記憶ディスクによって管理されるブロックなど、ブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む。メタデータは特に、コンテナに対処する方法、すなわち、複数の異なるレイヤがどのように互いに関係するかを説明する、すべての必要なメタデータであることも言及され得る。
【0056】
加えて、方法100は、レイヤの一部分のブロックセットの各ブロックを暗号化すること106を含む。これは、安全確保されたコンテナの作成者のみが知る暗号化キーを使用することによって実施することができる。すべてのレイヤを暗号化する必要があるとは限らないことも留意され得る。特に、すべてのソフトウェア・コンテナについて同一であるレイヤは、暗号化しなくてもよい。一例は、例えば「Ubuntuレイヤ」などの基本オペレーティング・システム・レイヤであり得る。
【0057】
さらに、方法100は、各暗号化ブロックセットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックセットの順序を再構築するための非暗号化メタデータ(例えば、親レイヤへのポインタ)とともに、特にファイルとして表される暗号化コンテナ・イメージのレイヤとして記憶すること108を含む。この結果として、元のソフトウェア・コンテナ、すなわち、第1の階層化ソフトウェア・コンテナ・イメージのレイヤの数と同じ数のブロック・デバイスがもたらされる。それによって、セキュア暗号化階層化ソフトウェア・コンテナが作成される。
【0058】
図2は、非暗号化ソフトウェア・コンテナ202からコンテナ・ライブラリに記憶可能な暗号化ソフトウェア・コンテナへの変換プロセスのブロック
図200を示す。個々のレイヤ204としても示されている第1の階層化ソフトウェア・コンテナ・イメージ202は、同じく複数の異なるレイヤ210を含むセキュア・ソフトウェア・コンテナ208に変換される。変換は、変換ツール206を使用して実施され、湾曲した矢印206aによって示される。ソフトウェア・コンテナ202は暗号化されておらず、一方、セキュア・ソフトウェア・コンテナ208は暗号化レイヤ210を有する。これらは、コンテナ・リポジトリ212内に記憶することができる。またここで、レイヤ210を有するセキュア・ソフトウェア・コンテナ208も示されており、一例は、記号形態のレイヤ210を有するものである。
【0059】
図3は、セキュア・ソフトウェア・コンテナ208を実行するための関連する要素の完全なスタック300の一実施形態のブロック図を示す。仮想機械302のセキュア実行プラットフォーム、または代替的に、仮想機械においてコンテナを作動させるセキュア・コンテナ実行環境に基づいて、コンテナ・エンジン304が、ソフトウェア・コンテナを動作させるための基本要件を管理する。完全を期すために、セキュア・ソフトウェア・コンテナ208(明示的には示されていない)が、特に最上のリード/ライト・レイヤなどのそのレイヤ210とともに、暗号化形態で示されている。このコンテナ・エンジン304は、ハイパーバイザ308を含むコンテナ・ランタイム環境306を呼び出す。その後、ハイパーバイザ308は、ソフトウェア・コンテナ208のレイヤ内の、特にオペレーティング・システム・カーネルなどのカーネル310を開始する。矢印312は、レイヤ210を有するセキュア・ソフトウェア・コンテナ208のコンテナ・エンジンから仮想機械314への動きを示すことができ、仮想機械において、これは復号されて、実行可能な復号された(d)コンテナ・レイヤ・スタック204(d)(明示的には示されていない)の復号された形態のレイヤ204になる。
【0060】
ハードウェア・セキュリティ・モジュールの使用、または、例えばルート・ユーザなどの権限のあるハイパーバイザ管理者が仮想機械のデータにアクセスし得ないように仮想機械を作動させるための任意の他の技術などの、仮想機械のセキュアな実行のための技術を適用することができる場合、仮想機械314は信頼できる環境であることが留意され得る。
【0061】
図4は、セキュア・ソフトウェア・コンテナにおけるシン・プロビジョニングおよびブロックの連結を示す。左上側のレイヤ402、404、406、408(
図4(a))は、ソフトウェア・コンテナ・イメージのレイヤのシーケンスであり得る。最下レイヤ402は、ファイル410Aを含み、次に上側のレイヤ404は、ファイル412Bを含む。ファイル410Aが更新(変更)された場合、これは、ファイル414A’として新たなレイヤ406に書き込まれる。この時点において、レイヤ406がレイヤ406へのリード、および、特にライト・アクセスを可能にする最上レイヤであり得る。ソフトウェア・コンテナの完全な元の内容は、最上レイヤ406を介して始まってレイヤ414を介してレイヤ402へと進む、複数の異なるレイヤを通じた垂直視を基本的に表す408において認識することができる。
【0062】
右上側(
図4(b))において、スペア・ブロック・デバイス416、418、420、422へのマッピングが示されている。複数の異なるレイヤに示されている黒色ボックスは、スペア・ブロック・デバイス内のレイヤ402、404、406のデータを担持するブロックを表すことができ、クライアント・キーによって暗号化することができる。したがって、
図4(b)のスタックは、セキュア・ソフトウェア・コンテナのデータを表すことができる。すべての暗号化ブロック・デバイス・ファイルは、ファイルとして対応する新たなコンテナ・レイヤに書き込まれる。これらのレイヤは、3つのファイルを含むことができる。それらの自動的に生成される名前は、そのファイル、すなわち、(i)内容ファイル(ブロックごとの暗号化スペア・ブロック・ループバック・デバイス・ファイル)、(ii)先行するレイヤのハッシュ(すなわち、先行するレイヤのファイル名を参照するape)のみを含む親ファイル、(iii)環境変数、ポート設定などのような、関連するレイヤに追加されるコンテナ・イメージ・メタデータを含むメタデータ・ファイル(これは任意選択であってもよい)の対応する内容のハッシュに基づく。この最後のファイルはまた、任意選択的に暗号化されてもよい。
【0063】
すべてのレイヤが重なり合ってマウントされる場合、すべてのファイルが見えることになる。総計親ファイアウォールは、ブロック・デバイス・ファイルを正しい順序において互いに重ね合わせてマウントすることを可能にするレイヤの依存関係グラフを記述する。これは、
図4(c)に示されている。湾曲した矢印は、それぞれの親レイヤのハッシュ・アドレスの指示機能を示す。
【0064】
図5は、セキュア・ソフトウェア・コンテナを形成するためのフローチャート500の第1の部分の一実施形態を示す。最初に、スペア・ループバック・デバイス・ファイルが作成される502。次いで、ループバック・デバイス・ファイル内にファイル・システムが作成される504。ソフトウェア・コンテナのレイヤの底部から開始して、第1の(元の)階層化ソフトウェア構成要素のイメージの次のレイヤ「L」が識別され、その後、スペア・ループバック・デバイス・ファイル「D」が作成される508。デバイス・マッパが使用されて、ループバック・デバイス・ファイルの先行するスタックの上にループバック・デバイス・ファイル「D」が追加される510。したがって、書き込み動作は「D」に進み、要求されるオフセットにおいてブロックが見つかるまで、レイヤのスタックを通じてすべての読み出し動作がこれを要求する(512参照)。
【0065】
次いで、マウント点におけるループバック・デバイス・ファイルのスタックに対するマウント動作が実施される514。次に、「L」のすべての内容がマウント点(これらの変更を「D」に書き込む)に追加される516。最後ではあるが最も重要なこととして、マウント点がアンマウントされる518。ステップ506~518は、すべてのイメージ・レイヤについて実施される。
【0066】
図6は、セキュア・ソフトウェア・コンテナを形成するための
図5のフローチャート500の第2の部分600の一実施形態を示す。フローチャートは、「D」のスペア・ループバック・デバイスを識別すること602によって継続し、それによって、最下レイヤから開始する。次いで、「D」が暗号化され、「D」の暗号化バージョン「E」が作成される604。これは、フローチャートの左側のループバック矢印によって示されるように、すべてのイメージ・レイヤについて行われる。
【0067】
次いで、スペア・ループバック・デバイス・ファイル「D」が識別され、ここでもまた、プロセスは最下レイヤから開始する(606)。次に、「E」のハッシュ値「H」が作成される608。次のステップにおいて、再び、最下レイヤから開始して、元のイメージ・レイヤ「L」による識別が実施される610。612において、新たなコンテナ・イメージ・レイヤ「M」が任意の既存の新たなコンテナ・イメージ・レイヤの上に作成される。次いで、「E」の内容を「H」内容と呼ばれる新たなファイルに入れることによって、「M」内のファイルが作成される614。また、「L」の任意のメタデータ情報を新規ファイル「H」メタデータに入れることによって、「M」内のファイルが作成される616。
【0068】
次に、「L」が最下レイヤであるか否かが判定される618。そうでない場合(「N」)、先行するハッシュ値(すなわち、先行する「E」の先行する「H」)を「H」親と呼ばれる新たなファイルに入れることによって、「M」内のファイルが作成される620。判定618が真である場合、すなわち「Y」の場合、プロセスは、スパース・ループバック・デバイス・ファイル「D」を識別するステップ606へとループバックし、すべてのイメージ・レイヤについてこのループを繰り返す。
【0069】
図7は、セキュア・ソフトウェア・コンテナを実行するためのフローチャート700の第1の部分の一実施形態を示す。最初に、ホストのコンテナ・エンジンが、すべてのレイヤ「E」を互いに重ね合わせてマウントして、コンテナ・ファイル・システムを組み立てる702。次のステップにおいて、ホスト内の内容エンジンが、空のリード/ライトをコンテナ・ファイル・システムにマウントする704。次いで、コンテナ・ファイル・システムが、「セキュア実行」仮想機械を作成し706、その後、ファイル・システムが仮想機械に提供される708。コンテナ・エンジンが、ユーザによって提供されるカーネル、および、initrd、initなどのコマンドならびにクライアント・キーを読み出して、暗号化ソフトウェア・コンテナ、すなわち、その内容を復号する710。
【0070】
VMが、ユーザによって提供されるカーネル/initrd(「initrd」はブート・プロセス中にLinuxカーネルによって使用される一時ファイル・システムである初期RAMディスクを表す)をブートし712、ユーザによって提供されるinitプロセス、すなわち、始動プロセス/コマンドを開始する714。次いで、フローチャートは
図8において継続する。
【0071】
図8は、セキュア・ソフトウェア・コンテナを実行するためのフローチャート700(
図7参照)の第2の部分800の一実施形態を示す。initプロセスが、「H」親ファイルに基づいてレイヤの順序を作成し直し802、initプロセスが、ユーザによって提供されるクライアント・キーを用いて、すべての「H」内容ファイルをオン・ザ・フライで(例えば、「dm-crypt」、すなわち、Linuxカーネルのデバイス・マッパの暗号モジュールを使用して)復号する804。さらに、initプロセスが、復号されているスパース・ループバック・デバイスを正しい順序で組み立て806、リード・オンリーであるすべての他のレイヤの上でリード/ライト・スパース・ループバック・デバイス・ファイルを組み立てる808。
【0072】
加えて、initプロセスは、再びクライアントによって提供される復号キーを使用して、リード/ライト・ループバック・ファイルを新たな「H」内容ファイルとして暗号化する810。最後ではあるが最も重要なこととして、initプロセスは、最上リード・オンリー・レイヤを参照する新たな「H」親ファイルを暗号化する812。
【0073】
完全を期すために、
図9は、セキュア・コンテナ・システム900の一実施形態のブロック図を示す。システム900は、第1の階層化ソフトウェア・コンテナ・イメージを受信するように適合されている受信ユニット902と、第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルを、ブロックのセットを含むボリュームに変換するように適合されている変換ユニット904であって、各レイヤは、次により低いレイヤに対する漸進的な差を含む、変換ユニット904とを備える。
【0074】
加えて、システム900は、レイヤの一部分のブロックセットの各ブロックを暗号化するように適合されている暗号化モジュール906と、各暗号化ブロックセットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶するように適合されている記憶ユニット908とを備える。それによって、セキュア暗号化ソフトウェア・コンテナが作成される。
【0075】
本発明の実施形態は、プログラム・コードを記憶または実行しあるいはその両方を行うのに適しているプラットフォームにかかわらず、実質的に任意のタイプのコンピュータとともに実施することができる。
図10は、一例として、提案されている方法に関係するプログラム・コードを実行するのに適したコンピューティング・システム1000を示す。
【0076】
コンピューティング・システム1000は、適切なコンピュータ・システムの一例に過ぎず、コンピュータ・システム1000が上記に記載されている機能のいずれかを実装または実施あるいはその両方を行うことが可能であるか否かにかかわらず、本明細書において説明されている本発明の実施形態の使用または機能の範囲に関するいかなる限定を示唆するようにも意図されるものではない。コンピュータ・システム1000内には、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である構成要素が存在する。コンピュータ・システム/サーバ1000による使用に適することができる既知のコンピューティング・システム、環境、または構成あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能家電製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システムおよび上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらには限定されない。コンピュータ・システム/サーバ1000は、コンピュータ・システム1000によって実行されている、プログラム・モジュールのようなコンピュータ・システム実行可能命令の一般的な文脈において説明され得る。一般的に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含み得る。コンピュータ・システム/サーバ1000は、タスクが、通信ネットワークを通じてリンクされる遠隔処理デバイスによって実行される、分散クラウド・コンピューティング環境において実践されることもできる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよび遠隔コンピュータ・システム記憶媒体の両方内に位置することができる。
【0077】
図面に示すように、コンピュータ・システム/サーバ1000は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ1000の構成要素は、限定ではないが、1つまたは複数のプロセッサまたは処理ユニット1002、システム・メモリ1004、および、システム・メモリ1004を含む様々なシステム構成要素をプロセッサ1002に結合するバス1006を含むことができる。バス1006は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイテッド・グラフィックス・ポート、および、様々なバス・アーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの1つまたは複数を表す。例として、限定ではなく、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子機器標準規格化協会(VESA)ローカル・バス、および周辺構成要素相互接続(PCI)バスを含む。コンピュータ・システム/サーバ1000は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような可読媒体は、コンピュータ・システム/サーバ1000によってアクセス可能である任意の利用可能な媒体であってもよく、揮発性および不揮発性両方の媒体、取り外し可能および固定媒体を含む。
【0078】
システム・メモリ1004は、ランダム・アクセス・メモリ(RAM)1008またはキャッシュ・メモリ1010あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ1000は、他の取り外し可能/固定、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含んでもよい。例としてのみ、固定不揮発性磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれる)に対して読み書きするためのストレージ・システム1012を提供することができる。図示されていないが、取り外し可能不揮発性磁気ディスク(例えば、「フロッピー(R)ディスク」)に対して読み書きするための磁気ディスク・ドライブ、および、CD-ROM、DVD-ROMまたは他の光媒体などの取り外し可能不揮発性光ディスクに対して読み書きするための光ディスク・ドライブを提供することができる。そのような場合、各々を、1つまたは複数のデータ・メディア・インターフェースによってバス1006に接続することができる。下記にさらに示し、説明するように、メモリ1004は、本発明の実施形態の機能を実行するように構成されているプログラム・モジュールのセット(例えば、少なくとも1つのプログラム・モジュール)を有する少なくとも1つのプログラム製品を含むことができる。
【0079】
限定ではなく例として、プログラム・モジュール1016のセット(少なくとも1つのプログラム・モジュール)を有するプログラム/ユーティリティ、ならびに、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを、メモリ1004に記憶することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々またはそれらの何らかの組合せは、ネットワーキング環境の実施態様を含むことができる。プログラム・モジュール1016は、一般的に、本明細書に記載されているような本発明の実施形態の機能または方法論あるいはその両方を実行する。
【0080】
コンピュータ・システム/サーバ1000はまた、キーボード、ポインティング・デバイス、ディスプレイ1020など、ユーザがコンピュータ・システム/サーバ1000と対話することを可能にする1つまたは複数のデバイス、または、コンピュータ・システム/サーバ1000が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せなどの、1つまたは複数の外部デバイス1018と通信することもできる。そのような通信は、入出力(I/O)インターフェース1014を介して行うことができる。またさらに、コンピュータ・システム/サーバ1000は、ネットワーク・アダプタ1022を介して、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ1022は、バス1006を介してコンピュータ・システム/サーバ1000の他の構成要素と通信することができる。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピュータ・システム/サーバ1000とともに使用されてもよいことは理解されたい。例は、限定ではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ記録ストレージ・システムなどを含む。
【0081】
加えて、セキュア・ソフトウェア・コンテナを作成するためのセキュア・コンテナ・システム900を、バス・システム1006に取り付けることができる。
【0082】
本発明の様々な実施形態の説明は、例示の目的のために提示されているが、網羅的であることも、開示されている実施形態に限定されることも意図されていない。説明されている実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書において使用されている用語は、実施形態の原理、実際の適用または市場に見出される技術にまさる技術的改善を最良に説明するため、または、当業者が本明細書において開示されている実施形態を理解することを可能にするために選択されている。
【0083】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せとして具現化することができる。コンピュータ・プログラム製品は、プロセッサに、本発明の諸態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。
【0084】
媒体は、電波媒体のための電子、磁気、光学、電磁、赤外線または半導体システムであってもよい。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(random access memory、RAM)、読み出し専用メモリ(ROM)、剛体磁気ディスク、および光ディスクを含み得る。光ディスクの現在の例は、コンパクト・ディスク読み出し専用メモリ(CD-ROM)、コンパクト・ディスク・リード/ライト(CD-R/W)、DVDおよびBlu-Rayディスクを含む。
【0085】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は例えば、限定ではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであってもよい。コンピュータ可読記憶媒体のより特定的な例の包括的でないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)ディスク、パンチ・カード、または、命令を記録されている溝の中の隆起構造のような機械的に符号化されているデバイス、および、上記の任意の適切な組合せを含む。コンピュータ可読記憶媒体は、本明細書において使用されるものとしては、無線波、または、他の自由に伝播する電磁波、導波路もしくは他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を通じて伝播する電磁波、または、ワイヤを通じて伝送される電気信号のような、過渡的信号自体として解釈されるべきではない。
【0086】
本明細書において記載されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスへ、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはその両方を介して外部コンピュータもしくは外部記憶デバイスへダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジサーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するために、コンピュータ可読プログラム命令を転送する。
【0087】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのようなオブジェクト指向プログラミング言語、および、「C」プログラミング言語もしくは同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれているソースコードもしくはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、その全体をユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的に遠隔コンピュータ上で、またはその全体を遠隔コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われてもよい。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0088】
本発明の態様は、本明細書において、本発明の実施形態による、方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートの図またはブロック図あるいはその両方を参照して説明されている。フローチャートの図またはブロック図あるいはその両方の各ブロック、および、フローチャートの図またはブロック図あるいはその両方の中の複数のブロックの組合せはそれぞれ、コンピュータ可読プログラム製品によって実装されることができることは理解されよう。
【0089】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成することができ、それによって、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令は、フローチャートの図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するための手段を作り出す。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能データ処理装置、または他のデバイスあるいはその組合せに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体内に記憶することもでき、それによって、命令を記憶されているコンピュータ可読記憶媒体は、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製造品を含む。
【0090】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされて、一連の動作ステップが、コンピュータ、他のプログラマブル装置、または別のデバイス上で実行されるようにして、コンピュータで実施されるプロセスを生成することができ、それによって、コンピュータ、他のプログラマブル装置、または別のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する。
【0091】
図面内のフローチャートまたはブロック図あるいはその両方は本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を例示する。これに関連して、流れ図およびブロック図内の各ブロックは、指定の論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替的な実施態様において、ブロックに記載されている機能は、図面に記載されている順序と一致せずに行われてもよい。例えば、連続して示されている2つのブロックは実際には、関与する機能に応じて、実質的に同時に実行されてもよく、または、これらのブロックは、時として逆順に実行されてもよい。また、ブロック図または流れ図あるいはその両方の図解の各ブロック、およびブロック図または流れ図あるいはその両方の図解のブロックの組合せは、指定の機能もしくは動作を実施するか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースのシステムによって実施することができることも留意されよう。
【0092】
本明細書において使用される用語は特定の実施形態を説明することのみを目的とするものであり、本発明を限定するようには意図されない。本明細書において使用される場合、単数形「1つの」(“a”,“an”)および「その」(“the”)は、別途文脈が明確に指示していない限り、複数形も含むように意図される。用語「備える」(comprises)または「備えている」(comprising)あるいはその両方は、本開示において使用されている場合、記載されている特徴、整数、ステップ、動作、要素、または構成要素あるいはその組合せが存在することを指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそのグループあるいはその組合せが存在することまたは追加されることを除外するものではないことがさらに理解されよう。
【0093】
添付の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、その機能を、他の特許請求されている要素と、具体的に特許請求されているように組み合わせて実施するための任意の構造、材料、または動作を含むように意図されている。本発明の記載は、例示および説明の目的で提示してきたものであるが、網羅的であることも、開示されている形態の本発明に限定されることも意図するものではない。本発明の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。実施形態は本発明の原理および実際の適用を最良に説明するために、さらに当業者が、予期される特定の使用に適するように様々な改変を加えた様々な実施形態について本発明を理解することを可能にするように、選ばれ記載されている。
【0094】
上記の要約として、本発明の一般的な概念が一連の項において説明され得る。
1.第1の項によれば、セキュア・ソフトウェア・コンテナを作成するためのコンピュータ実施方法であって、
第1の階層化ソフトウェア・コンテナ・イメージを提供することと、
第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換することであり、ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、変換することと、
レイヤの一部分のブロックのセットの各ブロックを暗号化することと、
ブロックの各暗号化セットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックのセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶することであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、記憶することとを含む、コンピュータ実施方法が提供される。
2.ブロックの各暗号化セットを記憶することはまた、
第1の階層化ソフトウェア・コンテナ・イメージのメタデータを記憶することも含む、項1に記載の方法。
3.暗号化コンテナ・イメージに記憶されているレイヤの各々はシン・プロビジョニングを適用し、シン・プロビジョニング・メタデータも含む、項1または2に記載の方法。
4.暗号化コンテナ・イメージのレイヤの各ファイルの名前は、ファイルの内容のハッシュ値である、項1ないし3のいずれかに記載の方法。
5.仮想機械オペレーティング・システム、開始プログラム、および復号キーを提供することも含み、復号キーは、ブロックのセットの各ブロックの暗号化に使用されている暗号化キーに対応する、項1ないし4のいずれかに記載の方法。
6.仮想機械オペレーティング・システムによる仮想機械の開始に有効であるセキュア・コンテナ実行環境を提供することも含む、項5に記載の方法。
7.仮想機械の開始は、
復号キーを使用して暗号化コンテナ・イメージのブロックのセットを復号することを含む、項6に記載の方法。
8.第1の階層化ソフトウェア・コンテナ・イメージのレイヤのシーケンスにおいて第1の階層化ソフトウェア・コンテナ・イメージを再構築することも含む、項7に記載の方法。
9.復号されているセキュア・コンテナ・イメージの上のレイヤが、リード/ライト・アクセスを可能にし、当該最上レイヤの下のレイヤが、リード・オンリー・アクセスを可能にする、項8に記載の方法。
10.セキュア・コンテナ実行環境は、権限のあるユーザまたは他のプロセスあるいはその両方による仮想機械へのアクセスを妨げるセキュア・ファームウェアによって保護され、仮想機械オペレーティング・システム、開始プログラムおよび復号キーが各々暗号化される、項5ないし9に記載の方法。
11.セキュア・ファームウェアは、ハードウェア・セキュリティ・モジュールと協働する、項10に記載の方法。
12.セキュア・ソフトウェア・コンテナを作成するためのセキュア・コンテナ・システムであって、
第1の階層化ソフトウェア・コンテナ・イメージを受信するように適合されている受信ユニットと、
第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換するように適合されている変換ユニットであり、ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、変換ユニットと、
レイヤの一部分のブロックのセットの各ブロックを暗号化するように適合されている暗号化モジュールと、
ブロックの各暗号化セットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックのセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶するように適合されている記憶ユニットであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、記憶ユニットとを備える、セキュア・コンテナ・システムも提供される。
13.記憶ユニットはまた、
第1の階層化ソフトウェア・コンテナ・イメージのメタデータを記憶するようにも適合されている、項12に記載のシステム。
14.暗号化コンテナ・イメージに記憶されているレイヤの各々はシン・プロビジョニングを使用し、シン・プロビジョニング・メタデータも含む、項12または13に記載のシステム。
15.暗号化コンテナ・イメージのレイヤの各ファイルの名前は、ファイルの内容のハッシュ値である、項12ないし14のいずれかに記載のシステム。
16.仮想機械オペレーティング・システム、開始プログラム、および復号キーを提供するように適合されている提供モジュールも備え、復号キーは、ブロックのセットの各ブロックの暗号化に使用されている暗号化キーに対応する、項12ないし15のいずれかに記載のシステム。
17.提供モジュールIはまた、
仮想機械オペレーティング・システムによる仮想機械の開始に有効であるセキュア・コンテナ実行環境を提供するようにも適合されている、項16に記載のシステム。
18.仮想機械の開始は、
復号キーを使用して暗号化コンテナ・イメージのブロックのセットを復号することを含む、項17に記載のシステム。
19.第1の階層化ソフトウェア・コンテナ・イメージのレイヤのシーケンスにおいて第1の階層化ソフトウェア・コンテナ・イメージを再構築するように適合されている再構築ユニットも備える、項18に記載のシステム。
20.復号されているセキュア・コンテナ・イメージの上のレイヤが、リード/ライト・アクセスを可能にし、当該最上レイヤの下のレイヤが、リード・オンリー・アクセスを可能にする、項19に記載のシステム。
21.セキュア・コンテナ実行環境は、権限のあるユーザまたは他のプロセスあるいはその両方による仮想機械へのアクセスを妨げるセキュア・ファームウェアによって保護され、仮想機械オペレーティング・システム、開始プログラムおよび復号キーが各々暗号化される、項16ないし20のいずれかに記載のシステム。
22.セキュア・ファームウェアと協働するように適合されているハードウェア・セキュリティ・モジュールも備える、項21に記載のシステム。
23.セキュア・ソフトウェア・コンテナを作成するためのコンピュータ・プログラム製品であって、プログラム命令を具現化されているコンピュータ可読記憶媒体を備え、プログラム命令は、1つまたは複数のコンピューティング・システムまたはコントローラによって、1つまたは複数のコンピューティング・システムに、
第1の階層化ソフトウェア・コンテナ・イメージを提供することと、
第1の階層化ソフトウェア・コンテナ・イメージの各レイヤの、対応するメタデータを除くすべてのファイルをボリュームに変換することであり、ボリュームはブロックのセットを含み、各レイヤは、次により低いレイヤに対する漸進的な差を含む、変換することと、
レイヤの一部分のブロックのセットの各ブロックを暗号化することと、
ブロックの各暗号化セットを、第1の階層化ソフトウェア・コンテナ・イメージの順序に等しいブロックのセットの順序を再構築するための非暗号化メタデータとともに、暗号化コンテナ・イメージのレイヤとして記憶することであり、
以て、セキュア暗号化ソフトウェア・コンテナが作成される、記憶することとを行わせるように実行可能である、コンピュータ・プログラム製品。