(57)【要約】【課題】不正コンポーネントがオペレーティングシステムと共にロードされるのを防止し、したがって、不適切な状況でシステムキーが漏洩するのを防止する、保護されたオペレーティングシステムブートのためのメカニズムを提供すること。【解決手段】マシン始動手順の一部分が行われた後、オペレーティングシステムローダが実行され、ローダがバリデータにより検証され、適切なマシン状態が存在するおよび／または作成されたことが確認される。ローダが、正当なローダであることが確認され、ローダが実行されるマシン状態が適切であることが確認されると、ローダが実行される。【選択図】図５
2011187089.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムのブートを、前記ブートの信頼性に関する保証が提供される状況で実施するためのシステムであって、
前記オペレーティングシステムをロードするオペレーティングシステムローダの正当性または識別を評価し、前記オペレーティングシステムローダが動作するマシン状態をさらに評価し、前記オペレーティングシステムローダが前記オペレーティングシステムをロードするのを進行することを、前記オペレーティングシステムローダの正当性または識別が確認されたかどうかに応じて許可または不許可とし、前記オペレーティングシステムローダが進行することを許可するのに先立って前記マシンを既知の状態にする、バリデータを含むことを特徴とするシステム。
【請求項２】
キーが前記バリデータに密封され、前記バリデータは、前記オペレーティングシステムローダが進行を許可された場合、前記キーを開放し、オペレーティングシステムローダに前記キーを提供することを特徴とする請求項１に記載のシステム。
【請求項３】
前記オペレーティングシステムローダが動作を開始した後、ただし前記オペレーティングシステムローダがカーネルまたはデバイスドライバを初期化するのに先立ち、前記バリデータは、前記オペレーティングシステムローダの正当性または識別、および前記マシン状態を評価することを特徴とする請求項１に記載のシステム。
【請求項４】
前記バリデータは、
バリデータのクラスに共通である汎用部分と、
前記オペレーティングシステムローダに特定的な専用部分と
を含み、前記バリデータが、異なるオペレーティングシステムローダを検証するために使用される場合、前記専用部分を、異なる部分で置き換えることができることを特徴とする請求項１に記載のシステム。
【請求項５】
前記マシンは物理マシンを含むことを特徴とする請求項１に記載のシステム。
【請求項６】
前記マシンは仮想マシンを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
オペレーティングシステムをブートする方法であって、
基本入出力システム、オプションＲＯＭ、マスタブートレコード、およびブートセクタを実行すること、
オペレーティングシステムローダを開始すること、
前記オペレーティングシステムローダを検証すること、
前記オペレーティングシステムローダが実行するマシンの状態を検証すること、および、
前記オペレーティングシステムローダおよび前記マシンの前記状態が妥当であると決定された場合、前記オペレーティングシステムローダがオペレーティングシステムをロードするのを許可することを含むことを特徴とする方法。
【請求項８】
前記オペレーティングシステム下で少なくとも１つの機能を適切に実行するために必要なキーが、オペレーティングシステムローダの検証、およびマシン状態の検証の前記動作を実施する、バリデータに密封され、
前記オペレーティングシステムローダおよび前記マシン状態が妥当とされた場合、前記キーを開放し、前記オペレーティングシステムローダに前記キーを提供することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記オペレーティングシステムがロードされた後、前記キーへのアクセスを許可／禁止するログオンプログラムを実行することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記ログオンプログラムは、ユーザが認証手順を正常に完了したかどうかに応じて、前記オペレーティングシステムのコンポーネントが前記キーを使用することを許可または不許可とすることを特徴とする請求項７に記載の方法。
【請求項１１】
前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作は、前記オペレーティングシステムローダが少なくとも１つの動作を実行した後、実施されることを特徴とする請求項７に記載の方法。
【請求項１２】
前記マシン状態がリセットされることにより、前記ローダが、前記オペレーティングシステムをロードするために適切に機能することが防止されるのに先立つ時点で、前記オペレーティングシステムローダの検証、および前記マシン状態の検証の前記動作が実施されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記マシンが物理マシンを含むことを特徴とする請求項７に記載の方法。
【請求項１４】
前記マシンが仮想マシンを含むことを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピューティングの分野に関する。より詳細には、本発明は、既知の安全な状態からシステムが進行するように保証するメカニズムを提供し、このメカニズムは、システムの適切な挙動を充分に保証することが可能なやり方でシステムをブートするために使用することができる。また、このように適切な挙動を保証することにより、不適切な状況で１つまたは複数のキーが配布されるのを防止することができる。
【背景技術】
【０００２】
コンピュータのセキュリティは、しばしば、ソフトウェアコンポーネントの挙動が予測可能であることに依存している。一般に、システムのセキュリティは、その挙動が理解されている、良好な状態から進行する既知のプログラムが、予測できる形で動作するという前提から導かれる。逆に、セキュリティの妨害は、コンピュータシステムをその設計者の意図しないかたちで振る舞わせることを含むことがあるが、一般に、このような妨害は、既知のプログラムを置き換えるまたは変更することにより、またはその挙動が理解されていない状態においてプログラムを実行することにより実現することができる。したがって、コンピューティング環境に関するセキュリティを提供することの一態様は、現在使用されている既知のプログラムを確認し、それが既知の良好な状態から進行していることを確認することを含む。
【０００３】
挙動の予測可能性が特に重要になる１つの領域として、オペレーティングシステムおよびそのコンポーネントをロードする場合がある。オペレーティングシステム自体がその挙動に関してあるレベルの信頼性を提供するように、オペレーティングシステムを設計することができるが、オペレーティングシステムがロードされるのに先立つ時間では、オペレーティングシステムを攻撃から守るインフラストラクチャがまだ確立されていない（または確立するプロセスの最中である）ことがあるので、システムが攻撃に対して特に脆弱である。したがって、オペレーティングシステムをある種の攻撃から保護するためには、オペレーティングシステムが予測可能なかたちでロードされるよう保証することが重要である。
【０００４】
オペレーティングシステムの非セキュアなロードから生じ得る、あるタイプのセキュリティ違反は、特定の制限された機能を使用可能にするキーの保護に関係する。限定ではなく例として挙げると、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムでは、システムキーすなわち「ＳＹＳＫＥＹ」が利用されており、プロセスの適切な実行をＳＹＳＫＥＹの使用可能性に依存させることにより様々なプロセスを保護するために用いられている。たとえば、暗号化された形態でオペレーティングシステムによって格納されている個人情報を解読するために必要なキーを、ＳＹＳＫＥＹから派生可能
にすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、制限されている動作を実行するために必要なキーは、ログオン手順によって保護されている。通常は、システムの使用開始に先立って、ユーザは、（たとえば、ユーザ名／パスワードの組合せなど適切なログオン信用証明情報を提供することにより）自身の認証を適切に行わなければならない。キーの使用は、ユーザが適切に認証を行った場合のみ可能であり、システムは、ユーザが適切にログオンすることに失敗したと決定するのに先立って、ユーザに、制限された回数の試行（たとえば３回）のみを許可する。（このタイプのログオンの試行回数に対する制限では、たとえば盗まれたラップトップコンピュータについて、しらみつぶしに試行してパスワードを推測することにより、保護された機能が権限のないユーザに使用可能になることが防止される。）ただし、キーに対するアクセスを保護するためのログオン手順の使用は、オペレーティングシステムローダが、オペレーティングシステムを正当なログオンプログラムにより適切にロードすること、および、実行され得る不正なコードによって、違うやり方でキーが使用可能にされていることがないことを仮定している。不正なローダが代わりに使用され、不正なローダによりオペレーティングシステムと共に不正なログオンプログラムがロードされる場合、適切な信用証明情報の入力なしに、キーが使用可能になることや、キーが漏洩することさえある。オペレーティングシステムのロードにより、セキュリティ違反の機会が与えられることになるので、このような状況でキーを保護するためには、オペレーティングシステムのロードが適切に行われることを確認できる環境でそのロードを行う必要がある。
【０００６】
オペレーティングシステムのロードプロセスのセキュリティの確認において生じる１つの問題は、正当なオペレーティングシステムのロードは、多数の異なるプログラムを伴う（たとえば、システムのブート手順の際に実行するｐｒｅ−ＯＳプログラムである、多数の異なる「オプションＲＯＭ」が存在する）可能性があり、オペレーティングシステムのロードの一部として実行され得る数多くの異なる手順があることである。したがって、ロード中に正当な異なるマシン状態が数え切れないほどあり、このようなすべての状態を識別し、マシンが既知の良好な状態にあることを確認することは不可能な作業と判明することがある。ただし、ロード手順のすべての部分が、セキュリティとかかわり合いを持つわけではない。そのセキュリティ評価をまったく試みずにロードを進行させ、しかし次いで、キーの配布などセキュリティに関係する機能に影響を与えるおそれがある任意のプロシージャを開始するのに先立って、環境を既知の良好な状態に設定すると、より効率的になり得る。より一般的には、セキュリティとかかわり合いを持つ動作を行うのを許可するのに先立ち、システムを既知の良好な状態に設定することができる限り、どのタイプのセキュリティ評価も行わずに、ある時間その任意のシステムが実行されるのを可能にすることができる。
【０００７】
上記に鑑みて、従来技術の欠点を克服するメカニズムが必要である。
【課題を解決するための手段】
【０００８】
本発明により、ロードが適切に実行されることを確認することができる状況でオペレーティングシステムのロードが可能になる。マシンが起動する場合、ごく初期の始動手順（たとえば、ＢＩＯＳ、オプションＲＯＭ、マスタブートレコード、ブートセクタなど）が実行される。このような初期の手順が実行された後、オペレーティングシステムローダが起動し、それにより様々な予備タスクを実行することができる。オペレーティングシステムローダが起動しこのような予備タスクを実行した後、オペレーティングシステムローダの妥当性検証が行われる。
【０００９】
この妥当性検証は、ローダ自体またはその一部分に対する妥当性試験（たとえば、ローダの識別および正当性の評価を目的とするチェックサムまたは他の試験）、および、現在のマシン状態を評価すること（または、マシンが既知の良好な状態に準拠するようにすること）を含む。ローダ（または関連する部分）が正当であることが分かり、そのマシン状態が、ローダが適切に振る舞うことが事前に確認されたマシン状態である場合、ローダの挙動を予測することができる。したがって、これにより、適切なマシン状態のもとで動作する正当なローダが、保護された機能（たとえばシステムキーなどの暗号鍵）を使用可能
にするデータを不適切な状況で配布するコンポーネントをロードしないことを保証することができる。
【００１０】
妥当性検証は、高保証環境で実行されるバリデータ（ｖａｌｉｄａｔｏｒ）によって実施されることが好ましい。高保証環境とは、そこで行われるプロセスが期待通りに実行されることを、比較的高い水準で保証することが可能な環境である。したがって、バリデータが適切に動作することの保証は、高保証環境で実行されるプロセスにより（たとえば、そのバイナリの署名を確認することにより）バリデータが確認されること、および、高保証環境におけるプロセスは適切に実行されるという基本的な信頼から導かれる。（あるいは、少なくとも、高保証環境が、このような環境で動作するプロセスの正当な動作に干渉
しないかまたは干渉を許可しないという、ある水準の保証があるが、この場合、高保証環境においてプロセスを実施するプログラムが、期待通りに適切に実行されることが信頼される、別個の根拠を有する必要がある。）高保証環境では、特定のオブジェクト（たとえば特定のプログラム）にデータを密封する記憶機能であるシールドストレージ（ｓｅａｌｅｄ  ｓｔｏｒａｇｅ）を提供することができ、（高保証環境によって確認されるように）密封されたデータがその密封されたオブジェクト以外のオブジェクトに開放されないように高保証環境によって制御される。バリデータは、シールドストレージを使用して、それ自体にキー（たとえばＳＹＳＫＥＹ）を密封し、キーを開放することを適切なオブジェクトに対する場合を除き拒否することができ、この場合、その状況（たとえばマシン状態）は、ある基準を満たしている。
【００１１】
本発明の他の特徴を以下に述べる。
【００１２】
上述の要約および以下に述べる好ましい実施形態の説明は、添付の図面と併せて読めばさらに理解されよう。本発明を例示する目的で、添付の図面に本発明の構成例を示すが、本発明は、開示の特定の方法および手段に限定されない。
【図面の簡単な説明】
【００１３】
【図１】本発明の態様を実装することができるコンピューティング環境の例を示すブロック図である。
【図２】適切な動作がシステムキーに依存しているプロセスを用いるシステムのブロック図である。
【図３】システムキーに解読を依存させることにより、暗号化されたデータを権限のない解読から保護する暗号化ファイルシステムのブロック図である。
【図４】本発明の態様による妥当性検証を用いたブートプロセスの例を示す流れ図である。
【図５】本発明の態様によるバリデータの例を示すブロック図である。
【図６】本発明の態様による、システムキーを保護するプロセスの例を示す流れ図である。
【発明を実施するための形態】
【００１４】
概観
オペレーティングシステムのもとで行われ得るいくつかのプロセスは、それらの適切な動作について１つまたは複数のキーに依存している。キーへのアクセスは、ログオンプログラムなどの認証プログラムにより制御することができ、ユーザがユーザ名／パスワードの組合せなど適切な信用証明情報を提供しない限り、認証プログラムは、１つ（または複数）のキーの使用を可能にすることを拒否する。したがって、適切な信用証明情報がない場合、ログオンプログラムがキーを使用可能にすることを拒否することにより、パスワードを知らないユーザに対して、いくつかのプロセス（たとえば暗号化ファイルの解読）を中断する（または完全に阻止する）ことができる。ログオンプログラムは、キーに対するアクセスを許可／禁止する（ｇａｔｅ）のに有効であるが、オペレーティングシステムローダが欺かれて、ログオンプログラムが課している認証ルールの外部でキーを配布する異なるコンポーネントを、ロードする可能性がある。したがって、このようにキーが配布される場合、キーを保護するためには、オペレーティングシステムのロードプロセスを保護する必要がある。本発明により、ロードプロセスを保護するために使用することができるメカニズムが提供される。
【００１５】
例示的コンピューティング構成
図１は、本発明の諸態様を実施することができる例示的コンピューティング環境を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の用途および機能の範囲にどのような限定も示唆する意図はない。また、コンピューティング環境１００は、例示的動作環境１００に示すコンポーネントのいずれか１つまたは組合せに関係する、どのような依存性または要件も有していると解釈されるべきではない。
【００１６】
本発明は、他の多数の汎用または専用のコンピューティングシステム環境または構成で使用することができる。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および／または構成の例には、これだけに限定しないが、パーソナルコンピュータ、サーバコンピュータ、携帯用またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、組込みシステム、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【００１７】
本発明は、コンピュータにより実行されるプログラムモジュールなどコンピュータに実行可能な命令の一般的コンテキストにおいて説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行するまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介して連結されるリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルとリモートの両方のコンピュータ記憶媒体に、プログラムモジュールおよび他のデータを配置することができる。
【００１８】
図１を参照すると、本発明を実装するための例示的システムが、コンピュータ１１０の形態で汎用コンピューティング装置を含んでいる。コンピュータ１１０のコンポーネントには、これだけに限定しないが、処理装置１２０、システムメモリ１３０、および、システムメモリを含め様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１が含まれ得る。処理装置１２０は、たとえばマルチスレッド（ｍｕｌｔｉ−ｔｈｒｅａｄｅｄ）プロセッサ上でサポートされる、複数論理処理装置を表すこともできる。システムバス１２１は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（ビデオ電子規格協会）ローカルバス、および、メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（周辺コンポーネント相互接続）バスが含まれる。システムバス１２１は、通信を行う装置間のポイントツーポイント接続または交換ファブリックなどとして実施することもできる。
【００１９】
コンピュータ１１０は、通常多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と非揮発性の両方の媒体、および、リムーバルと非リムーバルの両方の媒体が含まれる。コンピュータ記憶媒体には、これだけに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、あるいは、ＣＤＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号に情報を符号化するように１つまたは複数のその特性が設定または変更された信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
【００２０】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（リードオンリメモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２などの揮発性および／または非揮発性のメモリの形態で含む。始動時などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本的ルーチンを含むＢＩＯＳ（基本入出力システム）１３３は、通常、ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理装置１２０により、即座にアクセス可能および／または現在処理中である、データおよび／またはプログラムモジュールを含む。図１は、限定ではなく例として、オペレーティングシステム１３４、アプリケー
ションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２１】
コンピュータ１１０は、他のリムーバル／非リムーバル、および揮発性／非揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図１では、非リムーバルで非揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４１、リムーバルで非揮発性の磁気ディスク１５２から読み取りまたはそれに書込みを行う磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体などリムーバルで非揮発性の光ディスク１５６から読み取りまたはそれに書き込む光ディスクドライブ１５５を示している。例示的動作環境において使用することができる他のリムーバル／非リムーバルで揮発性／非揮発性のコンピュータ記憶媒体には、これだけに限定しないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、および半導体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの非リムーバルメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、
インターフェース１５０などのリムーバルメモリインターフェースによってシステムバス１２１に接続される。
【００２２】
前述の図１に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０のための他のデータの、ストレージを提供する。たとえば、図１では、ハードディスク１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示されている。これら
のコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、キーボード１６２、およびマウス、トラックボール、またはタッチパッドとして通常は言及されるポインティングデバイス１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースおよびバス構造によって接続してもよい。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。このコンピュータはまた、モニタに加え、スピーカ１９７およびプリンタ１９６など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース１９５を介して接続することができる。
【００２３】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図１にはメモリ記憶装置１８１のみが示されているが、通常、コンピュータ１１０に関係する上述の要素の多くまたは全部を含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１、およびＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【００２４】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して接続を確立する他の手段を含む。モデム１７２は、内蔵でも外部のモデルでもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図１に、限定ではなく例として、メモリ装置１８１に常駐するリモートアプリケーションプログラム１８５が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で接続リンクを確立する他の手段を使用することもできることが認識されよう。
【００２５】
キーにより保護される動作
コンピューティング環境は、そこで行われる特定のプロセスがその適切な動作について依存するキーを利用することができる。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムで使用されるシステムキーすなわち「ＳＹＳＫＥＹ」は、このようなキーの一例であるが、限定的例ではない。好ましい実施形態では、プロセスが依存するキーは、一意で、暗号的にランダムなパープラットフォーム（ｐｅｒ−ｐｌａｔｆｏｒｍ）キーであり、つまり、２つのマシンを仮定すると、この２つのマシンはおそらく異なるキーを有する。したがって、少なくとも、あるプラットフォームのキーがその外部
で利用不可能であることを保証する、有効なメカニズムが採用されている限り、このようなキーに依存するプロセスは、あるプラットフォームから別のプラットフォームに移植できることがめったにない。
【００２６】
図２は、キーに依存するプロセスが実行されているシステムの例を示す。プロセス２０２は、適切に動作するためにキー２０４に依存している。プロセス２０２とは、プロセスの従来の概念、すなわちオペレーティングシステムにより管理されるか、またはアドレス空間に割り当てられる実行単位に限られず、より一般的に、コンピュータ上で実行することができる任意の動作または一連の動作のことを示すことに留意されたい。さらに、この例は、暗号鍵に依存するプロセスを示すが、本明細書に使用される用語「プロセス」は、暗号操作を行うプロセスに限定されないことに留意されたい。
【００２７】
図２に示すように、キー２０４がプロセス２０２への入力として使用可能な場合、プロセス２０２は適切に動作する。一方、キー２０４がプロセス２０２への入力として使用可能でない場合、プロセス２０２は適切に動作しない。キー保護メカニズム２０６は、キー２０４へのアクセスを制御する。つまり、メカニズム２０６がプロセス２０２にキー２０４を提供するかまたは提供しないかは、該当するセキュリティ条件が満たされているかどうかに応じて変わる。たとえば、メカニズム２０６がキー２０４の使用を可能にするのに先立って、ユーザがログインして適切なパスワードを提供することが必要なことがある。
【００２８】
プロセス２０２が正しく動作するのを防止するためのキー２０４の否認は、場合によっては望ましい結果となることに留意されたい。たとえば、暗号化／解読ファイルは、キー２０４に保護されるプロセス２０２の一例である。ファイルの適切な解読を、キー２０４へのアクセスに依存させることができる。ユーザが適切にログインして自身を認証することができなかった場合、ログインが不能であることが、コンピュータが所望のユーザ以外の人物によって操作されていること（たとえばラップトップが盗まれた場合）を示す可能性があるため、ファイルの解読を進行しないことが望ましいことがある。したがって、キー保護メカニズム２０６は、関連するセキュリティ条件が満たされていることによりキー２０４へのアクセスを提供することができ、このようなセキュリティ条件が満たされていない場合に中断する必要があるプロセスを、中断するために、キー２０４の否認を用いることができる。このようにプロセスを中断することができるメカニズム２０６の能力は、これらのプロセスが適切な動作のために必要とするキー２０４に依存する。というのは、この依存性により、プロセスを中断するためにキー２０４を否認する動作が可能になるか
らである。
【００２９】
図３は、キー２０４に依存するプロセスの具体的（ただし非限定的）例を示す。図３の例において、この例示的プロセスは、ファイルを暗号化した形態で格納し、また暗号化したファイルを解読する、暗号化ファイルシステム（ＥＦＳ）３０２である。このようなファイル暗号化の目的の１つは、ラップトップコンピュータが盗まれた場合、窃盗犯がラップトップコンピュータ上のデータを回復するのを防止することであることに留意されたい。ファイル３０４が生成されて格納される場合、このファイルはＥＦＳ３０２に提供される。次いで、ＥＦＳ３０２は、ファイル３０４を暗号化し、ファイル３０４を暗号化ファイル３０６に変換し、それをハードディスク１４１に格納する。暗号化ファイル３０６を取り出すよう要求が行われた場合、ＥＦＳ３０２は、暗号化ファイル３０６を取り出し、それを解読して解読ファイル３０８を生成する。（実際は、暗号化ファイル３０８の実体は、元のファイル３０４と同じであるが、図３では、わかりやすくするために、このファイルの２つのインスタンスを別々に示している。つまり、ファイル３０４が元のファイルであり、解読ファイル３０８は、ＥＦＳ３０２によって暗号化され、格納され、取り出され、さらに解読された後のファイルであり元と同じファイルである。）
ＥＦＳ３０２への１つの入力は、コンテンツキー（ｃｏｎｔｅｎｔ  ｋｅｙ）３１０であることに留意されたい。コンテンツキー３１０は、暗号化方法に対し入力として機能する対称鍵であることが好ましい。コンテンツキー３１０は、暗号化ファイル３０６を作成するためファイル３０４を暗号化するために使用され、また、解読ファイル３０８を作成するために暗号化ファイル３０６を解読するためにも使用される。キー３１０を、ある種の取り出しが容易な場所に格納すると、データを保護するＥＦＳ３０２の能力が直ちに無効になるおそれがあることは認識されよう。つまり、コンテンツキーがハードディスク上で容易に利用可能である場合、またはコンテンツキーがラップトップのある種の既知の特徴（たとえばプロセッサシリアル番号）から容易に導き出すことができる場合、窃盗犯がキーを容易に発見し解読することができるため、ファイルが暗号化された形態で格納されているかどうかによって違いが生じないことになる。したがって、真の所有者の協力によってのみ可能なある種のやり方でキーを導き出すことによってキーを保護することが望ましい。キーを保護するための１つの方法では、キー２０４を入力として受け取りキー２０
４の関数としてコンテンツキー３１０を導出する、キー生成モジュール３１２を使用する。したがって、キー２０４が適切なセキュアな状況のもとでのみ提供される限り、コンテンツキー３１０が同様に適切な状況のもとでのみ導出されることになる。言い換えれば、キー２０４の使用可能性に、コンテンツキー３１０の導出を依存させることにより、キー２０４に与えられているどのような保護も、コンテンツキー３１０へ拡張することができる。たとえば、キー２０４を提供するために、ユーザが適切なパスワードを提供してログインすることが必要な場合、ユーザが適切にログインしない限りコンテンツキー３１０が使用可能にはならないことを保証することができる。
【００３０】
したがって、適切なセキュリティのコンテキスト（たとえば、正しいパスワードを提示しログインした正当なユーザ）が存在する場合のみ外部に与えられるキー２０４に、他のプロセスが依存していることがあるので、不適切な状況のもとでキー２０４が外部に出ないように保護することが重要である。後で述べるように、キー２０４を悪用をもたらし得る形でマシンに配布させることになる１つの場合として、オペレーティングシステムの不正コンポーネントが正当なコンポーネント（ここでは、正当なコンポーネントはキー２０４を保護することができると想定されている）を取り替える可能性がある、非セキュアの環境でマシンをブートすることがある。したがって、キー２０４が配布され得るのに先立ちマシンが既知の（安全な）環境でブートされることを保証するメカニズムを以下で述べる。
【００３１】
状態検証を有するブートプロセス
図４は、ブート手順で使用される典型的な一連の事象を示す。
【００３２】
最初に、マシンの電源が入れられる。通常のマシンは、電源がオンになった時に、ある種の固定アドレスにある命令の実行を開始するように構成されている。通常そのアドレスで収容されている命令は、「ＢＩＯＳ」４０２、または「基本入出力システム」として知られている。ＢＩＯＳ４０２の実行が完了すると、ＢＩＯＳ４０２は、「オプションＲＯＭ」４０４と呼ばれる小規模なプログラムの実行を開始する。オプションＲＯＭは、たとえばマシンに対してハードウェアパスワードを設定することや、いくつかのオペレーティングシステムのうちどれをブートするかを選択することなど、非常に基本的な初期ブート機能を実行するプログラムである。オプションＲＯＭ４０４の実行後、マシンはマスタブートレコード（ＭＢＲ）４０６をロードするように命令される。
【００３３】
ＭＢＲ４０６は実行可能プログラムである。通常、ＭＢＲ４０６は、コンピュータのハードディスクの最初のセクタにあり、ブートをさらに行うために使用するパーティションを、パーティションテーブル内で参照することから開始する。（たとえば、ディスクは、異なるオペレーティングシステムにより使用するためにパーティションに分けることができ、各オペレーティングシステムは、異なるブート手順を必要とすることがある。）適切なパーティションを参照した後、ＭＢＲ４０６は、そのパーティションに関連するブート
セクタ４０８に制御を転送する。次いで、ブートセクタは、オペレーティングシステムローダ４１０をロードするプロセスを開始し、このローダが最終的にオペレーティングシステムをロードする。このようなコンポーネントが例示のブートプロセスにどのように適合するかを単に示すために図４にＭＢＲ４０６を示しており、本発明は、ＭＢＲ４０６を使用するブート手順に限定されないことに留意されたい。
【００３４】
オペレーティングシステムローダ４１０が実行されている時間中に、ローダおよびマシン状態が検証される（４５０）。（この文脈で「マシン」は、物理的マシンまたは仮想マシンを表すことができる。）この妥当性検証は、高保証環境で動作する信頼できるソフトウェアコンポーネント（この実施形態については後でさらに詳細に説明する）によって行われ、したがって、ローダ４１０の妥当性検証が適切に行われるある程度の保証／信頼性が存在する。基本的には、オペレーティングシステムローダ４１０がマシンの制御を有する間の関連するマシン状態の側面を検証すること、および、ローダ４１０を検証することにより、オペレーティングシステムコンポーネント（たとえば、ハードウェア抽象化層（ＨＡＬ）、カーネル、ドライバなど（４１６））の不当または不正なバージョンが、ログオンプログラム４１８が実行される時間までしばらくロードされないというある程度の保証を実現することが可能である。オペレーティングシステムがロードされた後に最初に行うことの１つは、キー２０４へのアクセスを許可／禁止するログオンプログラム４１８の実行であるため、ログオンプログラム４１８が実行される時間まで不正なコンポーネントがロードされるのを防止することは重要であり、不正コンポーネントがロードされた場合には、このコンポーネントにより、ログオンプログラム４１８が、不適切な状況でキー２０４が配布されることになり得るような誤った挙動をするおそれがあり、これによって、上述のようにキー２０４の保護に依存するすべてのコンポーネントのセキュリティが脅かされることになる。したがって、キー２０４の保護は、オペレーティングシステムローダ４１０が実行されてからログオンプログラムが完了する時間までマシン状態の厳格な制御を行うことにより達成することができる。
【００３５】
妥当性検証４５０は、オペレーティングシステムローダ４１０が実行されている期間に行われる。妥当性検証は、ローダおよびマシン状態を検証することを含み、マシン状態を既知の良好な状態に設定することも含むことができる。このマシン状態の検証および設定の背後にある基本的な考え方は、ローダが実行される際のマシン状態を、ローダがいかなる不正なコンポーネントもロードすることがなく、つまりセキュリティ違反をもたらすようにローダが振る舞うようなことがない状態にすることである。妥当性検証４５０は、ローダのコードが、実際に、適切に振る舞うように事前に確認されているコードであることを保証し、さらに、この既知のコードが適切に振る舞う状態にマシンがあることを（マシンが既にその状態にあることを確認することにより、またはマシンをその状態に置くことにより）保証する。この技法では、マシンの既存の（安全な）状態を活用して、マシンの将来の状態も安全になることが保証できるが、オペレーティングシステムローダ４１０の挙動が、既知で理解されていることだけではなく厳格に制限されることによって、このようなマシン状態の活用による保証が可能になることが認識されよう。この所見に基づくと、数多くの異なるソースからの非常に様々なコード、および、このようなコードを実行した結果としてマシンが置かれ得る非常に幅広い状態により、これらの様々な異なるコードモジュールすべてを実行しながらマシンの挙動を決定することが不可能でない場合でも困難になるため、妥当性検証４５０は、あまりに早い時期（たとえば、オプションＲＯＭ４０４またはＭＢＲ４０６が実行される時間）に行うべきではないことが認識されよう。したがって、ローダ４１０が実行されている時間において適切な状態にマシンを置くことができるかぎり、ローダ４１０の実行に先立ってマシンがどの状態にあるかを問題にしない
ことが好ましい。
【００３６】
好ましい実施形態では、ローダ４１０の実行は、第１段（４１２）および第２段（４１４）の２つの段に分割される。好ましくは、第２段に進むのに先立ち、第２段を実装するコードを検証し（４５０）、次いで、妥当性検証４５０を行う信頼されるコードは、明確に定義された入口点で第２段へジャンプする。（妥当性検証を行う「信頼されるコード」は、高保証環境で実行される上述のプログラムである。）「信頼される」ことは、絶対的に誤らないことを含意するのではなく、そのコードが適切にジョブを行うことを想定する根拠があることを意味するにすぎないことは当業者には理解されよう。プログラムの挙動は、それが実行されている環境に影響される可能性があるため、信頼されるコードが高保証環境で実行されることは、信頼されるコードが適切に動作することを意味する。つまり、（１）信頼されるコードは、いくつかの期待に準拠する環境でその機能を適切に実行することを信頼することができ、（２）高保証環境が、このような期待に準拠する環境を適切に提供することを信頼することができる。次いで、第２段では、第１段から受け取った任意の情報を（ある定義された基準に従って）検証する。第１段と第２段の境界線は、セキュリティに関係するタスクが適切に行われないようにするおそれがある事象が発生し得るのに先立つ時点で、関連するプログラムおよび状態を検証することができる限り、どのようなセキュリティ検査も行わず、また、ある種のセキュリティに関連するタスクにいかなる影響（たとえばキー２０４の配布など）をもたらさずに実施することができるブート手順のいくつかの側面があり得ることを反映している。さらに、ブートプロセスにおいて時期尚早に状態の妥当性検証を試みることに関する問題があり得る。つまり、正当なブート手順が取ることができる実際の実行経路はかなり可変であるため、このような変化しやすい状況では妥当なマシン状態と妥当でないマシン状態の違いを定義することが難しくなる。マシンが経過する任意の状態が妥当であるかどうか決定することを試みずに、単にこれらの任意の可変状態を経過してロードが進行することを可能にすることは理にかなっているといえる。したがって、第１段は、どのような妥当性検証もなしに進行するロードの部分である。第１段の終わりにローダおよびマシン状態を検証し、第２段が開始する。このような境界線の前提は、どんなセキュリティの制約なしにある特定の時点までプロセスを実行することができることであり、その時点では、マシンについてすべての関連するファクタが検証され、マシンが既知の良好な状態に置かれ、基本的にその状態では、マシンをセキュリティの観点から受け入れられない状態に置くことがある事前のいかなる動作の効果も無効にされる。ロードプロセスの第１段と第２段の間に境界線が引かれるちょうどその時点は、状況に対しかなり特定的であり（たとえば、ローダコードはどのようであるか？、ロードの一部分としてどんなタスクが必要か？）、ある種のトレードオフを示す。つまり、一方では、境界線を将来の動作のために充分に遅い時点にすべきであり、正当な
挙動が不正な挙動から区別することがうまくできるように、正当なロードの挙動における可変数を充分に小さくすべきである。（上述のように、早い時期の手順においては、多数のオプションＲＯＭおよび他の可変数により、可能な実行経路の数が多くなり、それによって、正当な挙動を不正な挙動と区別することが困難になる。）他方で、この境界線は、セキュリティにたとえばキーが不適切に配布されることなど影響を与え得る任意の事象（たとえばログオンプログラムのロード）に先行するために早い時期にすべきである。一般に、第１段と第２段の間の境界線では、ある期間、「ありのまま（ｒａｗ）」（または「オープン」、「無効」）の状態で任意のシステムを実行し、次いで、挙動を確認するために必要な任意のコンポーネント（たとえば高保証環境）も開始し、次いで、これらのコンポーネントを使用して、マシンの現在の状態を検証する（あるいはマシンを既知の良好な状態にする）ことが可能であり、この時点では、後でセキュリティに影響（たとえばキーの配布）を与える可能性があることを行う、プロセスが進行することを可能にすることができる。
【００３７】
妥当性検証４５０
妥当性検証４５０は、基本的に、オペレーティングシステムローダ４１０が既知の信頼できるプログラムであることを確認する（または、より詳細には、好ましい実施形態ではローダの第２段を確認する）動作であり、そのプログラムが実行されているマシンが既知の良好な状態であることを保証する。したがって、妥当性検証は、（１）ローダプログラム（またはローダプログラムの第２段）を検証して、それが信じられているように既知の信頼されるプログラムであることを保証すること、および、（２）関連するマシンの状態を、ローダが適切に振る舞うことが分かっている既知の良好な状態に変更することの２つの部分を有する。（１）および（２）を行う前提は、既知のマシン状態で動作する既知のプログラムが、既知のように振る舞うことである。
【００３８】
妥当性検証の第１の部分すなわちローダの検査は、様々な方法で行うことができる。最も単純な例では、既知のプログラムのハッシュ（これは暗号的に署名してデジタル署名を作成しても、あるいは偽装ができない何らかの方法で格納してもよい）がある場合があり、それを実際の実行されているプログラムと比較することができる。プログラム全体にわたりハッシュを取ることの問題は、正当なプログラムの異なるインスタンスが若干異なるイメージを有することがあり、したがって、既知のプログラムと、そのプログラムの実行されているインスタンスの間で、完全な識別を必要とするように計算されたハッシュは、制限が強くなりすぎることがある。妥当性検証は、プログラムが想定されたとおりであることを保証するが、過度に制限されないように行われることが好ましく、たとえば、妥当性検証プロセスは、固定されていることが分かっているプログラムコンポーネントのハッシュを比較することができ、時間が経過するにつれて変化し得るプログラムコンポーネントに対して他の試験を実施することができることが好ましい。妥当性検証を行うコンポーネントは、検証されるプログラムの特性に適合させるべきであり、本発明は、プログラムを妥当性検証するどの特定の技法にも限定されない。
【００３９】
妥当性検証の第２の部分すなわちマシン状態の確認／設定は、好ましくは、状態のすべての関連する「ソース」を既知の値に設定することによって行われる。通常、オペレーティングプログラムに影響をおよぼすことができる関連状態は、３つのソース、すなわちＣＰＵ、チップセット、およびメモリによってもたらされる。したがって、これらの項目は、妥当性検証時に既知の良好な状態にすることができる。たとえばＣＰＵは、既知の状態たとえばｒｉｎｇ  ０にされプログラムカウンタが既知の位置を指し、すべてのデータレジスタは、ゼロにセットされ、ローダプログラムが格納されているメモリ以外のすべてのメモリは、ゼロにセットされる。この状態のマシンでローダが実行されている際にローダが適切に振る舞うことが確認された場合、ローダを検証すること、および、マシンの既知の良好な状態への配置することの組合せにより、ログオンプログラム４１８が実行される時間までの適切な挙動が保証される。上述のように、ログオンプログラム４１８が実行されるまでの適切な挙動による利益の１つは（利益はこれだけではないが）、不適切な状況でキー２０４の配布を引き起こす不正コンポーネントがロードされないことである。
【００４０】
妥当性検証プロセスにより、不正コンポーネントからオペレーティングシステムのロードを保護するためには、妥当性検証プロセス自体が適切に実行されることを充分に保証する必要があることに留意されたい。妥当性検証プロセスの正当性は、高保証コンピューティング環境の環境上または環境内で実行される、信頼されるエージェントとして、バリデータを実装することにより保証することができる。たとえば、制限された１組の機能を実施する小規模のオペレーティングシステムがあっても、その仕様によってこのオペレーティングシステムは高水準の保証が実現される。このようなオペレーティングシステムは、単一マシン上の他のオペレーティングシステムと一緒に稼動することができ、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）または仮想マシンモニタなどの監視コンポーネントによって、このような高保証のオペレーティングシステムを、システム上の他の（より安全ではない）環境から隔離させることができる。（一実施形態では、相互に隔離されたある状態でハイパーバイザにより維持され、オペレーティングシステムが稼動することができる環境である、パーティションが、ハイパーバイザにより実現される。）さらに、高保証コンポーネントは、パープラットフォーム暗号キーを適用しそれを強力に保護するハードウェアモジュールなど信頼ルート（ｒｏｏｔ  ｏｆ  ｔｒｕｓｔ）に対する排他的アクセスを有することができる。バリデータは、このような高保証環境で実行されるプログラム（または「エージェント」）とすることができ、高保証環境は、それ自体が攻撃に抵抗することが信頼される限り、高保証環境外部からの不適切な挙動を引き起こす攻撃に、バリデータがさらされないという保証を提供する。さらに、上述のように、高保証環境は、シールドストレージ（すなわち、あるデータを格納し、また、データが密封される特定のオブジェクトのみに、そのデータを開放する能力）を提供することができ、バリデータは、このシールドストレージを使用して、配布されるキーを格納することができる。バリデータは、高保証環境と一体になった部分とすることができるが、高保証環境で実行される別個のコンポーネントとすることもできることに留意されたい。
【００４１】
図５は、上述の手順に従う妥当性検証を行うバリデータ５５０の例を示す。バリデータ５５０は、ローダ４１０があるセットの既知の基準に対して正当および／または準拠となっているかどうか評価する能力を有する。したがって、バリデータ５５０は、マシン状態５０２を評価および／または影響を与える能力を有する。これらの能力の組合せを使用し
て、ローダ４１０が実行を期待されるローダであること、および、ローダ４０が適切に振る舞うことが分かっているマシン状態に、ローダが実行されるマシンが置かれていることを保証することにより、ローダ４１０が適切に振る舞うことを保証することができる。
【００４２】
構造的には、バリデータ５５０は、２つのコンポーネント、すなわち汎用部分５０４およびローダ専用部分５０６を含むことができる。「汎用部分」５０４は、多くの様々なバリデータ（またはすべてのバリデータ）に共通のコードを含む。ローダ専用部分５０６は、特定のローダ４１０の妥当性検査に特定的に関係するコードであり、つまり、ローダ４１０の正当なインスタンス（またはローダ４１０の第２段）がどのように見えるかを理解し、ローダ４１０がこの理解に従っていることを保証するために検査を実施するコードである。したがって、ローダ専用部分５０６は、汎用部分５０４と組み合わせて、完全なバリデータを形成する。
【００４３】
バリデータ５５０は、キー２０４がローダに提供されるかどうかを最終的に決定するコンポーネントである（次いで、このローダが、前述のようにログオンプログラムによって許可される方法に従ってオペレーティングシステムで使用するために、後でそのキーをオペレーティングシステムに提供する）。バリデータ５５０は、シールドストレージ機能５０８でバリデータ５５０にキー２０４を密封することにより、キー２０４を保護することができる。シールドストレージ機能５０８は、高保証コンピューティング環境の機能とすることができる。シールドストレージ機能５０８は、高保証環境で実行されているコンポーネントが、それ自体に任意のデータを密封するのを許可することができ、それにより他のコンポーネントがこのデータを取り出すことができなくなる。たとえば、バリデータ５５０のローダ専用部分５０６は、それ自体にキー２０４を密封することができる。シールドストレージ機能５０８は、ローダ専用部分５０６以外のどのコンポーネントがキー２０４を取り出すのも防止する。したがって、キー２０４を取得することができるのはローダ専用部分５０６のみのため、キー２０４が保護され、ローダ専用部分５０６は、キー２０４の不正な配布を引き起こすことがないと信頼するローダだけに、キー２０４を配布する。他の実施形態では、バリデータ、および第２段のローダ４１０を含むコンポーネントの組合せに基づいてキーが密封される。このような実施形態では、バリデータ５０６のローダ専用部分を除去することができる。というのは、既知の正当な第２段のローダについてのバイナリが、密封する測定基準の部分であるので、シールドストレージメカニズム自体が、キーが開放され得るのに先立ち、正当な第２段のローダの存在を基本的に保証するためである。
【００４４】
ＳＹＳＫＥＹを保護するプロセスの例
図６は、前述の本発明の態様によるキーを保護するプロセスの例を示す。マシンが始動した後のある時点で、オペレーティングシステムローダが実行される（６０２）。オペレーティングシステムローダの実行中、ローダおよびマシン状態が検証され（６０４）、それによりローダが、上述の理由により予測可能な挙動をすることが保証される。ローダおよびマシン状態が検証された後、ローダは、不正コンポーネントがロードされるのを防止しながらオペレーティングシステムをロードするために使用される（６０６）。（上述のように、ローダおよびマシン状態の妥当性が検証されることは、ローダの将来の挙動が不正コンポーネントのロードを引き起こさないことが分かることを意味する。）オペレーティングシステムがロードされた後、ログオンプログラムが実行され、キーへのアクセスを許可／禁止する。
【００４５】
他の実施形態の例
本発明のメカニズムは、オペレーティングシステムのロードを実行するのに使用することができるだけでなく、一般に、いくつかの特定の機能を実行するために妥当性検証を必要としながらも、一方でありのままの（検証されていない）状態としてある機能を、システムが実行することを可能にするために使用することができることに留意されたい。たとえば、あるコンピュータは、何らかの妥当性検証なしにいくつかの機能を実行することができる（たとえばコンピュータがラジオとして動作することができる）が、このコンピュータがより機密性のある機能（たとえばハードディスクからファイルを読み取る）を実行することができるのに先立ち妥当性検証を行わなければならないことがある。一般に、１つのマシンを器具（ａｐｐｌｉａｎｃｅ）および汎用ＰＣの両方として見ることができ、妥当性検証／ログオンは、器具の役割では必要とされないが、汎用ＰＣの役割では必要とされる。
【００４６】
さらに、バリデータは、特定のキーのセットをログオンプログラムに対して開放／非開放のいずれかを行うことに限定されず、より一般的に、特定のソフトウェアスタックに対して特有のキーのセットを開放するように構成することができる。たとえば、あるソフトウェアスタックが第１のキーを得ることができる場合、バリデータは、「より重みのある検証がされた」ソフトウェアスタックのみに第２のキーを開放することができる。
【００４７】
さらに、キーは、必ずしもログオン手順によって開放される必要がなく、任意の妥当性検証手順によって提供することができる。たとえば、ＤＶＤプレーヤのバイナリは、バリデータがこのプレーヤを正当なバイナリであると決定した後に、ログオンを必要とせずにたとえばＤＶＤ機能キーを取得することができる。
【００４８】
さらに、いくつかのプログラムは、妥当性検証なしに、ある形態で動作することができるが、特定の機能を提示することが許可されるのに先立ち、ある種の妥当性検証を必要とする。たとえば、電話アプリケーションは、ログオンを必要とせず開始することができるが、アプリケーションの暗号機能が働くのを許可するキーが配布できるのに先立って、ログオンを必要とすることがある。
【００４９】
以上の例は、単に説明のために提示したものであり、本発明を限定すると解釈すべきではない。本発明を様々な実施形態を参照して説明したが、本発明に使用された言葉は、限定ではなく説明および例示のための言葉であることを理解されたい。さらに、特定の手段、材料、および実施形態を参照して本発明を説明したが、本発明に開示の細目に本発明が限定されることは意図されず、むしろ本発明は、添付の特許請求の範囲の範囲にあるような、すべての機能的に均等な構造、方法、および用途にまで拡張される。本明細書の教示
の利益を得る当業者は、その態様において、本発明の範囲および趣旨から逸脱することなく、本発明に多数の修正および変更を加えることができる。
【符号の説明】
【００５０】
１００  コンピューティング環境
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  非リムーバル非揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバル非揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ＬＡＮ
１７２  モデム
１７３  ＷＡＮ
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺装置インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
2011187089.tif 000003
【図２】
2011187089.tif 000004
【図３】
2011187089.tif 000005
【図４】
2011187089.tif 000006
【図５】
2011187089.tif 000007
【図６】
2011187089.tif 000008