IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2022-539969プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること
<>
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図1
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図2
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図3
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図4
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図5
  • 特表-プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-14
(54)【発明の名称】プロセスコンテナのコンテキストからセキュアメモリエンクレーブを使用すること
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220907BHJP
   G06F 9/455 20060101ALI20220907BHJP
   G06F 21/71 20130101ALI20220907BHJP
   G06F 21/57 20130101ALI20220907BHJP
【FI】
G06F21/62
G06F9/455 150
G06F21/71
G06F21/57
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021572526
(86)(22)【出願日】2020-06-08
(85)【翻訳文提出日】2022-02-02
(86)【国際出願番号】 US2020036575
(87)【国際公開番号】W WO2021006973
(87)【国際公開日】2021-01-14
(31)【優先権主張番号】62/872,233
(32)【優先日】2019-07-09
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/565,271
(32)【優先日】2019-09-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】レンケ,マックスウェル クリストファー
(72)【発明者】
【氏名】スターク,テイラー ジェームス
(72)【発明者】
【氏名】シュルツ,ベンジャミン エム.
(72)【発明者】
【氏名】ヴィスワナータン,ギリダール
(72)【発明者】
【氏名】スミス,フレデリック ジャスタス
(72)【発明者】
【氏名】トーマス,ディープ チャンディ
(72)【発明者】
【氏名】プラパカ,ハリ アール.
(72)【発明者】
【氏名】グオ,アンバー ティアンキ
(57)【要約】
メモリをコンテナベースのメモリエンクレーブに分割し分離する。コンテナベースのメモリエンクレーブは認証可能なセキュリティ保証を有する。コンテナイメージからコンテナベースのメモリエンクレーブをプロビジョンする間、エンクレーブのメモリアドレスへのコンテナ内のリンクと称されるものが、分割されたメモリエンクレーブ等のホストの実際のメモリアドレスに確認可能な形でリンクするように修正される。一部の例では、同様のコンテナからの1つ又は複数の過去のコンテナ認証レポートの過去の認証に基づいて、及び新たな認証要求ごとにコンテナと遠隔認証サービスとの間の終端間の認証を要求することなしに、遠隔認証サービスに対応する認証要求を伝送せずにエンクレーブ認証レポートを検証することができる。
【特許請求の範囲】
【請求項1】
1つ又は複数のプロセッサと、
コンテナベースのメモリエンクレーブを作成するための方法を実装するために前記1つ又は複数のプロセッサによって実行可能なコンピュータ実行可能命令を記憶している1つ又は複数のコンピュータ可読記憶媒体であって、前記方法は、
第1のセキュリティ領域上で実行されるホストシステムによって使用される特定のセキュリティ構成を認証するために使用されるセキュリティコンポーネントを有するコンテナイメージを識別することであって、前記セキュリティコンポーネントは前記ホストシステムのメモリアドレスに記憶される、識別すること、
前記コンテナイメージを使用して新規コンテナをインスタンス化することであって、前記新規コンテナは前記ホストシステムのアドレスに記憶されるセキュリティコンポーネントに基づいてホストシステムの第2のセキュリティ領域内のエンクレーブメモリを利用するように構成され、前記新規コンテナは前記コンテナから前記ホストシステムに記憶される前記セキュリティコンポーネントの前記メモリアドレスへのリンクと称されるものである特定のメモリアドレスと共に前記セキュリティコンポーネントの複製を含む、インスタンス化すること、及び
前記コンテナから前記メモリアドレスへの前記リンクと称されるものが前記ホストシステムの前記メモリアドレスに前記コンテナを確認可能な形でリンクするように修正されるように、前記新規コンテナのインスタンス化の間に又はその後で、前記コンテナから前記ホストシステムに記憶される前記セキュリティコンポーネントの前記特定のメモリアドレスへの前記リンクと称されるものを修正すること
を含む、1つ又は複数のコンピュータ可読記憶媒体と
を含む、計算システム。
【請求項2】
前記リンクと称されるものを前記修正することが、前記新規コンテナにおける前記セキュリティコンポーネントの前記特定のアドレスを、前記ホストシステムによって使用される前記セキュリティコンポーネントがロードされる前記ホストシステムの前記アドレスで上書きすることを含む、請求項1に記載の計算システム。
【請求項3】
前記リンクと称されるものを前記修正することが、前記新規コンテナにおける前記セキュリティコンポーネントの前記特定のアドレスから、前記ホストシステムによって使用される前記セキュリティコンポーネントがロードされる前記ホストシステムの前記アドレスへのリンクを作成することを含む、請求項1に記載の計算システム。
【請求項4】
前記リンクと称されるものを前記修正することが、前記ホストシステムによって使用される前記セキュリティコンポーネントがロードされる前記ホストシステムのアドレスを含む又は参照するように、前記特定のアドレスに関連するマッピングテーブル内の被参照アドレスを更新することを含む、請求項1に記載の計算システム。
【請求項5】
前記方法が、前記マッピングテーブルを作成すること、及び前記新規コンテナのインスタンス化の間に又はその後で、前記新規コンテナに関連するメタデータを使用して前記マッピングテーブルに前記被参照アドレスを追加することを更に含む、請求項4に記載の計算システム。
【請求項6】
前記セキュリティコンポーネントがライブラリファイルを含む、請求項1に記載の計算システム。
【請求項7】
前記セキュリティコンポーネントが、前記新規コンテナの前記セキュリティ構成に関する認証レポートを生成するために使用されるデータを含む、請求項1に記載の計算システム。
【請求項8】
前記方法が、前記新規コンテナの前記セキュリティ構成に関連するセキュリティ保証の認証を行うことを更に含む、請求項7に記載の計算システム。
【請求項9】
1つ又は複数のプロセッサと、
コンテナベースのメモリエンクレーブの認証を行うための方法を実装するために前記1つ又は複数のプロセッサによって実行可能なコンピュータ実行可能命令を記憶している1つ又は複数のコンピュータ可読記憶媒体であって、前記方法は、
1つ又は複数のコンテナを識別することであって、前記1つ又は複数のコンテナのそれぞれは前記ホストシステムの第1のセキュリティ領域と異なるセキュリティ領域内にあるエンクレーブメモリを参照するように構成され、前記エンクレーブメモリに関する特定のセキュリティ構成を認証するためにセキュリティコンポーネントを使用し、前記セキュリティコンポーネントは前記ホストシステムのメモリアドレスにロードされ、前記1つ又は複数のコンテナにおける前記セキュリティコンポーネントへの1つ又は複数の参照によってリンクされる、識別すること、
前記セキュリティコンポーネントに基づいて前記1つ又は複数のコンテナのセキュリティ構成のセキュリティ保証に関する単一の認証レポートを遠隔認証サービスから得ること、
前記遠隔認証サービスから前記単一の認証レポートを受信した後、前記1つ又は複数のコンテナの特定のコンテナに関する前記セキュリティ保証を認証するための要求を受信すること、及び
前記認証のための要求を前記受信する前に受信した前記単一の認証レポートに基づいて前記特定のコンテナに関する前記セキュリティ保証を認証すること
を含む、1つ又は複数のコンピュータ可読記憶媒体と
を含む、計算システム。
【請求項10】
前記方法が、前記単一の認証レポートに基づいて前記ホストシステムの前記メモリアドレスにロードされる前記セキュリティコンポーネントへの参照をそれぞれ含む複数のコンテナに関する前記セキュリティ保証を認証することを更に含む、請求項9に記載の計算システム。
【請求項11】
前記単一の認証レポートが、前記ホストの前記アドレスにロードされる前記セキュリティコンポーネントへの参照を有する異なるコンテナのセキュリティ保証を認証するための要求に応答して得られる、請求項10に記載の計算システム。
【請求項12】
前記方法が、
エンクレーブメモリが割り当てられた特定のコンテナに関する新たな認証要求であって、前記コンテナに関する前記割り当てられたエンクレーブメモリの再割り当て後に生成される、新たな認証要求を受信すること、及び
前記コンテナの整合性を検証し、前記新たな認証要求が遠隔認証サービスに提出されることを要求することなしに新たな認証レポートを発行すること
を更に含む、請求項9に記載の計算システム。
【請求項13】
前記方法が、
コンテナの状態をモニタし、セキュリティが侵害されていると判定されるコンテナを無効にすること
を更に含む、請求項9に記載の計算システム。
【請求項14】
前記方法が、
その後のコンテナ認証要求を受信したら、前記その後のコンテナ認証要求に関連する特定のコンテナの属性を決定すること、
前記特定のコンテナの前記属性に基づいて前記その後のコンテナ認証要求を遠隔サービスに確定的にルートし、或いは前記特定のコンテナの前記属性に少なくとも部分的に基づいて前記その後のコンテナ認証要求を前記遠隔サービスにルートすることなしに認証レポートを生成すること
を更に含む、請求項9に記載の計算システム。
【請求項15】
前記その後のコンテナの前記属性が前記コンテナの有効期限を含み、第1の1組のコンテナが第2の1組のコンテナよりも相対的に長い有効期限を有し、前記第2の1組のコンテナを前記遠隔サービスにルートすることなしに前記第1の1組のコンテナよりも相対的に短い有効期限を有する前記その後のコンテナを含む前記第2の1組のコンテナのそれぞれについて1つ又は複数の認証レポートが生成されながら、前記第1の1組のコンテナに関連する1つ又は複数のコンテナ認証要求が前記遠隔サービスにルートされる、請求項14に記載の計算システム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
[0001] コンピュータ技術はコンピュータが今やユビキタスであり、ほぼ全ての業界に影響を及ぼし、異質な種類のデータの記憶及び処理を可能にする程度にまで進化した。
【0002】
[0002] データを安全に記憶し処理するために、メモリ分割を行うように一部のオペレーティングシステム及びコンピュータハードウェアが構成されている。メモリ分割は、単一の計算システム内で及び/又は複数の計算システムの分散型ネットワーク内でデータの処理及び記憶を分離する1つのやり方である。
【0003】
[0003] 例えばシステムは、暗号キー、ユーザ識別情報、ユーザ資格情報、及び他の機密データ等の「セキュリティ上重要な」データをさほど機密性が高くない他の計算プロセス及びデータから、本明細書でエンクレーブと呼ぶメモリの分離領域内に分離することができる。計算業界ではこの種の分離された計算環境を例えば「信頼できる実行」環境及び「機密計算」環境と呼ぶ場合がある。
【0004】
[0004] メモリをエンクレーブに分割するための技法は概して複数の形式で存在する。一例はIntelのSGX、ARM HoldingsのTrustZone等によって実装されるハードウェアベースの分割である。別の例は、仮想化ベースのセキュリティ(VBS)等、オペレーティングシステム又はハイパーバイザに基づく。
【0005】
[0005] VBSは、内部に配置されるセキュリティ上重要なデータを分離し保護するために、ハイパーバイザ又は別の資源管理層を使用して計算システム内に追加のメモリパーティションを作成する。VBSにより、ユーザモード及びカーネルモードの両方からの分離を行うために使用可能な複数の仮想信頼レベル(VTL)を定めることができる。例えば典型的なオペレーティングシステムは、既存のユーザモード及びカーネルモードのドライバ、アプリケーション、サービス等をサポートするための第1のVTL(例えばVTL0)内で実行され得るのに対し、追加のメモリパーティションは分離ユーザモード(IUM)及びセキュアカーネル(SK)の実装をサポートするための同じシステムの第2のVTL(例えばVTL1)内で実行され得る。
【0006】
[0006] 例えばVTL0がVTL1にアクセスするのを防ぐために、VLT1内のメモリにマップされ、VLT0がアクセスできないプロセス内の分離されたメモリ領域を作成することによってVTL間のセキュリティ境界がハイパーバイザ又は他の管理層によって強制可能である。このメモリの分離領域がエンクレーブである。かかるエンクレーブは、信頼できない環境における安全で認証可能な計算のための手段を提供する。従って、VTL1から実行されるプロセスがユーザモード又はカーネルモードによって攻撃されても、VTL1はエンクレーブのコンテンツを保護することができる。
【0007】
[0007] ハードウェアベースの分割は、分離されたエンクレーブをメモリ内に作成するために使用可能な他の一般的な種類のメモリ分割である。ハードウェア分割の一例はIntelのSecure Guard Extensions(SGX)を含み、SGXはユーザモードコードがエンクレーブを含むプライベートメモリ領域をVBSと同様のやり方で割り当てることを可能にする1組のプロセッサ命令を含む。
【0008】
[0008] エンクレーブは典型的にはVBS又は他のハードウェアベースのエンクレーブ技術によってセキュリティ保護されるホストプロセスのコンテキスト内に存在し、そのためエンクレーブとの如何なる相互作用もホストプロセスの既存の保護の対象となることが理解されよう。
【0009】
[0009] とりわけ仮想マシンベースの仮想化の使用を伴う分割の1つの利点は、サーバ資源を高密度で展開できるようにするやり方で、及びクラウドコンピューティングを可能にするためにデータ及びアプリケーションを分割できることである。
【0010】
[0010] コンテナベースの仮想化(名前空間ベースの仮想化と呼ばれることもある)は、スケールされたサービスに一層高度な互換性及び増加された密度を提供することができる一種の分割である。この特徴は優れており、その理由は互換性が高いことはソフトウェア開発にかかるコストを下げることを可能にし、密度が高いことは設備、労働、及びハードウェアの同じ相対コストと引き換えにより多くの収益を得ることを可能にするからである。
【0011】
[0011] コンテナ及びコンテナベースの仮想化を使用し、分離され、資源制御され、移植性のある動作環境を提供することもできる。例えばソフトウェアアプリケーションがコンテナ内で実行される場合、そのソフトウェアアプリケーションはシステムの残りの部分に影響を及ぼすことなしに及びシステムがアプリケーションに影響を及ぼすことなしに実行され得る。コンテナは1つのアプリケーションに固有とすることができ、又は複数のアプリケーションにランタイムを与え、オペレーティングシステムの追加の機能及びサービス(例えば入力/出力機能、セキュリティ等)を提供することができる。
【0012】
[0012] 但し、アプリケーション及びサービスを従来のコンテナに分割することには、アプリケーション又はサービスの柔軟性及び移植性を高めることを含む多くの利点があるが、従来のコンテナのセキュリティ境界は幾分突破されやすい。その1つの理由は、既存のコンテナ技術は或る特定のハードウェアセキュリティ保証ではなく基礎を成すオペレーティングシステムのセキュリティに依存し、アプリケーションの互換性を促進するために既存のコンテナの構造は意図して柔軟であり、コンテナ内のデータをどのように保護するのかのギャップが生じる。この点に関して、コンテナは上述のVBS及びハードウェア分割エンクレーブ技術によって提供されるのと同レベルの認証可能なセキュリティ保証を提供することができない。
【0013】
[0013] IoT及びデータベースワークロードにおいて多くの新興のコンテナシナリオがあるが、それはそのコンテナ化されるアプリケーションのためのセキュアメモリソリューションを必要とする、開発されている。しかし不都合なことに、そのようなセキュアメモリをとりわけ効率的及びスケーラブルなやり方で提供することについて存在する幾つかの課題により、そのような有用性を与えるためのシステムはまだ作成されていない。そのような欠点は分散型システム内で、及びとりわけ高度なセキュリティが要求される場所でコンテナ使用を広範に採用することを事実上限定してきた。
【0014】
[0014] 例えば、とりわけコンテナのセキュリティシナリオのためのロバストなモニタリング及び認証を伴うセキュアメモリ割り当てを提供/強制することを可能にされたオペレーティングシステムは現在存在しない。コンテナのライフサイクルは短期的でもあり、そのことはVBS及びハードウェア分割に使用されるような他の種類の分割技術に使用されるプロビジョニング、モニタリング、並びに終端間のセキュリティキー管理及び認証技法の利用を幾らか妨げる。
【0015】
[0015] 従って、メモリの分割及び分離を安全及び認証可能なやり方で可能にする、更に具体的にはコンテナの機能的利益を活用できるやり方でメモリの分割及び分離を行うためのシステム及び方法が絶えず求められている。一部の実施形態では、仮想マシン等のより重量級の仮想化の形式を使用することによってセキュリティ及び分離が実現され得る。一部の実施形態では、一部のハイパーバイザベースのコンテナ実装がエンクレーブを必要とし得る。一部の実施形態では、軽量のコンテナイメージを検証するために認証を使用することができるのでより重量級の仮想化技法が不要であり、セキュリティ集中型のワークロードをメモリエンクレーブ内にのみホストするために(より少ない分離を伴う)コンテナベースの仮想化技法を使用することができる。
【0016】
[0016] 但し、本明細書で主張する内容は既存のシステムに関連する不利点の何れかを必ず解決する又は上記のような環境内でのみ動作する実施形態に限定されないことを指摘しておく。むしろこの背景は、本明細書に記載する一部の実施形態を実践することができる或る例示的な技術分野を示すために与えるに過ぎない。
【発明の概要】
【課題を解決するための手段】
【0017】
概要
[0017] 開示する実施形態は、認証可能なセキュリティ保証を有するコンテナベースのメモリエンクレーブを含むコンテナをプロビジョンするための実施形態を対象とする。開示する実施形態は、コンテナベースのメモリエンクレーブを含むプロビジョン済みコンテナに関するセキュリティ保証を認証するための実施形態も対象とする。
【0018】
[0018] 開示する実施形態は、コンテナベースのメモリエンクレーブの形でセキュアメモリ分離を伴ってコンテナをプロビジョンするための新たなシステム及び方法を提供することにより、並びにコンテナのセキュリティ保証の認証を効率的及びスケーラブルなやり方で効率的に管理するための認証インフラを提供することにより、既存のコンテナプロビジョニング技法に勝る技術的利点を提供する。
【0019】
[0019] 一部の実施形態は、コンテナベースのメモリエンクレーブを作成するための方法及びシステムを含む。これらの実施形態では、第1のセキュリティ領域上で実行されるホストシステムによって使用される特定のセキュリティ構成を認証するために使用されるセキュリティコンポーネントを有するコンテナイメージを計算システムが識別し、セキュリティコンポーネントはホストシステムのメモリアドレスに記憶される。一部の実施形態では、仮想マシン又はコンテナがVTL1及びVTL0メモリを含むホストシステムをホスト実装する。
【0020】
[0020] 次いで計算システムはコンテナイメージを使用して第1のセキュリティ領域と異なる第2のセキュリティ領域内に新規コンテナをインスタンス化し、新規コンテナはホストシステムのアドレスに記憶されるセキュリティコンポーネントに基づいてホストシステムのエンクレーブメモリを利用するように構成され、新規コンテナはコンテナからホストシステムに記憶されるセキュリティコンポーネントのメモリアドレスへのリンクと称されるものである特定のメモリアドレスと共にセキュリティコンポーネントの複製を含む。
【0021】
[0021] 加えて、新規コンテナのインスタンス化の間に又はその後で、コンテナからメモリアドレスへのリンクと称されるものがホストシステムのメモリアドレスにコンテナを確認可能な形でリンクするように修正され、それによりコンテナに関する認証可能な状態が作り出されるように、計算システムはコンテナからホストシステムに記憶されるセキュリティコンポーネントの特定のメモリアドレスへのリンクと称されるものを修正する。
【0022】
[0022] 一部の実施形態は、コンテナベースのメモリエンクレーブのための認証を行うための方法及びシステムも含む。これらの実施形態では、ホストシステムの第1のセキュリティ領域と異なるセキュリティ領域内にある1つ又は複数のコンテナを計算システムが識別し、1つ又は複数のコンテナのそれぞれはホストシステムのエンクレーブメモリを参照するように構成され、エンクレーブメモリに関する特定のセキュリティ構成を認証するためにセキュリティコンポーネントを使用し、セキュリティコンポーネントはホストシステムのメモリアドレスに記憶され、1つ又は複数のコンテナにおけるセキュリティコンポーネントへの1つ又は複数の参照によってリンクされる。
【0023】
[0023] 次いで計算システムは、セキュリティコンポーネントに基づいて1つ又は複数のコンテナのセキュリティ構成のセキュリティ保証に関する認証レポートを遠隔認証サービスから得る。一部の例では、そのレポートが複数の認証レポートではなく単一の認証レポートである。遠隔認証サービスから認証レポートを受信した後、計算システムは1つ又は複数のコンテナの特定のコンテナに関するセキュリティ保証を認証するための要求を受信する。次いで計算システムは、認証のための要求を受信する前に受信した認証レポートに基づいて、及び新たな要求に関してコンテナ及び遠隔認証サービスに新たな終端間の認証を要求することなしに、特定のコンテナに関するセキュリティ保証を認証する。
【0024】
[0024] この概要は、以下の詳細な説明の中で更に説明する一連の概念を単純化した形で紹介するために提供する。この概要は、特許請求の範囲に記載の内容の重要な特徴又は本質的な特徴を識別することも、特許請求の範囲に記載の内容の範囲を決定する際の助けとして使用されることも意図しない。
【0025】
[0025] 追加の特徴及び利点が以下の説明の中で記載され、その説明から部分的に明白になり、又は本明細書の教示を実践することによって知られ得る。本発明の特徴及び利点は、添付の特許請求の範囲の中で具体的に示す器具及び組み合わせによって実現し得ることができる。本発明の特徴は以下の説明及び添付の特許請求の範囲からより完全に明らかになり、又は以下に記載する本発明を実践することによって知ることができる。
【0026】
図面の簡単な説明
[0026] 上記に挙げた利点及び特徴並びに他の利点及び特徴を得ることができる方法を説明するために、上記で簡潔に記載した内容のより具体的な説明を添付図面に示す特定の実施形態を参照することによって行う。これらの図面は典型的な実施形態を示すに過ぎず、従って範囲を限定するものと見なすべきではないことを理解し、添付図面を使用することによって実施形態を更なる特定性及び詳細と共に記載し説明する。
【図面の簡単な説明】
【0027】
図1】[0027]第1の領域(例えばVTL0)内で動作するユーザモードを提供しており、セキュアカーネル及び分離メモリエンクレーブを利用する分離ユーザモードが第2の領域(例えばVTL1)内で動作している計算システムとキープロビジョニングサービス及び認証サービスが通信する計算環境を示す。
図2】[0028]認証可能な状態を有するコンテナ及びエンクレーブを利用し、コンテナ管理サービス、認証サービス、及びキープロビジョニングサービスを含むシステムの設計概論の一実施形態を示す。
図3】[0029]開示する実施形態の側面を含む及び/又は実装するように構成される計算システムを示す。
図4】[0030]キープロビジョニングサービス及び認証サービスインフラと共に、特許請求の範囲に記載する本発明の態様を含む及び/又は実装するように構成される別の計算システムを示す。
図5】[0031]開示する実施形態による、コンテナをプロビジョンするための方法に関連する複数の動作を有する流れ図の一実施形態を示す。
図6】[0032]開示する実施形態による、コンテナのセキュリティ保証を認証するための方法に関連する複数の動作を有する流れ図の一実施形態を示す。
【発明を実施するための形態】
【0028】
詳細な説明
[0033] 開示する実施形態は、認証可能なセキュリティ保証を有するコンテナベースのメモリエンクレーブを含むコンテナをプロビジョンするための実施形態を対象とする。開示する実施形態は、コンテナベースのメモリエンクレーブを含むプロビジョン済みコンテナに関するセキュリティ保証を認証するための実施形態も対象とする。
【0029】
[0034] 一部の例では、開示する実施形態は、コンテナベースのメモリエンクレーブとしてコンテナをプロビジョンするための新たなシステム及び方法を提供することにより、並びにコンテナのセキュリティ保証の認証を効率的に管理するための認証インフラを提供することにより、従来のコンテナプロビジョニング技法及び既存のエンクレーブ技術に勝る技術的利点を効率的及びスケーラブルなやり方で提供する。
【0030】
[0035] コンテナベースのエンクレーブを作成することは、従来のVBS及び従来のハードウェアベースのエンクレーブで可能であったよりもメモリパーティションの一層の分離ももたらす。例えば従来のエンクレーブは典型的にはVBS又は他のハードウェアベースのエンクレーブ技術によってセキュリティ保護されるホストプロセスのコンテキスト内に存在し、そのためエンクレーブとの如何なる相互作用もホストプロセスの既存の保護の対象となることを指摘しておく。しかし通常のオペレーティングシステムのプロセスは強い分離のメカニズムを従来より有さない一方、本明細書に記載するやり方でエンクレーブホストプロセスをプロセスコンテナのコンテキスト内にカプセル化することにより、システムに更なる分離レベルを追加することが可能である。コンテナベースのエンクレーブの使用は、認証済みのセキュリティ保証を効率的及びスケーラブルなやり方で提供するものとしてモニタし検証することもできる。
【0031】
[0036] コンテナベースのエンクレーブをプロビジョン及びモニタすること並びにコンテナベースのエンクレーブのセキュリティ保証を効率的及びスケーラブルなやり方で認証することを含む、開示する実施形態の更なる利点及び機能を以下に記載する。
【0032】
[0037] まず図1に注目し、図1は開示する実施形態の側面を実装するように構成される計算システム110を含む計算環境100を示す。この計算システム110は、例えばコンテナ114をプロビジョンするように構成されるコンテナ管理サービス112及びコンテナベースのメモリエンクレーブ116を含む。計算システム110は、第1の領域(例えばオペレーティングシステムVTL0)内で動作するユーザモードにあるコンテナ管理サービス112及びコンテナ114を実装するように、並びに第2の領域(例えばオペレーティングシステムVTL1)内の分離されたコンテナベースのメモリエンクレーブ116及び対応するセキュアカーネルを実装するように更に構成される。
【0033】
[0038] 第1の領域(VTL0)と第2の領域(VTL1)との間のセキュリティ境界を実装するようにハイパーバイザ120又は他の管理層が構成される。認証サービス140に状態を証明するようにTPM(トラステッドプラットフォームモジュール)130が構成される。一部の例では、キープロビジョニングサービス150又は別のキープロビジョニングサービス等のTPM製造業者によってプロビジョンされる公認された保証キー(EK:endorsement key)を提供することによってこれを実現する。
【0034】
[0039] 使用中、TPMを実行するホストは、ホストのブート状態を整合性保護し証明するために後で使用可能なAIK証明書又は他のレポート内のTPMクレーム(例えばTPMのプリミティブを認証するセキュリティ保証)に署名するために使用可能な認証識別キー(AIK)を生成する。AIK証明書は、認証レポートに対する要求に応答してTPM130及び/又は計算システム110に最初に提供される。AIK証明書は、TPMによってプロビジョンされる公認された保証キー(EK)とAIKとが一緒に存在することを検証し認証することに応答して認証サービス又は他の証明書サービスによって提供される。
【0035】
[0040] 認証サービスは、特定のコンテナベースのエンクレーブのためのセキュリティ保証(例えばその分離セキュリティ保証及びプリミティブを認証する)を検証し又は認証することもできる。例えばホストは、AIKを用いてデジタル署名され、認証サービスによって検証される認証レポート内でエンクレーブバイナリを証明し認証するために使用することができる、TPMプラットフォーム構成レジスタ(PCR)内のシステムブートチェーン並びにオペレーティングシステムバイナリのハッシュを測定する。セキュアカーネルブート中、システム識別キー(IDK)が生成されTPM内で測定される。一部の実施形態では、システムブートチェーンの一環としてブート順序も測定される。
【0036】
[0041] ブート後、エンクレーブがコンテナに関する認証レポートを認証サービスに要求する。任意選択的に、エンクレーブはエンクレーブが自らのクライアントと共有し得るキーをコンテナ認証レポートに追加することができる。このキーを実装するために、エンクレーブはまずキーのペアを生成し、その全てがAIKキー及びAIK証明書によって署名されるホストTPMブートログ及びPCRと共に認証サービス(例えば認証サービス140又は別の認証サービス)に送信されるエンクレーブ認証要求内のシステム識別キー(IDK)を用いてエンクレーブキーペアの公開キーにデジタル署名する。エンクレーブの公開キーがコンテナ認証レポートに追加されると、その認証レポートをエンクレーブ認証レポートとして扱うことができ、そのエンクレーブと安全に通信するためにキーを使用することができる。
【0037】
[0042] 認証サービス140は、TPMブートログがAIKキー/証明書によって正しく署名されていること及びPCR内で測定されるブートチェーンがTPMブートログと一致することを検証する。認証サービス140は、ブートログ内のIDKキーが認証要求内のエンクレーブ公開キーに署名するために使用されるIDKキーと一致することも検証する。認証サービスは、ブートログ内のIDKキーが認証要求内のエンクレーブ公開キーに署名するために使用されるIDKキーと一致することも確実にする。一致する場合、認証サービスはシステムのヘルスと共に署名済み認証レポートを生成する。この署名済みレポートはエンクレーブ認証レポートを検証し、現在のタイムスタンプと共にエンクレーブの公開キーを含み、それによりコンテナベースのエンクレーブのセキュリティ保証を認証する。
【0038】
[0043] 図2は、認証可能な状態を有するコンテナ及びエンクレーブを利用し、コンテナ管理サービス、認証サービス、及びキープロビジョニングサービスを含むシステムの設計概論を示す。これらのコンポーネント間の関係は上記で説明しており、図3及び図4に関する以下の説明から一層明らかになる。
【0039】
[0044] コンテナ管理サービスは、システム上で実行される全てのコンテナの状態をプロビジョンし、ブートし、モニタし、維持するように構成され、それにより任意のN数のコンテナを作成するためのスケーラブルなインフラを提供することを指摘しておく。
【0040】
[0045] 各コンテナは自らのエンクレーブを作成し、初期化し、割り当てることも担う。
【0041】
[0046] エンクレーブ及びコンテナは、コンテナ管理サービスによって追跡されるホストOSカーネルによってバインドされる。このバインドは、ホストOSのコンテキスト内では信頼でき認証可能だが、エンクレーブのセキュリティ境界を保たない。
【0042】
[0047] 任意の所与のエンクレーブ内で適切なエンクレーブコードが実行されていることを確実にするために認証サービスを使用することができる。
【0043】
[0048] 一部の実施形態では、カーネルはシステム/プラットフォーム認証レポートを認証サービスに報告することができ、従ってエンクレーブ(VBS、SGX等)を作成するために使用されるプラットフォームの整合性を検証することができる。一部の実施形態では、コンテナがシステム認証レポートにエンクレーブ公開キーを追加し、エンクレーブ認証レポートを作成する。一部の実施形態では完全認証がエンクレーブコンテンツ上で実行され、エンクレーブ認証レポートが作成される。
【0044】
[0049] エンクレーブ/コンテナは(上記で説明したように)自らのエンクレーブ認証レポートを生成し、そのレポートを認証サービスに提供することを担う。認証サービスは、コンテナ管理サービスと協調してコンテナ及びそれらのコンテナと相互作用するプロセスの両方に認証を与えることができる。
【0045】
[0050] 図3及び図4は、コンテナベースのエンクレーブをプロビジョンし認証するための、開示する実施形態の側面を含む及び/又は実装するように構成される計算システムを示す。図3のシステム300Aは、図5に関して図示し説明する流れ図500に特に対応し、図4のシステム300Bは、図6に関して図示し説明する流れ図600に特に対応する。
【0046】
[0051] 図示のように、示すシステム300A及び300Bは1つ又は複数のハードウェアプロセッサ310及びストレージ320を含む。とりわけストレージ302は、例えばハードドライブに対応し得る境界付けされた円筒として全般的に図示されている。但し、ストレージ320は単なるハードドライブ構成に限定されないことが理解されよう。代わりにストレージ320は、1つ又は複数の計算システム及び記憶位置のための様々な種類の独立型及び/又は分散型ストレージを含み得る。
【0047】
[0052] 一部の例では、ストレージ320が不揮発性記憶域を含む。他の例ではストレージが不揮発性記憶域と揮発性記憶域との任意の組み合わせを含む。ストレージ320は、例えば揮発性メモリ及び/又はフラッシュ若しくは他の不揮発性メモリを含み得るメモリも含むことができる。
【0048】
[0053] 一部の例では、分割されたメモリコンテナ(例えば新規コンテナ315)等の分割されたメモリ、及び他の記憶構造(例えばコンテナメタデータ322、マッピングテーブル324、コンテナイメージ326、コンテナイメージファイル(例えば.dll328及びセキュアデータ329))、並びに計算システム300A及び300BのためのOS(オペレーティングシステム)及びカーネルを含む実行可能コード及びアプリケーションを記憶し実装するためにメモリを使用する。
【0049】
[0054] ストレージは、VTL0メモリ380及びVTL1メモリ390を含むメモリパーティションも含み得る。VTL0メモリ380は、ユーザモードを実装するために及びコンテナのプロビジョニングを開始するためにシステムOSによって使用される第1の基礎を成す記憶領域を含む。VTL0メモリは、プロビジョンされたコンテナのアドレスを高度な/分離されたセキュリティの記憶領域VTL1メモリ390内の対応するコンテナエンクレーブにマッピングするための(以下でより詳細に説明する)マッピングテーブルも記憶することができ、VTL1メモリ390は分離されたセキュアメモリエンクレーブを含む。
【0050】
[0055] ストレージ320は、コンテナをプロビジョンし、モニタし、ロードし、或いはコンテナ更には遠隔キープロビジョニングサービス395及び遠隔認証サービス396等の遠隔システムと1つ又は複数のネットワーク接続399経由でインタフェースするために使用される図示の他のシステムコンポーネント(例えばマッパ330、コンテナ認証サービス340、コンテナ管理サービス350、メモリマネージャ360、ローダ370、キープロビジョニングサービス394)をインスタンス化し又は実装するための実行可能コード及びアプリケーションも記憶する。
【0051】
[0056] 様々なシステムコンポーネントの図示の分離は開示する実施形態の説明を容易にするために示したに過ぎず、従って別段の定めがない限りストレージ及び互いに対するシステムコンポーネントの如何なる物理的境界又は関係も課さないと解釈すべきである。
【0052】
[0057] 上記の内容に関して、システムのユーザモード及び分離ユーザモードをそれぞれ実装するために使用される異なる領域のVTL0メモリ380とVTL1メモリ390との間に課され強制される物理的及び/又は仮想的境界があることを指摘しておく。
【0053】
[0058] 分割された領域間に確立される1つ又は複数の境界は、例えば本明細書に記載するようにコンテナのプロビジョニング中に作成され強制され得る。一部の実施形態では、この強制がハイパーバイザによって維持される。他の実施形態では、様々な領域について作成されるパーティション及びメモリ分離パーティションを強制し維持するために別の管理層が使用される。一部の例では、コンテナ管理サービス340が様々なコンテナ間のセキュリティ/分離境界を識別する。セキュリティ/分離境界はハードウェア又はハイパーバイザ(不図示)によって強制される。
【0054】
[0059] 図3及び図4には、第2のセキュリティ領域(例えばVTL1メモリ390)内の対応するコンテナベースのエンクレーブパーティションと共に第1のセキュリティ領域(例えばVTL0メモリ380)内の単一のコンテナだけを組み込む2つの異なるメモリパーティションしか図示していないが、任意の数の異なるパーティションがあり得ることが理解されよう。同じセキュリティ領域内に及び/又はこれだけに限定されないがVBSの仮想信頼レベルの異なる信頼レベル等の異なるセキュリティ領域内に確立される任意の数量のコンテナをサポートするために、それらのパーティションは任意の数量の異なるセキュリティ領域を利用する/含むこともできる。
【0055】
[0060] 加えて不図示だが、異なるパーティションはIntelのSGXエンクレーブ技術等のハードウェア分割に、並びに含まれるコンテナのためのハードウェア分割及び仮想メモリ分割の任意の組み合わせに包含的に又は排他的に基づくこともできる。
【0056】
[0061] 様々なセキュリティ領域に関して、各セキュリティ領域は様々な需要及び選択に対処するように、及びこれだけに限定されないが既存の及びまだ開発されていないIoT、データベース、並びにエンタープライズワークロード及びストレージのシナリオを含む所望の様々なセキュアメモリソリューションに関して様々なセキュリティ保証レベルを有するコンテナベースのメモリエンクレーブを促進するように構成され得ることが理解されよう。
【0057】
[0062] 不図示の一部の例では、開示するシステムがコンテナベースのメモリエンクレーブを1つの、2つの、又は3つ以上の異なるセキュリティ領域内に分離し、それぞれの異なるセキュリティ領域は異なる仮想セキュリティ領域(例えばVTL1、VTL2等)を含み、基礎を成すホストユーザモードセキュリティ領域(例えばVTL0)と異なるセキュリティ保証を有し、同じ/共用される1組の1つ又は複数のハードウェア記憶装置(例えば同じ/共用される1組の1つ又は複数のドライブ、ディスク、ラック、データセンタ等)内に実装され及び分散される。かかるシナリオは、例えば様々なテナントが同じバックエンドコンテナ記憶システム及び記憶装置を利用するが、各テナントが異なるセキュリティ制約を有し、コンテナベースのメモリエンクレーブをプロビジョンするために異なるコンテナイメージを利用するマルチテナントの実施形態をサポートすることができる。
【0058】
[0063] 不図示の一部の例では、開示するシステムがコンテナベースのメモリエンクレーブを1つの、2つの、又は3つ以上の異なるセキュリティ領域内に分離し、それぞれの異なるセキュリティ領域は基礎を成すホストユーザモードセキュリティ領域と異なるセキュリティ保証を有し、それぞれの異なるセキュリティ領域は異なる/物理的に分かれた及び共用されていないハードウェア記憶装置(例えば1組の異なる1つ又は複数のドライブ、ディスク、ラック、データセンタ等)上で物理的に分離される。かかる実施形態は、全く異なる位置にある物理ストレージを利用する分散型ネットワークに特に有用である。
【0059】
[0064] 一部の例では開示するシステムが、基礎を成すホストユーザモードセキュリティ領域と異なる同一のセキュリティ領域内に複数のコンテナベースのメモリエンクレーブを分離し、複数のコンテナベースのメモリエンクレーブのそれぞれは全て共通のコンテナイメージからプロビジョンされる。
【0060】
[0065] 一部の代替的な及び/又は追加の実施形態では、少なくとも2つ以上の異なるコンテナベースのメモリエンクレーブが、少なくとも2つの異なる対応するコンテナイメージからプロビジョンされる。
【0061】
[0066] 図3図4に反映し先に述べたように、開示するシステムはコンテナ管理サービス340を含む。このコンテナ管理サービス340は、新規コンテナ(例えば新規コンテナ315)をプロビジョンするように、並びにプロビジョンされているコンテナ並びにそのセキュリティ構成及びメモリ領域をモニタするように構成される。
【0062】
[0067] システム300A/300Bによってコンテナ認証サービス394も提供される。このコンテナ認証サービス394は、一部の実施形態では1つ又は複数の遠隔認証サービス(例えば遠隔認証サービス396)との通信を助けるインタフェースである。
【0063】
[0068] 加えて、エンクレーブを呼び出しているプロセスは信頼できない別の領域(例えばVTL0)によって制御されるので、エンクレーブは自らが実行しているプロセスの種類をそれ自体で容易に判別することができないので、遠隔認証サービス140及び時としてローカルコンテナ認証サービス394は、所与のエンクレーブと共にどの種類のホストプロセスが使用されているのかを認証するためにコンテナ管理サービス340がエンクレーブと協調するためのインタフェースを提供する。例えばエンクレーブがプロセスから分離されたコンテナのコンテキスト内で実行されている場合、認証サービスは(上記のプラットフォーム認証レポート及びエンクレーブ認証レポートと共に)所与のエンクレーブのホストプロセスがシステムの残りの部分から分離されているという認証可能ステートメントを作成することができる。
【0064】
[0069] このようにして、遠隔認証サービス140及び時としてローカルコンテナ認証サービス394は、上記で説明したように及びとりわけ図1及び図2に関して説明したように、システム及び/又はコンテナベースのメモリエンクレーブのセキュリティ保証を認証するためにシステム300A/300B及び/又はエンクレーブコンテナによって提供される認証レポートを検証/認証するように構成される。
【0065】
[0070] 一部の例では、コンテナ認証サービス394がシステム300Bと遠隔認証サービス396との間で情報(例えば認証レポート、認証要求、検証済みの認証レポート等)を単に行き来させる。
【0066】
[0071] 他の例では、エンクレーブに関して受信される認証要求ごとに遠隔認証サービスとインタフェースすることなしに、コンテナ認証サービス394が認証資格情報を記憶するように、及びコンテナベースのメモリエンクレーブのセキュリティ保証の認証を行うように構成される。このようにして、コンテナの短期的性質に対処するようにはるかに効率的に、及び認証要求ごとにエンクレーブと遠隔認証サービスとの間の終端間の認証を要求することなしに認証を行うことができる。そのことはとりわけ、全て同じコンテナイメージからプロビジョンされる複数のコンテナ/エンクレーブに関する認証レポートをローカルに検証するのに効率的であり得る。
【0067】
[0072] 例えば一部の例では、コンテナ認証サービス394が、検証のために送信されるそれぞれの新たな認証レポートについてエンクレーブ認証レポートの新たな終端間の検証を要求することなしに、特定のコンテナベースのエンクレーブに関するセキュリティ保証(例えばその分離セキュリティ保証及びプリミティブを認証する)を検証し又は認証するように構成される。
【0068】
[0073] これは例えばエンクレーブ認証レポートを検証するための、及び新たなコンテナベースのエンクレーブレポートが遠隔キープロビジョニングサービスによって過去に検証されたコンテナベースのエンクレーブレポートに対応すると判定される場合又はかかるレポートと同様のプロファイルを有すると判定される場合に(過去のコンテナベースのエンクレーブ又は新たなコンテナベースのエンクレーブからの)新たなエンクレーブ認証レポートを検証するために使用することができる、AIKを含む資格情報又は遠隔キープロビジョニングサービス395及び/又は遠隔認証サービス396から受信される他の資格情報をコンテナ認証サービス394が記憶することによって可能である。
【0069】
[0074] 新たなコンテナベースのエンクレーブレポートが過去に検証されたコンテナベースのエンクレーブレポートに対応する又はかかるレポートと同様のプロファイルを有するという判定は、例えば新たなコンテナベースのエンクレーブレポートが、例えば同じセキュリティ領域及びプロビジョニングプロファイルを有する(例えばTPMプラットフォーム構成レジスタ(PCR)内の同様のシステムブートチェーンを有する、同じIDKキーを有する、及び/又は同じ基礎を成す公認された保証キー(EK)に結び付けられる)同じ又は異なるコンテナベースのエンクレーブの過去の遠隔認証から受信される同じAIK又は他の資格情報/セキュリティ情報を用いて署名されることを確認することによって行うことができる。
【0070】
[0075] 他の例では、かかる判定は、新たなコンテナベースのエンクレーブレポートが、過去にプロビジョンされたコンテナをプロビジョンするために使用される及び遠隔認証サービス140によって検証されている対応するエンクレーブ認証レポートを作成するために使用される同じセキュアデータ329を有する同じコンテナイメージからプロビジョンされた新規コンテナから受信されると判定することによって行うことができる。
【0071】
[0076] 一部の例では、前の/ホストコンテナエンクレーブと同じイメージによってプロビジョンされる新規/ゲストコンテナエンクレーブを認証するプロセスが、ローカル及び/又は遠隔コンテナ認証サービス394並びにローカル及び/又は遠隔キープロビジョニングサービスを使用するシステム300A/Bによって実行され、(1)新規/ゲストエンクレーブに送信されるキーをホストが(例えばキープロビジョンサービス394を使用することによって)生成すること又は(例えば遠隔キープロビジョニングサービスを使用することによって)得ること、(2)新規/ゲストエンクレーブが認証レポートを生成すること、(3)新規/ゲストエンクレーブがホストとディフィーヘルマンキー交換プロセスを開始すること、(4)新規/ゲストエンクレーブが、コンテナ認証サービス340に認証レポートを提示すること等によって、及びホストエンクレーブ等の前のコンテナエンクレーブに関する過去に検証された認証レポートに対応する情報を含む認証レポートを(キー交換データと共に)ホストエンクレーブに提示すること、(5)ホストがディフィーヘルマンキー交換プロセスを開始すること、(6)ホストがコンテナ認証サービス340等と共に及び同じコンテナイメージからプロビジョンされる過去にプロビジョンされたコンテナの過去の認証に基づき得る新規/ゲスト認証レポートを検証すること、(7)ホストがキープロビジョニングサービス394によって提供されるキー情報を使用して新規/ゲストエンクレーブにキー交換情報を送信すること、(8)ホスト及びゲストエンクレーブがディフィーヘルマンキー交換を完了すること、及び(10)ホストがキープロビジョニングサービス340を使用してゲストエンクレーブに送信されるキーを共有キーで暗号化することを含む。
【0072】
[0077] かかる実施形態では、遠隔認証サービスによって過去にプロビジョンされ認証された同じコンテナイメージからプロビジョンされる新規/ゲストエンクレーブのエンクレーブ認証レポートを検証するために、ローカルキープロビジョニングサービス394及びコンテナ認証サービス340を利用することができる。
【0073】
[0078] 一部の実施形態では、新規コンテナ315は、認証されると他のコンテナのためのレポートをローカルに生成し又は他のコンテナに認証をデリゲートすることができる。一部の例では、例えばそれらの他のデリゲートコンテナの方が長く存続しており、従ってプロキシのように振る舞うことができる。このことは例えば所与のホストシステム300B上に多くの短期的コンテナが存在すること、並びにコンテナ及びデリゲートコンテナの様々な階層構造内の認証のネスト化を可能にする。
【0074】
[0079] 一部の例では、認証がコンテナの属性(例えば様々なコンテナの有効期限の条件、様々なコンテナの種類、様々なコンテナの位置、様々なコンテナのテナント、様々なコンテインコンテンツ、様々なコンテナのリスクプロファイル、様々なコンテナに関する様々なサービス保証品質、コンテナの責任(例えばデリゲート又はプライマリコンテナ)、及び/又は他の任意のコンテナ属性)に基づいて異なるように、並びにシステム及び/又は遠隔サービスの異なる階層/コンポーネントを用いて行われる。
【0075】
[0080] 例えば長く存続するコンテナ及び/又は高いリスクレベルを有するコンテナは特定の1つ又は複数の遠隔認証サービスを認証することを要求され得るのに対し、短く存続するコンテナ及び/又は低いリスクレベルを有するコンテナである異なるコンテナはシステム/コンテナにより近位の異なる遠隔認証サービスを認証すること、更にはローカルコンテナ認証サービス(即ち394)を認証することだけを要求され得る。
【0076】
[0081] 従って一部の例では、システムがコンテナからの認証にアクセスし、認証を生成した対応するコンテナの決定済みの有効期限の条件(又はコンテナの他の任意の属性)に基づいて適切な認証サービスに認証を確定的にルートすることができる。例えばその後のコンテナ認証を受信すると、システムはその後のコンテナ認証に関連する特定のコンテナの属性を決定し、特定のコンテナの属性に基づいてその後のコンテナ認証を遠隔サービスに確定的にルートし、或いは特定のコンテナの属性に少なくとも部分的に基づいてその後のコンテナ認証を遠隔サービスにルートすることなしに認証レポートを生成することができる。属性はコンテナの有効期限を含み得るので、そのことは第1の1組のコンテナを分析するシステムが第2の1組のコンテナよりも相対的に長い有効期限を有することを含むこともでき、例えば第1の1組のコンテナよりも相対的に短い有効期限を有するその後のコンテナを含む第2の1組のコンテナのそれぞれに関するローカル認証と共に1つ又は複数の認証レポートを生成しながら、及び第2の1組のコンテナを遠隔サービスにルートすることなしに、第1の1組のコンテナに関連する1つ又は複数のコンテナ認証が遠隔サービスにルートされる。
【0077】
[0082] 上記の内容に関して、コンテナからの認証は認証要求(例えばエンクレーブ認証要求、コンテナ認証要求、認証レポート、及び/又は他の認証)であり得ることが理解されよう。加えて、認証をルートするために使用される属性は、上記のようにコンテナの有効期限又は他の任意のコンテナ/エンクレーブ属性であり得ることも理解されよう。
【0078】
[0083] 次に、図5の流れ図に関してコンテナベースのメモリエンクレーブを用いてコンテナをプロビジョンするための流れを説明する。図示のように、図5の流れ図500は開示する実施形態に従ってコンテナをプロビジョンするための様々な方法に関連する複数の動作(動作510、動作520、及び動作530)を含む。
【0079】
[0084] 図示の第1の動作(動作510)は、第1のセキュリティ領域(例えばVTL0)上で実行されるホストシステムによって使用される特定のセキュリティ構成を認証するために使用されるセキュリティコンポーネント(例えば.dll328等のライブラリファイル)を有するコンテナイメージ(例えばコンテナイメージ326)をシステム(例えばシステム300A)が識別することを含む。一部の例では、コンテナイメージが識別され、ローダ370によってメモリ(例えばVTL0メモリ380)内にロードされる。メモリマネージャ360がコンテナを何処にロードするのかを識別し、プロビジョンされた及び使用を停止されたコンテナを追跡してメモリを効果的に管理する。
【0080】
[0085] コンテナイメージのセキュリティコンポーネントは様々な形を取ることができ、ライブラリファイルである必要はないことを指摘しておく。代わりに、セキュリティコンポーネントは認証可能な及びエンクレーブ認証要求を生成するために使用される又はエンクレーブ認証要求内に含まれる情報を有する構成情報を有する任意のデータ(例えばデータブロブ、データ構造、非構造化データ等)を含むことができ、かかるデータとして構成され得る。一部の例では、セキュリティコンポーネントが、コンテナイメージ326のセキュリティ構成プロファイルを識別する情報又はコンテナイメージ326がロードされるエンクレーブメモリの分離属性を識別する情報を含む。
【0081】
[0086] セキュリティコンポーネントが、例えばホストシステムのエンクレーブメモリパーティション内の(例えばVTL1メモリ390内の)位置を含み得るホストシステムのメモリ位置内にロードされる。必須ではないが、コンテナイメージ326はプロビジョンされた後でキープロビジョンサービス394によって提供される1つ又は複数のキーを用いて復号される実行可能コード又は他のセキュアデータ329も含むことができ、そのため実行可能コードはホストシステムの分離されたエンクレーブメモリパーティション(例えばVTL1)内に自動でインスタンス化される。
【0082】
[0087] とりわけセキュリティコンポーネントからの情報は、コンテナが完全にプロビジョンされた後で対応するコンテナベースのメモリエンクレーブのセキュリティ保証を検証するために使用され得る。一部の例では、基礎を成すストレージ/セキュリティ領域(例えばVTL0メモリ380)内に実装されるコンポーネント/プロセスによる不所望のアクセスからセキュリティコンポーネントを更に分離し保護するために、セキュリティコンポーネントがエンクレーブメモリパーティション(例えばVTL1メモリ390)内にロードされることも指摘しておく。
【0083】
[0088] 新規コンテナをプロビジョンする初期段階の間、セキュリティコンポーネントの実際の/確認可能なメモリアドレスはコンテナイメージによって指定されていないのでまだ分からない。従って、コンテナイメージ326から新規コンテナ315をプロビジョンするときマッピングテーブル及びコンテナメタデータを更新するために使用されるメモリアドレスは、(間違ったプレースホルダアドレスである)セキュリティコンポーネントのためのメモリアドレスと称されるものに過ぎず、ホストシステムの実際の/確認可能なアドレスではない。この時点でメモリアドレスと称されるものとしか呼ばれないのはこの理由からである。
【0084】
[0089] セキュリティコンポーネントのためのこのメモリアドレスと称されるものは、マッピングテーブル324及び/又はコンテナメタデータ等のデータ構造内でコンテナの初期プロビジョン段階中に記録される。
【0085】
[0090] マッピングテーブル324は様々な形を取ることができ、単一の独立型データ構造又は複数の分散型テーブル/構造とし得ることを指摘しておく。一部の例では、マッピングテーブル324はシステム内の様々なコンテナ及びその割り当てられたメモリ位置を識別するマッパ330によって作成され維持される。作成されると、マッピングテーブル324はコンテナ管理サービス340及びメモリマネージャ360によって参照される、新規コンテナ315及び他のプロビジョンされたコンテナとのモニタリング及びインタフェーシングを形成する。
【0086】
[0091] コンテナをプロビジョンした後、コンテナはコンテナメタデータ及び/又はマッピングテーブル内のセキュリティコンポーネントへのアドレス/ポインタによってセキュリティコンポーネントにアクセスして、エンクレーブ認証レポートを生成するためにコンテナによって使用されるセキュリティコンポーネント情報を識別する。従ってセキュリティコンポーネントへのアドレスが正しいアドレスで更新されない場合、コンテナはセキュリティコンポーネントの情報にアクセスすることができず、コンテナ/エンクレーブのための適切なセキュリティ保証と共にエンクレーブ認証レポートを作成することもできず、それらのセキュリティ保証を認証する任意の/全ての試みが失敗する。
【0087】
[0092] 加えて一部の例では、ページング操作等の計算プロセスがコンテナに関する割り当てメモリ位置の変更を引き起こす場合がある。そのような例に対処するために、割り当てメモリ内の変更を反映するようにマッピングテーブル324を更に更新することができる。加えてコンテナは認証サービス394を認証することができ、又はコンテナの整合性がコンテナのコードの整合性(CI)ポリシと一致することを検証するホストメモリエンクレーブ(例えばVTL1)によってコンテナが検証されてもよく、そのためメモリエンクレーブは例えば遠隔認証サービス396から遠隔認証を得る必要なしに新たな認証レポートを発行する。加えてそのような例では、ホストメモリエンクレーブが遠隔認証サービス396のためのデリゲートとして機能する。一部の実施形態では、この認証をマッピングテーブル内のメタデータとして印付けすることができ、このメタデータがページング操作によって「ダーティ」として印付けされる場合があり、従ってその後毎回認証を「リフレッシュ」しなければならないように、このメタデータもメモリマネージャによって追跡され得る。従ってこの実施形態では、メモリ範囲が認証レポート内に含まれることになる。
【0088】
[0093] 従って一部の実施形態では、コンテナが完全にプロビジョンされ、セキュリティコンポーネントがホストシステムのエンクレーブメモリパーティション内等のホストシステムのメモリ内に最終的にロードされたら、被参照コンテナのセキュリティコンポーネントのメモリアドレスを更新することが重要である。
【0089】
[0094] 動作520によって反映されるように、システム300Aは、ホストシステムのユーザモードを実装するために使用される第1のセキュリティ領域(例えばVTL0メモリ380)と異なる第2のセキュリティ領域(例えばVTL1メモリ390)内に(新たなコンテナエンクレーブを含む)新規コンテナ315をインスタンス化するためにコンテナイメージ326を使用する。具体的には新規コンテナは、認証可能なセキュリティコンポーネント(例えば.dll328)内で指定され、記憶データのために分離されたエンクレーブメモリを参照し利用するように、及びホストシステムの基礎を成すユーザモードメモリから分離されるプロセスを実行するようにコンテナが構成されることをもたらす構成に基づき、ホストシステムの分離されたエンクレーブメモリパーティションを利用するように構成されることによってコンテナベースのエンクレーブとしてインスタンス化される。
【0090】
[0095] プロビジョンされると、新規コンテナ315は、ホストシステムの特定のメモリアドレスを有し、参照するホストシステムの分離されたエンクレーブメモリパーティション内に記憶されるセキュリティコンポーネントの複製を含む。しかし上記で述べたように、初期コンテナイメージに基づいて、並びにマッピングテーブル324及び/又はコンテナメタデータ内に反映されるように、新規コンテナ315によって提供され又は新規コンテナ315によってマップされる現在のアドレスは(新規コンテナをプロビジョンするためにコンテナイメージが最初に使用された時点でそのアドレスが知られていなかったので)コンテナからホストシステムにおけるセキュリティコンポーネントのメモリアドレスへのリンクと称されるものに過ぎない。
【0091】
[0096] この問題は複数の異なるコンテナをプロビジョンするために単一のコンテナイメージを使用すること、並びにそれらのコンテナのためのセキュリティコンポーネントを新規コンテナが最初にプロビジョンされているVTL0メモリではなくホストのエンクレーブメモリパーティション内に記憶/分離することについて特に顕著であり関係する。
【0092】
[0097] この問題に対処するために、システムがリンクと称されるもの(例えばセキュリティコンポーネントの記録済みの/称される物理メモリアドレス)にアクセスしそれを修正し、それにより新規コンテナとエンクレーブメモリパーティション内のメモリアドレスとの間のマップされたリンクがコンテナをエンクレーブメモリパーティション内のホストシステムの正しいメモリアドレスに確認可能な形でリンクする(動作530)。
【0093】
[0098] この修正は、新規コンテナにおけるセキュリティコンポーネントのメモリアドレスと称されるものを、セキュリティコンポーネントが実際に記憶されるホストシステムの実際のメモリアドレスで上書きすること、セキュリティコンポーネントが実際に記憶されるホストシステムの実際のメモリアドレスからのリンクを作成すること、マッピングテーブル324内のセキュリティコンポーネントに関連するアドレスと称されるものを実際の/検証可能なアドレスに変更すること、セキュリティコンポーネントのメモリアドレスと称されるものを有するマッピングテーブル324を、セキュリティコンポーネントのメモリアドレスへの正しいアドレスを有する新たなマッピングテーブル324で上書きする又は置換すること、元のリンク/アドレスと称されるものからエンクレーブメモリパーティション内のセキュリティコンポーネントの実際の確認可能な物理アドレスへのリンク又は新たなポインタをマッピングテーブル324内に作成することのうちの1つ又は複数も含み得る。
【0094】
[0099] 修正はマッピングテーブルを作成すること、及び新規コンテナに関連するメタデータを使用してエンクレーブメモリパーティション内のセキュリティコンポーネントのメモリアドレスをマッピングテーブルに追加することを含むこと又はそれに従うこともできる。
【0095】
[00100] このメモリアドレスがセキュリティコンポーネントの正しい/確認可能なメモリ位置を指すようにマッピングテーブル内で変更され、更新され、或いは修正されると、コンテナはセキュリティコンポーネントに基づく情報を有する認証レポートにアクセスし、かかる認証レポートを生成することができる。一部の実施形態では、認証レポートがコンテナ管理サービス350又は依拠する当事者と共有されることに留意されたい(動作540)。一部の実施形態では、VTL1が新規コンテナ315の状態及びシステム300Bの状態をモニタすることができる。一部の例では、コンテナ管理サービス350がコンテナの状態及びシステムの状態をモニタすることもできる。コンテナの状態をモニタすることは、認証要求のアクセス及び評価、認証レポートの評価、及び/又はコンテナへの更新及び書き込み要求のモニタリング、及び/又はコンテナのエンクレーブメモリのアドレス再指定/再割り当てを含み得る。
【0096】
[00101] 所与の新規コンテナ315又はシステム300Bが認証に失敗する場合或いはそのセキュリティが侵害されていると思われる場合、コンテナ管理サービス350は新規コンテナ315を削除することを要求される可能性があり、及び/又はそのようなセキュリティの侵害を独自に識別する場合はかかるアクションを事前対応的に起こすことができる(動作550)。
【0097】
[00102] 一部の実施形態ではVTL1がマッピングテーブル324をモニタすることができ、新規コンテナ315及び同様のエンティティが認証に失敗する場合或いはセキュリティが侵害されている場合、VTL1メモリを新規コンテナ315及び同様のエンティティ内にマップするための更新を防ぐこともできる。一部の実施形態では、VTL1又は他のコンポーネントから遠隔認証サービス396等の遠隔管理エンティティに追加の通知が送信され得る。
【0098】
[00103] 図6は、開示する実施形態による、コンテナのセキュリティ保証を認証するための方法に関連する複数の動作(動作610、620、630、及び640)を有する流れ図600の一実施形態を示す。この流れ図600は、図4に示すシステム300Bに対応する。
【0099】
[00104] 最初に、システム300Bの説明図に反映するように及び先に説明したように、遠隔認証サービス396を使用してシステム認証レポートを検証し個々のエンクレーブ/コンテナレポートを検証することができる。認証プロセス内で使用されるキー及び他の資格情報は遠隔キープロビジョニングサービス395によって提供されてもよい。しかし更に説明するように、短期的コンテナ、とりわけ同じコンテナイメージからプロビジョンされるコンテナのための終端間の認証及びキープロビジョニングは無駄な資源を意味する。
【0100】
[00105] 目下のシステムはローカルキープロビジョニングサービス394及びローカルコンテナ認証サービス340を提供することによってこれらの非効率の一部を解決し、コンテナベースのメモリエンクレーブを有する前の及び/又は既存のコンテナに関するエンクレーブ認証レポートをプロビジョンし及び/又は認証するために使用された過去に使用されたコンテナイメージに新規コンテナが基づく場合、それらのサービスは遠隔サービスに関連する資格情報を含む及び/又は維持するが、(終端間のプロビジョニング及び/又は認証に要求されるように)新規コンテナのためのプロビジョニング又は認証要求を遠隔サービスに対してシステム300Bの外に伝えることなしに、プロビジョニング及び/又は認証中にコンテナにキーを直接与えるために及びプロビジョンされるコンテナのセキュリティ保証を認証するために使用することができる。
【0101】
[00106] 図6に示すように、システムによって実装される第1の動作は、ホストシステムの第1のセキュリティ領域(例えばVTL0)と異なるセキュリティ領域(例えばエンクレーブメモリを含むVTL1メモリ)内にある1つ又は複数のコンテナを識別する動作である(動作610)。とりわけこの動作では、コンテナのそれぞれがホストシステムのエンクレーブメモリを参照するように、及びエンクレーブメモリに関する特定のセキュリティ構成を認証するためにセキュリティコンポーネントを使用するように構成される。このセキュリティコンポーネントはエンクレーブメモリ内等のホストシステムの特定のメモリアドレスにも記憶され、1つ又は複数のコンテナにおけるセキュリティコンポーネントへの1つ又は複数の参照によってリンクされる。
【0102】
[00107] 次の動作は、セキュリティコンポーネントによって得られる又はセキュリティコンポーネントを含む情報に基づいて1つ又は複数のコンテナのセキュリティ構成のセキュリティ保証を検証する遠隔認証サービスから単一の認証レポートをシステムが得ることを含む(動作620)。この動作は、例えば特定のコンテナイメージによってプロビジョンされ、ホストシステムのエンクレーブメモリを利用し、認証レポートを生成するためにセキュリティコンポーネントを使用した/使用する第1のコンテナに関してシステムが遠隔認証サービスにコンテナ認証要求を提出することに応答して行われ得る。
【0103】
[00108] 次にシステムは、遠隔認証サービスから単一の認証レポートを受信した後で1つ又は複数のコンテナのうちの特定のコンテナに関するセキュリティ保証を認証するための新たな要求を受信する(動作630)。この動作は、例えば(第1のコンテナをプロビジョンするために使用された同じコンテナイメージからプロビジョンされる)新たな/第2のコンテナが新たな認証要求を生成し提出することに応答して行われ得る。或いはその特定のコンテナは、追加の認証要求を提出している又は過去に提出された認証要求を再送している第1のコンテナであり得る。一部の実施形態ではこの認証要求がコンテナ用であり、一部の実施形態ではこの認証要求がコンテナ及びそのコンテナに関連するエンクレーブ用であることに留意されたい。
【0104】
[00109] 一部の実施形態では、ローカルコンテナ認証サービス340が新たな要求をインタセプトし、前の認証要求に応答して第1の/単一の認証レポートを検証するために使用された遠隔認証サービスに新たな認証要求が伝送されることを防ぐ。一部の実施形態では、遠隔認証サービスへのネットワークの接続性が絶え、タイムアウトし、又は別様に信頼できず、そのため前の認証要求に応答して第1の/単一の認証レポートを検証するために使用された遠隔認証サービスに伝送される新たな要求がその意図する宛先に到達しない。
【0105】
[00110] 代わりにシステム(例えばローカルコンテナ認証サービス340)が特定のコンテナのセキュリティ構成のセキュリティ保証を(遠隔認証サービスと確認することなしに)独立に検証し及び/又は他のやり方で認証する(動作640)。この動作は、例えば単一の認証レポート内で検証された認証レポートを生成した前のコンテナをプロビジョンするために使用された同じコンテナイメージから特定のコンテナがプロビジョンされると判定することに応答して、及び新たな認証要求を受信する前に受信された前の認証レポートに基づいて行われる。
【0106】
[00111] 一部の例では、全て同じコンテナイメージからプロビジョンされるホストシステムのメモリアドレスに記憶される同じセキュリティコンポーネントへの参照をそれぞれ含む複数の異なるコンテナに関するセキュリティ保証をシステムが認証するように様々なコンテナ認証要求について、及び同じコンテナイメージからプロビジョンされる別のコンテナのために生成された過去に受信/署名された認証レポートによるセキュリティ保証の過去の検証に基づいて動作630及び640が繰り返される。
【0107】
[00112] 一部の実施形態では、認証サービスをキャッシングの複数の階層に階層化することができ、例えば或る階層はコンテナ自体の中で実行することができ、別の階層はホスト内で実行することができ、第3の階層は遠隔認証サービス396等の遠隔サービス内で実行すること等ができる。この場合、コンテナイメージの検証が異なる階層に報告(又は伝搬)され、認証サービスが高度に利用可能であることを確実にするために「キャッシュ」され得る。
【0108】
[00113] 上記の内容に関して、様々な階層内の様々な認証のネスト化は各階層における構造化された及び/又は確定的な認証も含み得ることが理解されよう。例えば認証の各階層に関して、システムは認証される認証レポートを生成するコンテナの属性を独立に識別することができる。これらの属性に基づき、同じ階層内でその階層レベルにおいて認証することを担うコンポーネント/サービスによって(例えばコンテナによって、デリゲートコンテナによって、ホストによって、遠隔サービス等によって)認証を行うことができ、又は認証のための要求を別の階層/認証サービス又はコンポーネントに押し出すことができる。
【0109】
[00114] 上記の実施形態は、コンテナベースのメモリエンクレーブを提供するためにコンテナの層状の分離を利用するやり方で並びにスケーラブル及び効率的なやり方で、従来のメモリ分割技法に関連する欠点の多くを克服するために使用できることが理解されよう。
【0110】
[00115] 本明細書に記載した方法は、上記で説明し、特許請求の範囲に記載し、1つ又は複数のプロセッサ(例えばハードウェアプロセッサ)及びコンピュータ可読媒体を含むような計算システムによって実践できることが理解され、コンピュータ可読媒体は、ハードウェアプロセッサによって実行可能であり、ハードウェアプロセッサによって実行されるとき、本明細書に記載した方法内で挙げた行為を実行することを含む様々な機能を対応する計算システムに実行させるコンピュータ実行可能命令を記憶する。
【0111】
[00116] 本発明の実施形態は、以下でより詳細に論じるコンピュータハードウェアを含む専用コンピュータ又は汎用コンピュータを含む又は利用することができる。本発明の範囲に含まれる実施形態は、コンピュータ実行可能命令及び/又はデータ構造を運び又は記憶するための物理媒体及び他のコンピュータ可読媒体も含む。かかるコンピュータ可読媒体は、汎用コンピュータシステム又は専用コンピュータシステムによってアクセス可能な任意の利用可能媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は物理的記憶媒体である。コンピュータ実行可能命令を運ぶコンピュータ可読媒体は伝送媒体である。従って限定ではなく例として、本発明の実施形態は、物理的なコンピュータ可読記憶媒体及び伝送コンピュータ可読媒体という明確に異なる少なくとも2種類のコンピュータ可読媒体を含むことができる。
【0112】
[00117] 物理的なコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ(CD、DVD等)、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望のプログラムコード手段をコンピュータ実行可能命令又はデータ構造の形で記憶するために使用することができ、汎用コンピュータ又は専用コンピュータによってアクセスすることができる他の任意の媒体を含む。
【0113】
[00118] 「ネットワーク」は、コンピュータシステム及び/又はモジュール及び/又は他の電子装置間のデータの搬送を可能にする1つ又は複数のデータリンクとして定める。情報がネットワーク又は別の通信接続(ハードワイヤード、無線、又はハードワイヤード若しくは無線の組み合わせ)上でコンピュータに転送され又は提供されるとき、コンピュータはその接続を伝送媒体と適切に見なす。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能命令又はデータ構造の形で運び又は伝送するために使用することができ、汎用コンピュータ又は専用コンピュータによってアクセスすることができるネットワーク及び/又はデータリンクを含み得る。上記のものの組み合わせもコンピュータ可読媒体の範囲に含まれる。
【0114】
[00119] 更に様々なコンピュータシステムコンポーネントに到達すると、コンピュータ実行可能命令又はデータ構造形式のプログラムコード手段を伝送コンピュータ可読媒体から物理的なコンピュータ可読記憶媒体に(又はその逆に)自動で転送することができる。例えばネットワーク又はデータリンク上で受信されるコンピュータ実行可能命令又はデータ構造は、ネットワークインタフェースモジュール(例えば「NIC」)内のRAMの中にバッファし、その後コンピュータシステムのRAMに及び/又はコンピュータシステムにおける揮発性が低いコンピュータ可読物理記憶媒体に最終的に転送することができる。従ってコンピュータ可読物理記憶媒体は、伝送媒体を同じく(或いは主に)利用するコンピュータシステムコンポーネントに含めることができる。
【0115】
[00120] コンピュータ実行可能命令は、例えば特定の機能又は機能群を汎用コンピュータ、専用コンピュータ、又は専用処理装置に実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えばバイナリ、アセンブリ言語等の中間形式命令、更にはソースコードとすることができる。本内容は構造上の特徴及び/又は方法論的な行為に固有の言語で記載してきたが、添付の特許請求の範囲の中で定める内容は記載した特徴又は上記の行為に必ずしも限定されないことを理解すべきである。むしろ記載した特徴及び行為は特許請求の範囲を実装する形式の例として開示した。
【0116】
[00121] 本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯端末、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、スイッチ等を含む、多くの種類のコンピュータシステム構成を有するネットワーク計算環境内で実施できることを当業者なら理解されよう。本発明は、ネットワークを介して(ハードワイヤードデータリンク、無線データリンク、又はハードワイヤードデータリンクと無線データリンクとの組み合わせによって)リンクされるローカル及びリモートコンピュータシステムがどちらもタスクを実行する分散型システム環境内でも実施することができる。分散型システム環境では、プログラムモジュールがローカルメモリ記憶装置及びリモートメモリ記憶装置の両方の中に位置し得る。
【0117】
[00122] 或いは又は加えて、本明細書に記載した機能は1つ又は複数のハードウェア論理コンポーネントによって少なくとも部分的に実行され得る。例えば及び限定なしに、使用可能なハードウェア論理コンポーネントの例示的な種類は書換可能ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、結合プログラム可能論理装置(CPLD)等を含む。
【0118】
[00123] 本発明は、本発明の趣旨又は特性から逸脱することなく、他の特定の形態で実施することができる。記載した実施形態は、あらゆる点で限定的でなく例示に過ぎないと見なすべきである。従って、本発明の範囲は上記の説明によってではなく添付の特許請求の範囲によって示す。特許請求の範囲の意味及び等価性の範囲に含まれるあらゆる変更が特許請求の範囲に包含される。
図1
図2
図3
図4
図5
図6
【国際調査報告】