(57)【特許請求の範囲】
【請求項１】
仮想マシンインスタンスを実行するためのシステムであって、
仮想マシンインスタンスを作成するための実行環境を含み、前記仮想マシンインスタンスは、
前記仮想マシンインスタンスの外部で作成され前記仮想マシンインスタンスに一意に関連するインスタンス承認証明書を受け取るためのインスタンス承認ユニットと、
データキーを得るための要求を、前記仮想マシンインスタンスに関連する前記インスタンス承認証明書に基づいて生成するためのデータキーユニットと、
前記データキーに基づいてデータ項目を復号するための復号ユニットと
を含む、システム。
【請求項２】
前記仮想マシンインスタンスが、利用者又は利用者のグループに関連するユーザ証明書を得るためのユーザ証明書ユニットを更に含み、前記データキーユニットが、前記ユーザ証明書に更に基づいて前記要求を生成する、請求項１に記載のシステム。
【請求項３】
前記仮想マシンインスタンスが、利用者又は利用者のグループに関連するユーザ証明書を得るためのユーザ証明書ユニットを更に含み、前記復号ユニットが、前記ユーザ証明書に更に基づいて前記データ項目を復号する、請求項１に記載のシステム。
【請求項４】
前記インスタンス承認ユニットが、前記インスタンス承認証明書を得るための要求を発行し、前記要求は前記仮想マシンインスタンスに固有の少なくとも１つの属性を示す、請求項１乃至３の何れか一項に記載のシステム。
【請求項５】
前記仮想マシンインスタンスに関連する承認コードをキーサーバにおいて登録し、前記承認コードを前記仮想マシンインスタンスに与えるためのインスタンス所有者ユニットを更に含み、
前記少なくとも１つの属性が前記承認コードを示す、請求項４に記載のシステム。
【請求項６】
前記インスタンス所有者ユニットが、仮想マシンの前記実行環境に承認コードを含む命令を送り、前記実行環境が、前記命令を受け取ることに応答して前記仮想マシンインスタンスを作成し、前記仮想マシンインスタンスに前記承認コードを与える、請求項５に記載のシステム。
【請求項７】
前記データキーユニットは、前記仮想マシンインスタンスによって発行される一連の要求内の前記要求の位置を示すコードを、前記データキーを得るための前記要求内に含める、請求項１乃至６の何れか一項に記載のシステム。
【請求項８】
前記仮想マシンインスタンスが、前記データキー及び／若しくは前記データキーを使用して復号されたデータを揮発性メモリ内に保つ、請求項１乃至７の何れか一項に記載のシステム。
【請求項９】
前記仮想マシンインスタンスが、前記データキー及び前記データキーを使用して復号されたデータを使用後に消去する、請求項１乃至８の何れか一項に記載のシステム。
【請求項１０】
仮想マシンインスタンスにキーを発行するためのキーサーバシステムであって、
仮想マシンインスタンスを、前記仮想マシンインスタンスに固有の少なくとも１つの属性に基づいて識別するためのインスタンス識別ユニットと、
インスタンス承認証明書を生成し、前記インスタンス承認証明書を前記仮想マシンインスタンスに一意に関連付けるためのインスタンス承認判定部と、
前記仮想マシンインスタンスに前記インスタンス承認証明書を与えるためのインスタンス承認提供ユニットと、
データキーを得るための要求を、前記仮想マシンインスタンスから受け取るためのデータキー要求受信部であって、前記データキーを得るための前記要求は、前記インスタンス承認証明書に関連するインスタンス承認コンポーネントを含む、データキー要求受信部と、
前記インスタンス承認コンポーネントに基づき、前記仮想マシンインスタンスが前記データキーの受取りを承認されているかどうかを判定するためのデータ承認ユニットと、
前記仮想マシンインスタンスが前記データキーの受取りを承認されている場合に、前記仮想マシンインスタンスに前記データキーを与えるためのデータキー提供ユニットと
を含む、キーサーバシステム。
【請求項１１】
前記インスタンス承認証明書を得るための要求を、前記仮想マシンインスタンスから受け取るためのインスタンス証明書要求受信部であって、前記要求は前記仮想マシンインスタンスに固有の前記属性を示す、インスタンス証明書要求受信部と、
前記属性に基づいて前記仮想マシンインスタンスの有効性を確認するためのインスタンス検証ユニットと
を更に含む、請求項１０に記載のキーサーバシステム。
【請求項１２】
前記データ承認ユニットが、前記仮想マシンインスタンスの位置に更に基づき、前記仮想マシンインスタンスが前記データキーの受取りを承認されているかどうかの前記判定を行う、請求項１０又は１１に記載のキーサーバシステム。
【請求項１３】
前記インスタンス検証ユニットが、前記仮想マシンインスタンスの位置を示す属性に更に基づき、前記仮想マシンインスタンスの前記有効性の前記確認を行う、請求項１１に記載のキーサーバシステム。
【請求項１４】
前記データキーを得るための前記要求が、前記仮想マシンインスタンスの利用者又は利用者のグループに関連するユーザ証明書を更に示し、
前記データ承認ユニットが、前記データキーを得るための前記要求と共に受け取られる前記ユーザ証明書の指示及び前記データキーによって保護されているデータのアクセスポリシに更に基づき、前記仮想マシンインスタンスが前記データキーの受取りを承認されているかどうかの前記判定を行う、
請求項１０乃至１３の何れか一項に記載のキーサーバシステム。
【請求項１５】
仮想マシンインスタンスとしてインスタンス化可能な仮想マシンイメージであって、
前記仮想マシンインスタンスの外部で作成され前記仮想マシンインスタンスに一意に関連するインスタンス承認証明書を前記仮想マシンインスタンスに受け取らせるための命令コードと、
データキーを得るための要求を、前記仮想マシンインスタンスに関連する前記インスタンス承認証明書に基づいて前記仮想マシンインスタンスに生成させるための命令コードと、
前記データキーに基づいてデータ項目を前記仮想マシンインスタンスに復号させるための命令コードと
を含み、
各命令コードが、インスタンスクリエータにより実行される、仮想マシンイメージ。
【請求項１６】
仮想マシンインスタンスを実行する方法であって、前記仮想マシンインスタンスによる、
インスタンス承認ユニットにて、前記仮想マシンインスタンスの外部で作成され前記仮想マシンインスタンスに一意に関連するインスタンス承認証明書を受け取るステップと、
データキーユニットにて、データキーを得るための要求を、前記仮想マシンインスタンスに関連する前記インスタンス承認証明書に基づき生成するステップと、
復号ユニットにて、前記データキーに基づいてデータ項目を復号するステップと
を含む、方法。
【請求項１７】
仮想マシンインスタンスにキーを発行する方法であって、
インスタンス識別ユニットにて、仮想マシンインスタンスを、前記仮想マシンインスタンスに固有の少なくとも１つの属性に基づいて識別するステップと、
インスタンス承認判定部にて、インスタンス承認証明書を生成し、前記インスタンス承認証明書を前記仮想マシンインスタンスに一意に関連付けるステップと、
インスタンス承認提供ユニットにて、前記インスタンス承認証明書を前記仮想マシンインスタンスに与えるステップと、
データキー要求受信部にて、データキーを得るための要求を、前記仮想マシンインスタンスから受け取るステップであって、前記データキーを得るための前記要求は前記インスタンス承認証明書に関連するインスタンス承認コンポーネントを含む、ステップと、
データ承認ユニットにて、前記インスタンス承認コンポーネントに基づき、前記仮想マシンインスタンスが前記データキーの受取りを承認されているかどうかを判定するステップと、
データキー提供ユニットにて、前記仮想マシンインスタンスが前記データキーの受取りを承認されている場合に、前記仮想マシンインスタンスに前記データキーを与えるステップと
を含む、方法。
【請求項１８】
請求項１６又は１７に記載の方法をプロセッサシステムに実行させるための命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを実行することに関する。本発明は、仮想マシンインスタンスにキーを発行することに更に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングが重要なパラダイムになっている。クラウドコンピューティングでは、コンピューティング資源が商品として貸与される場合がある。典型的なクラウドコンピューティングモデルでは、クラウドプロバイダが物理サーバ上で実行される仮想サーバを提供する。本明細書では、仮想サーバが物理サーバと同様の機能を遠隔利用者に提供することができる。複数の仮想サーバが単一の物理サーバ上で実行可能であり、そのため、必要とされる物理サーバがより少なくなり得る。サービスプロバイダは、１つ又は複数の仮想マシンインスタンスとしてクラウドサーバ上で実行され得る、１つ又は複数の仮想マシンイメージを提供することができる。
【０００３】
クラウドコンピューティングではデータ保護が重要である。データのセーフガード保護には暗号化が潜在的に重要な役割を果たす。例えば、仮想マシンのファイルシステムの最上部で暗号化ファイルシステムが実行される場合がある。更に、Amazon Web Services（Seattle, Washington, USA）によって提供されるAmazon S3は、仮想マシンが暗号化形式でデータを記憶することを可能にするサーバサイド暗号化（ＳＳＥ：Server Side Encryption）を提供する。
【０００４】
ディスクイメージ暗号化は、静止時に、つまり、システムへの電力供給がオフにされており、攻撃者が何らかの方法でシステムのディスク又は他の外部記憶域へのアクセスした（一般に「オフライン攻撃」として知られている）場合に、データを保護することを目的とする技法である。同様の攻撃は、或る重要な違いを伴って仮想マシン（ＶＭ:virtual machine）にも加えられることがあり、その違いとはつまり、システムへの物理的アクセスが無くても攻撃が加えられ得ることである。攻撃者が仮想化ホスト又はハイパーバイザに（ローカルに又は遠隔的に）危害を加える場合、攻撃者はそのＶＭゲストの攻撃に移ることができる。カーネルベースの仮想マシン（Linux（登録商標） KVM）と呼ばれるシステムは、ゲストのディスクイメージを暗号化し、ゲストを始動させるために暗号化パスフレーズ又は暗号化キーを要求することにより、実行されていないゲストをシステム管理者が保護することを可能にする。
【０００５】
Porticor Virtual Private Data system（Porticor LTD,Ramat Hasharon）は、ディスクやファイル等の各データオブジェクトが、マスタキーと固有キーとの２つに分けられる一意キーによって暗号化される準同型分割キー暗号化技術を使用する。マスタキーは全てのデータオブジェクトに共通であり、アプリケーション所有者が保持し続けるのに対し、第２の固有キーはデータオブジェクトごとに異なり、仮想キー管理サービスによって記憶される。アプリケーションがデータ記憶域にアクセスするとき、データを動的に暗号化及び復号するために、キーの両方の部分が使用される。
【０００６】
米国特許出願公開第２０１０／０２１１７８２  Ａ１号は、クラウド内に記憶されるデータに対する検索可能暗号化技法を含むネットワークデータサービスに与えられるデジタルエスクロパターンを開示し、これは、単一データ暴露点を回避するために信頼性を複数のエンティティにわたって分散させる。一実施形態では、キー生成器、暗号技術プロバイダ、及びクラウドサービスプロバイダがそれぞれ別々のエンティティとして提供され、データのパブリッシャがデータをクラウドサービスプロバイダに機密に発行し、次いでその暗号化データを、サブスクライバの要求に応答して生成されたキー情報内に符号化されるサブスクライバ識別情報、例えばサブスクライバの役割に基づき、そのデータを要求するサブスクライバに選択的に公開できるようにする。
【０００７】
米国特許出願公開第２０１１／０２９６２０１  Ａ１号は、仮想化サーバ上での仮想マシン（ＶＭ）の高信頼の実行を、例えば仮想化サーバ上でＶＭを実行するために可能にするように構成される方法及び機器を開示する。ハードウェアトラストアンカを用いて物理的なマルチコアＣＰＵが構成され得る。ＶＭ（又はハイパーバイザ）がＣＰＵコアのうちの１つの上で実行されるとき、命令及びデータを暗号化／復号するために使用されるセッションキーを管理するようにトラストアンカ自体を構成することができる。例外により文脈切換えが行われる場合、ＶＭ（又はハイパーバイザ）に割り当てられたメモリ及びキャッシュのコンテンツを暗号化／復号するために使用されるセッションキーをトラストアンカがスワップする。
【発明の概要】
【課題を解決するための手段】
【０００８】
仮想マシンインスタンスの改善された処理を有することが有利であろう。この問題により良く対処するために、本発明の第１の態様は、
仮想マシンインスタンスに一意に関連するインスタンス承認証明書を受け取るためのインスタンス承認ユニットと、
仮想マシンインスタンスに関連するインスタンス承認証明書に基づいてデータキーを得るための要求を生成するためのデータキーユニットと、
データキーに基づいてデータ項目を復号するための復号ユニットと
を含む、仮想マシンインスタンスを作成するための実行環境を含むシステムを提供する。
【０００９】
インスタンス承認証明書は、仮想マシンインスタンスに一意に関連するため、仮想マシンインスタンスに自らを識別する方法を与える。このように仮想マシンインスタンスから生じているものとしてデータキーを得るための要求を認識することができ、このようにして、仮想マシンインスタンスにとって外部のエンティティが、仮想マシンインスタンスにデータキーを発行できるかどうか、及び例えば複数の入手可能なデータキーのうちのどのデータキーを仮想マシンインスタンスに発行できるのかを要求に基づいて判定することができる。
【００１０】
仮想マシンインスタンスは、利用者又は利用者のグループに関連するユーザ証明書を得るためのユーザ証明書ユニットを更に含むことができる。このようにして、仮想マシンインスタンスは、仮想マシンインスタンスに関連するインスタンス承認証明書、並びに利用者又は利用者のグループに関連するユーザ証明書の両方を有する。データキーユニットは、ユーザ証明書に更に基づいて要求を生成するように構成され得る。これにより、要求の受け手が仮想マシンインスタンス及び利用者の両方を識別できるようになり、そのため要求の受け手は、両方のエンティティに基づいて特定のデータキーを与えるかどうかを判定することができる。或いは、ユーザ証明書に更に基づいてデータ項目を復号するように復号ユニットが構成されても良い。このようにして、ユーザ証明書をデータキーと合わせて使用してデータを復号することができる。何れにせよ、仮想マシンインスタンスは、非暗号化形式のデータ項目にアクセスするためにユーザ証明書及びインスタンス承認証明書の両方を必要とする。
【００１１】
インスタンス承認ユニットは、インスタンス承認証明書を得るための要求を発行するように構成されても良く、この要求は仮想マシンインスタンスに固有の少なくとも１つの属性を示す。これにより、仮想マシンインスタンスは、インスタンス承認証明書を能動的に要求できるようになる。少なくとも１つの属性は、例えば仮想マシンインスタンスを一緒に一意に識別する１組の属性であり得る。
【００１２】
本システムは、仮想マシンインスタンスに関連する承認コードをキーサーバにおいて登録し、その承認コードを仮想マシンインスタンスに与えるためのインスタンス所有者ユニットを更に含むことができ、前述の少なくとも１つの属性は承認コードを含む。これにより、所有者ユニットは、仮想マシンインスタンスの復号能力を制御できるようになる。
【００１３】
インスタンス所有者ユニットは、仮想マシンの実行環境に承認コードを含む命令を送るように構成され得る。実行環境は、命令を受け取ることに応答して仮想マシンインスタンスを作成し、仮想マシンインスタンスに承認コードを与えるように構成され得る。これにより、インスタンス所有者は、承認コードに関連する復号能力を有する仮想マシンインスタンスを実行環境に作成させることができる。
【００１４】
インスタンス所有者ユニット及び実行環境は、ネットワークによって接続される２つの別々のハードウェアエンティティ上に実装することができる。本システムは、仮想マシンインスタンスに与えられる承認コード及び／又は仮想マシンインスタンスに発行されるデータキーを制御することにより、遠隔地からネットワークを経由でインスタンス所有者ユニットによって操作される仮想マシンインスタンスの信頼性を高めることを可能にする。
【００１５】
データキーユニットは、仮想マシンインスタンスによって発行される一連の要求内の要求の位置を示すコードを、データキーを得るための要求内に含めるように構成され得る。これにより、仮想マシンインスタンスの違法コピーが検出できるようになり、その理由は、２つの仮想マシンインスタンスが同じインスタンス承認証明書を使用した場合、仮想マシンインスタンスによって発行される一連の要求内の要求の位置を示すコードによってそのことが明らかにされ得るからである。具体的には、後続の要求における狭義単調増加していない位置が検出され得る。
【００１６】
仮想マシンインスタンスは、データキー及びデータキーを使用して復号されたデータを揮発性メモリ内に保つように、且つ／又はデータキー及びデータキーを使用して復号されたデータを使用後に消去するように構成され得る。これにより、データキー及び／又はデータ項目が固定記憶装置上に記憶されること、及び／又は必要以上に長い間メモリ内にあることを防ぐ。
【００１７】
本発明の別の態様では、
仮想マシンインスタンスを、仮想マシンインスタンスに固有の少なくとも１つの属性に基づいて識別するためのインスタンス識別ユニットと、
インスタンス承認証明書を判定し、インスタンス承認証明書を仮想マシンインスタンスに一意に関連付けるためのインスタンス承認判定部と、
仮想マシンインスタンスにインスタンス承認証明書を与えるためのインスタンス承認提供ユニットと、
仮想マシンインスタンスからデータキーを得るための要求を受け取るためのデータキー要求受信部であって、データキーを得るための要求は、インスタンス承認証明書に関連するインスタンス承認コンポーネントを含む、データキー要求受信部と、
インスタンス承認コンポーネントに基づき、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかを判定するためのデータ承認ユニットと、
仮想マシンインスタンスがデータキーの受取りを承認されている場合に、仮想マシンインスタンスにデータキーを与えるためのデータキー提供ユニットと
を含む、仮想マシンインスタンスにキーを発行するためのキーサーバシステムが提供される。
【００１８】
このキーサーバシステムは、仮想マシンインスタンスへのデータキーの配布を制御することができる。仮想マシンインスタンスに固有の属性、及び仮想マシンインスタンスに一意に関連するインスタンス承認証明書の後続の発行により、仮想マシンインスタンスの認証が承認プロセスと共により安全にされる。更に、「違法な」仮想マシンインスタンスにはインスタンス承認証明書が与えられなくても良く、そのためかかるインスタンスはデータキーを得るための有効な要求を生成できないため、「違法な」仮想マシンインスタンスを無効にすることができる。データ承認ユニットは、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかを判定するために１つ又は複数のポリシを使用することができる。かかるポリシは、何が許可され何が許可されていないのかを示すことができ、静的又は動的とすることができ、データの特性、上述の属性、並びに他の箇所で言及する関連する利用者及び／又は位置に依拠し得る。少なくとも１つの属性は、例えば仮想マシンインスタンスを一緒に一意に識別する１組の属性であり得る。
【００１９】
キーサーバシステムは、仮想マシンインスタンスからインスタンス承認証明書を得るための要求を受け取るためのインスタンス証明書要求受信部であって、要求は仮想マシンインスタンスに固有の属性を示す、インスタンス証明書要求受信部と、属性に基づいて仮想マシンインスタンスの有効性を確認するためのインスタンス検証ユニットとを更に含むことができる。これにより、仮想マシンインスタンス自体が、仮想マシンインスタンス承認証明書を要求できるようになる。仮想マシンインスタンスに固有の属性を使用し、キーサーバシステムに対して仮想マシンインスタンスを識別することが可能になる。
【００２０】
インスタンス検証ユニットは、仮想マシンインスタンスの位置を示す属性に更に基づき、仮想マシンインスタンスの有効性の確認を行うように構成されても良く、又はデータ承認ユニットは、仮想マシンインスタンスの位置に更に基づき、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかの判定を行うように構成される。これにより、仮想マシンインスタンスの位置をモニタし、適切な位置にない仮想マシンインスタンスに対するインスタンス承認証明書又はデータキーを拒否できるようになる。仮想マシンインスタンスの位置は、例えば仮想マシンインスタンスがその上で実行される、プロセッサ、メモリ、及び／又は記憶域を含む物理装置の位置とすることができる。
【００２１】
データキーを得るための要求は、仮想マシンインスタンスの利用者又は利用者のグループに関連するユーザ証明書を更に示すことができる。データ承認ユニットは、データキーを得るための要求と共に受け取られるユーザ証明書の指示及びデータキーによって保護されているデータのアクセスポリシに更に基づき、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかの判定を行うように構成され得る。このようにして、仮想マシンインスタンスが適切なユーザ証明書を保持する場合にのみ、承認されている仮想マシンインスタンスのみにデータキーが与えられる。
【００２２】
キーサーバシステムは、承認要求、証明書、及び／又はデータキーに関する通信に関係する情報のログを取るためのログユニットを含むことができる。かかるロギング情報は、例えば過去の事象の解析を行うために、不正使用を示すあり得る任意のパターンを検出するために使用され得る。
【００２３】
別の態様では、本発明は、仮想マシンインスタンスとしてインスタンス化可能な仮想マシンイメージを提供し、この仮想マシンイメージは、
仮想マシンインスタンスに一意に関連するインスタンス承認証明書を仮想マシンインスタンスに受け取らせるための命令コードと、
仮想マシンインスタンスに関連するインスタンス承認証明書に基づいてデータキーを得るための要求を仮想マシンインスタンスに生成させるための命令コードと、
データキーに基づいてデータ項目を仮想マシンインスタンスに復号させるための命令コードと
を含む。
【００２４】
別の態様では、本発明は仮想マシンインスタンスを実行する方法を提供し、この方法は、仮想マシンインスタンスによる、
仮想マシンインスタンスに一意に関連するインスタンス承認証明書を受け取るステップと、
仮想マシンインスタンスに関連するインスタンス承認証明書に基づき、データキーを得るための要求を生成するステップと、
データキーに基づいてデータ項目を復号するステップと
を含む。
【００２５】
別の態様では、本発明は仮想マシンインスタンスにキーを発行する方法を提供し、この方法は、
仮想マシンインスタンスを、仮想マシンインスタンスに固有の少なくとも１つの属性に基づいて識別するステップと、
インスタンス承認証明書を判定し、そのインスタンス承認証明書を仮想マシンインスタンスに一意に関連付けるステップと、
インスタンス承認証明書を仮想マシンインスタンスに与えるステップと、
仮想マシンインスタンスからデータキーを得るための要求を受け取るステップであって、データキーを得るための要求はインスタンス承認証明書に関連するインスタンス承認コンポーネントを含む、ステップと、
インスタンス承認コンポーネントに基づき、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかを判定するステップと、
仮想マシンインスタンスがデータキーの受取りを承認されている場合に、仮想マシンインスタンスにデータキーを与えるステップと
を含む。
【００２６】
別の態様では、本発明は、本明細書に記載の任意の方法をプロセッサシステムに実行させるための命令を含むコンピュータプログラム製品を提供する。
【００２７】
上述の本発明の実施形態、実装形態、及び／又は態様の２つ以上が、有用と見なされる任意の方法で組み合わせられても良いことが当業者によって理解される。
【００２８】
記載するシステムの修正形態及び改変形態に対応する、システム、仮想マシンインスタンス、キーサーバシステム、方法、及び／又はコンピュータプログラム製品の修正形態及び改変形態が、本明細書に基づいて当業者によって実行され得る。
【００２９】
本発明のこれらの及び他の態様が図面から明らかであり、図面を参照して以下で説明される。図中、同様のアイテムは同じ参照番号によって示されている。
【図面の簡単な説明】
【００３０】
【図１】仮想マシンインスタンスが実行され得る実行環境のブロック図である。
【図２】キーサーバシステムのブロック図である。
【図３】仮想マシンイメージのブロック図である。
【図４】仮想マシンインスタンスを実行する方法のフローチャートである。
【図５】仮想マシンインスタンスにキーを発行する方法のフローチャートである。
【発明を実施するための形態】
【００３１】
仮想マシンは、通常のホストオペレーティングシステム又は専用のハイパーバイザ内の隔離されたゲストオペレーティングシステムインストレーションと見なされ得る。例えば仮想マシンは、ソフトウェアエミュレーション又はハードウェア仮想化によって実装され得る。ソフトウェアエミュレーション及びハードウェア仮想化の両方が一緒に実装されても良い。仮想マシン内で実行されるソフトウェアは、仮想マシンによって提供される資源及び抽象化に限定される可能性があり、自らの仮想環境から抜け出すことができない。とはいえ当初、仮想マシンは、実際のマシンの隔離された効率的な複製を提供することを目的としていた。しかし、現在の仮想マシンの用途は、実際の如何なるハードウェアにも直接の対応関係を有さない仮想マシンを含む。
【００３２】
仮想マシンインスタンスは、例えば仮想マシンの実行開始時に仮想マシン内に含まれるデータを規定する仮想マシンイメージを含む、タイプ定義（type definition）を有することができる。実際の仮想マシンは、実行環境内で実行されるとき、用語、仮想マシンインスタンスによって仮想マシンのタイプ定義と区別され得る。
【００３３】
図１は、仮想マシンインスタンス１０を実行するためのシステムの態様を示す。本システムは、仮想マシンインスタンス１０の実行を制御する実行環境１１を含むことができる。実行環境１１は、分散コンピュータシステム上で動作可能であり得る複数の仮想マシンインスタンス１０の実行を制御するように構成され得る。本システムは、図１に示すように実行環境１１の一部であり得るインスタンスクリエータ１５を含むことができ、又はインスタンスクリエータ１５は、実行環境１１とは別のユニットとして構成されても良い。インスタンスクリエータ１５は、例えば仮想マシンの命令コードを定める仮想マシンイメージ（不図示）に基づいて仮想マシンインスタンス１０を作成することができる。インスタンスクリエータ１５は、場合により仮想マシンイメージと連動し、仮想マシンインスタンス１０が幾つかの命令コードを含むような方法で１つ又は複数の仮想マシンインスタンス１０を作成するように動作可能であり得る。集合的に特定の機能を担う命令コードをユニットと呼ぶ場合がある。かかるユニットはソフトウェアモジュール内に論理的に配置されても良いが、複数のソフトウェアモジュールにわたって分割されても良い。
【００３４】
仮想マシンインスタンス１０は、インスタンス承認証明書を受け取るように構成されるインスタンス承認ユニット１を含むことができる。このインスタンス承認証明書は、権限のある機関によって仮想マシンインスタンスの外部で作成され得る。更に、インスタンス承認証明書は、仮想マシンインスタンス１０に一意に関連し得る。つまり、同じ承認証明書が他の如何なる仮想マシンインスタンス１０にも与えられることはない。
【００３５】
仮想マシンインスタンスは、仮想マシンインスタンス１０に関連するインスタンス承認証明書に基づいてデータキーを得るための要求を生成するように構成される、データキーユニット２を更に含むことができる。例えば、承認証明書が要求内に含められても良く、又は仮想マシンが承認証明書を保持することを証明する情報が要求内に含められても良い。要求は、１つ又は複数のデータ項目、例えばコンテンツ項目や保護された患者記録項目を更に示すことができ、データ項目は暗号化され得る。要求は、その１つ又は複数のデータ項目のためのデータキーを得るための要求を伴い得る。
【００３６】
データキーユニット２は、要求に応答して仮想マシンインスタンス１０に送信され得るデータキーを受け取るように更に構成され得る。
【００３７】
仮想マシンインスタンスは、データキーに基づいてデータ項目７を復号するように構成される復号ユニット３を更に含むことができる。例えば、データ項目７は外部データベースから暗号化形式で取得される。仮想マシンインスタンスが暗号化データ項目７にアクセスする方法は、当業者に知られている任意の方法で良い。例えば、暗号化データ項目７は、データベースインターフェイス又はファイルシステムを介して取得され得る。任意の暗号化アルゴリズムが利用され得る。
【００３８】
仮想マシンインスタンス１０は、利用者又は利用者のグループに関連するユーザ証明書を得るように構成されるユーザ証明書ユニット４を更に含むことができ、データキーユニット２がユーザ証明書に更に基づいて要求を生成するように構成され、又は復号ユニット３がユーザ証明書に更に基づいてデータ項目７を復号するように構成される。何れにせよ、これにより、上記の仮想マシン認証方法にユーザ認証方法が追加される。ユーザ証明書は、承認された利用者しか秘密データにアクセスし得ないことを確実にするために使用され得る。インスタンス承認証明書は、そのような承認されたアクセスが、承認された仮想マシンインスタンスによってのみ行われることを確実にするために使用され得る。このようにして、未承認の（及び場合により悪意のある）仮想マシンインスタンスは、インスタンス承認証明書が無いため、例え何とかユーザ証明書を得たとしても、秘密データへの未承認のアクセスを得るために使用することができない。
【００３９】
インスタンス承認ユニット１は、インスタンス承認証明書を得るための要求を発行するように構成することができ、この要求は仮想マシンインスタンスに固有の少なくとも１つの属性を示す。例えば、この要求は、インスタンス承認証明書を提供する役割を担うサーバに送られ得る。属性は、例えばインスタンスの作成時刻、プロセスＩＤ、ネットワークアドレス、及び仮想マシンインスタンスを（一緒に）識別できる他の種類のパラメータを示し得る。「仮想マシンインスタンスに固有の少なくとも１つの属性」とは、全体として仮想マシンインスタンスに固有であり、又は仮想マシンインスタンスを一意に識別する１組の値であり得る。
【００４０】
実装形態の一例では、本システムが、仮想マシンインスタンス１０に関連する承認コードをキーサーバシステム６において登録し、仮想マシンインスタンス１０に承認コードを与えるためのインスタンス所有者ユニット５を含むことができる。インスタンス承認ユニット１は、承認コードを示す属性をインスタンス承認証明書を得るための要求内に含めるように構成され得る。
【００４１】
インスタンス所有者ユニット５は、承認コードを含む命令を仮想マシンの実行環境１１に送るように構成されても良く、実行環境１１は、命令を受け取ることに応答して仮想マシンインスタンス１０を作成し、仮想マシンインスタンス１０に承認コードを与えるように構成される。例えば、矢印１４で示すように、インスタンス所有者ユニット５は、実行環境１１の制御ユニット１３に承認コードを含む命令を送るように構成され得る。次いで、制御ユニット１３がインスタンスクリエータ１５と共同して仮想マシンインスタンス１０を作成し、仮想マシンインスタンス１０に承認コードを与える。或いは、図１の矢印１２で示すように、インスタンス所有者ユニット５は、仮想マシンインスタンス１０のインスタンス承認ユニット１に承認コードを送るように構成され得る。
【００４２】
実行環境１１は、仮想マシンインスタンス１０を作成するとき、仮想マシンインスタンス１０にインスタンス承認証明書を自動で与え、どのインスタンス承認証明書を使用するのかに関してキーサーバシステム６と交渉するように代わりに構成されても良い。
【００４３】
データキーユニット２は、仮想マシンインスタンス１０によって発行される一連のデータキーを得るための要求内の要求の位置を示すコードを、データキーを得るための要求内に含めるように構成され得る。キー要求の番号付けを使用することにより、より多くのエンティティ、例えば複数の仮想マシンインスタンスが同じインスタンス承認証明書を使用している場合に、この番号付けが検出され得る。コードは、例えばシーケンス番号を含むことができる。セキュリティを高めるために、例えばこのシーケンス番号が暗号化されても良く、又はシーケンス番号のハッシュコード若しくは署名が使用されても良い。
【００４４】
仮想マシンインスタンス１０は、データキー及び／若しくはデータキーを使用して復号されたデータを揮発性メモリ内に保つように、且つ／又はデータキー及びデータキーを使用して復号されたデータを使用後に消去するように構成され得る。このようにして、即座の使用に必要であるよりも長く秘密データが実行環境１１内に保たれることはない。データ項目７が再び必要な場合、データキーが再び要求されても良い。
【００４５】
図２は、仮想マシンインスタンス１０にキーを発行するためのキーサーバシステム６を示す。キーサーバシステム６及び／又は実行環境１１は、同じ又は別のサーバシステム上に実装され得る。
【００４６】
このキーサーバシステムは、インスタンス承認証明書の発行を担うモジュールを含むインスタンス証明書発行元３２を含むことができる。更に、このキーサーバシステムは、データキーの発行を担うモジュールを含むデータキー発行元３１を含むことができる。これを図２に示す。但し、これはキーサーバシステム６の実装形態の非限定的なアーキテクチャの一例に過ぎない。
【００４７】
キーサーバシステム６は、仮想マシンインスタンス１０に固有の少なくとも１つの属性に基づいて仮想マシンインスタンス１０を識別するように構成される、インスタンス識別ユニット２０を含むことができる。例えばキーサーバシステムは、仮想マシンインスタンス１０ごとに１つ又は複数の代表的属性を含む表を保持することができる。
【００４８】
キーサーバシステム６は、インスタンス承認証明書を判定するように構成されるインスタンス承認判定部２１を更に含むことができる。例えば、インスタンス承認判定部２１は、例えば擬似乱数生成器、具体的には暗号学的に安全な擬似乱数生成器を使用し、インスタンス承認証明書を生成するように構成され得る。インスタンス承認証明書は、例えば暗号化キーを示すことができる。インスタンス承認判定部は、インスタンス承認証明書を仮想マシンインスタンス１０に一意に関連付けるように構成され得る。この関連付けは、例えば上記の表によって実施されても良い。データベースの使用等、他の実装形態も当業者にとって実現可能である。
【００４９】
キーサーバシステム６は、仮想マシンインスタンス１０にインスタンス承認証明書を与えるように構成されるインスタンス承認提供ユニット２２を含むことができる。例えば証明書は、通信プロトコルを使用して仮想マシンインスタンス１０に送られる。
【００５０】
キーサーバシステム６は、仮想マシンインスタンス１０からデータキーを得るための要求を受け取るように構成されるデータキー要求受信部２３を更に含むことができる。データキーを得るための要求は、インスタンス承認証明書に関連するインスタンス承認コンポーネントを含むことができる。このコンポーネントは、別個のデータ要素や、暗号化署名等、要求の別のデータ要素の特定の変換等の任意の適切な形態を有し得る。
【００５１】
キーサーバシステム６は、インスタンス承認コンポーネントに基づき、仮想マシンインスタンス１０がデータキーの受取りを承認されているかどうかを判定するように構成される、データ承認ユニット２４を更に含むことができる。この機能は、インスタンス承認コンポーネントに関連する暗号化キーを検証することを伴い得る。
【００５２】
キーサーバシステム６は、データ承認ユニット２４によって判定される通り、仮想マシンインスタンス１０がデータキーの受取りを承認されている場合に、仮想マシンインスタンス１０にデータキーを与えるように構成される、データキー提供ユニット２５を更に含むことができる。
【００５３】
キーサーバシステム６は、仮想マシンインスタンス１０からインスタンス承認証明書を得るための要求を受け取るように構成される、インスタンス証明書要求受信部２７を更に含むことができる。この要求は、仮想マシンインスタンス１０に固有の属性を示し得る。
【００５４】
キーサーバシステム６は、インスタンス証明書要求受信部２７によって受け取られる属性の指示に基づき、仮想マシンインスタンス１０の有効性を確認するように構成されるインスタンス検証ユニット２８を更に含むことができる。
【００５５】
インスタンス検証ユニット２８は、仮想マシンインスタンス１０の位置を示す属性に更に基づき、仮想マシンインスタンス１０の有効性の確認を行うように構成され得る。更に、データ承認ユニット２４は、仮想マシンインスタンス１０の位置に更に基づき、仮想マシンインスタンス１０がデータキーの受取りを承認されているかどうかの判定を行うように構成され得る。
【００５６】
データキーを得るための要求は、仮想マシンインスタンス１０の利用者又は利用者のグループに関連するユーザ証明書を更に示すことができる。更に、データ承認ユニット２４は、データキーを得るための要求と共に受け取られるユーザ証明書の指示及びデータキーによって保護されているデータのアクセスポリシに更に基づき、仮想マシンインスタンス１０がデータキーの受取りを承認されているかどうかの判定を行うように構成され得る。
【００５７】
キーサーバシステム６は、承認要求、証明書、及び／又はデータキーに関する通信に関係する情報のログを取るためのログユニット２９、３０を更に含むことができる。ロギングは、インスタンス証明書発行元３２によって、及び同様にデータキー発行元３１によって行われ得る。ロギングは、単一のログユニット又は２つの別個のログユニット２９、３０によって行われ得る。
【００５８】
図３は、仮想マシンイメージ１００のコンポーネントを示す。仮想マシンイメージ１００は、仮想マシンの定義を提供することができる。仮想マシンイメージ１００に基づいて仮想マシンインスタンス１０を作成するように、実行環境１１が構成され得る。仮想マシンイメージは、仮想マシンインスタンス１０に一意に関連するインスタンス承認証明書を仮想マシンインスタンス１０に受け取らせるための命令コード１０１、仮想マシンインスタンス１０に関連するインスタンス承認証明書に基づいてデータキーを得るための要求を仮想マシンインスタンス１０に生成させるための命令コード１０２、及び／又はデータキーに基づいてデータ項目を仮想マシンインスタンス１０に復号させるための命令コード１０３を含むことができる。この仮想マシンイメージ１００は、とりわけ本開示の中の仮想マシンインスタンス１０に関する説明及び図面に基づき、当業者によって拡張され且つ／又は修正され得る。
【００５９】
図４は、仮想マシンインスタンスを実行する方法を示す。仮想マシンは、実行中に
−  仮想マシンインスタンスに一意に関連するインスタンス承認証明書を受け取るステップ（２０１）、
−  仮想マシンインスタンスに関連するインスタンス承認証明書に基づき、データキーを得るための要求を生成するステップ（２０２）、及び／又は
−  データキーに基づいてデータ項目を復号するステップ（２０３）
を行うことができる。
【００６０】
図５は、仮想マシンインスタンスにキーを発行する方法を示す。この方法は、
−  仮想マシンインスタンスに固有の少なくとも１つの属性に基づいて仮想マシンインスタンスを識別するステップ（３０１）、
−  インスタンス承認証明書を判定し、そのインスタンス承認証明書を仮想マシンインスタンスに一意に関連付けるステップ（３０２）、
−  インスタンス承認証明書を仮想マシンインスタンスに与えるステップ（３０３）、
−  仮想マシンインスタンスからデータキーを得るための要求を受け取るステップであって、データキーを得るための要求はインスタンス承認証明書に関連するインスタンス承認コンポーネントを含む、ステップ（３０４）、
−  インスタンス承認コンポーネントに基づき、仮想マシンインスタンスがデータキーの受取りを承認されているかどうかを判定するステップ（３０５）、及び／又は
−  仮想マシンインスタンスがデータキーの受取りを承認されている場合に、仮想マシンインスタンスにデータキーを与えるステップ（３０６）
を含むことができる。
【００６１】
これらの方法は、本開示の説明及び図面に基づいて当業者によって拡張され且つ／又は修正され得る。更に、本明細書に開示する方法及びシステムは、コンピュータプログラム製品の形式で少なくとも部分的に実装され得る。
【００６２】
本明細書に開示する技法は、例えばクラウドコンピューティングにおける仮想マシンのセキュリティに関する１つ又は複数の問題に対処するために使用され得る。例えば、ビルトインの職掌分散及びセキュリティパーティショニングを提供することにより、単一障害点の致命的な問題が回避され得る。保護はよりデータ中心に、且つよりきめ細かくされ得る。更に、キー管理が改善され得る。
【００６３】
仮想マシンインスタンスへの未承認のアクセス又は仮想マシンイメージの損失若しくは窃盗は、「クラウド」にコンピューティングをアウトソースしたデータ所有者に制御権が残されない状態で、関連データの著しい機密性の侵害を招く可能性がある。本明細書に開示する技法を使用してこの問題が低減され得る。データは暗号化されても良く、仮想マシンインスタンスが外部のキーサービスに暗号化データオブジェクトのキーを要求する方法が提供され得る。これにより、データ及びキーの両方にアクセスできる個々の当事者の力にセキュリティが依拠する状況の代わりに、クラウドユーザ及び／又は仮想マシン用の実行環境を有するクラウドプロバイダ等、２つの当事者間で責任を分けることができる。
【００６４】
クラウド仮想マシンインスタンスによってデータ復号キーを動的に得るための方法は、１）クラウド仮想マシンインスタンスが一意の識別情報及び承認を得るステップ、２）クラウド仮想マシンインスタンスが暗号化データオブジェクトのキーをキーサービスにおいて要求するステップ、３）キーサービスがその要求を処理し、仮想マシンが承認されているかどうかを評価し、肯定的な評価の場合はデータオブジェクトのキーで応答するステップを含むことができる。
【００６５】
本明細書に開示する技法は、復号キーが他の場所で保持されている間、データがほぼ永続的に暗号化形式のままであることを可能にする。データを復号するためのキーは、指定され、承認された仮想マシンにしか発行されなくても良い。データは、その処理時においてのみ、非暗号化形式で入手することができ得る。復号データは、最早必要なくなるや否や削除され得る。キーは一時的に発行され、メモリ内にのみ保たれることができ、持続的に記憶される必要はない。このように、持続的な記憶を控えることが、実行環境１１によって強制され得る。
【００６６】
幾つかの実施形態を以下に示す。これらの実施形態は、通信のやり取りのシーケンスによって示され、かかるシーケンスは以下に示す幾つかの対話表によって示される。対話表では以下の表示法を使用する。「情報源−［メッセージ（パラメータ，．．．）］→宛先」。この表示法は、エンティティ「情報源」が「メッセージ」によって示される種類であって、パラメータ「パラメータ，．．．」を有するメッセージを別のエンティティであり、そのメッセージを受け取る「宛先」に送ることを意味する。かかるメッセージの伝達は、メッセージ、ウェブサービスの起動、ＡＰＩの呼び出し、又は他の任意の通信プロトコルの形式を取ることができる。
【００６７】
仮想マシンインスタンス内で使用されるデータオブジェクトは、暗号化され得る。データオブジェクトは、数値やテキスト値、データベースセル、ファイル、更にはファイルシステム等、任意の種類のデータとすることができる。これらのデータオブジェクトが使用される場合、仮想マシンインスタンスによって、正しい復号キーがキーサーバに要求される。このサーバは、セキュリティを高めるために仮想マシンインスタンスとは独立にホストされ得る。表１は、仮想マシン用の暗号化システムに関与し得る様々なステップを示す。
【００６８】
表１：対話図  インスタンス化、パーソナル化、キーの取得
１．サービスプロバイダ−［インスタンス作成（）］→クラウド管理サーバ
２．クラウド管理サーバ−［インスタンス作成（ＶＭイメージ）］→クラウドサーバ
３．ＶＭインスタンス−［パーソナル化要求（ＶＭインスタンス属性，ｆ（ＶＭイメージキー））］→キーサーバ
４．キーサーバ−［パーソナル化応答（ＶＭインスタンス識別情報，ＶＭインスタンスキー）］→ＶＭインスタンス
５．ＶＭインスタンス−［キー要求（データＩＤ，ｈ（ＶＭインスタンスキー））］→キーサーバ
６．キーサーバ−［キー応答（データキー）］→ＶＭインスタンス
【００６９】
典型的には、サービスプロバイダは、新たなインスタンスの作成を制御する人間又はエンティティにインターフェイスを提供することができる。従って、サービスプロバイダは、インスタンスを作成するためのコマンドをクラウド管理サーバに発行する。クラウド管理サーバは、例えばコンピューティング資源をサービスとして提供する第三者によってホストされても良い。クラウドサーバは、仮想マシンがその上で実行されるサーバシステムであり得る。ＶＭインスタンスとは仮想マシンインスタンスの意味であり、ＶＭイメージは仮想マシンイメージの意味である。表１のステップ１及びステップ２では、仮想マシンイメージから仮想マシンインスタンスを作成して始動させる。これらのステップは、クラウドサーバ上に仮想マシンイメージをインスタンス化するようにクラウド管理サーバに命令する、サービスプロバイダによって開始され得る。仮想マシンイメージ（ＶＭイメージ）は、サービスプロバイダのアプリケーションを含む。ステップ１及びステップ２の結果は、クラウドサーバ上でイメージのインスタンスが実行されることである。
【００７０】
ステップ３及びステップ４では、仮想マシンインスタンスをパーソナル化し、承認する。仮想マシンイメージは複数回インスタンス化され得、複数の同一インスタンスをもたらすため、ステップ３及びステップ４はインスタンスを区別するための、セキュリティに使用されるパーソナル化を実現する。これは、とりわけ復号キーをどのインスタンスに送るのかを正確に知るべきであるキーサーバに当てはまる。これにより、悪意のある内部者又は部外者によって仮想マシンイメージが未承認でインスタンス化されること等のリスクに対処することができる。これにより、攻撃者が発見されないままであるリスクが減らされる。ＶＭインスタンスは、ステップ３で、ＶＭインスタンスを一意に識別する１組の１つ又は複数の属性をキーサーバに送る。１組の属性は、任意選択的に、ＶＭインスタンスを作成するために使用されたイメージの識別情報を含むことができる。ＶＭインスタンスは、ステップ３で、ＶＭイメージに関連するキーであるＶＭイメージキー（ｆは所定の任意の関数を表す）をキーサーバに更に送る。ステップ４で、キーサーバが、インスタンスの識別情報の任意選択的な指示及びインスタンスキー（ＶＭインスタンスキー）によって応答する。上記で説明したように、この識別情報及びキーは、任意の適切な仮想マシンイメージ承認証明書と置換され得る。
【００７１】
仮想マシンインスタンスをパーソナル化するために、インスタンスは、場合により自らを他のインスタンスと区別するために使用可能な幾つかの属性を含む。インスタンスを識別するための属性の例は、公開ＩＰアドレス、インスタンスを起動するために使用されるイメージＩＤ、及びインスタンスのＩＤを含む。インスタンスを承認することは、正当なインスタンスだけが復号データキーにアクセスできることを確実にし得る。承認するために、インスタンスは例えば仮想マシンのイメージキーを使用する。ステップ３で、キーを使用してパーソナル化要求に署名し、但しｆ（）は、この場合は署名関数を表す。この署名は、仮想マシンインスタンスに固有の１組の属性の一部である。キーサーバは、ＶＭインスタンスを承認するプロセスの一環として、承認済みのイメージキーが使用されていることを任意選択的に確認する。キーサーバは、提供される他の属性に関する幾らかの検査も行う。属性は、仮想マシンを区別できるようにするため、実用上のパーソナル化を可能にする。属性は、イメージキーに次いで、ＶＭインスタンスを承認するための承認プロセス内で使用されても良い。これらの確認及び検査が肯定的である場合、ステップ４で、キーサーバは、その後の対話で使用されるインスタンスの識別情報、及びそのインスタンスが承認されていることを証明し、その後の対話を保護するために（例えば署名、認証、復号等）実際に使用されるインスタンスキーによって応答する。インスタンスの識別情報及びインスタンスキーは、その後の要求における承認証明書の役割を果たす。他の種類の承認証明書が使用されても良い。
【００７２】
ステップ５及びステップ６では、データを復号できるようにするためにデータキーを取得する。仮想マシンインスタンスは、データＩＤによって特定のデータオブジェクトを識別することにより、特定のデータオブジェクトのキーを要求する。仮想マシンインスタンスは、例えばインスタンスキー（ステップ５のｈ（）で示す）から作成されるインスタンス識別情報及び署名を含む、自らの承認証明書も提示する。キーサーバはその要求を評価し、肯定的な評価の後、データキーによって要求に応答する。
【００７３】
仮想マシンインスタンスが復号キーを得ると、仮想マシンインスタンスはデータオブジェクトを復号して処理することができる。インスタンスは、最早必要なくなれば復号データを削除すべきである。
【００７４】
インスタンスは、オペレーティングシステムによって提供される機能を使用することにより、全てのキー及び復号データをメモリ内に保持し、それらがディスクにスワップアウトされるのを防ぐように構成され得る。更に、キー及びデータの寿命が制限されるべきである。復号データ及びデータキーは、最早必要なくなれば期限切れにすべきである。インスタンスキーは、インスタンスの実行が停止した後に破棄される。
【００７５】
ステップ５の修正形態では、利用者に依拠する承認に基づいて復号キーへのアクセスを更に制御するために、このステップが仮想マシンインスタンスの利用者のユーザ証明書を含み、そのため上記の表１のステップ５が、
５．ＶＭインスタンス−［キー要求（データＩＤ，ｈ（ＶＭインスタンスキー），ｈ（ユーザキー））］→キーサーバ
によって置換される。
【００７６】
この修正形態は、特定の仮想マシンの承認された利用者への復号キーの配布を更に制限し、それによりセキュリティ及び信用を高める。具体的には、利用者に依拠する承認は、データが特定の利用者に関連する多くの事例に適合する。かかる承認された利用者がＶＭインスタンスに関連する場合にのみ、復号キーがＶＭインスタンスに配布される。
【００７７】
データは、様々な方法で特定の利用者に関連し得る。利用者がデータの主題であることを理由に、又はデータを管理するポリシに従って利用者がデータの指定の利用者であることを理由に、利用者識別情報とデータとの間の直接の関連が与えられる場合がある。役割及び属性の使用により、データ−利用者間の関連が間接的である場合もある。このようにして、特定の役割をもつ利用者が、キーサーバによって強化されるデータにアクセスすることを承認され得る。役割ベースの、及び属性ベースのデータ−利用者間の関連の場合、１人の利用者ではなく利用者のグループがデータに関連し得る。
【００７８】
利用者は、ＶＭインスタンスへの認証によってＶＭインスタンスに関連付けられ得る。例えば、利用者は、仮想マシンインスタンス上でホストされているウェブサイトにログインしている場合がある。かかる認証セッションは短く又は長く持続することができる。利用者がログオフするとき、又は認証セッションが失効等の他の手段によって終了するとき、ＶＭインスタンスは、キーサーバから取得したその利用者に関連するキーを削除する。これにより、利用者に依拠する承認が有効に終了する。
【００７９】
利用者に依拠する承認は、ユーザキーに基づく署名、認証トークン、又は認証アサーション等、ユーザ証明書（上記の例ではｈ（ユーザキー）として示す）を含めることを伴う。かかる証明書は、ユーザ認証プロセスの一環として取得され得る。
【００８０】
別の修正形態では、利用者に依拠する承認が、利用者に依拠するデータキーも含む。一実施形態では、ＶＭインスタンスがステップ６でデータキーを暗号化形式で受け取り、この暗号化データキーを利用者に依拠するキーを用いて復号し、これにより、データを復号するためのキーがもたらされる。別の実施形態では、これがキーサーバに委ねられる。別個のキーサーバが、利用者に依拠するキーの管理を担う場合がある。
【００８１】
別の例では、例えば仮想マシンイメージの直接攻撃、例えば未承認のクローニング、窃盗、又は未承認のインスタンス作成を防ぐ。イメージから仮想マシンインスタンスを作成する／始動させる一環として、明確な承認が取り入れられる。以下のステップ０〜３は、上記の表１のステップ１〜３を置換することができる。
【００８２】
表２：対話図  インスタンスの承認
０．サービスプロバイダ−［インスタンス登録（承認コード）］→キーサーバ
１．サービスプロバイダ−［インスタンス作成（承認コード）］→クラウド管理サーバ
２．クラウド管理サーバ−［インスタンス作成（ＶＭイメージ，承認コード）］→クラウドサーバ
３．ＶＭインスタンス−［パーソナル化要求（ＶＭインスタンス属性，ＶＭイメージキー，承認コード）］→キーサーバ
【００８３】
ステップ０では、キーサーバにおいて承認コードを登録するサービスプロバイダによって始動されるインスタンスを事前承認する。ステップ１及びステップ２で、引き続きインスタンスを作成する。これらのステップの全てが承認コードを含む。この承認コードは、例えば承認コードを無作為に生成することにより、サービスプロバイダによって作成される。承認コードは、例えばクラウドサーバによる作成時に仮想マシンイメージに与えられる。ステップ３では、この承認コードがパーソナル化要求内に含められ、その後、キーサーバが、仮想マシンインスタンスから得られた承認コードが、サービスプロバイダから直接受け取られた承認コードと同一であることを検証する。キーサーバは、これらのコードが同一である場合にのみインスタンス承認証明書を発行する。この例は、管理インターフェイスから仮想マシンインスタンスに承認コードパラメータを渡せるように、所謂ハイパーバイザを強化することもできる。
【００８４】
より単純な代替形態では承認コードを使用しないが、代わりに、キーサーバによって測定されるステップ０からステップ３の間の既定の最長時間Ｔが、インスタンスの作成が正当且つ承認済みであると見なすことを可能にする。
【００８５】
改変形態では、以下の対話により、サービスプロバイダが、新たなインスタンスをパーソナル化しないようにキーサーバに明確に信号で伝えることにより、仮想マシンイメージの更なるインスタンス化を完全に防ぐこともできる。
【００８６】
表３：対話図  イメージのロック
ａ．サービスプロバイダ−［ロック（ＶＭイメージ）］→キーサーバ
【００８７】
高度な例では、実行中の仮想マシンインスタンスの未承認のクローニングに対する更なる保護策が提供される。この機能強化は、表１のステップ５においてシーケンス番号を含めることを伴う。
【００８８】
表４：対話図  シーケンス番号
５．ＶＭインスタンス−［キー要求（データＩＤ，シーケンス番号）］→キーサーバ
【００８９】
このステップ５は、キーサーバへのキー要求内に仮想マシンインスタンスによってシーケンス番号の指示を含めることを含む。ＶＭインスタンスは、キーサーバ内で実装される対応するシーケンス番号と一致した方法で、各要求後にシーケンス番号を増やし又は他の方法で更新する。キーサーバは、インスタンスからのシーケンス番号が厳密な昇順で受け取られることを確認することができる。これによりキーサーバは、クローンされたインスタンスを検出できるようになり、かかるクローンは、オリジナルによって使用されるシーケンス番号を推測することができず、従ってキーの要求を試みると検出されることになる。
【００９０】
別の高度な例では、インスタンスを実行後に明確にロックすることにより、実行中の仮想マシンインスタンスのクローニングを防ぐ。この例は以下の追加のステップを含む。
【００９１】
表５：対話図  インスタンスのロック
ｂ．サービスプロバイダ−［ロック（ＶＭインスタンス）］→クラウド管理サーバ
ｃ．クラウド管理サーバ−［ロック（ＶＭインスタンス）］→クラウドサーバ
【００９２】
ステップｂ及びステップｃは何時でも、例えば表１のステップ１及びステップ２の直後に呼び出され得る。ロック命令は、例えばクラウドプロバイダの管理者、サービスプロバイダ、場合により悪意のある部外者による、実行中のインスタンスのスナップショットを作る将来の如何なる命令も許可しないようにクラウド（管理）サーバに信号を送る。
【００９３】
キーサーバは、何らかの種類の対話、更には全ての対話、例えばインスタンス登録、パーソナル化要求、及びキー要求のログを取るように構成され得る。キーサーバは、このログへのアクセスをサービスプロバイダに与えることができ、このことは透明性及び追跡可能性に貢献する。キーサーバは、攻撃及び攻撃の試みを示唆し得るパターン及び異常を求めてログを自動解析することもできる。最後に、キーサーバは、自らのアプリケーションがクラウド上でどのように実行されるのかを制御するために、支援され又は自動化された手段をサービスプロバイダに提供することができる。代替的な例では、キーサーバがローカルにログを取るのではなく、リモートロギングサーバにログを取る。この代替的実施形態では、ロギングに関係する機能がこのロギングサーバによって提供され得る。ロギング機能は、ロギング情報の完全性を保護して、ロギング情報が改竄されていないことを確実にすることができる。
【００９４】
修正形態の別の例では、仮想マシンインスタンス及びデータの位置を考慮に入れることによって、データオブジェクトのアクセス及び使用の追跡可能性と制御を可能にするために、キーサーバが追加機能を備える。このことは、とりわけ特定のプライバシ立法、例えばデータが特定の国及び／又は管轄区域内でのみ記憶され、処理されることを義務付けるＥＵプライバシ指令に準拠することを可能にする。
【００９５】
例えば、キーサーバは、オブジェクトの位置情報を追跡する。この追跡は、要求側の仮想マシンインスタンスの位置情報を確認し又は要求することによって実現され得る。別の例では、特定の位置、即ち対象データに関し、知られており許可されている位置を有する仮想マシンインスタンスから生じるキー要求だけを受け付けるようにキーサーバがキー要求を処理する。データが使用され得る場所はポリシ内に表され得る。ＶＭインスタンスの位置は、例えばＶＭインスタンスがホストされているサーバの地理的位置とすることができる。
【００９６】
キーサーバが仮想マシン及び／又はデータの位置情報を得るために、様々な方法が使用され得る：
−  仮想マシンインスタンス及びインスタンスをホストするサーバの位置を有する（静的）データベース。インスタンス及び／又はサーバは、例えばそのＩＰアドレスによって識別され得る。
−  クラウド内の信頼できるロケーションオーソリティ（Trusted Location Authority）によって発行され得る認定タイムスタンプと同様のメカニズムにより、位置情報を仮想マシンインスタンス（又はデータオブジェクト）に（動的に）結合する。例えば、この信頼できるロケーションオーソリティは、クラウド内の全ての仮想マシンインスタンス及び／又はデータの位置情報を管理する、クラウドインフラ内の管理コントローラであり得る。
−  キーサーバは、クラウド内のオブジェクトの経路を認証ツリーが示した状態で、データオブジェクトから幾つかの認定位置スタンプを定期的に（例えば１日１回）受け取る。例えば、認証ツリーはルートを有するハッシュツリーを使用して計算されても良く、別の当事者によって確認可能である。
【００９７】
この例は、クラウド内のオブジェクトの位置の確認可能な真正性及び追跡可能性を可能にする。最初の２つの方法は、要求側の仮想マシンインスタンスの位置をキーサーバに知らせて効率的且つ安全な実現を得るために、表１のステップ３（パーソナル化）又はステップ５（キー要求）と組み合わせられても良い。
【００９８】
別の例では、ＶＭインスタンスが、インスタンス承認証明書を得るための要求を属性に基づいて生成せず、発行もしない。代わりに、キーサーバには、インスタンス承認証明書を発行するための命令が別のエンティティから与えられる。
【００９９】
表５：管理者ユーザによって行われる承認セットアップ
３．管理者−［承認証明書要求（属性）］→キーサーバ
４．キーサーバ−［承認証明書応答（承認証明書）］→管理者
４ａ．管理者−［承認証明書提供（承認証明書）］→ＶＭインスタンス
【０１００】
本明細書では、表５のステップ３、ステップ４、及びステップ４ａが、例えば表１のステップ３及びステップ４を置換することができる。当初、パーソナル化要求／パーソナル化応答とラベル付けしていたメッセージが、ここでは承認証明書要求／承認証明書応答に名称変更されている。管理者は、ポータルを介してキーサーバにアクセスし、新たな仮想マシンインスタンスの承認証明書を要求することができる。この要求の一環として、管理者は新たなインスタンスの一意識別情報（上記の対話表５の「属性」で示す）等の何らかの詳細を生成し又は入力することができる。要求を処理した後、キーサーバは、管理者に送られる一意のコードを作成することができる。このコードは、承認証明書の代わりになる。その後、ステップ４ａで、仮想マシンインスタンスを承認するために管理者が承認証明書を用いて仮想マシンインスタンスを構成する。
【０１０１】
上記の方式で使用されるインスタンス承認証明書の良い例は、インスタンスキーを含む。キーサーバから取得されるインスタンスキーの保有者は、インスタンスキーを使用してＶＭインスタンスがキーを保持し、従ってＶＭインスタンスが承認されていることを証明する。キー又は他の証明書を非暗号化形式で送ることはセキュリティの脆弱性をもたらし得る。従って、インスタンスキー又は他のインスタンス証明書が使用時にデジタル保護され得る。例えば、この保護は、キーハッシュ関数によって行われても良い。改変形態では、インスタンスキーが対称キーではなく、任意選択的に認可証を有する秘密キーである。インスタンスは、この秘密キーを使用し、例えばデータキーを得るための要求等の要求に署名することにより、自らが実際にインスタンスであることをキーサーバに証明することができる。別の改変形態では、承認証明書がキーではなく、ソフトウェアトークン又はアサーション、即ちインスタンスを承認するキーサーバによって署名され、後でキーサーバに提示され得るステートメントである。別の改変形態では、承認証明書が属性ベースのキーセットによって実現される。その場合、インスタンスは１組のキーを取得し、各キーは役割等の特定の属性に関連する。インスタンスはその後、それらのキーのサブセットを、例えばデータキーを得るための要求内でキーサーバに提示する。提示されるキーは、要求を効率的に処理するためにキーサーバによって使用され、インスタンスごとにキーが１つあるよりも細かい細分性を可能にする。
【０１０２】
本明細書に開示した技法の応用例、とりわけ個人健康情報（ＰＨＩ：personal health information）を含む健康管理クラウドアプリケーション等、より強いデータ保護を必要とする応用例が、クラウドコンピューティングの分野内にあり得る。
【０１０３】
データオブジェクトの暗号化を含む、クラウドコンピューティング内のデータを保護するための方法を提供することができ、この方法は、仮想マシンインスタンスがキーサーバにキー要求を送り、仮想マシンインスタンスが承認される場合、キーサーバが暗号化データオブジェクト用の復号キーで応答するステップを有する。この方法は、仮想マシンインスタンスがキーサーバにパーソナル化要求を送り、キーサーバがパーソナル化された識別情報及び承認キーで応答するステップにより、仮想マシンインスタンスをまずパーソナル化し、承認するように拡張され得る。この方法は、キー要求がユーザ証明書を含み、キーが要求されているデータに関してキーサーバが利用者の承認を評価するステップにより、利用者に依拠する承認を含むように拡張され得る。この方法は、新たな仮想マシンインスタンスをキーサーバにおいて登録することにより、クラウドユーザが新たな仮想マシンインスタンスを事前承認し、キーサーバが仮想マシンインスタンスからの更なる要求を処理する前に承認の有無を検証するステップにより、仮想マシンイメージの窃盗及び未承認のインスタンス化を防ぐように拡張され得る。この方法は、パーソナル化された仮想マシンインスタンスがキー要求内にシーケンス番号を含め、キーサーバが、キー要求に応答する前にシーケンス番号が狭義単調増加していることを確認するステップにより、仮想マシンインスタンスのクローニングを防ぐように拡張され得る。この方法は、仮想マシンインスタンスの持続的な記憶又はコピーを無効にするロック要求をクラウドユーザがクラウドサーバに送るステップにより、静止時のクローニング及びスナップショットの作成を防ぐように拡張され得る。この方法は、キーサーバが、インスタンス登録、パーソナル化要求、キー要求等の仮想マシンの動作のログを取るステップにより、仮想マシンインスタンスの動作を追跡し、制御するように拡張され得る。この方法は、キーサーバが仮想マシンインスタンスの位置情報を取得し、要求されたキーを返す評価の際にその情報を使用するステップにより、許可された位置的領域外にデータオブジェクトが移動され、かかる領域外でデータオブジェクトが使用され、又はアクセスされるのを防ぐように拡張され得る。
【０１０４】
データキーを得るための要求が受け付けられるべきかどうかがキーサーバシステム６によって判定され／評価される一環として、リスク評価を行って要求の正当性（例えば、インスタンスが危害を受けていることを示唆し得る、インスタンスが自らの通常のパターン以外に不合理な数のデータキーを要求しないかどうか）を判定することができる。このために、キーサーバシステムはそのロギングを使用する。
【０１０５】
本発明はコンピュータプログラム、とりわけ本発明を実践するのに適した担体上の又は担体内のコンピュータプログラムにも当てはまることが理解される。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形態等にあるコード中間ソース及びオブジェクトコードの形式、又は本発明による方法を実施する際の使用に適した他の任意の形式を取ることができる。かかるプログラムは多くの異なるアーキテクチャ設計を有し得ることも理解されよう。例えば、本発明による方法又はシステムの機能を実装するプログラムコードは、１つ又は複数のサブルーチンに細分されても良い。これらのサブルーチンの間で機能を分散させる多くの異なる方法が当業者には明らかである。サブルーチンは、独立プログラムを形成するように１つの実行可能ファイル内に一緒に記憶され得る。そのような実行可能ファイルは、コンピュータ実行可能命令、例えばプロセッサ命令及び／又はインタプリタ命令（例えばJava（登録商標）インタプリタ命令）を含むことができる。或いは、サブルーチンの１つ、複数、又は全てが少なくとも１つの外部ライブラリファイル内に記憶され、例えば実行時に主プログラムに静的に又は動的にリンクされても良い。主プログラムは、サブルーチンの少なくとも１つに対する少なくとも１つの呼び出しを含む。サブルーチンは、互いへの呼び出しを含むこともできる。コンピュータプログラム製品に関する実施形態は、本明細書に記載した方法の少なくとも１つの各処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、且つ／又は静的に若しくは動的にリンクされ得る１つ又は複数のファイル内に記憶されても良い。コンピュータプログラム製品に関する別の実施形態は、本明細書に記載したシステム及び／又は製品の少なくとも１つの各手段に対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分され、且つ／又は静的に若しくは動的にリンクされ得る１つ又は複数のファイル内に記憶されても良い。
【０１０６】
コンピュータプログラムの担体は、プログラムを運ぶことができる任意のエンティティ又は装置とすることができる。例えば担体は、ＲＯＭ、例えばＣＤ  ＲＯＭや半導体ＲＯＭ、又は磁気記録媒体、例えばフラッシュドライブやハードディスク等の記憶媒体を含むことができる。更に担体は、電気ケーブル若しくは光ケーブルにより、又は無線若しくは他の手段によって伝えることができる電気信号や光信号等の伝送可能担体とすることができる。プログラムがそのような信号内に具体化される場合、担体は、そのようなケーブル又は他の装置若しくは手段によって構成され得る。或いは担体は、プログラムが埋め込まれる集積回路とすることができ、集積回路は関連する方法を実行するように適合され、又は関連する方法を実行する際に使用されるように適合される。
【０１０７】
上述の実施形態は本発明を限定するのではなく例示するものであり、当業者は添付の特許請求の範囲から逸脱することなく多くの代替的実施形態を設計できることに留意すべきである。特許請求の範囲では、括弧の間に配置される如何なる参照符号も、請求項を限定するものとして解釈すべきでない。動詞「含む」及びその活用形を使用することは、請求項の中で述べるもの以外の要素又はステップの存在を排除しない。要素の前にくる冠詞「ａ」又は「ａｎ」は、その要素が複数存在することを排除しない。本発明は、幾つかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。幾つかの手段を列挙する装置の請求項では、それらの手段の幾つかが、ハードウェアの同一アイテムによって具体化され得る。或る手段が互いに異なる従属項の中で引用されるという単なる事実は、これらの手段の組み合わせを有利に使用できないことを示すものではない。
【図１】
0006357158.tif 000002
【図２】
0006357158.tif 000003
【図３】
0006357158.tif 000004
【図４】
0006357158.tif 000005
【図５】
0006357158.tif 000006