説明

状態検証を使用した保護されたオペレーティングシステムブートのためのシステムおよび方法

【課題】不正コンポーネントがオペレーティングシステムと共にロードされ、不適切な状況でシステムキーが漏洩するのを防止する。
【解決手段】マシン始動手順の一部分が行われた後、オペレーティングシステムローダが実行され、ローダが検証され、適切なマシン状態が存在するおよび/または作成されたことが確認される。ローダが、正当なローダであることが確認され、ローダが実行されるマシン状態が適切であることが確認されると、ローダの将来の挙動が、システムキーの漏洩を引き起こすおそれがある、不正コンポーネントのロードから保護されると分かる。ローダの挙動がシステムキーに関して安全であることが分かると、バリデータがシステムキーを開放し、それをローダに提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピューティングの分野に関する。より詳細には、本発明は、既知の安全な状態からシステムが進行するように保証するメカニズムを提供し、このメカニズムは、システムの適切な挙動を充分に保証することが可能なやり方でシステムをブートするために使用することができる。また、このように適切な挙動を保証することにより、不適切な状況で1つまたは複数のキーが配布されるのを防止することができる。
【背景技術】
【0002】
コンピュータのセキュリティは、しばしば、ソフトウェアコンポーネントの挙動が予測可能であることに依存している。一般に、システムのセキュリティは、その挙動が理解されている、良好な状態から進行する既知のプログラムが、予測できる形で動作するという前提から導かれる。逆に、セキュリティの妨害は、コンピュータシステムをその設計者の意図しないかたちで振る舞わせることを含むことがあるが、一般に、このような妨害は、既知のプログラムを置き換えるまたは変更することにより、またはその挙動が理解されていない状態においてプログラムを実行することにより実現することができる。したがって、コンピューティング環境に関するセキュリティを提供することの一態様は、現在使用されている既知のプログラムを確認し、それが既知の良好な状態から進行していることを確認することを含む。
【0003】
挙動の予測可能性が特に重要になる1つの領域として、オペレーティングシステムおよびそのコンポーネントをロードする場合がある。オペレーティングシステム自体がその挙動に関してあるレベルの信頼性を提供するように、オペレーティングシステムを設計することができるが、オペレーティングシステムがロードされるのに先立つ時間では、オペレーティングシステムを攻撃から守るインフラストラクチャがまだ確立されていない(または確立するプロセスの最中である)ことがあるので、システムが攻撃に対して特に脆弱である。したがって、オペレーティングシステムをある種の攻撃から保護するためには、オペレーティングシステムが予測可能なかたちでロードされるよう保証することが重要である。
【0004】
オペレーティングシステムの非セキュアなロードから生じ得る、あるタイプのセキュリティ違反は、特定の制限された機能を使用可能にするキーの保護に関係する。限定ではなく例として挙げると、Microsoft Windows(登録商標)オペレーティングシステムでは、システムキーすなわち「SYSKEY」が利用されており、プロセスの適切な実行をSYSKEYの使用可能性に依存させることにより様々なプロセスを保護するために用いられている。たとえば、暗号化された形態でオペレーティングシステムによって格納されている個人情報を解読するために必要なキーを、SYSKEYから派生可能にすることができる。
【発明の開示】
【発明が解決しようとする課題】
【0005】
従来、制限されている動作を実行するために必要なキーは、ログオン手順によって保護されている。通常は、システムの使用開始に先立って、ユーザは、(たとえば、ユーザ名/パスワードの組合せなど適切なログオン信用証明情報を提供することにより)自身の認証を適切に行わなければならない。キーの使用は、ユーザが適切に認証を行った場合のみ可能であり、システムは、ユーザが適切にログオンすることに失敗したと決定するのに先立って、ユーザに、制限された回数の試行(たとえば3回)のみを許可する。(このタイプのログオンの試行回数に対する制限では、たとえば盗まれたラップトップコンピュータについて、しらみつぶしに試行してパスワードを推測することにより、保護された機能が権限のないユーザに使用可能になることが防止される。)ただし、キーに対するアクセスを保護するためのログオン手順の使用は、オペレーティングシステムローダが、オペレーティングシステムを正当なログオンプログラムにより適切にロードすること、および、実行され得る不正なコードによって、違うやり方でキーが使用可能にされていることがないことを仮定している。不正なローダが代わりに使用され、不正なローダによりオペレーティングシステムと共に不正なログオンプログラムがロードされる場合、適切な信用証明情報の入力なしに、キーが使用可能になることや、キーが漏洩することさえある。オペレーティングシステムのロードにより、セキュリティ違反の機会が与えられることになるので、このような状況でキーを保護するためには、オペレーティングシステムのロードが適切に行われることを確認できる環境でそのロードを行う必要がある。
【0006】
オペレーティングシステムのロードプロセスのセキュリティの確認において生じる1つの問題は、正当なオペレーティングシステムのロードは、多数の異なるプログラムを伴う(たとえば、システムのブート手順の際に実行するpre−OSプログラムである、多数の異なる「オプションROM」が存在する)可能性があり、オペレーティングシステムのロードの一部として実行され得る数多くの異なる手順があることである。したがって、ロード中に正当な異なるマシン状態が数え切れないほどあり、このようなすべての状態を識別し、マシンが既知の良好な状態にあることを確認することは不可能な作業と判明することがある。ただし、ロード手順のすべての部分が、セキュリティとかかわり合いを持つわけではない。そのセキュリティ評価をまったく試みずにロードを進行させ、しかし次いで、キーの配布などセキュリティに関係する機能に影響を与えるおそれがある任意のプロシージャを開始するのに先立って、環境を既知の良好な状態に設定すると、より効率的になり得る。より一般的には、セキュリティとかかわり合いを持つ動作を行うのを許可するのに先立ち、システムを既知の良好な状態に設定することができる限り、どのタイプのセキュリティ評価も行わずに、ある時間その任意のシステムが実行されるのを可能にすることができる。
【0007】
上記に鑑みて、従来技術の欠点を克服するメカニズムが必要である。
【課題を解決するための手段】
【0008】
本発明により、ロードが適切に実行されることを確認することができる状況でオペレーティングシステムのロードが可能になる。マシンが起動する場合、ごく初期の始動手順(たとえば、BIOS、オプションROM、マスタブートレコード、ブートセクタなど)が実行される。このような初期の手順が実行された後、オペレーティングシステムローダが起動し、それにより様々な予備タスクを実行することができる。オペレーティングシステムローダが起動しこのような予備タスクを実行した後、オペレーティングシステムローダの妥当性検証が行われる。
【0009】
この妥当性検証は、ローダ自体またはその一部分に対する妥当性試験(たとえば、ローダの識別および正当性の評価を目的とするチェックサムまたは他の試験)、および、現在のマシン状態を評価すること(または、マシンが既知の良好な状態に準拠するようにすること)を含む。ローダ(または関連する部分)が正当であることが分かり、そのマシン状態が、ローダが適切に振る舞うことが事前に確認されたマシン状態である場合、ローダの挙動を予測することができる。したがって、これにより、適切なマシン状態のもとで動作する正当なローダが、保護された機能(たとえばシステムキーなどの暗号鍵)を使用可能にするデータを不適切な状況で配布するコンポーネントをロードしないことを保証することができる。
【0010】
妥当性検証は、高保証環境で実行されるバリデータ(validator)によって実施されることが好ましい。高保証環境とは、そこで行われるプロセスが期待通りに実行されることを、比較的高い水準で保証することが可能な環境である。したがって、バリデータが適切に動作することの保証は、高保証環境で実行されるプロセスにより(たとえば、そのバイナリの署名を確認することにより)バリデータが確認されること、および、高保証環境におけるプロセスは適切に実行されるという基本的な信頼から導かれる。(あるいは、少なくとも、高保証環境が、このような環境で動作するプロセスの正当な動作に干渉しないかまたは干渉を許可しないという、ある水準の保証があるが、この場合、高保証環境においてプロセスを実施するプログラムが、期待通りに適切に実行されることが信頼される、別個の根拠を有する必要がある。)高保証環境では、特定のオブジェクト(たとえば特定のプログラム)にデータを密封する記憶機能であるシールドストレージ(sealed storage)を提供することができ、(高保証環境によって確認されるように)密封されたデータがその密封されたオブジェクト以外のオブジェクトに開放されないように高保証環境によって制御される。バリデータは、シールドストレージを使用して、それ自体にキー(たとえばSYSKEY)を密封し、キーを開放することを適切なオブジェクトに対する場合を除き拒否することができ、この場合、その状況(たとえばマシン状態)は、ある基準を満たしている。
【0011】
本発明の他の特徴を以下に述べる。
【0012】
上述の要約および以下に述べる好ましい実施形態の説明は、添付の図面と併せて読めばさらに理解されよう。本発明を例示する目的で、添付の図面に本発明の構成例を示すが、本発明は、開示の特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【0013】
概観
オペレーティングシステムのもとで行われ得るいくつかのプロセスは、それらの適切な動作について1つまたは複数のキーに依存している。キーへのアクセスは、ログオンプログラムなどの認証プログラムにより制御することができ、ユーザがユーザ名/パスワードの組合せなど適切な信用証明情報を提供しない限り、認証プログラムは、1つ(または複数)のキーの使用を可能にすることを拒否する。したがって、適切な信用証明情報がない場合、ログオンプログラムがキーを使用可能にすることを拒否することにより、パスワードを知らないユーザに対して、いくつかのプロセス(たとえば暗号化ファイルの解読)を中断する(または完全に阻止する)ことができる。ログオンプログラムは、キーに対するアクセスを許可/禁止する(gate)のに有効であるが、オペレーティングシステムローダが欺かれて、ログオンプログラムが課している認証ルールの外部でキーを配布する異なるコンポーネントを、ロードする可能性がある。したがって、このようにキーが配布される場合、キーを保護するためには、オペレーティングシステムのロードプロセスを保護する必要がある。本発明により、ロードプロセスを保護するために使用することができるメカニズムが提供される。
【0014】
例示的コンピューティング構成
図1は、本発明の諸態様を実施することができる例示的コンピューティング環境を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の用途および機能の範囲にどのような限定も示唆する意図はない。また、コンピューティング環境100は、例示的動作環境100に示すコンポーネントのいずれか1つまたは組合せに関係する、どのような依存性または要件も有していると解釈されるべきではない。
【0015】
本発明は、他の多数の汎用または専用のコンピューティングシステム環境または構成で使用することができる。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および/または構成の例には、これだけに限定しないが、パーソナルコンピュータ、サーバコンピュータ、携帯用またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組込みシステム、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【0016】
本発明は、コンピュータにより実行されるプログラムモジュールなどコンピュータに実行可能な命令の一般的コンテキストにおいて説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行するまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介して連結されるリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルとリモートの両方のコンピュータ記憶媒体に、プログラムモジュールおよび他のデータを配置することができる。
【0017】
図1を参照すると、本発明を実装するための例示的システムが、コンピュータ110の形態で汎用コンピューティング装置を含んでいる。コンピュータ110のコンポーネントには、これだけに限定しないが、処理装置120、システムメモリ130、および、システムメモリを含め様々なシステムコンポーネントを処理装置120に結合するシステムバス121が含まれ得る。処理装置120は、たとえばマルチスレッド(multi−threaded)プロセッサ上でサポートされる、複数論理処理装置を表すこともできる。システムバス121は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(ビデオ電子規格協会)ローカルバス、および、メザニン(Mezzanine)バスとしても知られるPCI(周辺コンポーネント相互接続)バスが含まれる。システムバス121は、通信を行う装置間のポイントツーポイント接続または交換ファブリックなどとして実施することもできる。
【0018】
コンピュータ110は、通常多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。コンピュータ記憶媒体には、これだけに限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、あるいは、CDROM、DVD(デジタル多用途ディスク)、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号に情報を符号化するように1つまたは複数のその特性が設定または変更された信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
【0019】
システムメモリ130は、コンピュータ記憶媒体を、ROM(リードオンリメモリ)131およびRAM(ランダムアクセスメモリ)132などの揮発性および/または非揮発性のメモリの形態で含む。始動時などにコンピュータ110内の要素間で情報を転送するのを助ける基本的ルーチンを含むBIOS(基本入出力システム)133は、通常、ROM131に格納されている。RAM132は、通常、処理装置120により、即座にアクセス可能および/または現在処理中である、データおよび/またはプログラムモジュールを含む。図1は、限定ではなく例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
【0020】
コンピュータ110は、他のリムーバル/非リムーバル、および揮発性/非揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図1では、非リムーバルで非揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ141、リムーバルで非揮発性の磁気ディスク152から読み取りまたはそれに書込みを行う磁気ディスクドライブ151、および、CD−ROMまたは他の光媒体などリムーバルで非揮発性の光ディスク156から読み取りまたはそれに書き込む光ディスクドライブ155を示している。例示的動作環境において使用することができる他のリムーバル/非リムーバルで揮発性/非揮発性のコンピュータ記憶媒体には、これだけに限定しないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、半導体RAM、および半導体ROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの非リムーバルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などのリムーバルメモリインターフェースによってシステムバス121に接続される。
【0021】
前述の図1に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110のための他のデータの、ストレージを提供する。たとえば、図1では、ハードディスク141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、キーボード162、およびマウス、トラックボール、またはタッチパッドとして通常は言及されるポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続してもよい。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。このコンピュータはまた、モニタに加え、スピーカ197およびプリンタ196など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース195を介して接続することができる。
【0022】
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図1にはメモリ記憶装置181のみが示されているが、通常、コンピュータ110に関係する上述の要素の多くまたは全部を含む。図1に示す論理接続は、LAN(ローカルエリアネットワーク)171、およびWAN(広域ネットワーク)173を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【0023】
LANネットワーク環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は、通常、モデム172、または、インターネットなどのWAN173を介して接続を確立する他の手段を含む。モデム172は、内蔵でも外部のモデルでもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図1に、限定ではなく例として、メモリ装置181に常駐するリモートアプリケーションプログラム185が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で接続リンクを確立する他の手段を使用することもできることが認識されよう。
【0024】
キーにより保護される動作
コンピューティング環境は、そこで行われる特定のプロセスがその適切な動作について依存するキーを利用することができる。Microsoft Windows(登録商標)オペレーティングシステムで使用されるシステムキーすなわち「SYSKEY」は、このようなキーの一例であるが、限定的例ではない。好ましい実施形態では、プロセスが依存するキーは、一意で、暗号的にランダムなパープラットフォーム(per−platform)キーであり、つまり、2つのマシンを仮定すると、この2つのマシンはおそらく異なるキーを有する。したがって、少なくとも、あるプラットフォームのキーがその外部で利用不可能であることを保証する、有効なメカニズムが採用されている限り、このようなキーに依存するプロセスは、あるプラットフォームから別のプラットフォームに移植できることがめったにない。
【0025】
図2は、キーに依存するプロセスが実行されているシステムの例を示す。プロセス202は、適切に動作するためにキー204に依存している。プロセス202とは、プロセスの従来の概念、すなわちオペレーティングシステムにより管理されるか、またはアドレス空間に割り当てられる実行単位に限られず、より一般的に、コンピュータ上で実行することができる任意の動作または一連の動作のことを示すことに留意されたい。さらに、この例は、暗号鍵に依存するプロセスを示すが、本明細書に使用される用語「プロセス」は、暗号操作を行うプロセスに限定されないことに留意されたい。
【0026】
図2に示すように、キー204がプロセス202への入力として使用可能な場合、プロセス202は適切に動作する。一方、キー204がプロセス202への入力として使用可能でない場合、プロセス202は適切に動作しない。キー保護メカニズム206は、キー204へのアクセスを制御する。つまり、メカニズム206がプロセス202にキー204を提供するかまたは提供しないかは、該当するセキュリティ条件が満たされているかどうかに応じて変わる。たとえば、メカニズム206がキー204の使用を可能にするのに先立って、ユーザがログインして適切なパスワードを提供することが必要なことがある。
【0027】
プロセス202が正しく動作するのを防止するためのキー204の否認は、場合によっては望ましい結果となることに留意されたい。たとえば、暗号化/解読ファイルは、キー204に保護されるプロセス202の一例である。ファイルの適切な解読を、キー204へのアクセスに依存させることができる。ユーザが適切にログインして自身を認証することができなかった場合、ログインが不能であることが、コンピュータが所望のユーザ以外の人物によって操作されていること(たとえばラップトップが盗まれた場合)を示す可能性があるため、ファイルの解読を進行しないことが望ましいことがある。したがって、キー保護メカニズム206は、関連するセキュリティ条件が満たされていることによりキー204へのアクセスを提供することができ、このようなセキュリティ条件が満たされていない場合に中断する必要があるプロセスを、中断するために、キー204の否認を用いることができる。このようにプロセスを中断することができるメカニズム206の能力は、これらのプロセスが適切な動作のために必要とするキー204に依存する。というのは、この依存性により、プロセスを中断するためにキー204を否認する動作が可能になるからである。
【0028】
図3は、キー204に依存するプロセスの具体的(ただし非限定的)例を示す。図3の例において、この例示的プロセスは、ファイルを暗号化した形態で格納し、また暗号化したファイルを解読する、暗号化ファイルシステム(EFS)302である。このようなファイル暗号化の目的の1つは、ラップトップコンピュータが盗まれた場合、窃盗犯がラップトップコンピュータ上のデータを回復するのを防止することであることに留意されたい。ファイル304が生成されて格納される場合、このファイルはEFS302に提供される。次いで、EFS302は、ファイル304を暗号化し、ファイル304を暗号化ファイル306に変換し、それをハードディスク141に格納する。暗号化ファイル306を取り出すよう要求が行われた場合、EFS302は、暗号化ファイル306を取り出し、それを解読して解読ファイル308を生成する。(実際は、暗号化ファイル308の実体は、元のファイル304と同じであるが、図3では、わかりやすくするために、このファイルの2つのインスタンスを別々に示している。つまり、ファイル304が元のファイルであり、解読ファイル308は、EFS302によって暗号化され、格納され、取り出され、さらに解読された後のファイルであり元と同じファイルである。)
EFS302への1つの入力は、コンテンツキー(content key)310であることに留意されたい。コンテンツキー310は、暗号化方法に対し入力として機能する対称鍵であることが好ましい。コンテンツキー310は、暗号化ファイル306を作成するためファイル304を暗号化するために使用され、また、解読ファイル308を作成するために暗号化ファイル306を解読するためにも使用される。キー310を、ある種の取り出しが容易な場所に格納すると、データを保護するEFS302の能力が直ちに無効になるおそれがあることは認識されよう。つまり、コンテンツキーがハードディスク上で容易に利用可能である場合、またはコンテンツキーがラップトップのある種の既知の特徴(たとえばプロセッサシリアル番号)から容易に導き出すことができる場合、窃盗犯がキーを容易に発見し解読することができるため、ファイルが暗号化された形態で格納されているかどうかによって違いが生じないことになる。したがって、真の所有者の協力によってのみ可能なある種のやり方でキーを導き出すことによってキーを保護することが望ましい。キーを保護するための1つの方法では、キー204を入力として受け取りキー204の関数としてコンテンツキー310を導出する、キー生成モジュール312を使用する。したがって、キー204が適切なセキュアな状況のもとでのみ提供される限り、コンテンツキー310が同様に適切な状況のもとでのみ導出されることになる。言い換えれば、キー204の使用可能性に、コンテンツキー310の導出を依存させることにより、キー204に与えられているどのような保護も、コンテンツキー310へ拡張することができる。たとえば、キー204を提供するために、ユーザが適切なパスワードを提供してログインすることが必要な場合、ユーザが適切にログインしない限りコンテンツキー310が使用可能にはならないことを保証することができる。
【0029】
したがって、適切なセキュリティのコンテキスト(たとえば、正しいパスワードを提示しログインした正当なユーザ)が存在する場合のみ外部に与えられるキー204に、他のプロセスが依存していることがあるので、不適切な状況のもとでキー204が外部に出ないように保護することが重要である。後で述べるように、キー204を悪用をもたらし得る形でマシンに配布させることになる1つの場合として、オペレーティングシステムの不正コンポーネントが正当なコンポーネント(ここでは、正当なコンポーネントはキー204を保護することができると想定されている)を取り替える可能性がある、非セキュアの環境でマシンをブートすることがある。したがって、キー204が配布され得るのに先立ちマシンが既知の(安全な)環境でブートされることを保証するメカニズムを以下で述べる。
【0030】
状態検証を有するブートプロセス
図4は、ブート手順で使用される典型的な一連の事象を示す。
【0031】
最初に、マシンの電源が入れられる。通常のマシンは、電源がオンになった時に、ある種の固定アドレスにある命令の実行を開始するように構成されている。通常そのアドレスで収容されている命令は、「BIOS」402、または「基本入出力システム」として知られている。BIOS402の実行が完了すると、BIOS402は、「オプションROM」404と呼ばれる小規模なプログラムの実行を開始する。オプションROMは、たとえばマシンに対してハードウェアパスワードを設定することや、いくつかのオペレーティングシステムのうちどれをブートするかを選択することなど、非常に基本的な初期ブート機能を実行するプログラムである。オプションROM404の実行後、マシンはマスタブートレコード(MBR)406をロードするように命令される。
【0032】
MBR406は実行可能プログラムである。通常、MBR406は、コンピュータのハードディスクの最初のセクタにあり、ブートをさらに行うために使用するパーティションを、パーティションテーブル内で参照することから開始する。(たとえば、ディスクは、異なるオペレーティングシステムにより使用するためにパーティションに分けることができ、各オペレーティングシステムは、異なるブート手順を必要とすることがある。)適切なパーティションを参照した後、MBR406は、そのパーティションに関連するブートセクタ408に制御を転送する。次いで、ブートセクタは、オペレーティングシステムローダ410をロードするプロセスを開始し、このローダが最終的にオペレーティングシステムをロードする。このようなコンポーネントが例示のブートプロセスにどのように適合するかを単に示すために図4にMBR406を示しており、本発明は、MBR406を使用するブート手順に限定されないことに留意されたい。
【0033】
オペレーティングシステムローダ410が実行されている時間中に、ローダおよびマシン状態が検証される(450)。(この文脈で「マシン」は、物理的マシンまたは仮想マシンを表すことができる。)この妥当性検証は、高保証環境で動作する信頼できるソフトウェアコンポーネント(この実施形態については後でさらに詳細に説明する)によって行われ、したがって、ローダ410の妥当性検証が適切に行われるある程度の保証/信頼性が存在する。基本的には、オペレーティングシステムローダ410がマシンの制御を有する間の関連するマシン状態の側面を検証すること、および、ローダ410を検証することにより、オペレーティングシステムコンポーネント(たとえば、ハードウェア抽象化層(HAL)、カーネル、ドライバなど(416))の不当または不正なバージョンが、ログオンプログラム418が実行される時間までしばらくロードされないというある程度の保証を実現することが可能である。オペレーティングシステムがロードされた後に最初に行うことの1つは、キー204へのアクセスを許可/禁止するログオンプログラム418の実行であるため、ログオンプログラム418が実行される時間まで不正なコンポーネントがロードされるのを防止することは重要であり、不正コンポーネントがロードされた場合には、このコンポーネントにより、ログオンプログラム418が、不適切な状況でキー204が配布されることになり得るような誤った挙動をするおそれがあり、これによって、上述のようにキー204の保護に依存するすべてのコンポーネントのセキュリティが脅かされることになる。したがって、キー204の保護は、オペレーティングシステムローダ410が実行されてからログオンプログラムが完了する時間までマシン状態の厳格な制御を行うことにより達成することができる。
【0034】
妥当性検証450は、オペレーティングシステムローダ410が実行されている期間に行われる。妥当性検証は、ローダおよびマシン状態を検証することを含み、マシン状態を既知の良好な状態に設定することも含むことができる。このマシン状態の検証および設定の背後にある基本的な考え方は、ローダが実行される際のマシン状態を、ローダがいかなる不正なコンポーネントもロードすることがなく、つまりセキュリティ違反をもたらすようにローダが振る舞うようなことがない状態にすることである。妥当性検証450は、ローダのコードが、実際に、適切に振る舞うように事前に確認されているコードであることを保証し、さらに、この既知のコードが適切に振る舞う状態にマシンがあることを(マシンが既にその状態にあることを確認することにより、またはマシンをその状態に置くことにより)保証する。この技法では、マシンの既存の(安全な)状態を活用して、マシンの将来の状態も安全になることが保証できるが、オペレーティングシステムローダ410の挙動が、既知で理解されていることだけではなく厳格に制限されることによって、このようなマシン状態の活用による保証が可能になることが認識されよう。この所見に基づくと、数多くの異なるソースからの非常に様々なコード、および、このようなコードを実行した結果としてマシンが置かれ得る非常に幅広い状態により、これらの様々な異なるコードモジュールすべてを実行しながらマシンの挙動を決定することが不可能でない場合でも困難になるため、妥当性検証450は、あまりに早い時期(たとえば、オプションROM404またはMBR406が実行される時間)に行うべきではないことが認識されよう。したがって、ローダ410が実行されている時間において適切な状態にマシンを置くことができるかぎり、ローダ410の実行に先立ってマシンがどの状態にあるかを問題にしないことが好ましい。
【0035】
好ましい実施形態では、ローダ410の実行は、第1段(412)および第2段(414)の2つの段に分割される。好ましくは、第2段に進むのに先立ち、第2段を実装するコードを検証し(450)、次いで、妥当性検証450を行う信頼されるコードは、明確に定義された入口点で第2段へジャンプする。(妥当性検証を行う「信頼されるコード」は、高保証環境で実行される上述のプログラムである。)「信頼される」ことは、絶対的に誤らないことを含意するのではなく、そのコードが適切にジョブを行うことを想定する根拠があることを意味するにすぎないことは当業者には理解されよう。プログラムの挙動は、それが実行されている環境に影響される可能性があるため、信頼されるコードが高保証環境で実行されることは、信頼されるコードが適切に動作することを意味する。つまり、(1)信頼されるコードは、いくつかの期待に準拠する環境でその機能を適切に実行することを信頼することができ、(2)高保証環境が、このような期待に準拠する環境を適切に提供することを信頼することができる。次いで、第2段では、第1段から受け取った任意の情報を(ある定義された基準に従って)検証する。第1段と第2段の境界線は、セキュリティに関係するタスクが適切に行われないようにするおそれがある事象が発生し得るのに先立つ時点で、関連するプログラムおよび状態を検証することができる限り、どのようなセキュリティ検査も行わず、また、ある種のセキュリティに関連するタスクにいかなる影響(たとえばキー204の配布など)をもたらさずに実施することができるブート手順のいくつかの側面があり得ることを反映している。さらに、ブートプロセスにおいて時期尚早に状態の妥当性検証を試みることに関する問題があり得る。つまり、正当なブート手順が取ることができる実際の実行経路はかなり可変であるため、このような変化しやすい状況では妥当なマシン状態と妥当でないマシン状態の違いを定義することが難しくなる。マシンが経過する任意の状態が妥当であるかどうか決定することを試みずに、単にこれらの任意の可変状態を経過してロードが進行することを可能にすることは理にかなっているといえる。したがって、第1段は、どのような妥当性検証もなしに進行するロードの部分である。第1段の終わりにローダおよびマシン状態を検証し、第2段が開始する。このような境界線の前提は、どんなセキュリティの制約なしにある特定の時点までプロセスを実行することができることであり、その時点では、マシンについてすべての関連するファクタが検証され、マシンが既知の良好な状態に置かれ、基本的にその状態では、マシンをセキュリティの観点から受け入れられない状態に置くことがある事前のいかなる動作の効果も無効にされる。ロードプロセスの第1段と第2段の間に境界線が引かれるちょうどその時点は、状況に対しかなり特定的であり(たとえば、ローダコードはどのようであるか?、ロードの一部分としてどんなタスクが必要か?)、ある種のトレードオフを示す。つまり、一方では、境界線を将来の動作のために充分に遅い時点にすべきであり、正当な挙動が不正な挙動から区別することがうまくできるように、正当なロードの挙動における可変数を充分に小さくすべきである。(上述のように、早い時期の手順においては、多数のオプションROMおよび他の可変数により、可能な実行経路の数が多くなり、それによって、正当な挙動を不正な挙動と区別することが困難になる。)他方で、この境界線は、セキュリティにたとえばキーが不適切に配布されることなど影響を与え得る任意の事象(たとえばログオンプログラムのロード)に先行するために早い時期にすべきである。一般に、第1段と第2段の間の境界線では、ある期間、「ありのまま(raw)」(または「オープン」、「無効」)の状態で任意のシステムを実行し、次いで、挙動を確認するために必要な任意のコンポーネント(たとえば高保証環境)も開始し、次いで、これらのコンポーネントを使用して、マシンの現在の状態を検証する(あるいはマシンを既知の良好な状態にする)ことが可能であり、この時点では、後でセキュリティに影響(たとえばキーの配布)を与える可能性があることを行う、プロセスが進行することを可能にすることができる。
【0036】
妥当性検証450
妥当性検証450は、基本的に、オペレーティングシステムローダ410が既知の信頼できるプログラムであることを確認する(または、より詳細には、好ましい実施形態ではローダの第2段を確認する)動作であり、そのプログラムが実行されているマシンが既知の良好な状態であることを保証する。したがって、妥当性検証は、(1)ローダプログラム(またはローダプログラムの第2段)を検証して、それが信じられているように既知の信頼されるプログラムであることを保証すること、および、(2)関連するマシンの状態を、ローダが適切に振る舞うことが分かっている既知の良好な状態に変更することの2つの部分を有する。(1)および(2)を行う前提は、既知のマシン状態で動作する既知のプログラムが、既知のように振る舞うことである。
【0037】
妥当性検証の第1の部分すなわちローダの検査は、様々な方法で行うことができる。最も単純な例では、既知のプログラムのハッシュ(これは暗号的に署名してデジタル署名を作成しても、あるいは偽装ができない何らかの方法で格納してもよい)がある場合があり、それを実際の実行されているプログラムと比較することができる。プログラム全体にわたりハッシュを取ることの問題は、正当なプログラムの異なるインスタンスが若干異なるイメージを有することがあり、したがって、既知のプログラムと、そのプログラムの実行されているインスタンスの間で、完全な識別を必要とするように計算されたハッシュは、制限が強くなりすぎることがある。妥当性検証は、プログラムが想定されたとおりであることを保証するが、過度に制限されないように行われることが好ましく、たとえば、妥当性検証プロセスは、固定されていることが分かっているプログラムコンポーネントのハッシュを比較することができ、時間が経過するにつれて変化し得るプログラムコンポーネントに対して他の試験を実施することができることが好ましい。妥当性検証を行うコンポーネントは、検証されるプログラムの特性に適合させるべきであり、本発明は、プログラムを妥当性検証するどの特定の技法にも限定されない。
【0038】
妥当性検証の第2の部分すなわちマシン状態の確認/設定は、好ましくは、状態のすべての関連する「ソース」を既知の値に設定することによって行われる。通常、オペレーティングプログラムに影響をおよぼすことができる関連状態は、3つのソース、すなわちCPU、チップセット、およびメモリによってもたらされる。したがって、これらの項目は、妥当性検証時に既知の良好な状態にすることができる。たとえばCPUは、既知の状態たとえばring 0にされプログラムカウンタが既知の位置を指し、すべてのデータレジスタは、ゼロにセットされ、ローダプログラムが格納されているメモリ以外のすべてのメモリは、ゼロにセットされる。この状態のマシンでローダが実行されている際にローダが適切に振る舞うことが確認された場合、ローダを検証すること、および、マシンの既知の良好な状態への配置することの組合せにより、ログオンプログラム418が実行される時間までの適切な挙動が保証される。上述のように、ログオンプログラム418が実行されるまでの適切な挙動による利益の1つは(利益はこれだけではないが)、不適切な状況でキー204の配布を引き起こす不正コンポーネントがロードされないことである。
【0039】
妥当性検証プロセスにより、不正コンポーネントからオペレーティングシステムのロードを保護するためには、妥当性検証プロセス自体が適切に実行されることを充分に保証する必要があることに留意されたい。妥当性検証プロセスの正当性は、高保証コンピューティング環境の環境上または環境内で実行される、信頼されるエージェントとして、バリデータを実装することにより保証することができる。たとえば、制限された1組の機能を実施する小規模のオペレーティングシステムがあっても、その仕様によってこのオペレーティングシステムは高水準の保証が実現される。このようなオペレーティングシステムは、単一マシン上の他のオペレーティングシステムと一緒に稼動することができ、ハイパーバイザ(hypervisor)または仮想マシンモニタなどの監視コンポーネントによって、このような高保証のオペレーティングシステムを、システム上の他の(より安全ではない)環境から隔離させることができる。(一実施形態では、相互に隔離されたある状態でハイパーバイザにより維持され、オペレーティングシステムが稼動することができる環境である、パーティションが、ハイパーバイザにより実現される。)さらに、高保証コンポーネントは、パープラットフォーム暗号キーを適用しそれを強力に保護するハードウェアモジュールなど信頼ルート(root of trust)に対する排他的アクセスを有することができる。バリデータは、このような高保証環境で実行されるプログラム(または「エージェント」)とすることができ、高保証環境は、それ自体が攻撃に抵抗することが信頼される限り、高保証環境外部からの不適切な挙動を引き起こす攻撃に、バリデータがさらされないという保証を提供する。さらに、上述のように、高保証環境は、シールドストレージ(すなわち、あるデータを格納し、また、データが密封される特定のオブジェクトのみに、そのデータを開放する能力)を提供することができ、バリデータは、このシールドストレージを使用して、配布されるキーを格納することができる。バリデータは、高保証環境と一体になった部分とすることができるが、高保証環境で実行される別個のコンポーネントとすることもできることに留意されたい。
【0040】
図5は、上述の手順に従う妥当性検証を行うバリデータ550の例を示す。バリデータ550は、ローダ410があるセットの既知の基準に対して正当および/または準拠となっているかどうか評価する能力を有する。したがって、バリデータ550は、マシン状態502を評価および/または影響を与える能力を有する。これらの能力の組合せを使用して、ローダ410が実行を期待されるローダであること、および、ローダ410が適切に振る舞うことが分かっているマシン状態に、ローダが実行されるマシンが置かれていることを保証することにより、ローダ410が適切に振る舞うことを保証することができる。
【0041】
構造的には、バリデータ550は、2つのコンポーネント、すなわち汎用部分504およびローダ専用部分506を含むことができる。「汎用部分」504は、多くの様々なバリデータ(またはすべてのバリデータ)に共通のコードを含む。ローダ専用部分506は、特定のローダ410の妥当性検査に特定的に関係するコードであり、つまり、ローダ410の正当なインスタンス(またはローダ410の第2段)がどのように見えるかを理解し、ローダ410がこの理解に従っていることを保証するために検査を実施するコードである。したがって、ローダ専用部分506は、汎用部分504と組み合わせて、完全なバリデータを形成する。
【0042】
バリデータ550は、キー204がローダに提供されるかどうかを最終的に決定するコンポーネントである(次いで、このローダが、前述のようにログオンプログラムによって許可される方法に従ってオペレーティングシステムで使用するために、後でそのキーをオペレーティングシステムに提供する)。バリデータ550は、シールドストレージ機能508でバリデータ550にキー204を密封することにより、キー204を保護することができる。シールドストレージ機能508は、高保証コンピューティング環境の機能とすることができる。シールドストレージ機能508は、高保証環境で実行されているコンポーネントが、それ自体に任意のデータを密封するのを許可することができ、それにより他のコンポーネントがこのデータを取り出すことができなくなる。たとえば、バリデータ550のローダ専用部分506は、それ自体にキー204を密封することができる。シールドストレージ機能508は、ローダ専用部分506以外のどのコンポーネントがキー204を取り出すのも防止する。したがって、キー204を取得することができるのはローダ専用部分506のみのため、キー204が保護され、ローダ専用部分506は、キー204の不正な配布を引き起こすことがないと信頼するローダだけに、キー204を配布する。他の実施形態では、バリデータ、および第2段のローダ410を含むコンポーネントの組合せに基づいてキーが密封される。このような実施形態では、バリデータ506のローダ専用部分を除去することができる。というのは、既知の正当な第2段のローダについてのバイナリが、密封する測定基準の部分であるので、シールドストレージメカニズム自体が、キーが開放され得るのに先立ち、正当な第2段のローダの存在を基本的に保証するためである。
【0043】
SYSKEYを保護するプロセスの例
図6は、前述の本発明の態様によるキーを保護するプロセスの例を示す。マシンが始動した後のある時点で、オペレーティングシステムローダが実行される(602)。オペレーティングシステムローダの実行中、ローダおよびマシン状態が検証され(604)、それによりローダが、上述の理由により予測可能な挙動をすることが保証される。ローダおよびマシン状態が検証された後、ローダは、不正コンポーネントがロードされるのを防止しながらオペレーティングシステムをロードするために使用される(606)。(上述のように、ローダおよびマシン状態の妥当性が検証されることは、ローダの将来の挙動が不正コンポーネントのロードを引き起こさないことが分かることを意味する。)オペレーティングシステムがロードされた後、ログオンプログラムが実行され、キーへのアクセスを許可/禁止する。
【0044】
他の実施形態の例
本発明のメカニズムは、オペレーティングシステムのロードを実行するのに使用することができるだけでなく、一般に、いくつかの特定の機能を実行するために妥当性検証を必要としながらも、一方でありのままの(検証されていない)状態としてある機能を、システムが実行することを可能にするために使用することができることに留意されたい。たとえば、あるコンピュータは、何らかの妥当性検証なしにいくつかの機能を実行することができる(たとえばコンピュータがラジオとして動作することができる)が、このコンピュータがより機密性のある機能(たとえばハードディスクからファイルを読み取る)を実行することができるのに先立ち妥当性検証を行わなければならないことがある。一般に、1つのマシンを器具(appliance)および汎用PCの両方として見ることができ、妥当性検証/ログオンは、器具の役割では必要とされないが、汎用PCの役割では必要とされる。
【0045】
さらに、バリデータは、特定のキーのセットをログオンプログラムに対して開放/非開放のいずれかを行うことに限定されず、より一般的に、特定のソフトウェアスタックに対して特有のキーのセットを開放するように構成することができる。たとえば、あるソフトウェアスタックが第1のキーを得ることができる場合、バリデータは、「より重みのある検証がされた」ソフトウェアスタックのみに第2のキーを開放することができる。
【0046】
さらに、キーは、必ずしもログオン手順によって開放される必要がなく、任意の妥当性検証手順によって提供することができる。たとえば、DVDプレーヤのバイナリは、バリデータがこのプレーヤを正当なバイナリであると決定した後に、ログオンを必要とせずにたとえばDVD機能キーを取得することができる。
【0047】
さらに、いくつかのプログラムは、妥当性検証なしに、ある形態で動作することができるが、特定の機能を提示することが許可されるのに先立ち、ある種の妥当性検証を必要とする。たとえば、電話アプリケーションは、ログオンを必要とせず開始することができるが、アプリケーションの暗号機能が働くのを許可するキーが配布できるのに先立って、ログオンを必要とすることがある。
【0048】
以上の例は、単に説明のために提示したものであり、本発明を限定すると解釈すべきではない。本発明を様々な実施形態を参照して説明したが、本発明に使用された言葉は、限定ではなく説明および例示のための言葉であることを理解されたい。さらに、特定の手段、材料、および実施形態を参照して本発明を説明したが、本発明に開示の細目に本発明が限定されることは意図されず、むしろ本発明は、添付の特許請求の範囲の範囲にあるような、すべての機能的に均等な構造、方法、および用途にまで拡張される。本明細書の教示の利益を得る当業者は、その態様において、本発明の範囲および趣旨から逸脱することなく、本発明に多数の修正および変更を加えることができる。
【図面の簡単な説明】
【0049】
【図1】本発明の態様を実装することができるコンピューティング環境の例を示すブロック図である。
【図2】適切な動作がシステムキーに依存しているプロセスを用いるシステムのブロック図である。
【図3】システムキーに解読を依存させることにより、暗号化されたデータを権限のない解読から保護する暗号化ファイルシステムのブロック図である。
【図4】本発明の態様による妥当性検証を用いたブートプロセスの例を示す流れ図である。
【図5】本発明の態様によるバリデータの例を示すブロック図である。
【図6】本発明の態様による、システムキーを保護するプロセスの例を示す流れ図である。
【符号の説明】
【0050】
100 コンピューティング環境
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 非リムーバル非揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 リムーバル非揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 LAN
172 モデム
173 WAN
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺装置インターフェース
196 プリンタ
197 スピーカ

