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