(57)【要約】  システム管理モード（ＳＭＭ）で実行されるサービスなどの特権的な暗号サービスが記載される。特権的なサービスは、暗号鍵及び／または他のセキュリティリソースを、マルチテナント遠隔プログラム実行環境において格納及び管理するように動作可能である。特権的なサービスは、暗号鍵を用いる要求を受け取って、これらの要求に応答を発行することができる。また、特権的なサービスは、ハイパーバイザーの改ざんの証拠を検出する目的で、実行時に（例えば、定期的に、または要求に応答して）ハイパーバイザーを測定することができる。特権的なサービスはハイパーバイザーよりも特権的なシステム管理モードで動作しているため、特権的なサービスは、仮想マシンエスケープ及び他のハイパーバイザー攻撃に対し、堅牢であり得る。【選択図】  図１
2016511872.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスであって、
少なくとも１つのプロセッサと、
メモリであって、前記少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
１つ以上の仮想マシンを管理し、メモリの第１の部分へのアクセスを有する、ハイパーバイザーと、
前記ハイパーバイザーにアクセスできないメモリの少なくとも第２の部分へのアクセスを有する特権的なサービスと、を実現させる、命令を含む、前記メモリと、を備え、前記特権的なサービスが、
前記コンピューティングデバイス上に鍵を格納し、
前記ハイパーバイザーまたは前記１つ以上の仮想マシンのうちの少なくとも１つから、前記鍵を用いる要求を受け取り、
前記要求への応答を生成するように動作可能であり、前記応答が、前記コンピューティングデバイス上に格納された前記鍵に少なくとも一部は基づく、コンピューティングデバイス。
【請求項２】
前記特権的なサービスが、
暗号プロセッサ、遠隔管理カード、ベースボード管理コントローラ（ＢＭＣ）、システム管理モード（ＳＭＭ）で実行する構成要素、またはマネージャビリティエンジン、のうちの少なくとも１つを用いて実行される、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記メモリの第２の部分が、１つ以上のレンジレジスタを用いて分割されたメインメモリの一部分、１つ以上のコプロセッサ内部のメモリ、１つ以上のコプロセッサに取り付けられたメモリ、１つ以上のモード専用のレジスタ、または特定の暗号鍵レジスタ、のうちの少なくとも１つである、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記特権的なサービスが、
前記ハイパーバイザーが変更されたという検出に応答して、外部エンティティに通知し、
前記ハイパーバイザーが変更されたという検出に応答して、前記鍵を削除するようにさらに動作可能である、請求項１に記載のコンピューティングデバイス。
【請求項５】
システム管理割り込み（ＳＭＩ）を用いることによって、前記特権的なサービスに前記要求を送信するように構成される構成要素であって、前記ハイパーバイザーまたは前記仮想マシンのうちの少なくとも１つの中に存在する、構成要素をさらに備える、請求項１に記載のコンピューティングデバイス。
【請求項６】
前記鍵が、信頼できるプラットフォームモジュール（ＴＰＭ）内に格納され、前記特権的なサービスが、前記ハイパーバイザー及び前記１つ以上の仮想マシンによって前記ＴＰＭ内に格納された前記鍵へのアクセスを制御するようにさらに動作可能である、請求項１に記載のコンピューティングデバイス。
【請求項７】
前記特権的なサービスが、
前記ハイパーバイザーと関連付けられた第１の組の値を起動時に測定して、前記ハイパーバイザーを確認するようにさらに動作可能である、請求項１に記載のコンピューティングデバイス。
【請求項８】
前記特権的なサービスが、
前記ホストコンピューティングデバイス上の仮想マシンから、前記ハイパーバイザーを確認する第１のシステム管理割り込み（ＳＭＩ）を受け取り、
ＳＭＩハンドラーによって、前記ハイパーバイザーと関連付けられた第２の組の値を測定し、
前記ＳＭＩハンドラーによって前記第２の組の値を前記第１の組の値と比較し、
前記第２の組の値が起動時に測定された前記第１の組の値と一致するかどうか、前記ＳＭＩハンドラーによって前記ハイパーバイザーを確認し、
前記仮想マシンから、第２のＳＭＩを受け取って、前記鍵を読み出すか、または新しい鍵を格納するようにさらに動作可能である、請求項７に記載のコンピューティングデバイス。
【請求項９】
前記特権的なサービスが、
仮想ＴＰＭを、前記１つ以上の仮想マシンに暴露するようにさらに動作可能であり、前記１つ以上の仮想マシンが、システム管理割り込み（ＳＭＩ）を用いて前記鍵にアクセスするように動作可能であり、前記鍵が前記ハイパーバイザーにアクセスできない、請求項１に記載のコンピューティングデバイス。
【請求項１０】
前記応答を生成することが、前記暗号鍵と関連付けられた権限情報にさらに基づく、請求項１に記載のコンピューティングデバイス。
【請求項１１】
前記鍵を用いる前記要求が、
１つ以上の計算が前記鍵を用いて実行される要求、または
前記鍵を用いて暗号化された、または署名された１つ以上のメッセージを伝送する要求、のうちの少なくとも１つをさらに含む、請求項１に記載のコンピューティングデバイス。
【請求項１２】
コンピュータ実現方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
特権的なサービスによって、ホストコンピューティングデバイス上に鍵を格納することであって、前記ホストコンピューティングデバイスが、１つ以上の仮想マシンを管理するハイパーバイザーを含み、前記特権的なサービスが、前記ハイパーバイザーにアクセスできないメモリの少なくとも一部分へのアクセスを有する、格納することと、
前記特権的なサービスによって、前記鍵を用いることを要求する信号であって、前記ハイパーバイザーまたは前記１つ以上の仮想マシンのうちの少なくとも１つから受け取られる、信号を受け取ることと、
前記特権的なサービスによって、前記要求への応答であって、前記コンピューティングデバイス上に格納された前記鍵に少なくとも一部は基づく、前記応答を生成することと、を含む、コンピュータ実現方法。
【請求項１３】
前記ハイパーバイザーと関連付けられた１つ以上の値を測定することと、
前記１つ以上の値に少なくとも一部は基づいて、前記ハイパーバイザーが変更されたかを検出することと、をさらに含む、請求項１２に記載のコンピュータ実現方法。
【請求項１４】
前記ハイパーバイザーが変更されたという検出に応答して、
外部エンティティに、前記ハイパーバイザーが変更されていることを示す通知を送信すること、または
前記鍵を削除すること、のうちの少なくとも１つを実行することをさらに含む、請求項１３に記載のコンピュータ実現方法。
【請求項１５】
前記鍵を格納することが、
前記鍵を信頼できるプラットフォームモジュール（ＴＰＭ）の中に格納することをさらに含み、前記特権的なサービスが、前記ＴＰＭへの排他的アクセスを有するように構成される、請求項１２に記載のコンピュータ実現方法。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットのようなネットワーク上で利用可能となるアプリケーション及びサービスの数が増加するにつれて、クラウドコンピューティングのような技術に目を向けるコンテンツ、アプリケーション、及び／またはサービスプロバイダの数が増加している。クラウドコンピューティングは、概して、ウェブサービスのようなサービスを介して電子リソースへのアクセスを提供する手法であり、そのようなサービスをサポートするために使用されるハードウェア及び／またはソフトウェアは、任意の所与の時点でサービスのニーズを満たすために、動的にスケラーブルである。ユーザまたは顧客は、一般に、クラウドを介するリソースへのアクセスをレンタルする、リースする、またはその他の方法で支払うので、必要とされるハードウェア及び／またはソフトウェアを購入し、維持する必要がない。
【０００２】
この文脈において、多くのクラウドコンピューティングプロバイダが、複数のユーザが基本的なハードウェア及び／またはソフトウェアリソースを共有することを可能にするために、仮想化及びマルチテナントアーキテクチャを利用する。仮想化は、コンピューティングサーバ、記憶デバイス、または他のリソースが、特定のユーザと関連付けられた（例えば、所有されて）複数の分離されたインスタンスに分割されることを可能にし得る。これは、種々のユーザが、ユーザのアプリケーションを、クラウドコンピューティングプロバイダのリソース上で用いて遠隔で実行することを可能にする。
【０００３】
本開示に従った様々な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【０００４】
【図１】様々な実施形態に従って、暗号鍵情報を管理する、特権的なサービスの実施例を示す。
【図２】様々な実施形態に従って、信頼できるプラットフォームモジュール（ＴＰＭ）を利用する、特権的なサービス実現の実施例を示す。
【図３】種々の実施形態に従って、ホストコンピューティングデバイス上に特権的な暗号サービスを提供するための、プロセスの実施例を示す。
【図４】様々な実施形態に従って、ＴＰＭを用いてハイパーバイザーを測定し、かつ改ざんの証拠を検出する、特権的なサービスによって行われ得るプロセスの実施例を示す。
【図５】様々な実施形態に従って利用することができるコンピューティングデバイスの実施例の全体的な構成要素の一組の論理的配設を示す。
【図６】様々な実施形態に従って、態様を実現するための環境の実施例を示す。
【発明を実施するための形態】
【０００５】
以下の説明では、様々な実施形態が、添付の図面の図において、限定としてでなく、実施例として示される。本開示における様々な実施形態への参照は、必ずしも同じ実施形態に対してではなく、そのような参照は、少なくとも１つを意味する。特定の実現形態及び他の詳細が説明されるが、これは実例の目的のみのために行われることを理解されたい。関連技術の当業者は、特許請求の主題の範囲及び趣旨から逸脱することなく、他の構成要素及び構成が使用できることを認識するであろう。
【０００６】
本開示の様々な実施形態によるシステム及び方法は、仮想化されたコンピューティング環境内で展開され得るなどの、コンピューティングシステム内でセキュリティを管理するために、従来の手法で経験する上記のまたは他の欠点の１つ以上を克服することができる。とりわけ、種々の実施形態は、システム管理モード（ＳＭＭ）で実行するサービスなどの特権的な暗号サービスを利用して、マルチテナント遠隔プログラム実行環境（例えば、クラウドコンピューティング環境）内の暗号鍵及び／または他のセキュリティリソースを格納及び管理する。
【０００７】
種々の実施形態において、サービスプロバイダによって１人以上の顧客にマルチテナント遠隔プログラム実行環境が提供される。環境は、複数のホストコンピューティングデバイスを含み得、それぞれのホストコンピューティングデバイスが、１つ以上の仮想マシンを管理するハイパーバイザーを含む。それぞれの仮想マシンは、サービスプロバイダの特定の顧客と関連付けられ（例えば、所有されて）得、かつ仮想マシンは、サービスプロバイダの物理リソースを用いて、顧客が提供したコード（例えば、アプリケーション、サービスなど）を顧客の代わりに実行し得る。
【０００８】
従来のマルチテナント遠隔プログラム実行環境において、顧客のコードが仮想マシンの環境をエスケープし得、代わりにハイパーバイザーの文脈内で動作し得た場合、コードはいくつかの極秘情報及びホストコンピューティングデバイス上に存在する他のリソースへのアクセスを取得することができ得る。この潜在的な脆弱性は、しばしば仮想マシンエスケープと称される。例えば、１つの顧客のコードがハイパーバイザーの文脈内で動作することができる場合、コードは、別の顧客の暗号鍵及び他のセキュリティ情報へのアクセスを潜在的に取得し、これらの鍵を他の場所へエクスポートし、及び様々な他の悪意のある行為を行い得る。
【０００９】
種々の実施形態において、かかる権限のない行動への暴露を防止または低減するため、それぞれのホストコンピューティングデバイスが、システム管理モード（ＳＭＭ）またはハイパーバイザー及び／またはホストコンピューティングデバイス上の他のオペレーティングシステムよりも特権的ないくつかのまた別のモードで実行すること、またはハイパーバイザーにアクセスできないメモリの少なくとも一部分へのアクセスを有することが可能な、特権的なサービスを含む。例えば、特権的なサービスはシステム管理モードで動作し得、ハイパーバイザー、仮想マシン、または他のオペレーティングシステムによるすべての通常の実行が一時停止され、かつ特権的なサービスが実行される。特権的なサービスは、１つ以上の暗号鍵を格納及び管理し、ハイパーバイザー、１つ以上の仮想マシン、及び／または他のエンティティから暗号鍵を用いる要求を受け取り、これらの要求への応答を発行し得る。また、特権的なサービスは、ハイパーバイザーの改ざんの証拠を検出する目的で、実行時に（例えば、定期的に、または要求に応答して）ハイパーバイザーを測定し得る。特権的なサービスがハイパーバイザーよりも特権的なシステム管理モードで動作しているため、特権的なサービスは、仮想マシンエスケープ及び他のハイパーバイザー攻撃に対し、堅牢であり得る。このスキーム下で、危殆化されたハイパーバイザーは、特権的なサービスによって管理される暗号鍵をエクスポートし得ない。さらに、ハイパーバイザーが改ざんされていることが検出された場合、ハイパーバイザーは、鍵を用いることを防止され得、または特権的なサービスによって格納されたすべての主要材料を破壊するなどのいくつかの他の行為が行われ得る。
【００１０】
いくつかの実施形態において、特権的なサービスは、信頼できるプラットフォームモジュール（ＴＰＭ）またはホストコンピューティングデバイス上の他の暗号プロセッサを管理するために用いられ得る。これらの実施形態において、ＴＰＭは、ルート鍵を管理し、特権的なサービスのみがＳＭＭで実行して導出された鍵にアクセスすることを可能にし得る。ＳＭＭは、鍵の使用をハイパーバイザー及び仮想マシンに順に提供し得る。一実施形態において、ホストコンピューティングデバイスの初期ブート中、特権的なサービスは、ハイパーバイザーの１つ以上の値を測定して、信頼できるハイパーバイザーが立ち上げられたことを確実にし得る。続いて実行時に、ハイパーバイザーを再測定し、実行時測定結果を起動時に測定された初期値と比較して改ざんの証拠を検出するために、システム管理割り込み（ＳＭＩ）ルーチンが用いられ得る。
【００１１】
いくつかの実施形態において、仮想マシンへの仮想ＴＰＭサービスにＳＭＩハンドラーによって管理され、かつハイパーバイザーにアクセスできない鍵を提供するために、特権的なサービスが用いられ得る。信頼できる鍵は、仮想ＴＰＭサービスを複数の顧客に提供する複数のハイパーバイザーを含むシステム内でのハイパーバイザーの危殆化を防ぐため、鍵が確実にＳＭＩハンドラーのみに送達されるように、物理ＴＰＭ内に定着し得る。このようにすると、いかなる仮想マシンエスケープも顧客の暗号鍵を別の顧客に暴露し得ない。
【００１２】
図１は、様々な実施形態に従って、暗号鍵情報を管理する、特権的なサービスの実施例１００を示す。示される実施形態において、ホストコンピューティングデバイス１０４は、１つ以上の仮想マシン（１０５、１０６）を管理するハイパーバイザー１０７を含み、それぞれの仮想マシンは、顧客（１０１、１０２）と関連付けられる。１つ以上の仮想マシン（１０５、１０６）は、１人以上の顧客（１０１、１０２）によって提供されたコード（１１１、１１２）を実行し得る。顧客は、コードがインターネットなどのネットワーク１０３を通じて仮想マシン上で実行されることを提供し得る。安全な暗号サービスを提供するため、ホストコンピューティングデバイス１０４は、特権的なサービス１０８をさらに含む。
【００１３】
一実施形態に従って、特権的な暗号サービス１０８は、ホストコンピューティングデバイス１０１上でシステム管理モード（ＳＭＭ）またはハイパーバイザー１０７もしくは他のオペレーティングシステムよりも特権的な他のモードで実行する。一実施形態において、ＳＭＭは、ハイパーバイザー、仮想マシン、または他のオペレーティングシステムによるすべての通常の実行が一時停止され、かつ特権的なサービスが実行される動作モードである。ＳＭＭは、ハイパーバイザー、仮想マシン（ＶＭ）、またはホストコンピューティングデバイス上で実行する他のソフトウェアコードによって呼び出され得るシステム管理割り込み（ＳＭＩ）によって始動され得る。当業者には明白となるように、本開示の全体にわたって記載される種々の実施形態が、ＳＭＭまたはＳＭＩの実現に制限されず、任意の他の動作モードが可能であることに留意されたい。例えば、別の実現において、特権的なサービスは、ハイパーバイザーがアクセスする許可を有しないメモリの一部分へのアクセスを有し得る。これは、特権的なサービスに対して排他的に、１つ以上のレンジレジスタを用いて分割されたメインメモリの特定の一部分を専用とすることによって実現され得る。別様には、特権的なサービスは、１つ以上のコプロセッサ内部のメモリ、１つ以上のモード専用のレジスタ、または特定の暗号鍵レジスタへの排他的アクセスを提供され得る。
【００１４】
一実施形態に従って、特権的なサービス１０８は、自身を認証し、かつ１つ以上の暗号鍵（１０９、１１０）及び／または他のセキュリティリソースを格納する。この１つ以上の鍵（１０９、１１０）は、ハイパーバイザー１０７、１つ以上の仮想マシン（１０５、１０６）、及び／または外部コンピューティングデバイスから受け取られ得る。いくつかの実施形態において、暗号鍵（１０９、１１０）は、仮想マシン（１０５、１０６）のうちの１つによって生成され得る。それぞれの鍵が、特定の顧客（１０１、１０２）によって所有され得、及び／または特定の仮想マシン（１０５、１０６）と関連付けられ得る。例えば、鍵１１０が仮想マシン１１１と関連付けられる一方で、鍵１０９は仮想マシン１０５と関連付けられ得る。
【００１５】
一実施形態に従って、ＳＭＭで実行する特権的なサービス１０８は、ハイパーバイザー１０７及び／または仮想マシン（１０５、１０６）と通信し、かつ特権的なサービスが格納する暗号鍵（１０９、１１０）を使用する要求を受け取るように動作可能である。一実施形態において、特権的なサービス１０８は、システム管理割り込みハンドラールーチンを用いて呼び出される。例えば、要求は、特権的なサービス１０８が暗号鍵１０９を用いることを要求するＳＭＩをハイパーバイザー１０７に呼び出させる、仮想マシン１０５内で実行する構成要素によって開始され得る。種々の実施形態において、要求は、鍵を用いて暗号化された、または署名された１つ以上のメッセージを伝送するための鍵または要求を用いて１つ以上の計算が行われる要求を含むがこれらに限定されない、暗号鍵の使用を必要とする任意の要求であり得る。
【００１６】
いくつかの実施形態において、特権的なサービス１０８は、要求に応答して応答を生成し得、応答は、サービスが格納する暗号鍵に少なくとも一部は基づく。いくつかの実施形態において、要求の一部として、特権的なサービス１０８はまた、仮想マシンが特定の鍵を用いる権限を付与する証明（例えば、権限情報）を受け取り得る。この証明は、ハイパーバイザーによって、またはハイパーバイザー上で実行する仮想マシンによって顧客から受け取られ得る。証明はまた、ハイパーバイザー上で実行する仮想マシン上でも生成され得る。
【００１７】
種々の実施形態において、特権的なサービス１０８がハイパーバイザーよりも特権的なモードで動作しているため、仮想マシンエスケープ及び／またはハイパーバイザー改ざんが発生した場合、ハイパーバイザーはなお、特権的なサービスによって格納された鍵のアカウントをまたがる使用を防止し得る。
【００１８】
図２は、様々な実施形態に従って、信頼できるプラットフォームモジュール（ＴＰＭ）を利用する、特権的なサービス実現の実施例２００を示す。示される実施形態において、ホストコンピューティングデバイス２０１は、１つ以上の汎用プロセッサ２０８及び信頼できるプラットフォームモジュール２０７を含む。ホストコンピューティングデバイスは、ハイパーバイザー２０４、１つ以上のプロセッサへの直接アクセスを有する特権的なドメイン（例えば、ＤＯＭ−０  ２０２）、及びデバイスの１つ以上のプロセッサへの仮想化されたアクセスを有し、かつ顧客が提供したコードを実行する、１つ以上の特権的でないドメイン（例えば、ＤＯＭ−Ｕ２０３）をさらに含む。
【００１９】
種々の実施形態において、信頼できるプラットフォームモジュール（ＴＰＭ）２０７は、情報を保護する暗号鍵２０６を格納することができる任意の安全な暗号プロセッサであり得る。特権的なサービス２０５は、ハイパーバイザー２０４の起動時測定、ならびに実行中のハイパーバイザー２０４の動的再測定を可能にし得る。一実施形態において、起動時、システム管理モードで実行している特権的なサービス２０５は、ＳＭＭメモリがＴＰＭ２０７との対話を排他的に権限付与され得るように、ＴＰＭ２０７の所有権を得ることができ得る。これは、ＳＭＭで実行している特権的な暗号サービス２０５に、起動間に鍵２０６を存続させ、かつ遠隔ソフトウェアに自身を認証する能力を付与し得る。ＴＰＭ２０７は、ルート鍵を管理し、ＳＭＭで実行している特権的なサービス２０５のみが導出された鍵にアクセスすることを可能にし得る。本実施形態において、特権的なサービスは、ハイパーバイザー及び仮想マシンに鍵の使用を提供し得る。
【００２０】
種々の実施形態において、ＳＭＭで実行している特権的なサービス２０５は、定期的に、またはハイパーバイザーからの特権的なサービス２０５が管理する暗号鍵を用いる要求の受け取りに応答して、実行しているハイパーバイザーを測定し得る。例えば、起動時に、ハイパーバイザー２０７と関連付けられた１つ以上の値を測定し、かつ有効なハイパーバイザーが確実にロードされるようにするために、特権的なサービス２０５（または他の構成要素）が用いられ得る。例えば、１つ以上の値を測定するために、特権的なサービス２０５が、ハイパーバイザー２０７のコードを含むメモリ内の１つ以上の場所を読み込み、かつこれらの場所内に含まれる値をハッシュ計算し得る。ハッシュ値は次に格納され、ハイパーバイザー２０７のコードが多少なりとも変更されたかを後に確かめるために用いられ得る。別の実施形態において、値自体を測定するのではなく、特権的なサービスはむしろ、基本入出力システム（ＢＩＯＳ）などの別のエンティティによってハッシュ値を提供され得る。例えば、特権的なサービス２０５を準備するとき（例えば、ＳＭＭで動作するなど）、ＢＩＯＳは、ハイパーバイザーコードのためのハッシュ値を特権的なサービスに提供し得る。
【００２１】
続いて、実行時に、１つ以上の値は、ハイパーバイザー２０７の任意の改ざんを検出するために再測定され得る。例えば、実行時に取得された値が初期値と一致しない場合、特権的なサービス２０５は、ハイパーバイザー２０７が危殆化されたと判断し得、適切な修正措置を取り得る。例えば、特権的なサービスは、ハイパーバイザーが特権的なサービスによって格納された任意の鍵を用いることを防止し得、またはハイパーバイザーを完全に一時停止し得る。別様には、特権的なサービスは、改ざんの証拠の検出に応答して、格納されたすべての主要材料を破壊し得る。また別の実施例として、特権的なサービスは、外部サービスまたはエンティティに、ハイパーバイザーが危殆化された可能性があるという指示を通知し得る。いくつかの実施形態において、仮想マシンに仮想ＴＰＭサービスを提供するために、特権的なサービス２０５が用いられ得、仮想ＴＰＭと関連付けられた鍵は、特権的なサービス（例えば、ＳＭＩハンドラー）によって管理され、ハイパーバイザーにアクセスできない。仮想マシンはよって、この鍵へのアクセスを有するハイパーバイザーなしで、ＳＭＩハンドラーを用いて鍵を用いる要求を送信し得る。一実施形態において、信頼できる鍵は、鍵が確実にＳＭＩハンドラーのみに送達されるように、物理ＴＰＭ内に定着し得る。これは、仮想マシンエスケープが顧客の鍵を暴露し得ないように、複数の顧客に仮想ＴＰＭサービスを提供するハイパーバイザーのマルチテナント環境を含むシステム内でのハイパーバイザーの危殆化を防ぎ得る。
【００２２】
図２がハイパーバイザー、ＤＯＭ−０及び少なくとも１つのＤＯＭ−Ｕを利用する実現を示すが、この特定の実現は、本明細書に記載の実施形態のうちのすべてに限定することを意図されないことに留意されたい。代替的な実施形態において、ハイパーバイザーという用語は、仮想マシンマネージャまたは他の仮想化技術などのいくつかの他の実現を含み得る。例えば、代替的な実現において、ハイパーバイザーは、ＤＯＭ−０の機能性を含み、ＤＯＭ−０などの別個の特権的なドメインを利用しない。さらに、種々の実施形態の範囲内でタイプ１ハイパーバイザーまたはタイプ２ハイパーバイザーが利用され得る。当技術分野で知られているように、タイプ１ハイパーバイザー（例えば、ベアメタル）は、ホストコンピュータのハードウェア上で直接実行してハードウェアを制御し、かつ１つ以上のゲストオペレーティングシステムを管理する。タイプ１の構成において、ゲストオペレーティングシステムは、ハイパーバイザーの上の別のレベル上で実行する。タイプ２（例えば、ホストされた）ハイパーバイザーは、従来のオペレーティングシステム環境内で実行する。明確な第２のソフトウェアレベルとしてのハイパーバイザーレイヤとともに、ゲストオペレーティングシステムは、ハードウェアの上の第３のレベルで実行する。種々の実施形態において、いずれのタイプのハイパーバイザーも本開示の範囲内で利用され得る。
【００２３】
同様に、図２が信頼できるプラットフォームモジュール実現を示すが、これもまた、本明細書に記載の実施形態のうちのすべてに限定することを意図されない。代替的な実施形態において、特権的な暗号サービスは、他の種類の暗号プロセッサと併せて用いられ得る。さらに、いくつかの実施形態において、特権的な暗号サービスは、遠隔管理カード、ベースボード管理コントローラ（ＢＭＣ）、マネージャビリティエンジンなどを含むがこれらに限定されない、仮想マシンのコードを実行するように動作可能でないマシン上の任意のコプロセッサとともに用いられ得る。これらの実施形態において、かかるコプロセッサのファームウェアは、特権的な暗号サービスを実現するファームウェアと置き換えられ得る。プロセッサは、暗号鍵及び他の情報を受け取る特定の要求を作成することを可能にされ得る。
【００２４】
図３は、様々な実施形態に従って、ホストコンピューティングデバイス上に特権的な暗号サービスを提供するための、プロセス３００の実施例を示す。この図は、特定のシーケンスで機能的オペレーションを示し得るが、プロセスは、示された特定の順序またはオペレーションに必ずしも限定されるものではない。当業者は、この図または他の図に描かれた様々なオペレーションが、変えられる、再配列される、並列で実行される、または様々な方法で適合化される、ことができることを理解するであろう。さらに、特定のオペレーションまたはオペレーションのシーケンスは、様々な実施形態の範囲から逸脱することなく、プロセスに追加する、またはそこから省略する、ことができる。また、本明細書に含まれるプロセスの実例は、当業者にプロセスフローの概念を実証することを意図し、異なるフローまたはシーケンスとして実現される、性能が最適化される、またはそうでなければ様々な仕方で変更される場合もある、コードの実行の実際のシーケンスを指定することではない。
【００２５】
動作３０１において、特権的なサービスが自身を認証して鍵及び／または他の暗号材料を取得する。一実施形態において、特権的なサービスは、特権的なサービスに暗号鍵を提供する外部コンピューティングデバイスまたはサービスによって自身を認証し得る。別の実施形態において、特権的なサービスは、いかなる外部エンティティも認証しない。いくつかの実施形態において、鍵は、サービスプロバイダによって生成され得るが、一方で他の実施形態において、鍵は、顧客の仮想マシンとともに用いられるように顧客によって提供され得、または仮想マシンによって生成され得る。動作３０２において、認証が成功裏に行われた場合、特権的なサービスが、１つ以上の暗号鍵を受け取る。
【００２６】
動作３０３において、特権的なサービスが、ホストコンピューティングデバイス上に１つ以上の暗号鍵を格納する。前述したように、ホストコンピューティングデバイスは、１つ以上の仮想マシンを管理するハイパーバイザー及びハイパーバイザーよりもさらに特権的なモードで動作する特権的なサービスを含み得る。
【００２７】
動作３０４において、特権的なサービスが、デバイス上に格納された暗号鍵を用いる要求を受け取る。一実施形態に従って、鍵を用いることを要求する割り込み信号（例えば、ＳＭＩ）が受け取られ得る。要求は、ハイパーバイザー上で、または１つ以上の仮想マシン上で実行する構成要素から受け取られ得る。種々の実施形態において、要求は、鍵を用いて暗号化された、または署名された１つ以上のメッセージを伝送するための鍵または要求を用いて１つ以上の計算が行われる要求を含むがこれらに限定されない、暗号鍵を用いる任意の動作であり得る。
【００２８】
動作３０５において、要求に応答して、特権的なサービスがハイパーバイザーを測定する。例えば、特権的なサービスは、起動時に取得された値を実行時に測定された値と比較してハイパーバイザーの改ざんの任意の証拠を検出し得る。
【００２９】
動作３０６において、特権的なサービスは、ホストコンピューティングデバイス上に格納された暗号鍵に少なくとも一部は基づいて、要求への応答を生成する。いくつかの実施形態において、特権的なサービスが、ハイパーバイザーが改ざんされていると判断した場合、ハイパーバイザーは、鍵へのアクセスを防止され得る。
【００３０】
図４は、様々な実施形態に従って、ＴＰＭを用いてハイパーバイザーを測定し、かつ改ざんの証拠を検出する、特権的なサービスによって行われ得るプロセスの実施例４００を示す。動作４０１において、ホストコンピューティングデバイスの起動時に、特権的なサービスがＴＰＭの排他的所有権を取得する。加えて、起動時に、ホストコンピューティングデバイス上に信頼できるハイパーバイザーが確実にロードされるように、ＴＰＭがハイパーバイザーと関連付けられた１つ以上の値を取得する（動作４０２）。一実施形態において、１つ以上の値を測定するために、特権的なサービスは、ハイパーバイザーのコードを含むメモリ内の１つ以上の場所を読み込み、かつこれらの場所内に含まれる値をハッシュ計算する。ハッシュ値は次に格納され、ハイパーバイザーのコードが多少なりとも変更されたかを後に確かめるために用いられ得る。別の実施形態において、値自体を測定するのではなく、特権的なサービスはむしろ、ＢＩＯＳなどの別のエンティティによってハッシュ値を提供され得る。例えば、特権的なサービスを準備するとき（例えば、ＳＭＭで動作するなど）、ＢＩＯＳは、ハイパーバイザーコードのためのハッシュ値を特権的なサービスに提供し得る。
【００３１】
動作４０３において、続いて実行時に、特権的な暗号サービスが、暗号鍵を用いる要求を受け取る。一実施形態において、要求は、システム管理割り込み（ＳＭＩ）を呼び出すことによって生成される。動作４０４において、ハイパーバイザーと関連付けられた１つ以上の値が実行時に再測定される。動作４０５において、特権的なサービスが、再測定された値を起動時に取得された初期値と比較して、ハイパーバイザーの改ざんの証拠を検出する。
【００３２】
様々な実施形態に従って、ハイパーバイザー測定は、暗号鍵が使用のため（例えば、仮想マシンによる使用のため）に発出され得るかを判定するために用いられ得る。暗号鍵を管理するために、いくつかの暗号動作の実現が可能である。鍵管理プロセスの１つのかかる可能な実現が以下に記載される。
【００３３】
この特定の実現において、ＢＩＯＳが、プロセッサをＳＭＭにするＳＭＩ割り込みが発行される度に呼び出されるシステム管理割り込み（ＳＭＩ）ハンドラーを始動する。ＴＰＭは、ＳＭＩハンドラーを含む、ＢＩＯＳの暗号学的ハッシュ測定を行う能力を提供し得、これらのハッシュ値をプラットフォーム構成レジスタ（ＰＣＲ）として知られるＴＰＭハードウェアレジスタ内に格納する。ゆえに、信頼できるＳＭＩハンドラーの既知のハッシュ値をＰＣＲ内に記録されたハッシュ値と比較することにより、信頼できるＳＭＩハンドラーがプラットフォーム上にインストールされていることを確認する能力を提供する。ＳＭＩハンドラーは、ＢＩＯＳによってロックされ、かつ非ＳＭＭモードで実行する任意のソフトウェア（ハイパーバイザー及びＯＳを含む）によってアクセス可能でない、システム管理ランダムアクセスメモリ（ＳＭＲＡＭ）と呼ばれるメモリの領域内に格納され得る。本実施形態において、信頼できるハイパーバイザーは、暗号学的に測定され、これは
（１）  信頼できるブートローダーが、ハイパーバイザーに実行制御を移転する前に、ハイパーバイザーを測定し、ハッシュ値をＰＣＲ内に格納し得る。または、
（２）  信頼できるブートローダーが、ＳＭＩ割り込みを発行し得る。の２つの方途で行われ得る。ＳＭＩハンドラーは、ハイパーバイザーを測定し、暗号学的ハッシュ値をＳＭＲＡＭ内に格納し得る。
【００３４】
本実施形態において、信頼できるハイパーバイザーのハッシュ値は、参照ハッシュ値と称され得る。続いて、プラットフォーム実行時鍵管理フローには２つのステップ、すなわち鍵準備及び鍵使用が存在し得る。一実施形態において、これらのフローの詳細を以下に記載する。
【００３５】
鍵準備：信頼できるハイパーバイザーが初めに起動したときに、このハイパーバイザーがＰＣＲを確かめて、信頼できるＳＭＩハンドラーがプラットフォーム上にインストールされていることを確実にする。信頼できるＳＭＩハンドラーが確認された場合、ハイパーバイザーが暗号鍵及び他の認証情報（パスワードなど）を生成し、これらをメモリまたはレジスタ内に置き、ＳＭＩ割り込みを発行する。鍵を準備する責任を負うＳＭＩハンドラーは、暗号鍵をＳＭＲＡＭ内の鍵保管データ構造に複製し、メモリ／レジスタ内の鍵を消去する。ＳＭＩハンドラーが、格納された鍵に対応する指標値をハイパーバイザーに戻す。
【００３６】
鍵使用：ハイパーバイザーは特定の暗号鍵へのアクセスを必要とし、ハイパーバイザーが対応する指標値を付与するとともに、ＳＭＩ割り込みを発行する。次に、ＳＭＩハンドラーが、ハイパーバイザーの暗号学的ハッシュ測定を行い、このハッシュ値を起動の間に算出された参照ハッシュ値と比較する。ＳＭＩハンドラー実行がハイパーバイザーと無関係に行われるため、測定動作を改ざんし得ない。ハッシュ値が一致した場合、次にＳＭＩハンドラーは、要求された認証情報を返す。ハッシュ値の不一致は、実行時ハイパーバイザーの破損を表し、ＳＭＩハンドラーがエラーメッセージを返し得る。
【００３７】
一実施形態において、ＳＭＲＡＭがハイパーバイザーにアクセス可能でないと仮定すると、悪意のあるハイパーバイザーまたは破損したハイパーバイザーは、信頼できるハイパーバイザーによって格納された鍵にアクセスすることができ得ない。ゆえに、ＳＭＲＡＭ内の秘密は、ハイパーバイザーに対するあらゆる悪意のある攻撃を受ける恐れがない。
【００３８】
いくつかの実施形態において、この鍵管理プロセスは、暗号鍵及び認証情報を格納するために、ゲスト仮想マシン（ＶＭ）によっても用いられ得、ゲストＶＭが秘密を格納するためにＳＭＩを発行する。ゲストＶＭのための秘密管理スキームの動作フローは、以下の通りである。  
ａ．ゲストＶＭがＳＭＩを発行して、ハイパーバイザーが信頼できるかできないかを確かめる。ＳＭＩハンドラーがハイパーバイザーを暗号学的に測定し、この値を参照ハッシュ値と比較する。ＳＭＩハンドラーが、ハイパーバイザーが信頼できるかできないかを示す値を返す。  
ｂ．ＳＭＩハンドラーが、ハイパーバイザーが信頼できることを示す値を返した場合、次にゲストＶＭが、別のＳＭＩ割り込みを発行して、新しい暗号鍵を格納するか、または以前に格納された暗号鍵（または認証情報）を読み出す。
【００３９】
このフローにおいて、ゲストＶＭは、２つのＳＭＩ、すなわちハイパーバイザーを確認する第１のＳＭＩ及びＳＭＲＡＭからの秘密を格納または読み出す第２のＳＭＩを発行しなければならない。ハイパーバイザーに悪意がある、または実行中にマルウェアによって破損された場合、ゲストＶＭの認証情報は暴露されない（ハイパーバイザー整合性確認が失敗するため、ハイパーバイザーがＳＭＩを発行した場合でも）。
【００４０】
本開示の実施形態は、以下の付記を考慮して説明することができる。  
１．コンピューティングデバイスであって、
少なくとも１つのプロセッサと、
メモリであって、デバイスの少なくとも１つのプロセッサによって、
１つ以上の仮想マシンを管理するハイパーバイザーであって、それぞれの仮想マシンが、各々の顧客と関連付けられ、かつ顧客が提供したコードを実行するように動作可能である、ハイパーバイザーと、
ハイパーバイザーを一時停止し、かつホストコンピューティングデバイス上でシステム管理モード（ＳＭＭ）で実行することができる、特権的なサービスと、を実現するように実行される命令を含む、メモリと、を備え、特権的なサービスが、
顧客と関連付けられた暗号鍵を受け取り、暗号鍵をホストコンピューティングデバイス上に格納し、
ハイパーバイザーまたは１つ以上の仮想マシンのうちの少なくとも１つから、暗号鍵を用いる要求であって、システム管理割り込み（ＳＭＩ）を開始することによって生成される、要求を受け取り、
ハイパーバイザーと関連付けられた１つ以上の値を測定し、
１つ以上の値に基づいて、ハイパーバイザーが変更されているかを判断し、
ハイパーバイザーが変更されていないことを１つ以上の値が示した場合に、要求への応答であって、ホストコンピューティングデバイス上に格納された暗号鍵に少なくとも一部は基づく、応答を生成するように動作可能である、特権的なサービスである、コンピューティングデバイス。  
２．ホストコンピューティングデバイスが、第２の顧客のための第２の暗号鍵を格納し、ハイパーバイザーの文脈内で実行する顧客が提供した顧客のコードが、ホストコンピューティングデバイス上に格納された第２の顧客のための第２の暗号鍵を抜き出すことを防止される、付記１に記載のコンピューティングデバイス。  
３．ハイパーバイザーと関連付けられた１つ以上の値を測定することが、
ホストコンピューティングデバイスの起動時に取得された、ハイパーバイザーと関連付けられた１つ以上の値を測定することと、
実行時にハイパーバイザーと関連付けられた１つ以上の値を測定することと、
起動時に測定された１つ以上の値を実行時に測定された１つ以上の値と比較することに少なくとも一部は基づいて、ハイパーバイザーが変更されたかを判断することと、をさらに含む、付記１に記載のコンピューティングデバイス。  
４．暗号鍵を格納するように構成された、信頼できるプラットフォームモジュール（ＴＰＭ）であって、特権的なサービスが、ＴＰＭへの排他的アクセスを取得し、かつＴＰＭ上に格納された暗号鍵へのアクセスを管理するようにさらに動作可能な、信頼できるプラットフォームモジュール、をさらに含む、付記１に記載のコンピューティングデバイス。  
５．コンピューティングデバイスであって、
少なくとも１つのプロセッサと、
メモリであって、少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、
１つ以上の仮想マシンを管理し、メモリの第１の部分へのアクセスを有する、ハイパーバイザーと、
ハイパーバイザーにアクセスできないメモリの少なくとも第２の部分へのアクセスを有する特権的なサービスと、を実現させる、命令を含む、メモリと、を備え、特権的なサービスが、
コンピューティングデバイス上に鍵を格納し、
ハイパーバイザーまたは１つ以上の仮想マシンのうちの少なくとも１つから、鍵を用いる要求を受け取り、かつ
要求への応答を生成するように動作可能であり、応答が、コンピューティングデバイス上に格納された鍵に少なくとも一部は基づく、コンピューティングデバイス。  
６．特権的なサービスが、
暗号プロセッサ、遠隔管理カード、ベースボード管理コントローラ（ＢＭＣ）、システム管理モード（ＳＭＭ）で実行する構成要素、またはマネージャビリティエンジンのうちの少なくとも１つを用いて実行される、付記５に記載のコンピューティングデバイス。  
７．メモリの第２の部分が、１つ以上のレンジレジスタを用いて分割されたメインメモリの一部分、１つ以上のコプロセッサ内部のメモリ、１つ以上のコプロセッサに取り付けられたメモリ、１つ以上のモード専用のレジスタ、または特定の暗号鍵レジスタのうちの少なくとも１つである、付記５に記載のコンピューティングデバイス。  
８．特権的なサービスが、
ハイパーバイザーと関連付けられた１つ以上の値を測定し、
ハイパーバイザーと関連付けられた１つ以上の値に少なくとも一部は基づいて、ハイパーバイザーが変更されたかを検出するようにさらに動作可能である、付記５に記載のコンピューティングデバイス。  
９．特権的なサービスが、
ハイパーバイザーが変更されたという検出に応答して、外部エンティティに通知し、
ハイパーバイザーが変更されたという検出に応答して、暗号鍵を削除するようにさらに動作可能である、付記８に記載のコンピューティングデバイス。  
１０．システム管理割り込み（ＳＭＩ）を用いることによって、特権的なサービスに要求を送信するように構成される構成要素であって、ハイパーバイザーまたは仮想マシンのうちの少なくとも１つの中に存在する、構成要素をさらに備える、付記５に記載のコンピューティングデバイス。  
１１．暗号鍵を格納するように構成された、信頼できるプラットフォームモジュール（ＴＰＭ）であって、特権的なサービスが、ＴＰＭへの排他的アクセスを取得するようにさらに動作可能な、信頼できるプラットフォームモジュールをさらに含む、付記５に記載のコンピューティングデバイス。  
１２．特権的なサービスが、ハイパーバイザー及び１つ以上の仮想マシンによる、ＴＰＭ内に格納された鍵へのアクセスを制御するようにさらに動作可能である、付記１１に記載のコンピューティングデバイス。  
１３．特権的なサービスが、
ハイパーバイザーと関連付けられた第１の組の値を起動時に測定して、ハイパーバイザーを確認するようにさらに動作可能である、付記５に記載のコンピューティングデバイス。  
１４．特権的なサービスが、
ホストコンピューティングデバイス上の仮想マシンから、ハイパーバイザーを確認する第１のシステム管理割り込み（ＳＭＩ）を受け取り、
ＳＭＩハンドラーによって、ハイパーバイザーと関連付けられた第２の組の値を測定し、
ＳＭＩハンドラーによって第２の組の値を第１の組の値と比較し、
第２の組の値が起動時に測定された第１の組の値と一致するかどうか、ＳＭＩハンドラーによってハイパーバイザーを確認し、かつ
仮想マシンから、第２のＳＭＩを受け取って、鍵を読み出すか、または新しい鍵を格納するようにさらに動作可能である、付記１３に記載のコンピューティングデバイス。  
１５．特権的なサービスが、
仮想ＴＰＭを、１つ以上の仮想マシンに暴露するようにさらに動作可能であり、１つ以上の仮想マシンが、システム管理割り込み（ＳＭＩ）を用いて鍵にアクセスするように動作可能であり、鍵がハイパーバイザーにアクセスできない、付記５に記載のコンピューティングデバイス。  
１６．応答を生成することが、暗号鍵と関連付けられた権限情報にさらに基づく、付記５に記載のコンピューティングデバイス。  
１７．鍵を用いる要求が、
１つ以上の計算が鍵を用いて実行される要求、または
鍵を用いて暗号化された、または署名された１つ以上のメッセージを伝送する要求、のうちの少なくとも１つをさらに含む、付記５に記載のコンピューティングデバイス。  
１８．コンピュータ実現方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
特権的なサービスによって、ホストコンピューティングデバイス上に鍵を格納することとであって、ホストコンピューティングデバイスが、１つ以上の仮想マシンを管理するハイパーバイザーを含み、特権的なサービスが、ハイパーバイザーにアクセスできないメモリの少なくとも一部分へのアクセスを有する、格納することと、
特権的なサービスによって、鍵を用いることを要求する信号であって、ハイパーバイザーまたは１つ以上の仮想マシンのうちの少なくとも１つから受け取られる、信号を受け取ることと、
特権的なサービスによって、要求への応答であって、コンピューティングデバイス上に格納された鍵に少なくとも一部は基づく、応答を生成することと、を含む、コンピュータ実現方法。  
１９．特権的なサービスが、
暗号プロセッサ、遠隔管理カード、ベースボード管理コントローラ（ＢＭＣ）、システム管理モード（ＳＭＭ）で実行する構成要素、マネージャビリティエンジン、またはハイパーバイザーを実行しないホストコンピューティングデバイスの１つ以上のプロセッサのうちの少なくとも１つを用いてホストコンピューティングデバイス上で実行される、付記１８に記載のコンピュータ実現方法。  
２０．ハイパーバイザーと関連付けられた１つ以上の値を測定することと、
１つ以上の値に少なくとも一部は基づいて、ハイパーバイザーが変更されたかを検出することと、をさらに含む、付記１８に記載のコンピュータ実現方法。  
２１．ハイパーバイザーが変更されたという検出に応答して、
外部エンティティに、ハイパーバイザーが変更されたことを示す通知を送信すること、または
鍵を削除すること、のうちの少なくとも１つを実行することをさらに含む、付記２０に記載のコンピュータ実現方法。  
２２．鍵を格納することが、
鍵を信頼できるプラットフォームモジュール（ＴＰＭ）の中に格納することをさらに含み、特権的なサービスが、ＴＰＭへの排他的アクセスを有するように構成される、付記１８に記載のコンピュータ実現方法。  
２３．コンピューティングシステムに、１つ以上のプロセッサによって実行可能な１つ以上の命令であって、
特権的なサービスによって、ホストコンピューティングデバイス上に鍵を格納することであって、ホストコンピューティングデバイスが、１つ以上の仮想マシンを管理するハイパーバイザーを含み、特権的なサービスが、ハイパーバイザーにアクセスできないメモリの少なくとも一部分へのアクセスを有する、格納することと、
特権的なサービスによって、鍵を用いることを要求する信号であって、ハイパーバイザーまたは１つ以上の仮想マシンのうちの少なくとも１つから受け取られる、信号を受け取ることと、
特権的なサービスによって、要求への応答であって、コンピューティングデバイス上に格納された鍵に少なくとも一部は基づく、応答を生成することと、を行わせる、１つ以上の命令を格納した、非一時的なコンピュータ可読記憶媒体。  
２４．コンピューティングシステムに、
仮想ＴＰＭを、１つ以上の仮想マシンに暴露させる命令をさらに含み、１つ以上の仮想マシンが、システム管理割り込み（ＳＭＩ）を用いて鍵にアクセスするように動作可能であり、鍵がハイパーバイザーにアクセスできない、付記２３に記載の非一時的コンピュータ可読記憶媒体。  
２５．特権的なサービスが、鍵に関連する権限情報を用いて要求への応答を生成するように動作可能である、付記２３に記載の非一時的コンピュータ可読記憶媒体。  
２６．鍵を用いる要求が、
１つ以上の計算が鍵を用いて実行される要求、または
鍵を用いて暗号化された、または署名された１つ以上のメッセージを伝送する要求、のうちの少なくとも１つをさらに含む、付記２３に記載の非一時的コンピュータ可読記憶媒体。  
２７．コンピューティングシステムに、
ハイパーバイザーと関連付けられた第１の組の値を起動時に測定して、信頼できるハイパーバイザーが起動されたことを確認させる命令をさらに含む、付記２３に記載の非一時的コンピュータ可読記憶媒体。  
２８．コンピューティングシステムに、
実行時に、ホストコンピューティングデバイス上の仮想マシンから第１のシステム管理割り込み（ＳＭＩ）を受け取らせ、
ＳＭＩハンドラーによって、ハイパーバイザーと関連付けられた第２の組の値を測定させ、
ＳＭＩハンドラーによって、第２の組の値を第１の組の値と比較させ、
第２の組の値が起動時に測定された第１の組の値と一致するかＳＭＩハンドラーによってハイパーバイザーを確認させ、
仮想マシンから、第２のＳＭＩを受け取って、鍵を読み出させるか、または新しい鍵を格納させる命令をさらに含む、付記２７に記載の非一時的コンピュータ可読記憶媒体。
【００４１】
図５は、実施例のコンピューティングデバイス５００の全体的な構成要素のセットの論理的配設を示す。この実施例では、デバイスは、メモリデバイスまたは要素５０４に格納することができる命令を実行するための少なくとも１つのプロセッサ５０２を備える。当業者には明らかであるが、このデバイスは、多くのタイプのメモリ、データストレージ、または非一時的コンピュータ可読記憶媒体、例えば、プロセッサ５０２によって実行されるプログラム命令のための第１のデータストレージ、画像またはデータのための別個のストレージ、他のデバイスと情報を共有するための取り外し可能なメモリなどを備えることができる。このデバイスは、通常、タッチスクリーンまたは液晶ディスプレイ（ＬＣＤ）のようなあるタイプの表示要素５０６を備えることができるが、携帯型メディアプレーヤーのようなデバイスは、オーディオスピーカーを介するような他の手段によって、情報を搬送することができる。記載のように、多くの実施形態において、デバイスは、従来の入力をユーザから受け取ることができる少なくとも１つの入力要素５０８を含む。この従来の入力は、例えば、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、または任意の他のそのようなデバイスもしくは要素を含むことができ、それによって、ユーザは、コマンドをデバイスに入力することができる。しかしながら、いくつかの実施形態では、そのようなデバイスは、一切のボタンを備えることがなく、視覚的コマンド及び音声コマンドの組合せを介してのみ制御することができ、ユーザは、デバイスに接触することなく、デバイスを制御することができる。いくつかの実施形態では、図５のコンピューティングデバイス５００は、Ｗｉ−Ｆｉ（登録商標）、ブルートゥース、ＲＦ、有線または無線通信システムのような様々なネットワークを介して通信するための１つ以上のネットワークインターフェース要素５０８を備えることができる。多くの実施形態において、デバイスは、インターネットなどのネットワークと通信することができ、他のそのようなデバイスと通信することができ得る。
【００４２】
記載のように、記載された実施形態に従って、異なる手法を様々な環境で実現することができる。例えば、図６は、様々な実施形態に従って、態様を実現するための環境６００の実施例を示す。理解されることであるが、ウェブベースの環境は、説明の目的のために使用されたが、異なる環境は、様々な実施形態を実現するために、適宜、使用することができる。このシステムは、電子クライアントデバイス６０２を備え、これは、適切なネットワーク６０４上で要求、メッセージ、または情報を送信及び受信し、情報をデバイスのユーザに搬送して戻すように動作可能な任意の適切なデバイスを備えることができる。このようなクライアントデバイスの例示は、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ラップトップ型コンピュータ、セットトップボックス、個人データ端末、電子ブックリーダ等を含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワークもしくはそれらの組合せを含む、任意の適切なネットワークを含むことができる。そのようなシステムに用いられる構成要素は、ネットワークのタイプ及び／または選択された環境に少なくとも部分的に依存することができる。そのようなネットワークを介する通信のためのプロトコル及び構成要素は、公知であり、本明細書では詳細に議論されない。ネットワークを介した通信は、有線または無線接続、及びそれらの組合せによって可能にすることができる。この実施例では、ネットワークは、インターネットを含むので、環境は、要求を受信し、かつそれに応答してコンテンツを提供するためのウェブサーバ６０６を含むが、他のネットワークの場合、当業者には明らかであるように、同様の目的を果たす代替のデバイスを使用することができる。
【００４３】
実例の環境は、少なくとも１つのアプリケーションサーバ６０８及びデータストア６１０を含む。適切なデータストアからデータを取得する等のタスクを行うように相互作用することが可能である、連結またはそうでなければ構成することができる、複数のアプリケーションサーバ、層もしくは他の要素、プロセス、または構成要素が存在できることを理解されたい。本明細書で使用されるように、「データストア」という用語は、データを記憶し、それにアクセスし、それを取り出すことが可能な任意のデバイスまたはデバイスの組合せを指し、これは、任意の標準的な分散型またはクラスタ型環境において、データサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体の任意の組合せ及び数を備えることができる。アプリケーションサーバは、必要に応じてデータストアと統合してクライアントデバイスの１つ以上のアプリケーションの態様を実行し、アプリケーションのデータアクセス及びビジネス論理の大部分を処理するための任意の好適なハードウェア及びソフトウェアを備えることができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、オーディオ及び／またはビデオのようなコンテンツを生成することができ、この実施例では、これらは、ＨＴＭＬ、ＸＭＬ、または別の適切な構造化言語の形態でウェブサーバによってユーザに提供することができる。すべての要求及び応答の処理、ならびにクライアントデバイス６０２とアプリケーションサーバ６０８との間のコンテンツの配信は、ウェブサーバ６０６によって処理することができる。本明細書で議論される構造化されたコードは、本明細書の他の箇所で議論される任意の適切なデバイスまたはホストマシンで実行することができるので、ウェブサーバ及びアプリケーションサーバは、必須ではなく、単に実施例の構成要素であることを理解されたい。
【００４４】
データストア６１０は、複数の別個のデータテーブル、データベースまたは他のデータ記憶機構、及び特定の態様に関するデータを記憶するための媒体を含むことができる。例えば、示されたデータストアは、製造データ６１２及びユーザ情報６１６を格納する機構を備え、製造側にコンテンツを提供するために使用することができる。データストアはまた、ログまたはセッションデータ６１４を格納するための機構を備えるように示される。ページの画像情報及びアクセス権情報等、データストアに格納する必要があり得る多くの他の態様が存在することができ、これは、必要に応じて上に列挙された機構のいずれか、またはデータストア６１０内の追加の機構に記憶することができることを理解されたい。データストア６１０は、それに関連する論理を介して動作可能であり、アプリケーションサーバ６０８から命令を受け取り、それに応じて、データを取得し、更新するまたはそうでなければ処理する。一実施例では、ユーザは、あるタイプのアイテムのための検索の要求を提出することもある。この場合、データストアは、ユーザ情報にアクセスしてユーザの識別を確認することができ、カタログの詳細情報にアクセスして、そのタイプのアイテムについての情報を取得することができる。この情報は、次に、ユーザがユーザデバイス６０２のブラウザを介して見ることができるウェブページ上の結果一覧等で、ユーザに返すことができる。関心のある特定のアイテムの情報を、ブラウザの専用ページまたはウィンドウで見ることができる。
【００４５】
各サーバは、サーバの全般的な管理または操作のための実行可能なプログラム命令を提供するオペレーティングシステムを備え、またサーバのプロセッサによって実行されると、意図された機能をサーバが行うことを可能にする命令を格納するコンピュータ可読媒体を備える。サーバのオペレーティングシステム及び全体的な機能のための適切な実現形態は、公知であり、または市販されており、具体的に本明細書の本開示に照らして、当業者によって容易に実現される。
【００４６】
一実施形態における環境は、１つ以上のコンピュータネットワークまたは直接接続を使用し、通信リンクを介して相互接続された複数のコンピュータシステム及び構成要素を利用する、分散型コンピューティング環境である。しかしながら、当業者であれば、そのようなシステムが、図６に示されたよりも少ない数または多い数の構成要素を有するシステムで同等にうまく動作できることを理解されたい。したがって、図６のシステム６００の図示は、本質的に実例としてみなされるべきであり、本開示の範囲を制限するものではない。
【００４７】
本明細書で議論された、または示唆された、様々な実施形態は、多種多様の動作環境で実現することができ、これらは、ある場合には、いくつかのアプリケーションのうちのいずれかを動作するために使用することができる１つ以上のユーザコンピュータ、コンピューティングデバイス、またはプロセッシングデバイスを含むことができる。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップ型またはラップトップ型コンピュータ、ならびに、モバイルソフトウェアを実行し、多数のネットワーク及びメッセージプロトコルをサポートすることが可能な携帯電話、無線、及び携帯型デバイスなどの、任意の多数の汎用パーソナルコンピュータを備えることができる。このようなシステムはまた、開発及びデータベース管理などの目的のために、様々な市販のオペレーティングシステム及び他の公知のアプリケーションのうちのいずれかを実行する多数のワークステーションを備えることができる。これらのデバイスはまた、ダミーターミナル、シンクライアント、ゲーミングシステム、及びネットワークを介して通信することができる他のデバイスなどの他の電子デバイスを備えることができる。
【００４８】
ほとんどの実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、及びＡｐｐｌｅＴａｌｋなどの、多様な市販のプロトコルのいずれかを使用して通信をサポートするために、当業者によく知られているであろう少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組合せであることができる。
【００４９】
ウェブサーバを利用する実施形態においては、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、及びビジネスアプリケーションサーバを含む、あらゆる種類のサーバまたは中間層アプリケーションを実行することができる。サーバ（複数可）はまた、例えば、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋等の任意のプログラミング言語、またはＰｅｒｌ、Ｐｙｔｈｏｎ、もしくはＴＣＬなどの任意のスクリプト言語、ならびにそれらの組合せで書かれる１つ以上のスクリプトまたはプログラムとして実現することができる１つ以上のウェブアプリケーションを実行することなどによって、ユーザデバイスからの要求に応答してプログラムまたはスクリプトを実行することができ得る。サーバ（複数可）はまた、制限するものではないが、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から市販のものを含むデータベースサーバも備えることができる。
【００５０】
環境は、上述のように様々なデータストアと、他のメモリと、記憶媒体と、を備えることができる。これらは、様々な場所、例えば、コンピュータのうちの１つ以上に対してローカルである（かつ／もしくはそこに存在する）、またはネットワーク上のコンピュータのうちのいずれかもしくはすべてから遠隔である、記憶媒体上に存在することができる。実施形態の特定のセットにおいて、情報は、当業者に熟知されたストレージエリアネットワーク（「ＳＡＮ」）内に存在することができる。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を行うために必要な任意のファイルを、必要に応じてローカル及び／または遠隔で格納することができる。システムがコンピュータ化されたデバイスを含む場合、それぞれのそのようなデバイスは、バスを介して電気的に結合することができるハードウェア要素を備えることができ、これらの要素は、例えば、少なくとも１つの中央処理ユニット（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、及び少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカー）を含む。このようなシステムはまた、ディスクドライブ、光学的記憶デバイス、及びランダムアクセスメモリ（ＲＡＭ）または読み出し専用メモリ（ＲＯＭ）などのソリッドステート記憶デバイス、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカードなどのような１つ以上の記憶デバイスを備えることができる。
【００５１】
そのようなデバイスはまた、上述のように、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス）、及びワーキングメモリを備えることができる。コンピュータ可読記憶媒体リーダは、コンピュータ可読情報を一時的及び／またはより恒久的に収容し、格納し、送信し、かつ読み出すための、遠隔、ローカル、固定、及び／または取り外し可能な記憶デバイスならびに記憶媒体を表すコンピュータ可読記憶媒体に、接続する、またはそれを受け取るように構成する、ことができる。システム及び様々なデバイスはまた、通常、多数のソフトウェアアプリケーション、モジュール、サービス、またはクライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む少なくとも１つのワーキングメモリデバイス内に位置する他の要素を備える。代替の実施形態が、上述のものからの多数の変形を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、かつ／または特定の要素が、ハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、もしくはこれらの両方に実現され得る。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続を用いることができる。
【００５２】
コードまたはコードの部分を収容するための記憶媒体及びコンピュータ可読媒体は、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶及び／または送信のための任意の方法または技術で実現される、揮発性及び不揮発性、取り外し可能及び取り外し不能の媒体などの記憶媒体及び通信媒体を含む、当技術分野で公知である、または使用されている任意の適切な媒体を含むことができ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学的記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、かつシステムデバイスによってアクセスすることができる任意の他の媒体を含む。本明細書に提供される本開示及び教示に基づいて、当業者であれば、様々な実施形態を実現する他の仕方及び／または方法を理解するであろう。
【００５３】
明細書及び図面は、したがって、限定的な意味ではなく実例としてみなされるべきである。しかしながら、特許請求の範囲に記載のように本発明のより広い精神及び範囲から逸脱することなく、様々な変更及び改変を行うことができることは明らかであろう。
【図１】
2016511872.tif 000003
【図２】
2016511872.tif 000004
【図３】
2016511872.tif 000005
【図４】
2016511872.tif 000006
【図５】
2016511872.tif 000007
【図６】
2016511872.tif 000008
【国際調査報告】
2016511872.tif 000009