【特許請求の範囲】
【請求項1】
オペレーティングシステムローダを開始すること、
前記ローダの識別または正当性を検証すること、
前記オペレーティングシステムローダが実行されるマシンは、既知の状態にあることを保証すること、および、
前記ローダの前記識別または正当性が検証され、前記オペレーティングシステムが実行される前記マシンが既知の状態である場合、
前記ローダにキーを提供すること、および、
前記ローダがオペレーティングシステムをロードするのを許可すること
を含む方法を実施するためにコンピュータ実行可能命令で符号化されたことを特徴とするコンピュータ可読媒体。
【請求項2】
前記方法は、前記キーへのアクセスを許可/禁止する、ログオンプログラムを実行することをさらに含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項3】
前記ログオンプログラムは、前記キーへのアクセスを前記ログオンプログラムが許可する条件として、ユーザが信用証明情報を提供することを保証することを特徴とする請求項2に記載のコンピュータ可読媒体。
【請求項4】
前記キーは、暗号化されたオペレーティングシステムパーティションを解読するために使用可能であることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項5】
前記ローダの前記識別または正当性を検証する前記動作、および、マシンが既知の状態にあることを保証する前記動作は、
基本入出力システム、
オプションROM、
マスタブートレコード、および
ブートセクタ
がすべて実行された後に、実施されることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項6】
前記ローダの前記識別または正当性を検証する前記動作、および、マシンが既知の状態にあることを保証する前記動作は、前記オペレーティングシステムローダの一部分が実行された後に実施されることを特徴とする請求項5に記載のコンピュータ可読媒体。
【請求項7】
前記検証する動作は、オペレーティングシステムのすべてまたは実質的にすべてが開始した後、あるいはパーティションのうちいくつかが開始した後に実施され、他のパーティションからある程度隔離された環境を備える各前記パーティションは、ハイパーバイザによって維持されることを特徴とする請求項6に記載のコンピュータ可読媒体。
【請求項8】
前記キーが、前記検証動作および前記保証動作を実施するバリデータに密封され、前記方法は、前記バリデータが前記キーを開放することをさらに含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項9】
前記キーが、少なくとも前記バリデータに密封され、前記バリデータは、少なくとも前記ローダの一部分を検証することを特徴とする請求項8に記載のコンピュータ可読媒体。
【請求項10】
前記キーが、前記バリデータ、および、前記ローダの少なくとも一部分に、密封されることを特徴とする請求項8に記載のコンピュータ可読媒体。
【請求項11】
前記マシンは物理マシンを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項12】
前記マシンは仮想マシンを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項13】
前記仮想マシンのアーキテクチャが変更されたかまたは妥当である場合のみ、前記キーが明らかにされることを特徴とする請求項12に記載のコンピュータ可読媒体。
【請求項14】
マシンが既知の状態であることを保証する前記動作は、
前記マシンの現在の状態を評価すること、および、前記現在の状態を前記既知の状態と比較することを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項15】
マシンが既知の状態にあることを保証する前記動作は、
前記マシンの現在の状態を、前記既知の状態と一致するように設定することを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項16】
前記ローダは、オペレーティングシステム全体、またはオペレーティングシステムのインスタンスの全体であることを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項17】
オペレーティングシステムのブートを、前記ブートの信頼性に関する保証が提供される状況で実施するためのシステムであって、
前記オペレーティングシステムをロードするオペレーティングシステムローダの正当性または識別を評価し、前記オペレーティングシステムローダが動作するマシン状態をさらに評価し、前記オペレーティングシステムローダが前記オペレーティングシステムをロードするのを進行することを、前記オペレーティングシステムローダの正当性または識別が確認されたかどうかに応じて許可または不許可とし、前記オペレーティングシステムローダが進行することを許可するのに先立って前記マシンを既知の状態にする、バリデータを含むことを特徴とするシステム。
【請求項18】
キーが前記バリデータに密封され、前記バリデータは、前記オペレーティングシステムローダが進行を許可された場合、前記キーを開放し、オペレーティングシステムローダに前記キーを提供することを特徴とする請求項17に記載のシステム。
【請求項19】
前記オペレーティングシステムローダが動作を開始した後、ただし前記オペレーティングシステムローダがカーネルまたはデバイスドライバを初期化するのに先立ち、前記バリデータは、前記オペレーティングシステムローダの正当性または識別、および前記マシン状態を評価することを特徴とする請求項17に記載のシステム。
【請求項20】
前記バリデータは、
バリデータのクラスに共通である汎用部分と、
前記オペレーティングシステムローダに特定的な専用部分と
を含み、前記バリデータが、異なるオペレーティングシステムローダを検証するために使用される場合、前記専用部分を、異なる部分で置き換えることができることを特徴とする請求項17に記載のシステム。
【請求項21】
前記マシンは物理マシンを含むことを特徴とする請求項17に記載のシステム。
【請求項22】
前記マシンは仮想マシンを含むことを特徴とする請求項17に記載のシステム。
【請求項23】
オペレーティングシステムをブートする方法であって、
基本入出力システム、オプションROM、マスタブートレコード、およびブートセクタを実行すること、
オペレーティングシステムローダを開始すること、
前記オペレーティングシステムローダを検証すること、
前記オペレーティングシステムローダが実行するマシンの状態を検証すること、および、
前記オペレーティングシステムローダおよび前記マシンの前記状態が妥当であると決定された場合、前記オペレーティングシステムローダがオペレーティングシステムをロードするのを許可することを含むことを特徴とする方法。
【請求項24】
前記オペレーティングシステム下で少なくとも1つの機能を適切に実行するために必要なキーが、オペレーティングシステムローダの検証、およびマシン状態の検証の前記動作を実施する、バリデータに密封され、
前記オペレーティングシステムローダおよび前記マシン状態が妥当とされた場合、前記キーを開放し、前記オペレーティングシステムローダに前記キーを提供することをさらに含むことを特徴とする請求項23に記載の方法。
【請求項25】
前記オペレーティングシステムがロードされた後、前記キーへのアクセスを許可/禁止するログオンプログラムを実行することをさらに含むことを特徴とする請求項23に記載の方法。
【請求項26】
前記ログオンプログラムは、ユーザが認証手順を正常に完了したかどうかに応じて、前記オペレーティングシステムのコンポーネントが前記キーを使用することを許可または不許可とすることを特徴とする請求項23に記載の方法。
【請求項27】
前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作は、前記オペレーティングシステムローダが少なくとも1つの動作を実行した後、実施されることを特徴とする請求項23に記載の方法。
【請求項28】
前記マシン状態がリセットされることにより、前記ローダが、前記オペレーティングシステムをロードするために適切に機能することが防止されるのに先立つ時点で、前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作が実施されることを特徴とする請求項27に記載の方法。
【請求項29】
前記マシンが物理マシンを含むことを特徴とする請求項23に記載の方法。
【請求項30】
前記マシンが仮想マシンを含むことを特徴とする請求項23に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2006−18825(P2006−18825A)
【公開日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願番号】特願2005−179527(P2005−179527)
【出願日】平成17年6月20日(2005.6.20)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】