(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0005】
基本入出力システム(BIOS)は、通常、電子デバイスが始動したときに当該電子デバイスによって実行される最初のコードである。電子デバイスの例には、コンピューター(例えば、デスクトップコンピューター、ノートブックコンピューター、タブレットコンピューター、サーバーコンピューター等)、ハンドヘルドデバイス(例えば、携帯情報端末、スマートフォン等)、電子器具、ゲームコンソール、又は他の任意のタイプの電子デバイスが含まれる。BIOSは、電子デバイスの様々なハードウェア構成要素を初期化及び構成し、電子デバイスのオペレーティングシステム(OS)をロード及び始動する。BIOS用のコードは、通常、フラッシュメモリデバイス又は他のタイプのプログラマブル読み出し専用メモリ(ROM)等の不揮発性メモリ上に記憶されている。
【0006】
BIOSは、電子デバイスにおいて起動することができる他の機能も提供する。BIOSのそのような他の機能の多くは、多くの場合、システム管理モード(SMM)に入ることによって電子デバイスにおいて実行される。このシステム管理モードは、OSの実行が一時停止される動作モードである。また、複数のプロセッサ又はプロセッサコアを有する電子デバイスでは、これらのプロセッサ又はプロセッサコアのうちの1つを除いた全てが、SMMモードにおいてディセーブルされ得る。SMMモードに入るために、システム管理割り込み(SMI)がアサートされ、SMIハンドラー(BIOSの一部分)が、多くの場合、比較的高い特権モードで実行されて、それぞれの機能(複数の場合もある)を実行する。
【0007】
SMMモードに入ってBIOS機能を実行することに伴う様々な課題が存在し得る。第1に、OSの実行が一時停止されるので、通常の電子デバイスの動作は続行することができない。また、プロセッサ(複数の場合もある)又はプロセッサコア(複数の場合もある)がSMMモード中にディセーブルされる電子デバイスでは、この電子デバイスの処理能力の一部分が一時的に非アクティブ化されるが、これは、処理能力のそのような部分が他のタスクを実行するのに利用不能であることを意味する。その上、SMM処理にどれだけの時間を要し得るのかを予測することが困難である可能性があり、これによって、電子デバイスの動作に不確定性がもたらされる可能性がある。その上、或る特定のBIOS機能は、完了するのに比較的長い時間期間(例えば、数分程度)を要する可能性があるため、ステータス情報が電子デバイスのユーザーに利用不可能となる場合があり、この結果、ユーザーは、電子デバイスが適切に機能しているか否かを確認することができず、ユーザーに当惑させる体験をもたらす可能性がある。
【0008】
マルウェアがSMM動作中に攻撃を行う場合があり、これによって、システム破損につながる可能性があるので、セキュリティも課題になり得る。SMM動作に対する任意のそのような攻撃を回避するために取られるセキュリティ対策の結果、電子デバイスの設計の複雑度が増す可能性がある。そのようなセキュリティ対策の例には、レジスタ、及び/又はフラッシュメモリデバイス若しくは他のタイプのプログラマブル読み出し専用メモリ等の不揮発性メモリの一部分を含む或る特定の記憶エリアをロックすることが含まれる。このロックは、BIOSの不要な変更又は認可されていない変更に対する保護を提供することができる。しかしながら、これらのセキュリティ対策は、BIOSコード更新等の或る特定のBIOS機能の実行に制約を課す場合があるが、これによって、そのようなBIOS機能は、強制的にある特定の時間、例えばシステム再始動等のみに実行せざるを得なくなる可能性がある。
【0009】
SMMにおいて実行されることが多い様々な機能の例は、次のもの、すなわち、BIOSコードを更新するサービス;BIOSの設定にアクセスするか又はこの設定を変更するサービス;熱管理を実行する(例えば、電子デバイス内のファン等の冷却デバイスを制御する)熱管理サービス;電力管理サービス(特定のハードウェア構成要素への電力の除去又は復旧);異なる電力状態(例えば、ハイバーネーション状態、スリープ状態、完全オン状態等)間で電子デバイスを遷移させるサービス;電子デバイスのボタン又はボタンシーケンス(例えば、無線インターフェース構成要素をオン/オフするボタン、或る所定のタスクを実行するホットキーシーケンス等)のアクティブ化(複数のボタンの或る組み合わせのアクティブ化を含む)を処理するサービス;電子デバイスの環境光センサー(電子デバイスの周囲の環境光を検出するためのもの)に関連付けられたサービス;BIOSの設定を変更するサービス;電子デバイス内のハードウェア構成要素の設定を変更するサービス;電子デバイスのブート可能なデバイスのブート順序を変更するサービス;OSとBIOSとの間の或る特定のタイプのコール(例えば、割り込み15コール)をハンドリングするサービス;組み込みコントローラーのコマンドを実行するサービス;及び或る特定の条件下でレガシー周辺デバイス(例えば、ユニバーサルシリアルバスデバイス)をサポートするサービス、のうちのいずれか1つ又はそれらの組み合わせを含むことができる。
【0010】
様々な例示のBIOS機能が上記に列挙されているが、他の実施態様では、他のBIOS機能又は代替のBIOS機能を用いることができることに留意されたい。
【0011】
幾つかの実施態様によれば、よりロバストなシステム挙動を得るために、電子デバイスがSMMモードに入る必要なしにBIOS機能をアクセス可能にすることを許可するドメインにBIOS機能を設けることができる。このドメインは、電子デバイスの外部に位置することもできるし、電子デバイスの内部に位置することもできる。一般に、BIOSは、「BIOS.v」とも呼ばれる「クラウド内のBIOS」とみなすことができる。このクラウドは、電子デバイス内又は電子デバイスの外部のいずれかに位置することができる。
【0012】
クラウド内のBIOSにアクセスするために、ウェブベースのインターフェースが提供される。一般に、「ウェブベースのインターフェース」は、要求元がインターネット又は他のタイプのネットワーク等のネットワークを介して送信されるメッセージングを用いてリソースにアクセスすることを可能にするインターフェースを指すことができる。ウェブベースのインターフェースは、BIOSにアクセスするための最新のインターフェースを提供することができ、このインターフェースは、オペレーティングシステム及びチップセット(以下で更に論述する)を含む基礎を成すプラットフォームから独立したものとすること、又はこのプラットフォームに対する依存性を低減することができる。
図1は、幾つかの実施態様による電子デバイス100の単純化したブロック図である。電子デバイス100は、要求エンティティ102(例えば、仮想マシンモニター、ゲスト仮想マシン、又は或る他のエンティティ)を備える。この要求エンティティは、BIOSアクセス要求104をサブミットすることができる。BIOSアクセス要求104は、ウェブベースのインターフェース106にサブミットされる。ウェブベースのインターフェース106を提供する機能は、次に、BIOSアクセス要求104をクラウド110内の対応するBIOS機能108にダイレクトすることができるが、クラウド110は、電子デバイス100の内部に存在することもできるし、ネットワークを介してアクセス可能な外部ロケーションに存在することもできる。次の論述は、単数形の意味での「BIOS機能」を指すが、「BIOS機能」は、単一のBIOS機能を指すこともできるし、複数のBIOS機能を指すこともできることに留意されたい。
【0013】
ハイパーバイザーとも呼ばれる仮想マシンモニター(VMM)は、電子デバイスのハードウェア構成要素を含む物理リソースの、仮想マシンによる共有を管理する。VMMは物理リソースを仮想化する。各仮想マシンは、VMMによって管理される関連付けられた仮想化物理リソースを有する。VMMは、物理リソースを求める要求を処理する。
【0014】
「仮想マシン」(「仮想アプライアンス」又は「仮想パーティション」とも呼ばれる)は、物理マシンを仮想化又はエミュレートするために提供される物理マシン(電子デバイス)の或るパーティション又はセグメントを指す。ユーザー又はアプリケーションの視点から、仮想マシンは物理マシンのように見える。仮想マシンは、オペレーティングシステム(ゲストオペレーティングシステムと呼ばれる)及び少なくとも1つのアプリケーションプログラムを備える。「ゲスト仮想マシン」は、ゲスト動作システム及びアプリケーションを備える仮想マシンを指すことができる。ゲスト仮想マシンは、多くの場合に仮想マシンモニターによって始動される最初のドメイン(又は仮想マシン)であるドメイン0とは異なる。
【0015】
例として、ウェブベースのインターフェース106は、ウェブサービスインターフェースとすることができる。ウェブサービスは、ネットワークを介した相互動作可能なマシンツーマシンインターラクションをサポートするように設計されたメカニズムを指す。幾つかの実施態様では、ウェブサービスインターフェースは、電子デバイス100内のエンティティ間のインターラクションも可能にすることができることに留意されたい。ウェブサービスインターフェースは、ワールドワイドウェブコンソーシアム(W3C)によって定義されたウェブサービス記述言語(WSDL)によって記述されたフォーマットに従うことができる。代替的に、ウェブサービスインターフェースは、ウェブサービスの実施態様における構造化情報をネットワークを介して交換するためのプロトコルであるシンプルオブジェクトアクセスプロトコル(SOAP)(同様にW3Cによって定義されている)に従うことができる。
【0016】
更に別の代替形態として、ウェブベースのインターフェース106は、クライアント及びサーバーを備える具象的状態転送(REST:Representational State Transfer)アーキテクチャに従うことができ、クライアントは、要求をサーバーにサブミットすることができ、サーバーは、応答をクライアントに提供することができる。要求及び応答は、リソースの表現の転送を巡って構築される。リソースは、取り扱い得る任意のコヒーレントで意味のある概念とすることができる。リソースの表現は、通常、リソースの現在の状態又は意図した状態を捕捉するドキュメントである。RESTアーキテクチャでは、クライアントによってサブミットされる要求は、幾つかの例では、ハイパーテキスト転送プロトコル(HTTP)Get要求とすることができる。サーバーは、HTTP Get要求に対するHTTP応答を提供することができる。クライアント及びサーバーは、ネットワークを介して結合することもできるし、代替的に、クライアント及びサーバーは、電子デバイス100の内部に存在することもできることに留意されたい。
【0017】
ウェブベースのインターフェース106では、要求されたリソースのアドレスを含むBIOSアクセス要求を発行することによってリソース(例えば、内部BIOS機能又は外部BIOS機能)にアクセスすることができる。このアドレスは、ユニフォームリソースロケーター(URL)、インターネットプロトコル(IP)アドレス、又は要求されたリソースを一意に識別することができる或る他のアドレス等のウェブアドレスとすることができる。
【0018】
ウェブベースのインターフェース106において受信されたアドレスを含むBIOSアクセス要求に応答して、この要求を内部BIOS機能及び外部BIOS機能のうちの適切なものにダイレクトすることができる。場合によっては、この要求は、内部BIOS機能及び外部BIOS機能の双方にダイレクトすることができる。
【0019】
外部ロケーションにBIOS機能を設けることによって、或る特定の利点をもたらすことができる。例えば、外部のサーバーコンピューターに関連付けられたサービスプロバイダーは、電子デバイス100等のクライアントデバイスを関与させることなくBIOS更新の自動チェックを実行することができる。サービスプロバイダーは、障害又は破損の検出時等に、前のバージョンへのBIOSのロールバックを制御することもできる。BIOSに関する他の更なるサービスを、外部のサーバーコンピューターにおいてより効率的かつ効果的な方法で実行することができる。
【0020】
ウェブベースのインターフェースを提供する別の利点は、BIOS機能にアクセスすることに関与する通信のための特定のチップセット又はオペレーティングシステムアーキテクチャに対する依存性を低減することができるということである。例えば、Microsoftから提供されているWINDOWS(登録商標)オペレーティングシステムを用いる幾つかのシステムでは、WBEM(ウェブベースの企業体管理)の一実施態様であるWMI(Windows(登録商標)管理計測)メカニズムを、オペレーティングシステムからBIOS機能にアクセスするのに用いることができる。しかしながら、WMIのサポートは、Linux(登録商標)又は他のオペレーティングシステムを用いた環境等の他の動作環境では利用可能でない場合があるか又は貧弱な場合がある。更なる例として、int15又はint1A等の特定の割り込みメカニズムを特定のタイプのチップセットとともに用いることができる。幾つかの実施態様によるウェブベースのインターフェース等のよりオープンなインターフェースを用いることによって、特定のチップセット及びオペレーティングシステムアーキテクチャに対する依存性が低減される。さらに、WMI又は上述した他の方式を用いてBIOS機能にアクセスするためのコマンドフォーマットは、時代遅れである可能性があり、柔軟性に欠ける場合がある。ウェブベースのインターフェースは、BIOS機能を起動する通信のためのXML(拡張可能マークアップ言語)又は他の標準規格等のより広く用いられる標準規格によるコマンドの使用を可能にし、これによって、よりオープンかつ拡張可能なコマンドフォーマットを可能にすることができ、標準規格ベースの確認メカニズム(例えば、XMLベースの確認メカニズム)を用いることが可能になる。
【0021】
図2は、幾つかの実施態様によるプロセスの流れ図である。このプロセスは、電子デバイス100により実行することができる。このプロセスは、BIOS機能にアクセスする要求を受信する(202)。この要求は、ウェブベースのインターフェース(例えば、106)が受信することができる。このプロセスは、次に、この要求をウェブベースのインターフェース106を通じて、BIOS機能108を備えるクラウド110にルーティングする(204)。
【0022】
幾つかの実施態様では、BIOS機能108が設けられているクラウド110は、電子デバイス100の特権ドメインであり、この特権ドメインは、比較的セキュアであるとともに電子デバイス内の他のエンティティに利用可能でない或る所定の特権(複数の場合もある)を有する電子デバイスのドメインである。一般に、「特権ドメイン」は、そのドメイン内のエンティティが、他のエンティティ(例えば、OS、アプリケーションプログラム等)が実行を許可されない電子デバイス内の機能を実行することを許可する所定の特権(複数の場合もある)を有するドメインを指す。また、特権ドメインは、認可されていないアクセス又は攻撃から特権ドメインを保護するセキュリティメカニズムも有する。
【0023】
BIOSの機能を特権ドメインに移動させることによって、電子デバイス100は、特権ドメイン内に移動されたそのようなBIOS機能を実行するのにSMMモードに入る必要がなくなり得る。幾つかの実施態様では、SMMの動作を完全になくすことができる。他の実施態様では、SMMの動作を依然としてイネーブルして、或る特定のBIOS機能を実行することができる一方、残りのBIOS機能は、特権ドメインを通じて実行される。後者の場合、その着想は、セキュリティを提供し及び/又は効率を改善する効果的な対策を取ることができるような小さな一群のBIOS機能にのみSMMがイネーブルされるということである。
【0024】
特権ドメインの例には、次のもの、すなわち、多くの場合に管理タスクを実行するために仮想マシンモニター(ハイパーバイザーとも呼ばれる)によって始動される最初のドメインであるドメイン0;仮想マシンモニター(又はハイパーバイザー)の一部分;強化された特権及び/又はセキュリティをゲスト仮想マシンに提供する所定の設定を有する当該ゲスト仮想マシン;又は所定の特殊な特権及び/又はセキュリティメカニズムを有する電子デバイス内の別のタイプのドメイン、のうちの任意のもの又はそれらの或る組み合わせが含まれる。
【0025】
図3は、幾つかの実施態様による一例示の電子デバイス300のブロック図である。電子デバイス300は、VMM302を備え、このVMM302は、少なくとも1つのBIOS機能306(上記に列挙したBIOS機能又は他のBIOS機能のうちのいずれか1つ又はそれらの組み合わせ)を備える特権ドメイン304を作成する。特権ドメイン304は、
図1のウェブベースのインターフェース106も備える。特権ドメイン304内のBIOS機能306には、ウェブベースのインターフェース106を通じてアクセスすることができる。
【0026】
幾つかの例では、特権ドメイン304はドメイン0であり、このドレイン0は、システム起動時にVMM302によって始動される管理ドメインであり、強化された特権及びセキュリティメカニズムを有する。ドメイン0によって実行されるタスクの例には、ゲストドメインの作成及び構成が含まれる。ドメイン0及びゲストドメインのそれぞれは、対応する仮想マシンとみなされる。
【0027】
他の実施態様では、特権ドメイン304は、ゲスト仮想マシン等の別のタイプの仮想マシンとすることができる。特権ドメイン304は、
図3の配置等によれば、VMM302とは別個のものとすることができる。代替の実施態様では、特権ドメイン304は、VMM302の一部とすることができる。そのような代替の実施態様では、BIOS機能306及びウェブベースのインターフェース106は、VMM302の一部分である。
【0028】
BIOS機能306は、電子デバイス300内のエンティティ308によってアクセス可能である。幾つかの例では、特権ドメイン304内のBIOS機能306にアクセスすることができるエンティティ308は、ゲスト仮想マシン310の一部分である。例えば、そのようなエンティティ308は、ゲスト仮想マシン310内のゲストオペレーティングシステム又は別のタイプのエンティティとすることができる。他の例では、エンティティ308は、ホストオペレーティングシステム(
図3に図示せず)又はアプリケーションプログラムがBIOS機能306にアクセスすることを望むシナリオ等における任意のゲスト仮想マシン310の外部に存在することができる。ゲストオペレーティングシステムは仮想マシンの一部分であるのに対して、ホストオペレーティングシステムは仮想マシンの一部分でないという点で、「ホストオペレーティングシステム」は「ゲストオペレーティングシステム」とは異なる。
【0029】
エンティティ308が特権ドメイン304内のBIOS機能306にアクセスするための2つの代替のメカニズムがある。第1のメカニズムは、エンティティ308が、特権ドメイン304内のBIOS機能306にアクセスする要求(312)をウェブベースのインターフェース106に直接送信することを含む。以下で更に論述するように、これは、ゲスト仮想マシン310内の仮想BIOSの存在によって可能にすることができる。
【0030】
第2のメカニズムによれば、BIOS機能306にアクセスする要求(314)が、VMM302によってインターセプトされ、VMM302によって(パス316に沿って)特権ドメイン304内のウェブベースのインターフェース106にルーティングされる。幾つかの実施態様では、仮想BIOSを用いてVMM302を構成する必要なく、VMM302は、(エンティティ308からの)BIOS機能306にアクセスする要求をインターセプトし、特権ドメイン304にルーティングすることができる。これによって、VMM302の設計における複雑度が低減される。
【0031】
図3は、電子デバイス300内のハードウェアリソース316も示している。例として、ハードウェアリソース316には、プロセッサ(又は複数のプロセッサ)、I/Oデバイス、揮発性メモリ、二次記憶装置、フラッシュメモリ、ネットワークインターフェースコントローラー、グラフィックスアダプター等が含まれる。ゲスト仮想マシン(310等)によるハードウェアリソース316のアクセスは、VMM302によって管理される。
【0032】
図4は、幾つかの実施態様によるプロセスの流れ図である。
図4のプロセスは、例えば、
図3に示すエンティティが実行することができる。このプロセスは、BIOSの機能(例えば、
図1又は
図3におけるBIOS機能306)を起動する要求を受信する(402)。この要求は、例えば、VMM302がエンティティ308から受信することができる。
【0033】
このプロセスは、上記要求を特権ドメイン304にルーティングする(404)。そのようなルーティングは、VMM302が実行することもできるし、代替的に、このルーティングは、ゲスト仮想マシン310内の仮想BIOSが実行することもできる。仮想BIOSを有する実施態様では、BIOS(BIOS機能306等)にアクセスすることを望むゲスト仮想マシン310内の、ゲストオペレーティングシステムとすることができるエンティティ(例えば、308)は、ゲスト仮想マシン310内の仮想BIOSにアクセス要求を発行する。この仮想BIOSは、次に、このアクセス要求を特権ドメイン304にルーティングする。
【0034】
特権ドメイン304は、次に、要求の送信元を識別すること、又は要求のコンテキストを識別すること、又は要求の送信元及びコンテキストの双方を識別することに基づいて、要求されたBIOS機能を実行するか否かを判断する(406)。特権ドメインが要求の送信元を識別することに基づいてこの判断を行う(406)実施態様において、特権ドメイン304が、要求の送信元が要求されたBIOS機能にアクセスする認可を受けていると判断した場合、要求されたBIOS機能が実行される。他方、そのような実施態様において、特権ドメイン304が、要求の送信元が要求されたBIOS機能にアクセスする認可を受けていないと判断した場合(マルウェアが要求を発行したシナリオ等)、特権ドメイン304は、要求されたBIOS機能のアクセスを拒否することができる。このように、特権ドメイン304は、BIOS機能をセキュアに実行することができる。
【0035】
代替的に又は加えて、特権ドメイン304は、要求のコンテキストを識別することに基づいて上記判断を行う(406)。要求の「コンテキスト」は、要求が処理される時点における電子デバイス(又は電子デバイスの一部分)の現在の状態又は環境を指す。特権ドメイン304は、要求がコンテキスト的に正しいか否かに基づいて(換言すれば、電子デバイス(又は電子デバイスの一部分)の現在の状態又は環境が要求の実行のための単数又は複数のルールを満たすか否かに基づいて)、要求を実行することができるか否かを判断する。例えば、電子デバイスが状態S1から状態S2、状態S3、そして状態S4へ順に正当に進むことができるものと仮定する。また、要求されたBIOS機能を実行することによって、電子デバイスは状態S4に置かれるものと仮定する。そのような例では、電子デバイスが状態S3にある(換言すれば、要求のコンテキストが正しい)場合にのみ、特権ドメイン304は、BIOS機能を実行する要求を許可する。他方、電子デバイスが状態S2にある場合、それは不正な遷移である(コンテキストは正しくない)ので、特権ドメイン304は要求の実行を許可しない。
【0036】
BIOS機能を実行する要求のコンテキストが正しいか否かの別の例は、次のとおりである。システムは、動作を実行するコマンドが、次のコマンドシーケンス、すなわち、(1)システムをロックする、(2)動作を実行する、及び(3)システムをロック解除する、というシーケンスを伴うことを規定しているものと仮定する。BIOS機能を実行する要求が、システムをロックするコマンドの後に実行のために受信された場合には、この要求は、コンテキスト的に正しい。一方、この要求が、システムをロックするコマンドを受信する前に受信された場合には、この要求は、コンテキスト的に正しくなく、この要求は、特権ドメインが実行することができない。
【0037】
幾つかの実施態様によれば、要求されたBIOS機能は、SMMに入る必要なく実行される。換言すれば、SMMを迂回して、従来、SMMにおいてSMI BIOSハンドラーによって実行されていた或るBIOS機能(複数の場合もある)を実行することができる。幾つかの実施態様による技法又はメカニズムを用いることによって、従来、SMMにおいて実行されていたBIOS機能を、代わりに、特権ドメインによって提供される信頼できるランタイム環境において実行することができる。
【0038】
加えて、電子デバイスの全体的な設計を単純化することができる。なぜならば、ここでは、BIOS機能に対する要求を進めることを許可するか否かを制御するのは特権ドメインであることから、レジスタ又は不揮発性メモリの一部分のロック等、従来用いられていたセキュリティメカニズムを省略することができるからである。
【0039】
要求されたBIOS機能を実行することに加えて、特権ドメイン304は、BIOS機能の実行前に或る特定のタスクを実行することもできる。例として、特権ドメイン304は、BIOS機能にアクセスするか又はこれを実行する要求が適切に形成されているか否か、又は書き込まれるデータ(BIOSコード更新の場合等)又はBIOSポリシーの設定が正しいか否か(例えば、正しいサイズ、正しい検証コード等)を判断することができる。これは、マルウェアが、誤った形式のコマンド要求を処理した結果としてのBIOSの機能不全を引き起こそうとして、誤った形式の要求用いてBIOS機能にアクセスすることができる場合に対する保護を提供することができる。特権ドメイン304は、変更されるデータ(例えば、BIOSコード)のバックアップをBIOS機能の実行前に実行することができるか否かを判断することもできる。特権ドメイン304は、要求されたBIOS機能を完了するのに十分なバッテリ充電量があるか否かを更に判断することができる。一般に、特権ドメインは、特権ドメインがBIOS機能を起動する要求を実際に処理することを開始する前又はこの要求を更に処理するために実際の物理BIOSにルーティングすることを開始する前に、先ず、このBIOS機能を起動する要求、この要求に関連付けられた入力、並びにこの要求のコンテキスト及びその入力の正当性を確認することができる。
【0040】
BIOSコードを更新するコンテキストでは、特権ドメイン304は、BIOS更新に関連付けられたメタデータ及び/又はメタコードをハンドリングすることもできる。このメタデータは、BIOSコードのどの部分(複数の場合もある)が更新されるのかに関するポリシー又は記述と、更新の実行に関連付けられた条件(複数の場合もある)(BIOSコードを更新するための更新コードイメージが正しいシグネチャを有することを保証することに関係した条件、更新失敗の場合における旧BIOSコードバージョンへのロールバックに関係した条件等)とを提供することができる。上記メタコードは、BIOSの変数及び設定がどのように更新されるのかに関する手順(複数の場合もある)を規定することができる。特権ドメイン304は、これらのメタデータ及び/又はメタコードをハンドリングするインタープリターを実装することができる。
【0041】
図5は、代替の実施態様による電子デバイス500のブロック図である。電子デバイス500は、複数のゲスト仮想マシン502A、502Bを備える。
図5には、2つの仮想マシン502A、502Bが示されているが、代替の実施態様では、1つだけのゲスト仮想マシンが存在することもできるし、3つ以上のゲスト仮想マシンが存在することもできることに留意されたい。
【0042】
各ゲスト仮想マシン502A又は502Bは、それぞれのゲストオペレーティングシステム504A又は504Bに加えて、それぞれのアプリケーションプログラム506A又は506Bを備える。幾つかの実施態様では、各ゲスト仮想マシン502A又は502Bは、仮想BIOS508A又は508Bを更に備える。BIOSのサービスにアクセスするように設計されたゲストオペレーティングシステム504A又は504Bは、(実際のBIOSの代わりに)それぞれの仮想BIOS508A又は508Bをコールする。幾つかの実施態様では、仮想BIOS508A又は508Bは、次に、この要求を、BIOS機能306を備える特権ドメイン520に直接ルーティングすることができる。
図3による実施態様と同様に、特権ドメイン520は、ドメイン0又は別の仮想マシンを用いて実施することもできるし、VMM302内に実施することもできる。
【0043】
代替の実施態様では、仮想BIOS508A又は508Bは、代わりに、BIOS機能にアクセスする要求をVMM302を通じてルーティングすることができる。更に代替の実施態様では、仮想BIOS508A又は508Bをゲスト仮想マシン502A又は502Bから省略することができる。そのような実施態様では、BIOS機能にアクセスする要求は、VMM302がインターセプトすることができる。
【0044】
電子デバイス500は、ハードウェアリソース316と、実際のBIOS512(次の論述では「物理BIOS」と呼ばれる)を含むマシン可読命令を有するファームウェアレイヤ510とを更に備える。「物理BIOS」又は「実際のBIOS」は、フラッシュメモリ又は他のプログラマブル読み出し専用メモリ等の不揮発性メモリに存在するとともに電子デバイス500の起動時に実行されるBIOSコードを指す。物理BIOS512は、通常の物理BIOSの縮小(簡略)バージョンとすることができる。なぜならば、BIOSの1つ又は複数の機能は、特権ドメイン520に移動されている場合があり、これらの機能は、物理BIOS512のアクセスを実行する必要がないように特権ドメイン520から実行されるようになっているからである。一方、物理BIOS512の或る特定の機能は、物理BIOS512とともに残っている。そのようなBIOS機能のアクセスは、物理BIOS512を起動することを伴う。そのような起動は、
図5にパス514によって示すように、VMM302を通じて特権ドメイン104から行うことができる。
【0045】
また、従来、オペレーティングシステムとBIOSとの間で交換されるデータは保護されず、その結果、幾つかのシステムは、様々な独自の方式を用いて、オペレーティングシステムとBIOSとの間で交換されるデータに或るレベルの保護を提供し得ることにも留意されたい。そのような保護は、オペレーティングシステムとBIOSとの間で転送されるデータが、ユーザー名、パスワード、認証ハッシュ、及び/又は認証ポリシー等の機密情報を含む可能性があるために実行される。用いられる1つの例示の一般的な保護方式は、オペレーティングシステムとBIOSとの間で交換される情報を暗号化することである。暗号化を用いた保護は、鍵の使用と、鍵のBIOS(及びオペレーティングシステム)への記憶とを伴い、通常、この鍵の保護は不十分であるので、オペレーティングシステムとBIOSとの間で交換される情報に与えられる保護は弱い可能性がある。物理BIOS512との通信は、特権ドメイン520を通じて実行されるので、物理BIOS512と通信されるデータの機密性及び/又は完全性を(データを暗号化すること等によって)保護するための従来のメカニズムは、実施する必要がない。これによって、この解決策の単純性及び性能向上がもたらされる一方、特定の独自の保護メカニズムを実際に設ける必要なく、物理BIOSに通信されるデータのより高い保護が提供される。
【0046】
ゲスト仮想マシン502A及び502B並びに特権ドメイン520に加えて、電子デバイス500は、ユーザーインターフェースを提供するように実行可能なユーザーインターフェース(UI)コード518を含むサービスドメイン仮想マシン516も備えることができる。サービスドメイン仮想マシン516内のUIコード518によって提供されるユーザーインターフェースは、ユーザーが特権ドメイン520のステータスを監視するのに用いることができ、そのため、ユーザーは、BIOS機能306の実行中にフィードバックの提供を受けることができる。また、このユーザーインターフェースは、特権ドメイン520の設定を構成するのに用いることもできる。
【0047】
図5に更に示すように、特権ドメイン520は、特権ドメイン520内のBIOS機能306のアクセスを可能にするウェブベースのインターフェース106も備える。BIOS機能306のアクセスは、電子デバイス500内のエンティティからのものとすることができる。更なる例では、ウェブベースのインターフェース106は、セキュアな接続526を介して電子デバイス500の外部のエンティティ524からのウェブアクセスを可能にする。「セキュアな接続」は、ネットワーク接続を介して通信されるデータの認可されていないアクセスを防止するセキュリティメカニズム(例えば、データの暗号化、セキュアなトンネルの確立等)が適用されるネットワーク接続を指す。例えば、企業体環境(ここで、企業体は、会社、教育組織体、又は政府機関とすることができる)では、セキュアな接続526によって、電子デバイス500は、所定のサービスを提供するように構成されたサーバー等の信頼できるサーバー(524)との通信を確立することが可能になる。サーバー524が提供することができる所定のサービスの一例は、物理BIOS512又はBIOS機能306を更新するサービスを含むことができる。他の例では、他のサービスをサーバー524が提供することができる。信頼できる特権ドメイン520を用いることによって、BIOS機能のコールを電子デバイス500の外部から発信することが可能になる。
【0048】
幾つかの実施態様では、クラウド内のBIOSは、VMMベースのアーキテクチャの次の前提、すなわち、物理BIOSは、当該物理BIOSがブートしている主要なランタイムエンティティ(
図3又は
図5におけるVMM302)を知っているとともに信頼していることと、BIOSが信頼しているVMMは、特権ドメインから来るI/O要求以外の(BIOS機能にアクセスする)全てのI/O要求をトラップし、オフにする能力を有すること、に基づいている。幾つかの実施態様では、電子デバイスによってブートされるVMMの起源を認証するBIOS検証メカニズムを提供することができる。そのような検証メカニズムの例は、米国特許出願第PCT/US2011/022814号に記載されている。そのような検証メカニズムによって、アドミニストレーター又は他のユーザーは、認可されたVMMのみを電子デバイス100又は300においてブートすることができることを指定することが可能になる。この検証メカニズムは、電子デバイスに存在するVMMイメージが悪意をもって変更されていないこと、及びVMMを信頼することができることを保証する。物理BIOSは、VMMイメージを視覚的に検証することができ、VMMが、事前に指定された既知の一組の制御された動作設定を用いてブートされることを保証することができる。
【0049】
物理BIOSは、認可されたVMMがブートされたことを検証した後、次に、当該物理BIOSが、認可されていないコード又は悪意のあるコードによる破損を防止するために通常ならば実行する様々なセキュリティ対策の実行を延期又は省略することができる。例えば、物理BIOSは、BIOSフラッシュレジスタ及び/又はフラッシュメモリの一部分をロックしないことを選ぶことができる。
【0050】
図3及び
図5は、クラウド内のBIOS(例えば、BIOS機能306)が電子デバイス(300又は500)の内部に設けられている実施態様を示している。しかしながら、BIOSサービスへのアクセスを望む電子デバイスのゲスト仮想マシン又は他のエンティティの観点からすると、BIOSサービスを含むクラウドは、電子デバイスの外部のロケーションを含む任意の場所に位置することができることに留意されたい。
【0051】
図6は、そのような配置の一例を示している。
図6は、ゲスト仮想マシン602と、VMM604と、ハードウェアリソース606とを有する電子デバイス600を示している。電子デバイス600は、ウェブベースのネットワーク通信機能610を有する特権ドメイン608を更に備える。ウェブベースのネットワーク通信機能610は、BIOSアクセス要求を内部BIOS機能612(特権ドメイン608の一部分とすることができる)又は外部BIOS機能614(ネットワーク616を介してアクセス可能である)のいずれかにルーティングすることができるウェブベースのインターフェース611を提供する。要求エンティティ(例えば、VMM604又はゲスト仮想マシン602)は、BIOSアクセス要求を、ウェブベースのネットワーク通信機能610によって提供されたウェブベースのインターフェース611にサブミットすることができる。
【0052】
幾つかの実施態様では、ネットワーク616は、当該ネットワーク616を介してネットワーク要素間で通信される情報の認可されていないアクセスを防止するセキュアなメカニズムを用いて実施されたセキュアなネットワークである。
【0053】
外部BIOS機能614は、サーバーコンピューター620内の信頼できる環境618の一部分とすることができる。幾つかの実施態様では、信頼できる環境618は、サーバーコンピューター620内の特権ドメイン(例えば、ドメイン0、セキュアなゲスト仮想マシン、仮想マシンモニター等)に実装することもできる。サーバーコンピューター620は、1つ又は複数のプロセッサ622と、記憶媒体624と、ネットワーク616を介して電子デバイス600と通信するネットワークインターフェース626とを有する。
【0054】
図1、
図3、
図5、及び
図6に示すモジュール等の様々なモジュールは、1つ又は複数のプロセッサ上で実行することができるマシン可読命令として実施することができる。プロセッサは、マイクロプロセッサ、マイクロコントローラー、プロセッサモジュール若しくはサブシステム、プログラマブル集積回路、プログラマブルゲートアレイ、又は別の制御デバイス若しくはコンピューティングデバイスを含むことができる。
【0055】
マシン可読命令は、1つ又は複数のコンピューター可読記憶媒体又はマシン可読記憶媒体として実施することができるマシン可読記憶媒体又はコンピューター可読記憶媒体に記憶することができる。これらの記憶媒体は、種々の形態のメモリを含むことができる。この種々の形態のメモリには、ダイナミックランダムアクセスメモリ又はスタティックランダムアクセスメモリ(DRAM又はSRAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、及びフラッシュメモリ等の半導体メモリデバイス;固定ディスク、フロッピー(登録商標)ディスク、及び着脱可能ディスク等の磁気ディスク;テープを含む他の磁気媒体;コンパクトディスク(CD)若しくはデジタルビデオディスク(DVD)等の光媒体;又は他のタイプの記憶デバイスが含まれる。上記で論述した命令は、1つのコンピューター可読記憶媒体又はマシン可読記憶媒体上に設けることもできるし、代替的に、複数のノードを有する可能性がある大規模システム内に分散された複数のコンピューター可読記憶媒体又はマシン可読記憶媒体上に設けることもできることに留意されたい。そのような単数又は複数のコンピューター可読記憶媒体又はマシン可読記憶媒体は、物品(又は製造物品)の一部分とみなされる。物品又は製造物品は、任意の製造された単一の構成要素又は複数の構成要素を指すことができる。この単数又は複数の記憶媒体は、マシン可読命令を実行するマシンに位置することもできるし、マシン可読命令を実行のためにネットワークを介してそこからダウンロードすることができるリモートサイトに位置することもできる。
【0056】
上記説明において、本明細書に開示した主題の理解を提供するために、多数の詳細が述べられている。しかしながら、実施態様は、これらの詳細の一部又は全てがなくても実施され得る。他の実施態様は、上記で論述した詳細からの変更及び変形を含み得る。添付の特許請求の範囲はそのような変更及び変形を包含することが意図されている。